Representing English Sentences in Clausal Form


1. Variables and Types of Individuals.

The analogue of quantifiers in logic are such English words as something, anything, everything, nothing, a thing, things. As such, they introduce variables:

eg.
?- good(X), bad(X).
Nothing is both good and bad.

bad(X) :- accomplishes(X, Y), bad(Y).
Anything which accomplishes something bad is bad.

Other natural language quantifiers, such as some>, a, all, typically introduce a variable that refers to a specific type (or classification) of individual. The type is usually denoted by the noun following the quantifier. For instance, "all human" introduces a variable of type human. The quantifier is often implicit in English as well as in the clausal form:

animal(X) :- human(X).
Humans are animals.

The English words anyone, everyone, anywhere, somewhere, anytime, sometime, which include both a quantifier and a noun in their meaning, refer to individuals of type human, place, and time.

English relative pronouns, such as who, which, and where, refer to individuals already mentioned in the same sentence:

environment_friendly(X) :- human(X),
recycles(X).
Anyone who recycles is environment friendly.

The restrictive relative clause who recycles becomes an extra condition on X.

Non-restrictive relative clauses, however, usually add extra sentences to the main sentence:

environment_friendly(john).
recycles(john).
John, who recycles, is environment friendly.

Types can be treated as individuals rather than as properties of individuals:

is_a(X, animal) :_ is_a(X, human).

This treatment gives us more expressive power, by allowing us to write clauses which refer to types by means of variables:

is_a(X, Y) :- is_a(X, Z),
is_a(Z, Y).

2. Existence.

English indefinite quantifiers (some, a) express existence. In the standard form of logic the existence of individuals can be expressed without giving them a name. But in the clausal form, existence is expressed by naming individuals, using constant symbols and function symbols, e.g.:

is_a(cromagnon, man).
is_a(cromagnon, animal).
Some men are animals.

where the constant symbol cromagnon is not used elsewhere to name a different individual. Notice, that the same clauses cal also be regarded as expressing the English sentences:

Some animals are men.
There is a man who is an animal.
There is animal who is a man.

When the indefinite quantifier is in the scope of a universal quantifier, we need a function symbol rather than a constant:

parent_of(X, par(X)) :- human(X).
loves(par(X), X) :- human(X).

The simpler clauses:

parent_of(X, Mother-Earth) :- human(X).
loves(Mother-Earth ,X) :- human(X).
Everyone has a parent who loves him/her.

would express the stronger assumption that there is a single individual (say, Mother-Earth) who is a parent of everyone and loves everyone.

Individuals can be named by function symbols having several arguments:

list(cons(X, Y)) :- list(Y).
first_of(cons(X, Y), X) :- list(X).
rest_of(cons(X, Y), Y) :- list(X).
For every individual X and every list Y there exists a list whose first element is X and rest is Y.

where the term cons(X, Y) names the list constructed by putting the element X in from of the list Y.

The existence of an individual which is referred to in the conclusions of a statement needs to be expressed by a constat or function symbol. However, it needs to be expressed by a variable if the individual is referred to in the conditions of the statment but not in the conclusions:

granparent_of(Y, X) :- human(X),
human(Y),
parent_of(Z, X),
parent_of(Y, Z).
One person is a grandparent of another if he/she has a child who is a parent of the other.

Such clauses are often easier to understand if variables which occur in conditions but not in conclusions are read as expressing existence.

3. Negation.

Negation can only be indirectly expressed in clausal form, through conditionless clauses, e.g.:

?- mother_of(eve, X).
Eve has no mother.

?- mother(X), father(X).
No one is both a mother and a father.

It is a feature of clausal form semantics that a negated condition can be reexpressed as an unnegated conclusion, e.g.:

toadstool(X), mushroom(X) :- fungus(X).

stand for all of the following sentences:

Every fungus which is not a toadstool is a mushroom.
Every fungus which is not a mushroom is a toadstool.
Everything which is neither a mushroom nor a toadstool is not a fungus.

4. Denial of Conclusions Which Are Implications.

In clausal form, to show that assumptions imply a conclusion it is necessary to deny that the conclusion holds and to demonstrate inconsistency. A typical conclusion often has the form of an implication:

shy(X) :- dinosaur(X).
All dinosaurs are shy.

To deny an implication we must assert the existence of individuals satisfying all of the conditions, and deny that they satisfy the conclusions. In our example:

dinosaur(barney).
?- shy(barney).

5. Conditions Which Are Implications.

Whereas in standard logic we can directly express conditions that are implications, in clausal form we need to paraphrase the sentence including them. For instance, the implication

All of Veronica's students like logic.

which can be expressed as a Horn Clause:

likes(logic, X) :- student_of(veronica, X).

is the condition in the sentence

Veronica is happy if all of her students like logice.

This can be paraphrased into:

Not all of Veronica's students like logic if Veronica is unhappy.

There is a student of Veronica's, who doesn't like logic, if Veronica is unhappy.

There is a student of Veronica's, say John, and John doesn't like logic, if Veronica is unhappy.

John is a student of Veronica's if Veronica is unhappy.
John doesn't like logic if Veronica is unhappy.

John is a student of Veronica's or Veronica is happy.
Veronica is happy if John likes logic.

student_of(veronica, john), happy(veronica). happy(veronica) :- likes(john, logic).

6. Definitions if-and-only-if

If-and-only-if definitions need to be broken down into two halves, the if one and the only if one. The only-if half is often unnatural. For instance, the only-if half of the definition:

X is a grandparent of Y <-> there is a Z which is a child of X and parent of Y.

is represented through the following two clauses:

parent_of(rel(X, Y), X) :- grandparent_of(Y, X).
parent_of(Y, rel(X, Y)) :- grandparent_of(Y, X).

References

Kowalski, R. (1979) Logic for Problem Solving, Elsevier North-Holland.

Exercises

  1. Express the following sentences in clausal form. Some of them are ambiguous.
    1. Everyone likes someone.
    2. Everyone likes everyone.
    3. Someone likes everyone.
    4. No one likes anyone.
    5. No one likes someone.
    6. Somone likes no one.
    7. John and Mary like themselves.
    8. A teacher is happy if he or she belongs to no committees. (Paraphrase the sentence first: It is not the case that a teacher is happy and belongs to some committee).
    9. Anyone who knows anything about logic likes logic.

  2. In each of the following arguments the assumptions imply the conclusion. Express the assumptions and teh denial of the conclusion in clausal form, so that the resulting set of clauses is inconsistent. Demonstrate inconsistency by showing that the set of clauses is true in no interpretation.

    1. Assumption There is a single individual who is a loving parent of everyone.
      Conclusion Everyone has a parent who loves him or her.

    2. Assumptions All easterners like all westerners.
      All westerners like all easterners who like some westerners.
      Conclusion All westerners like all easterners without exception.

    3. Assumptions Canaries are birds.
      All birds have wings.
      ConclusionCanaries have wings.


$RCSfile: $ $Revision: $ $Date: $