term yielding functions vs. predicatesTom Gruber <Gruber@sumex-aim.stanford.edu>
Full-Name: Tom Gruber
Date: Mon, 15 Oct 90 14:31:10 PDT
From: Tom Gruber <Gruber@sumex-aim.stanford.edu>
Cc: James Rice <Rice@sumex-aim.stanford.edu>,
Daneel Pang <firstname.lastname@example.org>
Subject: term yielding functions vs. predicates
We came upon an interesting design decision in trying to accomodate
KIF, LOOM, and CYCL notations. As you know, in some languages
(age fred 10) and (= (age fred) 10) are BOTH legal and equivalent.
In KIF 2.0, the symbol AGE must be used as a term-yielding function
XOR a predicate. In CYCL and LOOM, both forms appear to be used.
We concluded that
if one allows, in the single language, both the term and
predicate forms for the same relation/function name (age),
then the language depends on state to determine the meaning of an
expression; in particular, it needs to know whether a symbol has been
defined as a function or predicate before parsing the ambiguous
Since KIF is supposed to be order-independent, then a single atom can
only be used as a function or a predicate; I presume that is the
rationale for this restriction.
Is this analysis correct? Is there any way to allow the ambiguous
syntax without assuming state (order) in the language? Is there
another rationale for the function xor predicate restriction?
I would like to think of both the predicate and function forms
denoting the same RELATION. The symbol in the functional position of
a term expression denotes a relation that is functional
Is this consistent with KIF semantics?