[SCL] Syntax epiphany (was: Re: Folding unnecessary [was: Re:
Update to SCL-related work])
Pat Hayes
phayes at ihmc.us
Fri May 28 13:04:26 CDT 2004
>Pat Hayes wrote:
>
>>>3) Keeping the SCL concrete syntaxes simple
>>> and traditional, with no weird/complex
>>> constructions.
>>
>>
>>Agreed, but we might have different views on what counts as more
>>weird and complex. I find lexical conventions awkward and we have
>>tried to eliminate them as far as possible.
>>
>Right, it makes sense as well.
>
>However, we need some convention to distinguish between two different kinds
>of predicate/function application. The question remaining is which convention
>is nicer. We cannot avoid using some kind of a convention.
OK, how about this? Follow your idea, but rather than make it a
lexical distinction (which I am averse to for reasons based on Web
architecture) , use the syntax. This idea is so simple its almost
beautiful: combine the P(x) and (P x) conventions. They both mean
apply P to x, but the first one requires that P is not in the
universe of discourse, the second requires that it is. Then SCL
using the KIF convention is unchanged, and FOL using the prefix
convention is unchanged: and (P x) in SCL maps *exactly* to Apply-1(P
x). SCL then really, *really* is FOL with the holds/app convention
'built in'. You can get SCL from FOL just by using an eraser. In both
languages, names and terms in 'inner' positions denote things in the
universe, and names in a prefix position denote things not in the
universe: but in pure KIF syntax, there aren't any such names.
We can tell people that if they want to maximize interoperability and
syntactic freedom, use the KIF style. If they want to be all up-tight
about keeping relations out of their universes, use the FO style
syntax. Or mix and match. The basic meaning is the same.
The syntactic convention in the core syntax will be that a name
followed by an open parenthesis without an intervening space always
indicates a FOL application (function or atom). I'll need to re-write
the EBNF yet again, but that's life.
This allows two ontologies to use P differently, and we have to
decide what to do when such texts are combined. IMO they ought to be
inconsistent, ie their conjunction is a contradiction, since P(a) &
(P a) requires that P to be both in and not in the universe of
discourse; but I can't see any simple way to make such a
contradiction apparent in a proof derivation...ah, wait, yes I do:
there is an axiom (tautology) scheme:
(forall (x) (not x(...) ))
which now gets us an explicit contradiction:
(and P(a) (P a))
(exists (x) (and x(a) (x a))) EGeneralization applied to the name
P (kosher because P is used as a name in the expression)
(exists (x) x(a) ) &elim applied inside the existential (ahem.
Please don't look behind the curtain....)
(not (exists (x) x(a) ) transformation of instance of the axiom
So the EG rule is, that one can existentially generalize on any name
in any argument position (just as in FOL) ; but if that name occurs
also in a relation position, then it can be 'captured' by the
generalization. This makes sense, since the name should always have
the same meaning wherever it occurs. Note that this is NOT a valid
application of the rule:
P(a)
?? therefore??
(exists (x) x(a) )
since P is not a name in that text: it only produces this aberration
when applied to 'mixed' text which is already internally
contradictory.
>
>>>
>>>In any concrete SCL syntax we split the names,
>>>i.e lexical items for constants/predicates/functions
>>>into several sets:
>>>
>>>- ordinary constants (like a, c1, bbx)
>>>- numeric constants (like 0, -2, 10)
>>>- string constants (like "aab", "1")
>>>- possibly date and time constants (like 01.02.2004)
>>>- special function and predicate names: any name
>>> prefixed by ! is a special name (like !f, !P)
>>
>>
>>But now this requires a global naming convention to be agreed on. I
>>don't think this is acceptable for a logic to be used on the Web.
>>
>>Tell you what:I'll see how simple I can make the 'headers' idea
>>come out to be, and then we compare notes. I agree we need to have
>>some simple straightforward way to determine when to translate (P
>>x) correctly as holds_2(P x) and when as itself. I think this is
>>best determined by what is said ABOUT the text rather than in the
>>text itself, however.
>>
>OK. I'll upgrade the ECL draft later today, following the notes in
>my last email.
>Will send mail when it is ready.
>
>Perhaps the lexical and header approach can be combined.
Yes. There are other advantages to headers. Using the above scheme,
the P(...) syntax should be forbidden in a header since header
sentences are supposed to be interpreted in the 'global universe'
where everything that can possibly exist, exists. So in the header,
you can refer to the ontology's universe of discourse explicitly by
using the ontology name. So the header version of P(a) in an ontology
named ex:fred would be (and (P a) (not (ex:fred P))), ie P is true of
a but P is not in the local universe.
MOre later (on datatyping) : I have to run now.
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