21.2 Variables, Free and Bound
Back in Chapter 20 we said there are two kinds of terms, constants and variables.
Constants, or names, always refer to the same object. Once I start using p for Pia, and can’t later use it for Peter.
Variables aren’t like that. They aren’t assigned a specific interpretation. Instead, they are like pronouns.
For example, think “it” when you see x, y or z.
Cat(x) means “it is a cat”.
When we want to different instances of “it” to pick out the same object, we need to use the same variable.
There’s an important difference between variables in FOL and “it” in English, though.
In English we can use context to indicate what we are talking about, like pointing to an animal when saying “it is a dog”.
“It is a dog” is true, then, if I’m pointing at a dog.
FOL is not like that. Dog(x) alone is neither true nor false. It doesn’t have a truth value.
What the variable x is like, then, is then word “it” when it’s used to refer to a specific thing yet. x is an abstract “it” that doesn’t yet have anything it refers to.
If I say “it is a dog”, but I don’t give or even intend to give “it” a specific meaning, then I haven’t yet even made a claim about the world that could be true or false.
That is what variables are like.
And that is why variables need quantifiers: once we connect a variable to a quantifier, then we can make specific claims that are true or false.
When a quantifier connects with a variable, like Ex or Ax, we say it binds the variable.
“Ex” binds every occurrence of x inside the scope of the quantifier.
But quantifiers are like negation: they always have narrow scope, unless parentheses make it wider.
So in the formula
The E binds the x in Cat(x), but it does not bind the x in Dog(x).
When a variable is not bound, it is free.
Instead of parentheses, we also could have used a second quantifier to bind the x in Dog(x).
We can use the variable x for both the cat and the dog because the scope of the quantifiers is distinct.
The reason we have different variables, like x, y and z, is because often we will have quantifiers with overlapping scope, like this:
So in themselves, each different variable, x, y, z, does not have any meaning.
ExCat(x) and EyCat(y) both say the same thing: something is a cat, or there is a cat.
We will have you always use x just for simplicity, and we will use y, z, etc., only if we need them.