Deborah, you asked for comments.
First, a comment on terminology. Maybe it is too late to stop this
usage, but (as I am sure you know), what you have written is not, in
fact, a model-theoretic semantics for DAML, but a transcription of DAML
into a language which has a model-theoretic semantics. This is only a
terminological issue, but it does mean that if we all adopt this new
usage of "model theoretic semantics", there will be no way to refer to
an actual model theoretic semantics unless we invent a new word. Since
this particular terminology has been in settled use throughout logic
and philosophy of language for about 55 years it seems a pity to create
new confusions by being careless with it.
1. I think the following is slightly incorrect:
Courier_New%% The first argument of
"intersectionOf" is the intersection of the classes in the list that is
the second argument of "intersectionOf".
(<<=> (intersectionOf ?c1 ?l)
(<<=> (type ?x ?c1)
(forall ?c2 (=> (item ?c2 ?l) (type ?x ?c2 )))))
and I think the formula should read
Courier_New(<<=> (intersectionOf ?c1
?l)
(forall (?x)(<<=> (type ?x ?c1)
(forall ?c2 (=> (item ?c2 ?l) (type ?x ?c2 ))))) )
2. A slight KIF typo:
Courier_New%% The complement of a
class is the class of objects that are not instances of the class.
(<<=> (complementOf ?c1 ?c2)
(and (disjointWith ?c1 ?c2)
(forall ?x (or (type ?x ?c1) (type ?x ?c2)))))
should read:
Courier_New(<<=> (complementOf ?c1
?c2)
(and (disjointWith ?c1 ?c2)
(forall (?x) (or (type ?x ?c1) (type ?x ?c2)))))
The quantified variable must be enclosed in
brackets.
3. Similarly to 1.,
Courier_New%% "oneOf" enumerates the
instances of a class.
(<<=> (oneOf ?c ?l) (<<=> (type ?x ?c) (item ?x ?l)))
should read:
Courier_New(<<=> (oneOf ?c ?l)(forall
(?x)(<<=> (type ?x ?c) (item ?x ?l))))
4. You define 'asClass' as identity restricted to
classes. But there is no need to restrict it to classes, since a class
cannot be identical to a nonclass. You can just treat 'asClass' as
simple identity. (Maybe this is why the spec didn't bother to define
it?)
5. While the following is indeed legal KIF:
Courier_New%% The second argument of
"first" is the first item on the list that is the first argument of
"first".
(<<=> (first ?l ?x) (exists @r (= ?l (listof ?x @r))))
it is likely that sequence variables will be
abandoned in the new standard, so I would suggest an alternative
axiomatisation using LISP cons:
Courier_New(<<=> (first ?l ?x) (exists
(?r) (= ?l (cons ?x ?r))))
A similar method can be used to modify the axiom
for 'rest'.
6. Re. the use of 'holds', it is likely that the new standard will
allow variables to be used in the relation position, making 'holds'
unneccessary.
Pat
---------------------------------------------------------------------
IHMC (850)434 8903 home
40 South Alcaniz St. (850)202 4416 office
Pensacola, FL 32501 (850)202 4440 fax
phayes@ai.uwf.edu http://www.coginst.uwf.edu/~phayes