[alicebot-archcomm] topic attribute

Dr. Richard S. Wallace alicebot-archcomm@list.alicebot.org
Mon, 19 Nov 2001 23:22:39 -0800


> > word "variable" or "var"? "Predicate" is such a weird example of AIML
> > contortionism: every time I see that word I have to spend a second or
> > two to remind myself that it does not mean "the predicate of a
> > sentence".
> > Sometimes I think the cure is worse than the disease. If it aint broke
> > don't fix it. Etc.
> > </superrant>
>
> I don't think that the use of the notion of a predicate is really "hip"
> -- I think "hip" is more like the "code now, think later" approach that
> produced some of the mess that the world is still trying to recover
> from.  I don't think it's "cryptic", either, but I do think it is not
> well documented.  I also don't think these are "alternative names
> for...straightforward concepts"; I think these are alternative concepts
> that are well-grounded in several centuries of thought.

The term "predicate" as Noel said has a long and well established
meaning in symbolic logic, going back at least 110 years.  Logic and
mathematics are full of concepts that have been rediscovered by computer
programmers in the era since 1960.  Few programming languages acknowledge
the debt of invention to logic and math.  SETL, Lisp and Prolog are a few
exceptions.  So hopefully is AIML.

Many years from now, after all the dust has settled, and all the marketing
hype
is stripped away, the few interesting concepts to emerge from this brief
interlude of computer science, will have to take their place alongside the
achievements of Frege, Russell, Goedel and Turing.

Having said all that, there is however a slight difference between the term

"predicate" in first-order logic and the term "predicate" as we use it.  In
logic,
predicates must be either true or false.  Thus:

Name(client, Ziggy) = true
Age(client, 18) = true
Location(client, Tokyo) = true

would be examples of predicates in symbolic logic.  Specifically, these are

called first-order binary predicates.  "First order" because the predicates

cannot have predicates as arguments.  "Binary" because they have two
arguments.

In AIML, we represent these predicates by their functional equivalents:

<set name="name">Ziggy</set>
<set name="age">18</set>
<set name="location">Tokyo</set>

<get name="name"/> = Ziggy
<get name="age"/> =  18
<get name="location"/> = Tokyo

Or in more mathematical notation:

name(client) = Ziggy
age(client) = 18
location(client) = Tokyo.

For simple one-to-one functions, there is an exact correspondence between
binary predicates and the functional representation.

Problems start to arise when we conisder more general forms of predicates:

1. The binary form with multiple values

Friend(client, Sam)
Friend(client, Tom)
Friend(client, Ulam)

Or in functional form

friend(client) = {Sam, Tom, Ulam}

The function in this case has multiple values.  What should the value of
<get name="friend"/> return?  The entire set?  An arbitrary element?

Do we need an add function like

<add name="friend"/>Ulam</add> would add the element Ulam to the set of
friends.

2. N-ary predicates (N > 2)

For example:

The client says,
"Mary is taller than Natalie"
"Pittsburgh is between New York and Chicago."

In predicate form:

Taller(client, Mary, Natalie)
Between(client, Pittsburgh, New York, Chicago)

How do we represent these in functional form?

taller(client, Mary) = Natalie?

Should the robot be able to answer,
"Does there exist x, such that x is taller than Natalie?"

between(client, New York, Chicago) = Pittsburgh?
or
between(client, Pittsburgh, Chicago) = New York?

The point is, there are many possible functional
representations that capture only part of the information
represented by N-ary predicates.

3. Both of the above, i.e. N-ary, Multi-valued

Between(Pittsburgh, New York, Chicago)
Between(Colombus, New York, Chicago)
Between(Harrisburg, New York, Chicago)

Do we want the robot to be able to answer
queries like:

- What cities is Pittsburgh between?
- What cities are between New York and Chicago
- What cities are between Chicago and New York
- Is Columbus between Pittburgh and New York?
- Name all the cities between New York and any other city.

Another way to state that question might be:
How much like Prolog do we want AIML to become?

Rich