[SCL] alternative ways to write atoms?

pat hayes phayes at ihmc.us
Wed Jul 2 12:20:48 CDT 2003


Guys, heres a drafty sketchy proposal along the lines I suggested in 
a telecon ages ago. The idea is to provide for a standard SCL style 
for associating role names with argument places. This idea has a long 
ancestry and is considered highly desireable in many quarters: seems 
to me that we can treat it on a par with the SCL==>TFO 'holds' 
mapping as being a kind of normative reduction of SCL to a subcase. 
But we will need to extend the base syntax.

Currently we describe a predication as  (Predterm + term-sequence). I 
propose we also allow the option
(Predterm + role-set) where a role-set is a finite set of pairs 
(role, term). Roles must be constant names (no variables allowed; but 
see car/cdr point below)

A suitable concrete syntax might for example use a colon to attach a 
role name to its term, as in Married(wife:Mary husband:John).

Q: do we want to have sets in the syntax?
Q: do we want to be able to mix roles with normal arguments? (I vote 
no, on grounds of simplicity, but some Prolog systems allow this kind 
of hair; and see below)

The semantics of this ought to treat it as identical to the following 
translation:

P(r1:a1 .... rn:an) ==  (exists (?x) P(?x) & r1(a1, ?x) & ... & rn(an, ?x) )

There is also a standard set of roles called 'nth' for any numeral n, 
ie 1th, 2th, 3th, 4th, etc., and the following is logically true:

?P(a1...an) iff (exists (?x) ?P(?x) & 1th(a1, ?x) & ... & nth(an, ?x) )

Q: would it be better to use 'car/cdr' style on these sequences? That 
has the advantage of needing fewer primitive names and allowing 
recursion, but it requires us to allow nested terms as role names. On 
the other hand, we need only do so for this particular special set. 
Hmmm.

Then one way to relate a conventional predication to a role-style 
predication is to simply equate a role name with a standard, eg one 
might say

Married(?x) implies ( 1th(?x)=wife(?x) & 2th(?x)=husband(?x) )

then, following the convention that ?f(?f(@x) @x) for functions ?f, 
Married(Mary, John) entails Married(wife:Mary husband:John)

This also BTW allows one to supply just part of the argument sequence 
by supplying some but not all of the roles.

---

Anyway this is only a sketch. Comments?

Pat


-- 
---------------------------------------------------------------------
IHMC	(850)434 8903 or (650)494 3973   home
40 South Alcaniz St.	(850)202 4416   office
Pensacola			(850)202 4440   fax
FL 32501			(850)291 0667    cell
phayes at ihmc.us       http://www.ihmc.us/users/phayes





More information about the Scl mailing list