# Re: a simple question

From: Drew McDermott <drew.mcdermott@yale.edu>
Date: Wed, 3 Dec 2003 14:00:48 -0500 (EST)
Message-Id: <200312031900.hB3J0mL29682@pantheon-po02.its.yale.edu>

```

[me]
>The NAF approach is likely to be much more efficient, much easier to
>implement, and much more likely to yield a useful conclusion than the
>heavy-duty theorem prover.

[Pat Hayes]
All true. It is also likely to be wrong,
unfortunately. The fact that you can't think of a
closer airport doesn't usually qualify as a good
reason to conclude that there isn't one, unless
you also know for sure that you know all the
airport locations, so that if you don't know it,
then its not there. Like, for example, if you
have a  list of all the airports. If you make
this explicit, as you should, then you are back
doing 'heavy-duty' reasoning.

I was trying to stay within the vocabulary of the example, and I was
assuming a plausible context that I didn't state, namely that someone
was planning a trip.  If you replace "nearest airport" by "nearest
airport reasonable to travel someplace from here," then negation as
failure is a reasonable strategy, assuming you know all the airports
in the vicinity.

BTW, calling it 'heavy-duty' is misleading. In
the first case you have made all the equality
reasoning explicit. In a prolog-style
implementation this is all buried in the
backtracking done by the interpreter: but it
still needs to be done. The same actual
*reasoning* is involved in both cases.

Yes.  But the NAF version is stylized in a way that permits efficient
implementation.  If you could be sure that the alternative always
involved iterating through a list and doing a set of equality
substitutions, you could probably find an equally efficient
implementation.  (I've often wondered why no one has worked on this.)
In the general case, though, you have to have a system that does
general-purpose reasoning about equality, which can involve a lot of
search.

>  I hope the people who deprecate it realize
>that the heavy-duty theorem prover is the only alternative.

Its not a matter of alternatives. If you want to
draw checkable valid conclusions, then you need
to do this kind of reasoning.

I don't want to draw checkable valid conclusions.

If you want to
make random guesses and hope for the best then
you can of course work faster, but don't expect
others to believe in your conclusions.

At least I'll _have_ conclusions.

Negation-as-failure is NOT a good general
reasoning strategy: 99.99% of the time it will
immediately produce childishly ludicrous
conclusions: I don't know anyone called Jose, so
there isn't anyone called Jose; I never heard of
SARS, ...

Where have you been?

Of course negation-as-failure is not the way to handle "not" in
general; it's the way to handle it when you don't care about possible
nearby secret airports and the like.

The
industrial uses of Prolog-style rules all are
designed within controlled environments,
typically using databases, where such special
conditions can be assumed.

To repeat what I said above, if you use NAF as an efficient way to
draw valid conclusions, you're right.  I prefer to think of it as a
way to draw conclusions that may well be wrong, in situations where
the wrongness of a probably correct conclusion is not fatal.  The
burden is on someone who finds this distasteful to show that pure
deductive techniques will suffice for real-world applications.

-- Drew

--
-- Drew McDermott
Yale University CS Dept.
```
Received on Wednesday, 3 December 2003 14:01:04 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 2 March 2016 11:10:15 UTC