## Predicates

A *predicate* is a boolean function whose value may be true
or false, depending on the arguments to the predicate.

- Predicates are a generalization of propositional variables.

- A propositional variable is a predicate with no arguments.

Example - Consider the following boolean propositions:

A (Adam is tall)
B (Beth is tall)
C (Carl is tall)
:
Z (Zeke is tall)

We need a different proposition for each person;
each of these propositions is either true or false.
We can capture the same set of truth values using a single
predicate (or boolean function), Tall(x).

Tall(x) is true whenever person x is tall, and is false otherwise.

- Tall(Adam) is true if proposition A above is true.
- Tall(Beth) is true if proposition B above is true.
- Tall(Carl) is true if proposition C above is true.

Predicates are atomic operands in the logical expressions
of predicate logic.

## Quantifiers

All we want to know about a given proposition A (Adam is tall)
is whether A is true or false.

Given a predicate such as Tall(x), we want to know
whether Tall(x) is true for different values of x.

In addition, we might like to know whether Tall(x) is true for
every possible value of x, or whether Tall(x) is true
for some value of x.

Predicate logic has two additional operators not found in
propositional logic (called quantifiers)
to express these truth values about predicates.

- Existential quantifier E (there exists):
(E x) Tall(x)
is true if there exists some value for x such that Tall(x) is true.

- Universal quantifier A (for all):
(A x) Tall(x) is true if
Tall(x) is true for all values of x.