# Re: SNAF, NAF, and monotonicity [was: Comments on * DRAFT * Rules...]

From: <jos.deroo@agfa.com>
Date: Fri, 26 Aug 2005 21:06:48 +0200

```
Michael Kifer wrote:
> jos.deroo@agfa.com wrote:
>>
>>>>> Michael Kifer wrote:
>>>>> Dan Connolly wrote:
>>>>>> On Aug 24, 2005, at 8:11 PM, Michael Kifer wrote:
>>>>>>> [...]
>>>>>>> No, you got me wrong. I do believe that nonmonotonicity is
>>>>>>> important, but you already have it in the form of SNAF.
>>>>>>
>>>>>> I'm having trouble understanding that. I see it shows up in
>>>>>> several of your recent messages, e.g.
>>>>>>
>>>>>> "SNAF is nonmonotonic."
>>>>>>
http://lists.w3.org/Archives/Public/public-rule-workshop-discuss/2005Aug/0029.html
>>>>>>
>>>>>> My understanding is that SNAF is monotonic.
>>>>>>
>>>>>> Earlier[1] we discussed this example rule...
>>>>>>
>>>>>> { :car.auto:specification log:notIncludes {:car auto:color []}}
>>>>>>      => {:car auto:color auto:black}.
>>>>>>
>>>>>> That rule is monotonic; if the antecedent is true, the
>>>>>> consequent remains true regardless of how many other
>>>>>> things are also true.
>>>>>
>>>>> Hi Dan,
>>>>> Welcome to the discussion! Yes, it is very important to
>>>>> get to the bottom of it so that everybody will start
>>>>> speaking the same language.
>>>>>
>>>>> No, the above rule is nonmonotonic. If you add a color
>>>>> specification to that car then :car.auto:specification
>>>>> will now include a color specification and log:notIncludes
>>>>> will become false. Therefore
>>>>>    :car auto:color auto:black
>>>>> will no longer be derived.
>>>>
>>>> I'm aware of following sentence from
>>>> http://www.w3.org/2000/10/swap/doc/Reach
>>>>
>>>> [[
>>>> Also, if we start to just loosely talk about defaults in
>>>> the sense of "if you don't already know a color", then
>>>> different agents will end up drawing different conclusions
>>>> from the same data, which is not a good foundation for a
>>>> scalable web.
>>>> ]]
>>>>
>>>> and believe that
>>>>
>>>> <uri-of-document> log:semantics ?F.
>>>> ?F log:notIncludes {set-of-triples}.
>>>>
>>>> is a robust approach and is monotonic
>>>> (you cannot add things to ?F)
>>>
>>> Jos,
>>>
>>> Monotonicity or nonmonotonicity is a property of a logical
>>> language, not of a particular set of formulas.
>>
>> Okay
>>
>>> Furthermore, in your example, ?F is just a variable whose
>>> quantification you neglected to specify.
>>
>> Well, I should have said that the triples
>>
>>   <uri-of-document> log:semantics ?F.
>>   ?F log:notIncludes {set-of-triples}.
>>
>> were in the premise of a N3 rule and then ?F is a
>> universally quantified variable with the scope of
>> that rule.
>
>
> OK. You wrote them as if they were facts, so I was confused.
>
>
>>> A proper thing to do here would be to write something like:
>>>
>>> <uri-of-document> log:semantics t.
>>> t log:notIncludes {set-of-triples}.
>>>
>>> where t is a term that represents (reifies) the set of
>>> formulas that are encoded in uri-of-document. Now, t is
>>> things to ?F" is irrelevant as far as monotonicity
>>> of the language is concerned.
>>
>> Well, this is indeed where we seem to have a disconnect..
>> I meant that for the set triples represented by ?F (and
>> which are real triples in my machine) there is no way to
>> add triples to that set; you can of course add triples to
>> the document at <uri-of-document> on the web but then,
>> formula A in your (**) has a different interpretation.
>
> No, this is where you get confused. See my earlier message
> adding to Dieter's tutorial on nonmonotonicity:
>
http://lists.w3.org/Archives/Public/public-rule-workshop-discuss/2005Aug/0082.html
>
> The set of formulas A stays the same. The formulas that would
> be added to the document at <uri-of-document> form the set B.
> So, initially, "the document at <uri-of-document>" consists
> of the set A, and you get one set of inferences from there.
> Then "the document at <uri-of-document>" is changed to
> consist of the set of formulas A union B, and now you get
> a different set of inferences.
>
> I went again through Dan's example in the above message and
> explained once more why SNAF is nonmonotonic. Your query
>
> ?- <uri-of-document> log:semantics ?F
>    and
>    ?F log:notIncludes {set-of-triples}.
>
> is handled exactly the same (actually simpler) than Dan's car example.

Michael,

I didn't speak about a query :)
Above triples are the premis of an N3 rule

so A is for instance

{ <uri-of-document> log:semantics ?F.
?F log:notIncludes { sky color blue } }
=> { thisTest a Pass }.

and <uri-of-document> has for instance following triple

fred hairColor red.

then A |= thisTest a Pass.

Whatever B triples we add to A doesn't change the entailment.

Now when we add the triple

sky color blue.

to <uri-of-document> so that it now contains 2 triples

fred hairColor red.
sky color blue.