Raymond Reiter (1980b) introduced the phrase ``unique names hypothesis''
for the assumption that each object has a unique name, i.e.
that distinct names denote distinct objects. We want
to treat this nonmonotonically. Namely, we want a wff that picks out
those models of our initial assumptions that maximize the inequality of
the denotations of constant symbols.
While we're at it, we might as well try for something
stronger. We want to maximize the extent to which distinct terms designate
distinct objects. When there is a unique model of the axioms that maximizes
distinctness, we can put it more simply; two terms denote distinct objects
unless the axioms force them to denote the same.
If we are even more
fortunate, as we are in the examples to be given, we can say that two
terms denote distinct objects unless their equality is provable.

We don't know a completely satisfactory way of doing this.
Suppose that we have a language L and a theory T
consisting of the consequences of a formula A.
It would be most pleasant if we could just circumscribe equality,
but as Etherington, Mercer and Reiter (1985) point out, this doesn't
work, and nothing similar works. We could hope to circumscribe
some other formula of L, but this doesn't seem
to work either. Failing that, we could hope for some other second
order formula taken from L that would express the unique names
hypothesis, but we don't presently see how to do it.

Our solution involves extending the language by introducing
the names themselves as the only objects. All assertions about objects
are expressed as assertions about the names.

We suppose our theory is such
that the names themselves
are all provably distinct. There are several ways of doing
this. Let the names be , , etc. The simplest solution is
to have an axiom for each pair of distinct names. This
requires a number of axioms proportional to the square of the number
of names, which is sometimes objectionable. The next solution involves
introducing an arbitrary ordering on the names. We have special
axioms , etc. and the general axioms
and . This
makes the number of axioms proportional to the number of names.
A third possibility involves mapping the names onto integers with
axioms like , etc. and using a theory
of the integers that provides for their distinctness. The fourth
possibility involves using string constants for the names and
``attaching'' to equality in the language a subroutine that computes
whether two strings are equal. If our names were quoted symbols as
in LISP, this amounts to having and all its countable
infinity of analogs as axioms. Each of these devices is useful
in appropriate circumstances.

From the point of view of mathematical logic, there is no harm in
having an infinity of such axioms. From the computational point of view
of a theorem proving or problem solving program, we merely suppose that we
rely on the computer to generate the assertion that two names are distinct
whenever this is required, since a subroutine can easily tell whether two
strings are the same.

Besides axiomatizing the distinctness of the constants, we also
want to axiomatize the distinctness of terms. This may be accomplished
by providing for each function two axioms. Letting foo be a function
of two arguments we postulate

and

The first axiom ensures that unless the arguments of foo are identical,
its values are distinct. The second ensures that the values of foo
are distinct from the values of any other function or any constant,
assuming that we refrain from naming any constant .

These axioms amount to making our domain isomorphic to
an extension of the Herbrand universe of the language.

Now that the names are guaranteed distinct, what about the
objects they denote? We introduce a
predicate e(x,y) and axiomatize it to be an equivalence relation.
Its intended interpretation is that the names x and y denote the same
object. We then formulate all our usual axioms in terms of names
rather than in terms of objects. Thus means that the object
named by is on the object named by , and means that the
name x denotes a bird. We add axioms of substitutivity for e with
regard to those predicates and functions
that are translates of predicates referring
to objects rather than predicates on the names themselves. Thus for a
predicate on and a function foo we
may have axioms

and

If for some class C of names, we wish to assert the unique
names hypothesis, we simply use an axiom like

However, we often want only to assume that distinct names denote
distinct objects when this doesn't contradict our other assumptions.
In general, our axioms won't permit making all names distinct simultaneously,
and there will be several models with maximally distinct objects. The
simplest example is obtained by circumscribing e(x,y) while adhering
to the axiom

where , , and are distinct names. There will then be two
models, one satisfying and the other satisfying

Thus circumscribing e(x,y) maximizes uniqueness of names.
If we only want unique names for some class C of names, then we
circumscribe the formula

An example of such a circumscription is given in Appendix B. However, there
seems to be a price. Part of the price is admitting names as objects.
Another part is admitting the predicate e(x,y) which is substitutive
for predicates and functions
of names that really are about the objects denoted by
the names. e(x,y) is not to be taken as substitutive for predicates
on names that aren't about the objects. Of these our only present example
is equality. Thus we don't have

The awkward part of the price is that we must refrain from any
functions whose values are the objects themselves rather than names.
They would spoil the circumscription by not allowing us to infer the
distinctness of the objects denoted by distinct names. Actually, we
can allow them provided we don't include the axioms involving them
in the circumscription. Unfortunately, this spoils the other property
of circumscription that lets us take any facts into account.

The examples of the use of circumscription in AI in the rest
of the paper don't interpret the variables as merely ranging over
names. Therefore, they are incompatible with getting unique names
by circumscription as described in this section. Presumably it wouldn't
be very difficult to revise those axioms for compatibility with the
present approach to unique names.