- From: Christian De Sainte Marie <csma@fr.ibm.com>
- Date: Tue, 2 Jun 2009 15:48:24 +0200
- To: Christian De Sainte Marie <csma@fr.ibm.com>
- Cc: Gary Hallmark <gary.hallmark@oracle.com>, RIF <public-rif-wg@w3.org>
- Message-ID: <OFA8D28BBE.81278B7C-ONC12575C9.004A6FC2-C12575C9.004BD71E@fr.ibm.com>
********* NOTICE **********
My new email address at IBM is: csma@fr.ibm.com
My ILOG email address will not be forwarded after June 8
*****************************
Gary, all,
I corrected the bugs in the definition of safe (unconditionally bindable)
and conditionally safe (conditionally bindable) variables, and in the
definitions of safe formulas and rules (and I took the opportunity to
correct a bug in the definition of well-formed groups, as well :-).
The spec passes the 2 unsafe and the 3 safe tests.
I also tried to simplify the definitions and to make them easier to read
and understand.
Cheers,
Christian
csma wrote on 02/06/2009 11:23:39:
>
> ********* NOTICE **********
> My new email address at IBM is: csma@fr.ibm.com
> My ILOG email address will not be forwarded after June 8
> *****************************
> Hi Gary,
>
> Thanx for the fast feedback.
>
> Gary Hallmark <gary.hallmark@oracle.com> wrote on 02/06/2009 09:31:07:
> >
> > Just to spot check the accuracy, I tried to apply the PRD safeness to
> > http://www.w3.org/2005/rules/wiki/Core_NonSafeness
>
> Good point. I should have checked that before.
>
> I checked and it works, essentially; except for a few bugs in the
> definitions...
>
> To wit, the unsafe rule in the example is:
>
> FORALL y, z, IF y=z AND z>0 THEN p(y)
>
> Computing bindable variables for the atomic formulas, following [1]:
> - a1 is y=z: UBV(a1) = {}, CBV(a1) = {y, z}, with BCOND(y, a1)=
> {{z}}, BCOND(z, a1)={{y}}
> - a2 is z>0; UBV(a2)=CBV(a2)={}
>
> [1] http://www.w3.org/2005/rules/wiki/PRD#def-bindable-var_atom
>
> Computing bindable variables for the condition formula, following [2]:
> - c is AND(a1, a2): UBV(c)={}, CBV(c)={y,z}, with BCOND(y,c)={{z}},
> BCOND(z,c)={{y}}
>
> [2] http://www.w3.org/2005/rules/wiki/PRD#def-bindable-var_formula
>
> Conputing bindable variables for the rule, following [3]:
> - r is FORALL y, z, IF y=z AND z>0 THEN p(y); we try the second
> case, since {y,z} is in UBC(c) U CBV(c). Therefore, we check that
> we can remove all the quantified variables from the bindability
> conditions (of the conditionally bindable variables), that is, we
> execute reduceBCOND({y,z}, {y,z}, {c}). And we find out:
> 1. that BCOND(y, c) reduces to {{y}}, and thus that we are in the
> third case, and the rule is unsafe;
> 2. that the specification of reduceBCOND is buggy, since after
> reducing BCOND(y, c) to {{y}}, it will loop forever trying to reduce
> BCOND(z,c)=[{{y}} (since it replaces y by y...)
> 3. that the definition of a safe rule [4] (and, thus, of a well-
> formed group) is buggy as well, since UBV(r) is always empty for a
> closed rule...
>
> [3] http://www.w3.org/2005/rules/wiki/PRD#def-bindable-var_rule
> [4] http://www.w3.org/2005/rules/wiki/PRD#def-safe-rule
>
> I will correct the bugs raised in 2. and 3. But 1. seems to indicate
> that the definitions are essentially correct. I also checked
> Core_NonSafeness_2 (it works without hitting the bug in reduceBCOND,
> because it goes directly in the third bucket for a forall),
> Core_Safeness (it works, except for the wrong definition as raised
> in 3, of course; that is, the rule is not unsafe according to the
> operational definition, but it is not safe either, according to
> definition [4] :-).
>
> Core_Safeness_2 raises a bug in the specification of UBV for a
> conjunction: the variables that are UBV in one of the conjunct are
> correctly removed from the CBV of the conjunction, but I forgot to
> update UBV with the CBV that depends only on such... I'll correct
> that. Core_Safeness_3 hits the same bug.
>
> > I ran up against this:
> >
> > *Definition (Safe condition formula).* A RIF-PRD condition formula is
> > /*safe*/ if and only if it does not contain any unsafe sub-formula
(and
> > if it is not unsafe itself).
>
> I used safe/unsafe for formulas only. But UBV means safe variables
> (and CBV conditionally safe). I thought that using names that
> referred explicitly to binding was a good idea: maybe it is not.
>
> > The only mention of "unsafe" is in the context of an Exists formula.
>
> ...and in the context of a Forall formula.
>
> > Surely some condition formulas without Exists are also unsafe.
>
> No, as far as I understand: a formula is safe if you can guarantee
> that all the variables can be bound (without constraint resolution)
> when evaluating the formula. If a formula contains no variable, it
> is always safe; if it contains free variables, you cannot decide
> whether it is safe or not (at least in the context of RIF: if a
> variable is free in a formula, that means that the formula is a
> component of another formula, and, thus, that the free variable
> might be bound somewhere else).
>
> So a condition formula without an Exists cannot be unsafe; but a
> rule with that condition can be (because it is closed under forall).
>
> > It's not
> > very clear when you define safeness as the absence of unsafeness or
vice
> > versa.
>
> Yes, as I said, the wording and presentation can certainly be
> improved. Currently, unsafeness is defined operationally, and
> safeness is defined as the absence of unsafeness. The difficulty is
> that, really, there is safe, unsafe, and maybe safe; at least as
> long as a formula has free variables...
>
> Cheers,
>
> Christian
>
> 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
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
Received on Tuesday, 2 June 2009 13:49:10 UTC