- From: Gary Hallmark <gary.hallmark@oracle.com>
- Date: Wed, 10 Jun 2009 16:46:56 -0700
- To: Christian De Sainte Marie <csma@fr.ibm.com>
- Cc: RIF <public-rif-wg@w3.org>
I think that Forall x if Not(Px) then print("hello world") is equivalent to if Not(Exists x (Px)) then print("hello world") Both are safe. But if Not(Exists x (x=1)) then print("hello world") is not safe. Let's just focus for now on the formulas of the form Not(Exists ...) I don't see how your safeness definition for PRD distinguishes the safe ones from the unsafe ones. On Wed, Jun 10, 2009 at 2:13 PM, Christian De Sainte Marie<csma@fr.ibm.com> wrote: > > ********* NOTICE ********** > My new email address at IBM is: csma@fr.ibm.com > My ILOG email address will not be forwarded after June 8 > ***************************** > > > gary.hallmark@gmail.com wrote on 10/06/2009 18:47:28: >> >> In production rule systems such as CLIPS and Jess (and JRules, too, I >> think), if a rule such as >> >> if P then Q >> >> is safe, and if Q references no variables in P, then >> >> if not(P) then Q >> >> is also safe. > > I do not think so. At least, not always: > > Forall x If Px Then print("hello world") is safe > > and Forall x if Not(Px) then print("hello world") is not. I would be > surprised if JRules accepted such a rule. Changhai? > > I do not know about Jess and CLIPS, but I would be surprised, too, if the > accepted the rule. > >> I will not be happy with a PRD safeness definition that does not >> properly account for this. > > I will not be happy with a definition that does not account for what the > systems we want to cover do, either. > > If Q does not reference any variable that is in P, then the only restriction > is that all the variable in the condition must be bound in the condition. > Which means that, if your entire condition, P, is negated, then the only > thing that is allowed for P is an existential formula, because existentially > quantified variables need only be bound inside the scope of the quantifier; > and you cannot move an existential quantifier out of a negation (not without > changing it for an universal, which you do not want to do). > > So, if P is an existential formula, and there are no (universally > quantified) rule variables outside of P, then, indeed, "if not(P) then Q" is > safe. > > I think (but that must be confirmed by Changhai), that this (not exists) is > the only case where an entirely negated condition is allowed in JRules. Can > you give examples of what is allowed in CLIPS and Jess and that would go > beyond that, so that we can repair the definition, if it is repairable? > > One thing that needs be added in PRD, anyway, if just for the sake of > clarification, is that existential quantifiers cannot be moved out of a > negation, in the preprocessing step. > > Cheers, > > Christian > > > ILOG, an IBM Company > 9 rue de Verdun > 94253 - Gentilly cedex - FRANCE > Tel. +33 1 49 08 35 00 > Fax +33 1 49 08 35 10 > > > > Sauf indication contraire ci-dessus:/ Unless stated otherwise above: > Compagnie IBM France > Siège Social : Tour Descartes, 2, avenue Gambetta, La Défense 5, 92400 > Courbevoie > RCS Nanterre 552 118 465 > Forme Sociale : S.A.S. > Capital Social : 609.751.783,30 € > SIREN/SIRET : 552 118 465 02430 > > -- Cheers, Gary Hallmark
Received on Wednesday, 10 June 2009 23:47:32 UTC