Chapter 7 — Key Takeaways
Strong Induction, Well-Ordering, and Recursive Definitions — the one-page reference.
The three induction principles (all equivalent — §7.6)
| Principle | Step hypothesis (what you may assume) | Base cases | Use when |
|---|---|---|---|
| Ordinary induction (Ch. 6) | $P(k)$ only | 1 | step reaches back one case |
| Strong induction (§7.1) | $P(n_0) \land \dots \land P(k)$ (all so far) | = how far the step reaches back | step reaches back several cases (Fibonacci, divide-and-conquer, factoring) |
| Well-ordering (§7.2) | "let $m$ = least counterexample; all $< m$ are true" | check base, then contradict | "grab the smallest bad case" (number theory, termination) |
Equivalence cycle: ordinary $\Rightarrow$ strong $\Rightarrow$ well-ordering $\Rightarrow$ ordinary. None is more powerful; "strong" = more convenient hypothesis, not more theorems.
Counting base cases — the #1 strong-induction error
Number of base cases = the largest reach of the inductive step.
| Recurrence in the step | Base cases required |
|---|---|
| uses $a_{n-1}$ | 1 |
| uses $a_{n-1}, a_{n-2}$ (Fibonacci) | 2 |
| uses $a_{n-1}, a_{n-2}, a_{n-3}$ | 3 |
| postage: reduce $n$ by 4 (4¢ & 5¢ stamps) | 4 (amounts 12, 13, 14, 15) |
If the step is only valid for $n \ge n_0 + j$, then $n_0, \dots, n_0+j-1$ must all be base cases.
Strong induction template
- State $P(n)$.
- Base cases: verify $P(n_0), \dots, P(n_0 + j)$ — one per step-reach.
- Strong step: fix $k$; assume $P(n_0) \land \dots \land P(k)$; prove $P(k+1)$, using whichever earlier cases you need.
- Conclude $P(n)$ for all $n \ge n_0$. $\blacksquare$
Well-ordering principle
Every non-empty subset of $\mathbb{N} = \{0,1,2,\dots\}$ has a least element.
- False for $\mathbb{Z}$ (no floor) and $\mathbb{Q}_{>0}$ (halve any candidate). A distinguishing property of $\mathbb{N}$.
- Requires non-empty.
- It is the bedrock under all induction and the basis of termination arguments (a strictly decreasing sequence of naturals must stop).
Smallest-counterexample pattern (= proof by contradiction):
assume C = {n : P(n) false} ≠ ∅ → let m = min C (well-ordering) → m ≠ base (checked) → all j < m have P(j) → force P(m) ⇒ contradiction → C = ∅.
Recursive definitions
A recursively defined collection = three clauses:
| Clause | Role |
|---|---|
| Basis | names starting element(s) outright |
| Recursive | rules to build new elements from existing ones |
| Exclusion (implicit) | "the smallest set such that…" — nothing else belongs |
Examples:
- Fibonacci: basis $F_0=0, F_1=1$; recursive $F_n = F_{n-1}+F_{n-2}$.
- Factorial: basis $0!=1$; recursive $n! = n\cdot(n-1)!$.
- Lists: basis Nil; recursive Cons(x, L).
- Full binary tree: basis = single leaf; recursive = root over two full subtrees.
⚠️ Drop the exclusion clause and the set could contain anything; "smallest" is what makes structural induction sound.
Structural induction
Prove $P$ for every element of a recursively defined set $S$:
| Step | Obligation |
|---|---|
| Basis step | prove $P$ for each basis element |
| Recursive step | assume $P$ for the parts a clause combines (the structural IH) ⇒ prove $P$ for the result |
- Valid because of the exclusion clause: every element is built in finitely many steps (it is ordinary induction on the number of build steps).
- One proof case per clause of the definition; it mirrors the code's branches (
if base … else recurse). - No counter "$n$" appears — induct on structure, not on a number.
Results proved this chapter (cite-ready)
| Result | Technique |
|---|---|
| $F_n \le 2^{\,n-1}$ for $n \ge 1$ | strong induction (2 base cases) |
| Division algorithm existence: $a = dq + r,\ 0 \le r < d$ | well-ordering (least non-negative $a - dq$) |
Every $e \in E$ has equal ( and ) |
structural induction |
| $\operatorname{len}(\operatorname{append}(L,M)) = \operatorname{len}(L)+\operatorname{len}(M)$ | structural induction on lists |
| Full binary tree: $\ell(T) = i(T) + 1$ | structural induction on trees |
Decision aid: which technique?
Does the step use only the ONE preceding case? → ordinary induction
Does it use SEVERAL / ALL smaller cases? → strong induction
(base cases = step's reach)
Is "take the smallest bad case" the natural move? → well-ordering
(contradiction)
Are the objects built by a recursive DEFINITION
(lists, trees, expressions, recursive sets)? → structural induction
(one case per clause)
Common pitfalls
- Too few base cases. Reach back $j$ steps ⇒ need $j$ base cases. (Strong-induction analogue of the horses fallacy.)
- Forgetting the exclusion clause ("smallest set such that…") — breaks the validity of structural induction.
- Thinking "strong" = more powerful. It proves the same theorems; only the hypothesis is roomier.
- Inducting on "+1 node" for full binary trees — you can't add one node and stay full; induct on the clause instead.
- Well-ordering on the wrong set — it holds for $\mathbb{N}$, not $\mathbb{Z}$ or the positive rationals.
Toolkit additions (dmtoolkit/recurrences.py)
| Function | Signature | Does |
|---|---|---|
recursive_seq |
recursive_seq(step, base, n) |
evaluate a sequence whose step(prev_terms, k) may use all earlier terms (strong-induction shaped) |
make_postage |
make_postage(n) |
(fours, fives) of 4¢/5¢ stamps summing to n, else None; constructible for all n ≥ 12 (provable by strong induction) |
(Joins check_identity and fib from Ch. 6; module completed in Ch. 18–19.)