"

First-order tableaux

Just like our first-order syntax and semantics is an extension of zeroth-order syntax and semantics, our first-order tableau system will be an extension of our zeroth-order one. In particular, and again paralleling the syntactic and semantic treatment, the only additional rules we need to introduce for our system are the ones which will allow us to deal with quantified sentences.

Our tableau system only deals with first-order sentences, that is, closed formulas. Accordingly, open formulas will not occur at any part of any of the deductions to follow.

Accordingly, we still have the same rules for the connectives as introduced for zeroth-order tableau. In particular, we have:

  1. the premise rule Pr;
  2. the double negation rule
    ¬¬\neg \neg;
  3. the conjunctiom rule
    \wedgeand the negated conjunction rule

    ¬\neg \wedge;

  4. the disjunction rule
    \veeand the negated disjunction rule

    ¬\neg \vee;

  5. the conditional rule
    \rightarrowand the negated conditional rule

    ¬\neg \rightarrow.

We also retain the general approach to how we construct our trees. So in particular, if we want to show that

{X1,X2,...}Y\{X_1, X_2, …\} \vdash Y

, we put the formula

¬Y\neg Y

(the negation of

YY

) as the starting point. Then, if the argument is indeed syntactically valid, we should be able to close each branch of the tree (sooner or later) by finding some formula

ZZ

and its negation

¬Z\neg Z

for each branch.

Again, the only change is that we need rules to deal with certain additional formula forms. In particular:

  1. a rule
    \forallfor universally quantified sentences of form

    xY\forall x Y;

  2. a rule
    ¬\neg \forallfor negated universally quantified sentences of form

    ¬xY\neg \forall x Y;

  3. a rule
    \existsfor existentially quantified sentences of form

    xY\exists x Y;

  4. a rule
    ¬\neg \existsfor negated existentially quantified sentences of form

    ¬xY\neg \exists x Y.

Accordingly, our definition of what it means for something to constitute a proof of validity is as follows:

Definition 8.3. Let

A={X1,X2,...}A=\{X_1, X_2, …\}be any set of sentences and let

YYbe any sentence of

1\mathcal{L}_1. Then, the set of premises

AAsyntactically entails

YY, or

YYis a syntactic consequence of

AA, iff there is a closed tree with

¬Y\neg Yat its origin using the zeroth-order rules, plus the rules

\forall,

¬\neg \exists,

\exists, and

¬\neg \forall. In such cases, we write

AYA \vdash Y, and call the closed tree a (first-order) proof of

YYfrom the premise set (or simply, premises)

AA. If there is a closed tableau with

¬Y\neg Yat its origin and without the use of the rule Pr, we say

YYis a first-order theorem and write

Y\vdash Y.

The rule \forall

We start with the simplest first-order tableau rule,

\forall

. What the rule

\forall

captures, in semantic terms, is that if for some structure

𝐒\mathbf{S}

,

𝐒xY\mathbf{S} \models \forall x Y

, then if we take

YY

by itself and replace each variable

xx

originally bound by the quantifier

\forall

in front of the formula with an arbitrary name

aa

, then the resulting sentence will also be true in the structure. Remember that we have a particular notation for this. Namely, what we claim is that if

𝐒xY\mathbf{S} \models \forall x Y

, then for any name

aa

, we have that

𝐒Y(a/x)\mathbf{S} \models Y(a/x)

. Unsurprisingly, this is a semantically valid inference in first-order logic. Moreover, it is intuitively quite simple.

For example, it is true of every natural number that it is either less than or equal 5, or larger than 5. That is,

x(x5x>5)\forall x (x\leq 5 \vee x >5)

(in the more familiar but technically ruled out infix notation). But then we can substitute for

xx

any specific number, and the resulting sentence will also be true. For example, it is true that

454>54 \leq 5 \vee 4 >5

, since

454 \leq 5

. But it is also true that

757>57 \leq 5 \vee 7 >5

, since

7>57>5

. And the sentence will also be true if we substitute

4545

,

22

, or

8357463483574634

for

xx

in

x(x5x>5)\forall x (x\leq 5 \vee x >5)

.

Accordingly, we get the following non-branching rule:

1. For all x, Y(x). 2. Y(a/x) for all 1
Universal quantification rule

The following example is an application of the

\forall

rule:

image

As you can see, we simply took the universally quantified sentence

xy(R(x,y)zR(x,z))\forall x \exists y (R(x, y) \wedge \exists z R(x, z))

, and using the

\forall

rule, derived from it the sentence

y(R(a,y)zR(a,z))\exists y (R(a, y) \wedge \exists z R(a, z))

, which results from taking off the quantifier expression

x\forall x

and substituting the name

aa

for every occurrence of

xx

bound by

\forall

. And since the rule works with any name whatsoever, we could also use it like this:

image

Of course, in practice, which name we choose is not quite this arbitrary, since we are always aiming to close the branches of the tree. And this is usually only possible with some specific choice for a name to be substituted in.

For example, take

{x(P(x)Q(x)),P(b)}Q(b)\{\forall x (P(x) \rightarrow Q(x)), P(b)\} \vdash Q(b)

. We can prove this as follows:

image

As you can see, the only reason we were able to close the branches of the tree is because we substituted

bb

for

xx

when applying

\forall

on line

33

. If we substituted any other name for

xx

, the branches would not have closed. Thus, when you are using the rule

\forall

, you need to be mindful which name you choose. Remember that the goal is always to be able to close each branch of the tree.

The rule ¬\neg \exists

Just like the rules

\wedge

and

¬\neg \vee

function similarly, the

\forall

rule functions similar to the

¬\neg \exists

rule. This is no accident given the negation push-through result we showed earlier. In particular, if

𝐒¬xY(x)\mathbf{S} \models \neg \exists x Y(x)

, then

𝐒x¬Y(x)\mathbf{S} \models \forall x \neg Y(x)

. And as noted above, from

𝐒x¬Y(x)\mathbf{S} \models \forall x \neg Y(x)

, it follows that

𝐒¬Y(a/x)\mathbf{S} \models \neg Y(a/x)

for any name

aa

. So from

¬xY(x)\neg \exists xY(x)

, we should be able to immediately derive

¬Y(a/x)\neg Y(a/x)

.

Again, intuitively, this is easy to see. For example, it is true at this point in time at least that there is no one taller than 10 feet. From this, it follows that everyone is not taller than 10 feet. So substituting any person’s name, it will also be true that, e.g., ‘Dwayne Johnson is not taller than 10 feet’, ‘Donald Trump is not taller than 10 feet’, and ‘Beyonce is not taller than 10 feet’. In symbols, from

¬xT(x)\neg \exists x T(x)

, it follows that

x¬T(x)\forall x \neg T(x)

, from which it follows that

¬T(a)\forall x \neg T(a)

for any name

aa

. This is precisely the type of reasoning the

¬\neg \exists

rule codifies.

Logical proof image showing two lines: "1. ¬∃x Y(x)", "2. ¬Y(a/x) derived from ¬∃ 1."
Negated existential quantification rule

For example, take

¬x(P(x)Q(x))¬Q(d)P(d)\neg \exists x (P(x) \rightarrow Q(x)) \vdash \neg Q(d) \wedge P(d)

. We can prove this as follows:

image

Once again, it was important when using the rule

¬\neg \exists

that we substituted

dd

for

xx

, since it was

dd

that occurred in the conclusion, and hence was necessary to close both branches of the tree.

The rule \exists

The rule

\exists

comes with an important caveat that you should always keep in mind. Semantically speaking, a sentence like

xP(x)\exists x P(x)

gives us some information, but in some sense, that information is quite limited. Namely, it tells us that there exists an

xx

such that it is

PP

, but it does not tell us which thing is the one that is

PP

. Accordingly, unlike with

\forall

, you cannot just substitute any name for

xx

in

P(x)P(x)

to get a sentence that is true. In fact, you cannot be sure that you can substitute any name for

xx

in

P(x)P(x)

, for it might be the case that the object that makes

xP(x)\exists x P(x)

true does not have a name (that is, no name is interpreted such that its value is the object that is

PP

).

For example, suppose you are in a classroom the first day of classes at your college, and there are 20 other students with you. However, you only know two of them by name, your friends Jade and Ali. Then, the professor tells you: ‘There is a senior in this classroom’. Can you infer that ‘Jade is a senior’, or that ‘Ali is a senior’, based on this information alone? The answer is ‘no’, since you do not know who the senior is, only that there is one. And the situation is not much better if the professor gives you the names of every person in the room, for again, you still do not know which name is the name of the senior.

However, sometimes you do want to have a name for an object in the domain that makes an existential statement true, and to then reason about that specific object. For example, the professor might tell you later on that every person who is a senior received an A, from which you can reason that the person who is a senior got an A. Now what you can do in this case is simple; introduce a new name with the explicit intention that it refer to that specific object. In the above example, we could introduce a new name like ‘Senior’, and say that that person is a senior. The important thing is that ‘Senior’ must be an entirely new name, not shared by anyone in the class. Then, you can infer that ‘Senior is a senior’, and from then, that ‘Senior got an A’, and so on.

Based on the above, our

\exists

rule is specified as follows:

Math proof showing: (1) There exists x such that Y(x). (2) Y(a/x), derived from step 1.
(For a name aathat does not occur in the premise set or on the branch of the tree)
Existential quantification rule

We are now in the position to show Proposition 8.7 syntactically, namely, that

{x(P(x)Q(x)),yP(y)}yQ(y)\{\forall x (P (x) \rightarrow Q(x)), \exists y P(y)\} \vdash \exists y Q(y)

The proof goes like this:

image

Notice the interplay between our three rules,

\exists

,

\forall

, and

¬\neg \exists

above. First, we used the

\exists

rule on

yP(y)\exists y P(y)

. For this, we needed to find a new name that did not occur on any of the branches or in the premise set. This was trivial, since no name occurred in either. So we chose a random one,

ee

. So we deduced that

ee

is

PP

. Next, we considered

x(P(x)Q(x))\forall x (P(x) \rightarrow Q(x))

. With

\forall

, we can substitute for

xx

any name whatsoever, but of course, we chose

ee

specifically. So we got that if

ee

is

PP

, then

ee

must be

QQ

. With

\rightarrow

, this left us two options: either

ee

is not

PP

, or

ee

must be

QQ

. But we already knew that

ee

is

PP

, so that branch closed. Moreover, from

¬yQ(y)\neg\exists y Q(y)

, with the rule

¬\neg \exists

, we can substitute for

yy

any name whatsoever. So in particular, we again substituted

ee

for

yy

, getting

¬Q(e)\neg Q(e)

, and closed the other branch.

The rule ¬\neg\forall

Given the above, it is now easy to understand the rule

¬\neg\forall

. First, we can again refer to negation push-through. In particular, semantically, if

𝐒¬xY(x)\mathbf{S} \models \neg \forall x Y(x)

, then

𝐒x¬Y(x)\mathbf{S}\models \exists x \neg Y(x)

. That is, if it is not true of everything that

YY

, then there is something for which it is false that

YY

. But then again, we can use the reasoning we provided for the rule

\exists

, and derive from

x¬Y(x)\exists x \neg Y(x)

the sentence

¬Y(a/x)\neg Y(a/x)

provided

aa

is a new name introduced specifically for the object that makes

x¬Y(x)\exists x \neg Y(x)

true. Thus, we simply have:

Logical proof with two steps. Step 1: "¬∀xY(x)." Step 2: "¬Y(a/x)" derived from step 1 using negation of the universal quantifier.
(For a name aathat does not occur in the premise set or on the branch of the tree)
Existential quantification rule

Here is an illustration of how this works in practice. Take the following:

¬xQ(x),yS(y)zQ(z)¬uS(u){\neg\forall x Q(x), \exists y S(y) \rightarrow \forall z Q(z)} \vdash \neg \exists u S(u)

We can show that this is indeed the case as follows:

image

Notice something extremely important above. As noted, the name introduced with either

\exists

or

¬\neg\forall

must always be one that does not occur in the premise set or on the branch that we are working on. On line 4, we introduced the name

ee

, using

¬\neg\forall

on

¬xQ(x)\neg\forall x Q(x)

. Then, on the left branch, at line 6, we came across

uS(u)\exists u S(u)

. This meant that we needed a new name to apply

\exists

. But now there was a name already occurring on the branch, namely, the name

ee

. So

ee

was off limits, and we needed to find a new one. So we chose

dd

. Notice also that when it came to

¬\neg\exists

and

\forall

, we chose the names

dd

and

ee

, respectively. There is no mystery here. We could have chosen any name whatsoever, including the inverse selection. But since we wanted to close both branches, we chose the names in accordance with that goal.

Exercise 8.8. Show that the following hold in first-order logic:

  1. ¬xP(x)x¬P(x)\neg \forall x P(x) \vdash \exists x \neg P(x)
  2. x¬P(x)¬xP(x)\exists x \neg P(x) \vdash \neg \forall x P(x)
  3. ¬xP(x)x¬P(x)\neg \exists x P(x) \vdash \forall x \neg P(x)
  4. x¬P(x)¬xP(x)\forall x \neg P(x) \vdash \neg \forall x P(x)
  5. ¬x¬Q(x)xQ(x)\neg \forall x \neg Q(x) \vdash \exists x Q(x)
  6. xQ(x)¬x¬Q(x)\exists x Q(x) \vdash \neg \forall x \neg Q(x)
  7. ¬x¬Q(x)xQ(x)\neg \exists x \neg Q(x) \vdash \forall x Q(x)
  8. xQ(x)¬x¬Q(x)\forall x Q(x) \vdash \neg \exists x \neg Q(x)

Here is the first one:

image

Exercise 8.9. Show that the following hold in first-order logic:

  1. xyL(x,y)zL(a,z)\forall x \exists y L(x, y) \vdash \exists z L(a, z)
  2. xyL(y,x)xyL(x,y)\exists x \forall y L(y, x) \vdash \forall x \exists y L(x, y)
  3. x¬L(a,x)xy¬L(x,y)\forall x \neg L(a, x) \vdash \exists x \exists y \neg L(x, y)
  4. {x(L(a,x)P(x)),¬P(b)}¬L(a,b)\{\forall x (L(a, x) \rightarrow P(x)), \neg P(b)\} \vdash \neg L(a, b)
  5. {x(L(a,x)y(L(a,y)L(y,x)))}L(a,b)x(L(a,x)L(x,b))\{\forall x (L(a, x) \vee \exists y (L(a, y) \wedge L(y, x)))\} \vdash L(a, b) \vee \exists x (L(a, x) \wedge L(x, b))
  6. {xL(x,b)x¬L(x,b),L(a,b)}L(c,b)\{\forall x L(x, b) \vee \forall x \neg L(x, b), L(a, b)\}\vdash L(c, b)
  7. {xL(j,x)¬yL(b,y)}L(j,b)¬L(b,j)\{\forall x L(j, x) \wedge \neg \exists y L(b, y)\} \vdash L(j, b) \wedge \neg L(b, j)
  8. {x(L(j,x)yL(y,x)),¬L(a,b)}¬L(j,b)\{\forall x(L(j, x) \rightarrow \forall y L(y, x)), \neg L(a, b)\} \vdash \neg L(j, b)
  9. {x(yL(y,x)yL(x,y))}¬xL(a,x)¬L(c,a)\{\forall x (\exists y L(y, x) \rightarrow \exists y L(x, y))\} \vdash \neg \exists x L(a, x) \rightarrow \neg L(c, a)
  10. {¬L(a,a),xy(L(x,y)L(y,y))}¬xL(x,a)\{\neg L(a, a), \forall x \forall y(L(x, y) \rightarrow L(y, y))\} \vdash \neg \exists x L(x, a)

License

Icon for the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License

Learning Logic Backwards Copyright © by Peter Susanszky is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License, except where otherwise noted.