- From: Drew McDermott <drew.mcdermott@yale.edu>
- Date: Sun, 30 Nov 2003 17:33:23 -0500 (EST)
- To: www-rdf-rules@w3.org
[Harold Boley]
RuleML since 0.8 (http://www.ruleml.org/indtd0.8.html)
I have some trouble understanding the RuleML web site. There are so
many alternatives syntaxes. Is one of them, or are some of them,
"official"? (This is an embarrassing admission for me to make since
I'm listed on the website as a participant.)
[me]
I am curious why explicit quantifiers are so conspicuously absent from
SWRL. . . .
[Harold]
Omitting all (top-level) universal quantifiers has often been used as one
step for obtaining a clausal normal form in classical first-order logic, and
has been a convention in many (Horn) logic programming languages (but this
has nothing to do with the somewhat limited success of ISO Prolog as an LP
standard: http://www.cs.unipr.it/~bagnara/Papers/Abstracts/ALPN99a).
Besides LP, also mathematics has had a similar habit for named function
definitions, taken up by many equational/functional programming languages.
So, for defining square(x) = x*x Common Lisp uses (defun square (x) (* x x))
rather than something like (def square (lambda (x) (* x x))), with the
lambda
binding construct playing a role similar to a universal quantifier.
But the argument list in Lisp 'defun' _is_ a quantifier; it
establishes a scope for variables as surely as 'lambda' does.
Of course, there are essential uses of universal quantifiers nested into
non-normalized formulas,
I think the problem is the assumption that formulas can be
"normalized." The normalization used in resolution theorem proving is
cool, but it's not some kind of general-purpose normal form that works
for all situations.
Since many formulas and functions, however, define rules and named
functions, the above free-variable conventions are
widespread. Should we still strive for uniformity between the
top-level of formulas and nested parts for a practical language
....?
You miss my meaning. I'm not arguing for abolishing free variables;
I'm arguing for allowing bound ones.
Free variables are fine, when understood as shorthand for the
explicitly quantified version. You can say more, and more precisely,
with the explicit version, so why make it a second-class citizen?
The free-variable convention has too many subtle "gotchas." Even in a
well understood area like first-order theorem proving, I've seen
people get confused about why it is that queries have free variables
that are existentially quantified, or why backward chaining through a
rule like p(?x,?y) & p(?y,?z) -> p(?x, ?z) changes ?y from universal
to existential.
-- Drew
--
-- Drew McDermott
Yale Computer Science Department
Received on Sunday, 30 November 2003 17:33:25 UTC