
On Denoting (1905) - callumlocke
https://users.drew.edu/~jlenz/br-on-denoting.html
======
lisper
I wrote my master's thesis on this in 1985. Back then there was a branch of
the AI research community that was hung up on the following problem: John
knows Mary's phone number. Mary and Bill have the same phone number, but John
doesn't know this. If we translate this into formal logic in the
straightforward manner it seems we can draw the false conclusion that John
knows Bill's phone number:

Knows(John, Phone(Mary))

Phone(Mary) = Phone(Bill)

Therefore: Knows(John, Phone(Bill)) by substitution of equals

How do we prevent this? The answer, of course, is to distinguish between
Phone(Mary) and "Phone(Mary)". When we say that John knows Mary's phone number
what we really mean is that John knows that "Mary's phone number" denotes X
for some particular X, i.e.

Exists(x): Knows(John, denotes("Phone(Mary)", x))

Because "Phone(Mary)" != "Phone(Bill)" (despite the fact that Phone(Mary) =
Phone(Bill)) you can no longer draw the false conclusion.

I once had the opportunity to chat with John McCarthy and I presented this
solution to him and he said (I'm paraphrasing), "Yes, that's what makes QUOTE
in Lisp such a cool idea."

~~~
pierrebai
While you implicitly state this, the AI system is not wrong when it states
that: Know(John,Phone(Bill)). The only problem stems from our human projection
of what Know means. We assume that Know means to know it belongs to someone,
while the system merely claim that John knows a number and that number belongs
to Bill.

As you state, that meaning really maps to something like
KnowBelongTo(John,Phone(Bill)), which doesn't become true when Phone(Mary) =
Phone(Bill), as its definition would not be tied to Phone(X) but to
BelongTo(X).

~~~
lisper
> The only problem stems from our human projection of what Know means.

It's a little trickier than that. If you allow substitution of equals (the
technical term for this is that your logic is "extensional" rather than
"intensional") then you get this:

Phone(Mary) = Phone(Bill) = 555-1212

Knows(John, Phone(Mary)) ==> Knows(John, 555-1212)

> KnowBelongTo(John,Phone(Bill))

You mean:

KnowsPhoneNumberBelongsTo(John, 555-1212, Mary)

And yes, that works, but it gets rather unwieldly. You can try to fix this
using second-order logic:

KnowsRelation(John, phone-of, Mary, 555-1212)

or third-order:

Knows(John, relation, phone-of, Mary, 555-1212)

but then your inference rules start to get rather hairy.

------
triplesec
Heavily influential to all of this was Frege's 'on Sense and Reference'. Best
link I can give from my mobile is to a search, where you can find pdfs and the
helpful wiki entry:
[https://www.google.com/search?q=on+sense+and+reference](https://www.google.com/search?q=on+sense+and+reference)

------
jkingsbery
I like that this essay is basically just describing what a noun is, but the
word "noun" doesn't appear in it.

~~~
gjm11
It really isn't basically just describing what a noun is.

It's about the surprisingly subtle logical structure underlying how we use
noun phrases; about qualifiers like "a", "some" and "the"; about a perhaps-
surprising feature of language, namely that to the best way to explain what
some term means may involve explaining how to rewrite whole sentences
including that term in a different form.

