Introduction to Logic
Tools
for
Thought
 

Lesson 13 - Induction


13.1 Introduction

Induction is reasoning from the specific to the general. If various instances of a schema are true and there are no counterexamples, we are tempted to conclude a universally quantified version of the schema.

p(a) ⇒ q(a)
p(b) ⇒ q(b) x.(p(x) ⇒ q(x))
p(c) ⇒ q(c)

Incomplete induction is induction where the set of instances is not exhaustive. From a reasonable collection of instances, we sometimes leap to the conclusion that a schema is always true even though we have not seen all instances. Consider, for example, the function f where f(1)=1, and f(n+1)=f(n) + 2n + 1. If we look at some values of this function, we notice a certain regularity - the value of f always seems to be the square of its input. From this sample, we are tempted to leap to the conclusion that f(n)=n2. Lucky guess. In this case, the conclusion happens to be true; and we can prove it.

nf(n)n2
111
2422
3932
41642
52552

Here is another example. This one is due to the mathematician Fermat (1601-1665). He looked at values of the expression 22n + 1 for various values of n and noticed that they were all prime. So, he concluded the value of the expression was prime number. Unfortunately, this was not a lucky guess. His conjecture was ultimately disproved, in fact with the very next number in the sequence. (Mercifully, the counterexample was found after his death.)

n22n+1Prime?
15Yes
217Yes
3257Yes
465537Yes

For us, this is not so good. In Logic, we are concerned with logical entailment. We want to derive only conclusions that are guaranteed to be true when the premises are true. Guesses like these are useful in suggesting possible conclusions, but they are not themselves proofs. In order to be sure of universally quantified conclusions, we must be sure that all instances are true. This is called complete induction. When applied to numbers, it is usually called mathematical induction.

The technique used for complete induction varies with the structure of the language to which it is applied. We begin this chapter with a discussion of domain closure, a rule that applies when the Herbrand base of our language is finite. We then move on to Linear Induction, i.e. the special case in which the ground terms in the language form a linear sequence. We look at tree induction, i.e. the special case in which the ground terms of the language form a tree. And we look at Structural Induction, which applies to all languages.



13.6 Multidimensional Induction

In our look at induction thus far, we have been concentrating on examples in which the conclusion is a universally quantified sentence with just one variable. In many situations, we want to use induction to prove a result with more than one universally quantified variable. This is called multidimensional induction or, sometimes, multivariate induction.

In principle, multidimensional induction is straightforward. We simply use ordinary induction to prove the outermost universally quantified sentence. Of course, in the case of multidimensional induction the base case and the inductive conclusion are themselves universally quantified sentences; and, if necessary we use induction to prove these subsidiary results.

As an example, consider a language with a single object constant a, a unary function constant s, and a binary relation constant e. The axioms shown below define e.

e(a,a)
xe(a,s(x))
xe(s(x),a)
x.∀y.(e(x,y) ⇒ e(s(x),s(y)))
x.∀y.(e(s(x),s(y)) ⇒ e(x,y))

The relation e is an equivalence relation - it is reflexive, symmetric, and transitive. Proving reflexivity is easy. Our goal here is to prove symmetry.

Goal: ∀x.∀y.(e(x,y) ⇒ e(y,x)).

In what follows, we use induction to prove the outer quantified formula and then use induction on each of the inner conclusions as well. This means we have two immediate subgoals - the base case for the outer induction and the inductive case for the outer induction.

Goal: ∀y.(e(a,y) ⇒ e(y,a)).
Goal: ∀x.(∀y.(e(x,y) => e(y,x)) ⇒ ∀y.(e(s(x),y) => e(y,s(x)))).

As usual, we start with our premises. We then prove the base case of the inner induction. This is easy. We assume e(a,a) and then use Implication Introduction to prove the base case in one step.

1. e(a,a) Premise
2. xe(a,s(x)) Premise
3. xe(s(x),a) Premise
4. x.∀y.(e(x,y) ⇒ e(s(x),s(y))) Premise
5. x.∀y.(e(s(x),s(y)) ⇒ e(x,y)) Premise
6.
 e(a,a)
Assumption
7. e(a,a) ⇒ e(a,a) Implication Introduction: 6, 6

The next step is to prove the inductive case for the inner induction. To this end, we assume the inductive hypothesis and try to prove the inductive conclusion. Since the conclusion is itself an implication, we assume its antecedent and prove the consequent. As shown below, we do this by assuming the consequent is false and proving a sentence and its negation. We then use Negation Introduction and Negation Elimination to derives the consequent. We finish with two applications of Implication Introduction and an application of Universal Introduction.

8.
 e(a,d) ⇒ e(d,a))
Assumption
9.
 e(a,s(d))
Assumption
10.
 ¬e(s(d),a)
Assumption
11.
 e(a,s(d))
Reiteration: 9
12.
 ¬e(s(d),a) ⇒ e(a,s(d))
Implication Introduction: 10, 11
13.
 ¬e(s(d),a)
Assumption
14.
 ¬e(a,s(d))
Universal Elmination: 2
15.
 ¬e(s(d),a) ⇒ ¬e(a,s(d))
Implication Introduction: 13, 14
16.
 ¬¬e(s(d),a)
Negation Introduction: 12, 15
17.
 e(s(d),a)
Negation Elimination: 16
18.
 e(a,s(d)) ⇒ e(s(d),a)
Implication Introduction: 9, 17
19.  (e(a,d) ⇒ e(d,a)) ⇒ (e(a,s(d)) ⇒ e(s(d),a)) Implication Introduction: 8, 18
20.  ∀y.((e(a,y) ⇒ e(y,a)) ⇒ (e(a,s(y)) ⇒ e(s(y),a))) Universal Introduction: 19
21.  ∀y.(e(a,y) ⇒ e(y,a)) Induction: 7, 20

That's a lot of work just to prove the base case of the outer induction. The inductive case of the outer induction is even more complex, and it is easy to make mistakes. The trick to avoiding these mistakes is to be methodical.

In order to prove the inductive case for the outer induction, we assume the inductive hypothesis y.(e(c,y) => e(y,c)); and we then prove the inductive conclusion ∀y.(e(s(c),y) => e(y,s(c)))). We prove this by induction on the variable y.

We start by proving the base case for this induction. We start with the inductive hypothesis. We then assume the antecedent of the base case.

22.
 ∀y.(e(c,y) => e(y,c))
Assumption
23.
 e(s(c),a)
Assumption
24.
 ¬e(a,s(c))
Assumption
25.
 e(s(c),a)
Reiteration: 23
26.
 ¬e(a,s(c))) ⇒ e(s(c),a)
Implication Introduction: 24, 25
27.
 ¬e(a,s(c))
Assumption
28.
 ¬e(s(c),a)
Universal Elimination: 3
29.
 ¬e(a,s(c))) ⇒ ¬e(s(c),a)
Implication Introduction: 27, 28
30.
 ¬¬e(a,s(c)))
Negation Introduction: 26, 29
31.
 e(a,s(c)))
Negation Elimination: 30
32.
 e(s(c),a) ⇒ e(a,s(c)))
Implication Introduction: 23, 31

Next, we work on the inductive case. We start by assuming the inductive hypothesis. We then assume the antecedent of the inductive conclusion.

33.
 e(s(c),d) ⇒ e(d,s(c))
Assumption
34.
 e(s(c),s(d))
Assumption
35.
 ∀d.(e(s(c),s(d)) ⇒ e(c,d))
Universal Elimination: 5
36.
 e(s(c),s(d)) ⇒ e(c,d)
Universal Elimination: 35
37.
 e(c,d)
Implication Elimination: 36, 34
38.
 e(c,d) => e(d,c)
Universal Elimination: 22
39.
 e(d,c)
Implication Elimination: 38, 37
40.
 ∀d.(e(d,c) ⇒ e(s(d),s(c)))
Universal Elimination: 4
41.
 e(d,c) ⇒ e(s(d),s(c))
Universal Elimination: 40
42.
 e(s(d),s(c))
Implication Elimination: 41, 39
43.
 e(s(c),s(d)) ⇒ e(s(d),s(c))
Implication Introduction: 34, 42
44.
 (e(s(c),d) ⇒ e(d,s(c))) ⇒ (e(s(c),s(d)) ⇒ e(s(d),s(c)))
Implication Introduction: 33, 43
45.
 ∀y.((e(s(c),y)⇒e(y,s(c)))⇒(e(s(c),s(y))⇒e(s(y),s(c))))
Universal Introduction: 44

From the results on lines 32 and 45, we can conclude the inductive case for the outer induction.

46.
 ∀y.(e(s(c),y) ⇒ e(y,s(c)))
Induction: 32, 45
47.  ∀y.(e(c,y) => e(y,c)) ⇒ ∀y.(e(s(c),y) ⇒ e(y,s(c))) Implication Introduction: 22, 46
48.  ∀x.(∀y.(e(x,y) => e(y,x)) ⇒ ∀y.(e(s(x),y) ⇒ e(y,s(x)))) Universal Introduction: 47

Finally, from the base case for the outer induction and this inductive case, we can conclude our overall result.

49. x.∀y.(e(x,y) ⇒ e(y,x)) Induction: 21, 48

As this proof illustrates, the technique of using induction within induction works just fine. Unfortunately, it is tedious and error-prone. for this reason, many people prefer to use specialized forms of multidimensional induction.



13.7 Embedded Induction

In the examples in this chapter thus far, induction is used to prove the overall result. While this approach works nicely in many cases, it is not always successful. In some cases, it is easier to use induction on parts of a problem or to prove alternative conclusions and then use these intermediate results to derive the overall conclusions (using non-inductive methods).

As an example, consider a world characterized by a single object constant a, a single unary function constant s, and a single unary relation constant p. Assume we have the set of axioms shown below.

x.(p(x) ⇒ p(s(s(x))))
p(a)
p(s(a))

A little thought reveals that these axioms logically entail the universal conclusion ∀x.p(x). Unfortunately, it is difficult to derive this conclusion directly using Linear Induction. The base case p(a) is easy enough, but it is not so easy to derive the inductive case ∀x.(p(x) ⇒ p(s(x))).

The good news is that we can succeed by proving a slightly more complicated intermediate conclusion and then using that conclusion to prove the overall result. One way to do this is shown below. We start by using Linear Induction to prove ∀x.(p(x) ∧ p(s(x)). It is easy to prove the base case p(a) ∧ p(s(a)), since we are given the two conjuncts as axioms. And the inductive case is straightforward. We add a placeholder c and then assume p(c) ∧ p(s(c)). From this hypothesis, we use And Elimination to get p(c) and p(s(c)). We then use Universal Elimination and Implication Elimination to derive p(s(s(c))). We then conjoin these results, use Implication Introduction and Universal Introduction to get the inductive case for our induction. From the base case and the inductive case, we get our intermediate conclusion. Finally, starting with this conclusion, we use Universal Elimination on our inductive conclusion, then And Elimination, and, finally, Universal Introduction to get the overall result.

1.    x.(p(x) ⇒ p(s(s(x))))    Premise
2.    p(a)    Premise
3.    p(s(a))    Premise
4.    p(a) ∧ p(s(a))    And Introduction
5.   
 p(c) ∧ p(s(c))
   Assumption
6.   
 p(c)
   And Elimination
7.   
 p(s(c))
   And Elimination
8.   
 p(c) ⇒ p(s(s(c)))
   Universal Elimination: 1
9.   
 p(s(s(c)))
   Implication Elimination: 8, 6
10.   
 p(s(c)) ∧ p(s(s(c)))
   And Introduction: 7, 9
11.    p(c) ∧ p(s(c)) ⇒ p(s(c)) ∧ p(s(s(c)))    Implication Introduction: 5, 10
12.    x.(p(x) ∧ p(s(x)) ⇒ p(s(x)) ∧ p(s(s(x))))    Universal Introduction: 11
13.    x.(p(x) ∧ p(s(x)))    Induction: 4, 12
14.    p(c) ∧ p(s(c))    Universal Elimination: 13
15.    p(c)    And Elimination: 14
16.    p(s(c))    And Elimination: 14
17.    x.p(x)    Universal Introduction: 15

In this case, we are lucky that there is a useful conclusion that we can prove with standard Linear Induction. Things are not always so simple; and in some cases we need more complex forms of induction. Unfortunately, there is no finite collection of approaches to induction that covers all cases. If there were, we could build an algorithm for determining logical entailment for Herbrand Logic in all cases; and, as we discussed earlier, there is no such algorithm.




Use the arrow keys to navigate.
Press the escape key to toggle all / one.