In the remainder of this chapter, we will represent the meaning of natural language expressions by translating them into first-order logic. Not all of natural language semantics can be expressed in first-order logic. But it is a good choice for computational semantics because it is expressive enough to represent many aspects of semantics, and on the other hand, there are excellent systems available off the shelf for carrying out automated inference in first-order logic.

Our next step will be to describe how formulas of first-order logic are constructed, and then how such formulas can be evaluated in a model.

First-order logic keeps all the Boolean operators of
propositional logic, but it adds some important new mechanisms. To
start with, propositions are analyzed into predicates and arguments,
which takes us a step closer to the structure of natural languages.
The standard construction rules for first-order logic recognize
**terms** such as individual variables
and individual constants, and **predicates** that take differing numbers of
**arguments**. For example, *Angus
walks* might be formalized as
*walk*(*angus*) and
*Angus sees Bertie* *as
see*(*angus*,
*bertie*). We will call *walk* a
**unary predicate**, and
*see* a **binary
predicate**. The symbols used as predicates do not have
intrinsic meaning, although it is hard to remember this. Returning to
one of our earlier examples, there is no *logical*
difference between a and b.

Example 10-13.

*love*(*margrietje*,*brunoke*)*houden_van*(*margrietje*,*brunoke ...*

Start Free Trial

No credit card required