- From: Michael Kifer <kifer@cs.sunysb.edu>
- Date: Thu, 25 Aug 2005 18:09:37 -0400
- To: Dan Connolly <connolly@w3.org>
- Cc: public-rule-workshop-discuss@w3.org
Dan Connolly <connolly@w3.org> wrote: > > On Thu, 2005-08-25 at 16:30 -0400, Michael Kifer wrote: > > Dan Connolly <connolly@w3.org> wrote: > > > > > > On Thu, 2005-08-25 at 00:00 -0400, Michael Kifer wrote: > [...] > > > > 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 don't understand. I understand monotonicity to mean > > > that if you can derive F from a set of formulas A, > > > then you can also derive it from the set A union B for > > > any set of formulas B. > > > > > > You seem to be suggesting there's some set of formulas B > > > that when added to my A causes F to no longer hold. > > > > > > Exactly what is that set of forumlas B? > > > Feel free to answer using Flora-2 syntax if that's more convenient. > > > > > > You say "If you add a color specification ..." which suggests that > > > B is something like... > > > > > > car auto:color auto:red. > > > > > > but that doesn't falsify the premise: > > > > > > :car.auto:specification log:notIncludes {:car auto:color []} > > > > I guess, I wasn't clear enough. > > > > For you to show that your language is monotonic, you have to show that > > > > Forall A,B,F such that A |= F implies A union B |= F (*) > > Yes, quite. We're clearly using the term 'monotonic' in exactly the > same way. Good... > > > So, you single example didn't prove (*). To refute your main claim, > > I had to show the negation of (*), i.e., that > > > > Exist A,B,F such that A |= F and A union B |/= F (**) > > > > (|/= denotes "not entails"). > > > > So, I had to find A,B,F to demonstrate (**). I couldn't use your > > example directly, because that particular example didn't provide me with > > the appropriate A,B,F to demonstrate (**). (I only have to demo existence, > > i.e., find one example, while you have to show (*) for all examples!) > > So, I extended your example (or at least I thought that I did). > > > > > Exactly what is that set of forumlas B? > > > Feel free to answer using Flora-2 syntax if that's more convenient. > > > > Thanks for giving me an easy way out :-) > > My example is indeed easier to use because it already has all the necessary > > formulas in it. > > > > Let me repeat this example for easier reference: > > Thanks for going slowly... > > > We assume that the info about the cars (over which we are going to > > close off) is in module allAboutCars and the facts there have the form > > > > 12345:car[color->red]. > > 45678:car[color->blue]. > > ... > > > > The 12345 thing is supposed to be the vehicle id number or something. > > The first fact says that 12345 is an object in class car and the attribute > > color has the value red, etc. > > > > The above info on cars could be on some Web site, for example. > > > > Now, to express N3's > > this log:forAll :car. > > { :car.auto:specification log:notIncludes {:car auto:color []}} > > => {:car auto:color auto:black}. > > > > one would write something like this: > > > > ?X[realColor->?Color] :- ?X[color->?Color]@allAboutCars. (***) > > ?X[realColor->black] :- not ?X.color[]@allAboutCars. (****) > > > > The first rule says that if the module allAboutCars has an explicit color > > for a car, then it is the real color of that car. You don't have this rule > > in your N3 example, but of course it is easy to add. > > > > The second rule says that if allAboutCars says nothing about a particular > > car's color then its color is black. This is a counterpart of your default > > rule, which involves log:notIncludes. > > > > Now, let us assume that all the above formulas constitute the set A in (**). > > > > Let's suppose 00007 is a car on the allAboutCars site, for which no color > > information is available. Let 00007[color->black] be our formula F in (**). > > > > Because allAboutCars says nothing about the color of 00007, we conclude > > that 00007.color[] is false (00007.color[] means that there is some value > > for the color attr in object 00007. We didn't find any, so it's > > false). > > Are you abbreviating there? I would think we conclude that > 00007.color[]@allAboutCars > is false. Yes, 00007.color[]@allAboutCars. Sorry for the typo. > (aside: In any case, in N3, the negation is not separated from the > question of whether 00007.color[] occurs in allAboutCars. > In N3, the notIncludes relation between syntactic formulas is just > like stringNotMatch operation on strings or a notDivisorOf operation > on integers; it's a decideable/computable recursive function. ) I would be more comfortable if this all were defined more formally. I gave my best shot at informally talking about informal semantics of N3, but we cannot really argue about logical properties of a language that hasn't been given a model theoretic semantics. > > Therefore, we derive 00007[color->black] using the rule > > (****). (The rule (***) doesn't fire, since its premise is false.) > > Therefore, > > > > A |= F > > > > Now, let B be 00007[color->yellow], which we would like to add to the > > allAboutCars site. > > add to the site? You mean change what @allAboutCars denotes? To do > that is to consider a different interpretation of the formula(s) A, > not to consider an additional set of formulas B. No. We have a bunch of formulas 12345[color->red]. 45678[color->blue]. at allAboutCars. Formally, being at allAboutCars means that all predicates and methods there have a unique prefix (the same for the same module). So, the above two being @allAboutCars really means that we have formulas like 12345['$&^allAboutCars*^%color'->red]. 45678['$&^allAboutCars*^%color'->blue]. (*****) etc. Adding 00007[color->yellow] to @allAboutCars means that B really is 00007['$&^allAboutCars*^%color'->yellow] (******) and now we have the set of formulas A union B. Recall that A was that bunch of formulas (*****) plus those pair of rules. So, A union B is (*****), (******), and the rules (***)/(****). Now we are making inference and what was a consequence of A is no longer a consequence of A union B. > > Now, rule (***) fires, but (****) doesn't. So, we derive > > 00007[color->yellow], but we don't derive 00007[color->black]. Therefore, > > > > A union B |/= F > > > > so it is nonmonotonic. > > > > > > The same thing basically happens in your N3 example. > > > > There auto:specification is an attribute, which returns a set of objects > > (which would formally be treated as terms). Somewhere you will need to > > have a set of formulas (which will be part of the set A), which > > would say which specific cars have which specifications. > > > > So, if you have a car whose spec doesn't include color then you will derive > > {... auto:calor auto:black} for that car. But if you throw in another > > formula (our B above), which will give a color spec to that car then > > { :car.auto:specification log:notIncludes {:car auto:color []}} > > will not be satisfied and so the rule will not fire. > > As I say, it seems to me that this is not exhibiting another set > of formulas B, but just considering a different interpretation of > the formulas A. In that interpretation, the premise is false and > the conclusion is false, yes, but this doesn't seem to demonstrate > non-monotonicity. No, see above. It is a union of A and B. It is precisely what nonmonotonicity means. > > I should also say that it is dangerous for me to venture into making the > > above claims about N3, since, as far as I know, N3 doesn't have a formal > > logical semantics. So talking about logical entailment is taking too much > > liberty. But I think I have intuitive understanding of the intent and armed > > with the formal semantics of F-logic (which is close in spirit to N3) I > > feel I am making a convincing informal argument for nonmonotonicity of the > > informal semantics of N3. > > The analogy between F-logic an N3 seems to work well enough in this > case, but I am not yet convinced that this example shows > nonmonotonicity. It still seems to me that you have to use > unscoped NAF to get nonmonotonicity. Unscoped NAF doesn't exist (only implicitly scoped NAF exists), so according to you nonmonotonicity doesn't exist :-) > > [...] > > > Monotonicity supports partial understanding... > [...] > > So, I don't buy the above argument of yours. > > OK, well, I'd like to get to the bottom of this more clear > technical stuff about monotonicity first; perhaps I'll return > to the scalability discussion later... Looks like a good plan. --michael
Received on Thursday, 25 August 2005 22:09:50 UTC