OK so is this resolved?
Alex are you happy with this resolution?

On 4/26/06, Michael Neale <[EMAIL PROTECTED]> wrote:
>
> which is what it does now, if I understand correctly.
>
>
> On 4/26/06, Peter Lin <[EMAIL PROTECTED]> wrote:
> >
> > ahh ok.
> >
> > if "dishonest" is asserted and retracted, the rule engine should fire as
> >
> > many times as the conditions are met.
> >
> > if the rule engine didn't fire as "dishonest" is asserted and retracted
> > over
> > time, the behavior would be incorrect. this is assuming a long running
> > process with a single rule engine.
> >
> > peter
> >
> > On 4/25/06, Alexander Bagerman <[EMAIL PROTECTED]> wrote:
> > >
> > > This is not Leaps question. My problem is that if "dishonest" fact
> > > continuously asserted and retracted it should not cause the
> > > "honestAbe" to fire more than once but what happen with current tests
> > > is that rules with no positive CEs will fire as many times as
> > > "blocking" facts are retracted.
> > >
> > > On 4/25/06, Peter Lin <[EMAIL PROTECTED]> wrote:
> > > > I'm having a hard time understanding the basic problem being
> > > address.  let
> > > > me see if I understand part of it. Say I have rule
> > > >
> > > > rule honestAbe
> > > >   when
> > > >     Politician is in office
> > > >     NOT dishonest
> > > >   then
> > > >     allow him to stay in office
> > > > end
> > > >
> > > > rule firePoliticians
> > > >   when
> > > >     there are no honest Politicians
> > > >   then
> > > >     fire all politicians
> > > > end
> > > >
> > > > What I'm missing is the meaning of "blocking the rule" for LEAPS. In
> > the
> > > > classic LEAPS approach, rules do not "block" each other in the sense
> > > that
> > > > one rule prevents another rule from firing. Miranker's LEAPS has no
> > > agenda
> > > > and executes the consequence (aka RHS) immediately.
> > > >
> > > > In the case of a NOT join, if some list of facts from the left match
> > a
> > > fact
> > > > on the right, it would prevent that specific combination from
> > > propogating.
> > > > If the right fact is retracted, then all matches on the left would
> > be
> > > > retracted and the activation removed from the agenda.  In the case
> > of
> > > leaps,
> > > > the rule already fired, so the only thing it can do is retract the
> > fact.
> > > the
> > > > activation has already fired, so there's nothing to retract.  I
> > looked
> > > at
> > > > the drools LEAP code today and it looks it's a hybrid between LEAPS
> > and
> > > > RETE.
> > > >
> > > > in the interest of solving the problem, the problem should be broken
> > > down
> > > > into
> > > >
> > > > 1. rules with no positive CE and only NOT CE
> > > > 2. loop / no loop
> > > > 3. if a rule should only fire once, an "exist" pattern should be
> > used.
> > > >
> > > > peter
> > > >
> > > >
> > > >
> > > > On 4/25/06, Alexander Bagerman < [EMAIL PROTECTED]> wrote:
> > > > >
> > > > > What I'm saying that NO "Something" is not qualified and it should
> > not
> > > > > matter if you now you retracted fact-1 that was blocking the rule
> > and
> > > > > later you retracted fact-3 that happens to block rule at that
> > moment -
> > > > > I'd expect rule to fire once.
> > > > >
> > > > > I'd expect rule-1 in Edson example to fire just once. Forget
> > logical
> > > > > assertion for a second - imagine that you assert and retract
> > String()
> > > > > facts. So everytime fact is retracted rule fires in current
> > > > > implementation. Rule states that it should fire when NO String()
> > facts
> > > > > exists and not when String() fact happen to be retracted. At least
> > > > > that is how I see it.
> > > > >
> > > > > And to Michael's point that "there is  no "fire only once" in the
> > > > > contract of the rule. " What if the same rule has a "positive"
> > > > > condition in it (in addition to the "NO"). Would you expect it to
> > fire
> > > > > on each blocking fact retraction as well? I'd say probably not.
> > > > >
> > > > > Anyway, I think I need to do more thinking on what and how but
> > feel
> > > > > free to share your thought on this subject.
> > > > >
> > > > > On 4/25/06, Michael Neale < [EMAIL PROTECTED]> wrote:
> > > > > > If I understand in my pre-caffeinated state, then I think what
> > you
> > > are
> > > > > > saying is:
> > > > > >
> > > > > > We start off with NO "Something" in WM.
> > > > > > The rule "R" fires.
> > > > > >
> > > > > > We add "Something" to WM
> > > > > > nothing happens
> > > > > >
> > > > > > We remove "Something" from WM
> > > > > > The rule "R" fires again. **
> > > > > >
> > > > > > Now in ReteOO ** will happen. In LEAPS it does not?
> > > > > >
> > > > > > Well, the answer is allways: WWJD: What Would Jess Do ?
> > > > > > I am thinking the ReteOO way is what I would intuitively expect,
> > as
> > > > > there is
> > > > > > no "fire only once" in the contract of the rule.
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > On 4/26/06, Alexander Bagerman <[EMAIL PROTECTED]> wrote:
> > > > > > > All,
> > > > > > > While going through fixing logical assertion tests for leaps I
> >
> > > > > > > realized that I might not be able to support behavior for
> > rules
> > > with
> > > > > > > no positive conditions in the way RETEOO does. Please do not
> > skip
> > > the
> > > > > > > rest of the email saying "that's ok, leaps is experimental"
> > :-)
> > > > > > >
> > > > > > > Here is an issue - loop / no loop tests rely on multiple
> > > activation of
> > > > > > > the rules that have the following structure:
> > > > > > > rule "r"
> > > > > > >     when
> > > > > > >         not Something
> > > > > > >     then
> > > > > > > ...
> > > > > > > end
> > > > > > >
> > > > > > > You would expect this rule to fire only once but in reality
> > > (RETEOO
> > > > > > > reality) it fires first time its "when" section is valid (even
> > if
> > > > > > > there was not ever blocking facts) and than every time when
> > rule
> > > goes
> > > > > > > from "have blocking facts can not fire" to "ok, last blocking
> > fact
> > > is
> > > > > > > removed, I can fire now". Does it break a paradime that states
> > > that
> > > > > > > rule can fire only once on same conditions? Let's say I have
> > one
> > > more
> > > > > > > condition in "when" section like that:
> > > > > > > rule "r"
> > > > > > >     when
> > > > > > >         someFact is matching condition
> > > > > > >         and not Something
> > > > > > >     then
> > > > > > > ...
> > > > > > > end
> > > > > > >
> > > > > > > I would expect this rule to fire only once, even if it goes
> > from
> > > "have
> > > > > > > blocking facts can not fire" to "ok, last blocking fact is
> > > removed, I
> > > > > > > can fire now" multiple times assuming that someFact was not
> > > retracted.
> > > > > > >
> > > > > > > What are your thoughts on it?
> > > > > > >
> > > > > > > -Alex
> > > > > > >
> > > > > >
> > > > > >
> > > > >
> > > >
> > > >
> > >
> >
> >
>

Reply via email to