- From: Pat Hayes <phayes@ihmc.us>
- Date: Sun, 22 Apr 2007 16:33:40 -0400
- To: Dan Connolly <connolly@w3.org>
- Cc: hhalpin@ibiblio.org, www-archive@w3.org
>Dan Connolly wrote:
>> http://www.w3.org/2000/10/swap/n3absyn.py
>> v 1.13 2007/04/21 06:29:19
>
>I took a look at our hello-world policy
>example, i.e. "if your homepage says you're a vegetarian,
>you're a vegetarian". It comes out having
>log:includes be a relation between propositions,
>not between quoted formulas.
>
>log:includes is supposed to have computational
>characteristics like =p, so this is somewhat
>of a concern. I can't quantify over
>that-sentences in KIF, can I?
Yes, you can :-)
>i.e. to write
>rules like this?
>
>(forall ((a sentence) (b sentence))
> (if (and (that a) (that b))
> ((that (and a b)) ) )
Yes, though this syntax is wrong. In fact, you don't even need to
restrict the quantifiers unless you really want to, since any name
can be used to refer to a proposition. But here's how you do it. You
don't use 'that' when quantifying: you just quantify over the actual
propositions directly. And, IKL treats a proposition as a zero-ary
relation, so 'caling' it with no arguments, like this (p) , gives you
its value, ie the truth-value. So to sum up
<sentence> a sentence, and sentences denote truth-values.
(that <sentence>) a proposition name, and propnames denote propositions
(p) where p denotes a proposition, *is* a(n atomic) sentence,
so has a truth-value.
So for example
((that (exists (x)(R x a)) ))
is an atomic sentence, which is a call of the proposition (=zero-ary relation)
(that (exists (x)(R x a)) )
with no arguments; and this proposition is required by IKL to be true
just when the 'inner sentence' of its name is, ie just when
(exists (x)(R x a))
is. So these two sentences (only one of which uses a proposition
name) have the same truthvalue:
((that (exists (x)(R x a))))
(exists (x)(R x a))
In fact, in general (see the IKL slideshows) for any sentence, these
are equivalent:
<sentence> ((that <sentence>))
So, here's how to write the above example:
(forall (a b)(if (and (a)(b)) ((that (and (a)(b)) )) ))
Here,
(a) , (b) , (and (a)(b)) , ((that (and (a)(b)) ))
are all sentences, and
a b (that (and (a)(b)))
are all names of propositions. See? If it helps, imagine putting an
argument in all the zero-ary relation calls, and then it would look
like this:
(forall (a b)(if (and (a x)(b x)) ((that (and (a x)(b x))) x) ))
Hope this helps. Its a bit brain-twisting at first, but you rapidly
get used to it.
Pat
>
>
>Veg case details...
>
>input is conf_reg_ex.n3 from
>http://www.w3.org/2000/10/swap/test/reason/
>
>output is:
>
>(forall
> (WHO PG )
> (and
> (if (exists
> (g6 )
> (and (holds "http://xmlns.com/foaf/0.1/homepage" WHO PG )
> (holds
> "http://www.w3.org/2000/10/swap/log#includes"
> g6
> (that
> (holds
> ('http://www.w3.org/1999/02/22-rdf-syntax-ns#type' c5489120)
> WHO
>
>('file:///Users/connolly/w3ccvs/WWW/2000/10/swap/test/reason/conf_reg_ex#Vegetarian'
>c5489120)
> )
> ) )
> (holds "http://www.w3.org/2000/10/swap/log#semantics" PG g6 )
> )
> )
> (holds "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"
> WHO
>
>"file:///Users/connolly/w3ccvs/WWW/2000/10/swap/test/reason/conf_reg_ex#Vegetarian"
> )
> )
> (holds
> "http://xmlns.com/foaf/0.1/homepage"
>
>"file:///Users/connolly/w3ccvs/WWW/2000/10/swap/test/reason/joe_profile.n3#joe"
>
>"file:///Users/connolly/w3ccvs/WWW/2000/10/swap/test/reason/joe_profile.n3"
> )
> )
> )
>
>
>
>
>
>--
>Dan Connolly, W3C http://www.w3.org/People/Connolly/
--
---------------------------------------------------------------------
IHMC (850)434 8903 or (650)494 3973 home
40 South Alcaniz St. (850)202 4416 office
Pensacola (850)202 4440 fax
FL 32502 (850)291 0667 cell
phayesAT-SIGNihmc.us http://www.ihmc.us/users/phayes
Received on Sunday, 22 April 2007 20:33:48 UTC