[rules-users] forall is satisfied when there is nothing?

Wolfgang Laun wolfgang.laun at gmail.com
Tue Jan 7 05:11:12 EST 2014


It is true that first-order logic usually assumes that the domain of a formula
be a nonempty set. As so often, things aren't quite so simple when formulae
are evaluated on a computer. What should be done in this case, forall
with an empty domain? Throw an exception? Not very convenient, since
there's no reasonable way of handling exceptions thrown on the LHS.
Return false? That doesn't make sense, because you can't inspect what
isn't there. Return true? If it isn't false - what else?

If first-order logic does permit empty domains, it must be treated as
a special case.

-W

On 07/01/2014, Sonata <plz.write.to at gmail.com> wrote:
> Hi, I am using the "forall" keyword on the LHS and it seems the condition
> is
> satisfied when there is nothing to match. e.g. "forall (MyClass(value ==
> "test"))" fires the rule when there is no MyClass() object in the working
> memory. My workaround is add "exists (MyClass())".
>
> Also, same for "not (exists (MyClass(value != "test")))", but I can
> understand this, as there is no MyClass() object, it doesn't exists and
> hence "not" gives true.
>
> But for "forall", it doesnt sound right to me. I wonder if "forall" is
> actually implemented as "not exists" in the engine.
>
> Please clarify if this is by design or a bug. Build is 5.5.0.Final
>
> Thank you
>
>
>
> --
> View this message in context:
> http://drools.46999.n3.nabble.com/forall-is-satisfied-when-there-is-nothing-tp4027553.html
> Sent from the Drools: User forum mailing list archive at Nabble.com.
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>


More information about the rules-users mailing list