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


Reply via email to