Subsection 4.1.1 Introduction
In Boolean logic, we give names to simple statements. For example, if we wanted to talk about some bears, we could assign names as follows:
A: Tai Shan has a tail.
S: Smokey has a tail.
P: Puffy has a tail.
C: Chumpy has a tail
L: Snowflake has a tail.
And then we might assert all of these as premises:
[1] A
[2] S
[3] P
[4] C
[5] L
But now what? Can we say anything general about tail possession? For example, “If you have a tail, it can get stepped on.” We’d want to be able to say that in a way that would let us conclude that each of our individual furry friends might be vulnerable to tail stomping.
Alternatively, if I tell you that Lun Lun just had twins, do you know that two more tailed creatures have entered the world? (No kidding, that’s what baby giant pandas look like.)
With what we have so far, the answer to both of these questions is, “no”. Our problem is that we want not just to make specific statements about specific bears (or people or whatever). We want to make general claims. For example, we want to say things like:
All bears have tails.
Anything that has a tail is vulnerable to it being stepped on.
Boolean logic doesn’t let us do this. We need a more powerful mechanism. In this section, we’ll describe such a mechanism. We’ll call it predicate logic.