Induction: in many forms
Matthew Hennessy
Draft March 26, 2015
Induction Matthew Hennessy
The natural numbers N
Two rules for constructing natural numbers:
(a) base rule: 0 is in N (b) inductive rule: if k is in N then so is its successor (k + 1) Every natural number can be constructed using these two rules
Definition principle for N: To define a function f : N → X : (a) base rule: describe the result of applying f to 0 (b) inductive rule: assuming f (k) has already been defined, describe the result of applying f to its successor (k + 1) Result: with (a) (b) we know function f is defined for every natural number.
Induction Matthew Hennessy Examples
Summation: sum : N → N is defined by: (a) base rule: sum(0) = 0 (b) inductive rule: sum(k + 1) = sum(k) + (k + 1)
Factorial: fac : N → N is defined by: (a) base rule: fac(0) = 1 (b) inductive rule: fac(k + 1) = fac(k) × (k + 1)
Induction Matthew Hennessy
Proof principle for N
To prove a property P(n) for every natural number n:
(a) Base case: prove P(0) is true using known mathematical facts (b) Inductive case:
I assume the inductive hypothesis: that P(k) is true I from this hypothesis prove that P(k + 1) follows using known mathematical facts
If (a) (b) are established it follows that: P(n) is true for every natural number n
Induction Matthew Hennessy Example
n∗(n+1) Prove sum(n) = 2 for every natural number n n∗(n+1) Property P(n) : sum(n) = 2 Proof: We must show: (a) Base case, P(0) : sum(0) = 0
Follows by definition of sum (b) Inductive case: k∗(k+1) I Assume the inductive hypothesis: IH is sum(k) = 2
(k+1)∗(k+2) I Use IH to deduce P(k + 1) : sum(k + 1) = 2 use algebraic manipilations
n∗(n+1) Result: sum(n) = 2 is true for every natural number n
Induction Matthew Hennessy
Inductive structures
Example: binary trees BT
Each node is either
I a leaf:
I or has two siblings
Induction Matthew Hennessy Constructing binary trees
(a) Base case: is a binary tree (b) Inductive case: If L and R are binary trees then so is
L R
Induction Matthew Hennessy
Syntax for binary trees BT
bTree ∈ BT ::= leaf | Branch(bTree, bTree)
Construction rules: (a) Base case: leaf is a binary tree (b) Inductive case: If L and R is a binary tree then so is Branch(L, R)
Examples Branch(leaf, Branch(leaf, leaf)) Branch(Branch(leaf, Branch(leaf, leaf)), Branch(leaf, leaf))
Induction Matthew Hennessy Definition principle for binary trees
To define a function f : BT → X : (a) Base rule: describe the result of applying f to leaf
(b) Inductive rule: assuming f (T1) and f (T2) have already been defined, describe the result of applying f to the tree Branch(T1, T2) Result: with (a) (b) we know function f is defined for every binary tree.
Induction Matthew Hennessy
Example definitions
Number of leaves in a tree: leaves : BT → N defined by: I base case: leaves(leaf) = 1
I Inductive case: leaves(Branch(T1, T2)) = leaves(T1) + leaves(T2)
Number of branches in a tree: branches : BT → N defined by: I base case: branches(leaf) = 0
I Inductive case: branches(Branch(bTree1, bTree2)) = branches(bTree1) + branches(bTree2) + 1
Induction Matthew Hennessy Structural induction for binary trees
To prove a property P(T ) for every binary tree T
(a) Base case: prove P(leaf) is true using known mathematical
facts (b) Inductive case:
I assume the inductive hypothesis: that P(T1) and P(T2) are both true I from this hypothesis prove that P(Branch(T1, T2, )) follows using known mathematical facts
If (a) (b) are established it follows that: P(T ) is true for every binary tree T
Induction Matthew Hennessy
Example proof
leaves(T ) = branches(T ) + 1 for every binary tree T
Property P(T ) is: leaves(T ) = branches(T ) + 1
I base case: P(leaf): we must prove leaves(leaf) = branches(leaf) + 1 follows by definition
I Inductive case: assume P(T1) and P(T2) are true- (IH) From (IH) prove P(Branch(T1, T2)) follows
leaves(Branch(T1, T2)) = leaves(T1) + leaves(T2)
= branches(T1) + 1 + branches(T2) + 1 (IH)
= (branches(T1) + branches(T2) + 1) + 1
= branches(Branch(T1, T2)) + 1
Induction Matthew Hennessy Arithmetic expressions
E ∈ Exp ::= n | (E + E) | (E × E) Constructing arithmetic expressions: I Base cases: n is an arithmetic expression for every n ∈ N I Inductive cases: If E1 and E2 are arithmetic expressions so are I E1 + E2 I E1 × E2
I an infinite number of base cases
I two inductive cases
Induction Matthew Hennessy
Definition principle for arithmetic expressions
To define a function f : Exp → X : (a) Base rule: describe the result of applying f to n for every n in Nums (b) Inductive rule: assuming f (E1) and f (E2) have both already been defined, describe the result of
I applying f to (E1 + E2) I applying f to (E1 × E2) Result: with (a) (b) we know function f is defined for every arithmetic expression.
Induction Matthew Hennessy Structural induction for arithmetic expressions
To prove a property P(E) for every arithmetic expression E
(a) Base case: prove P(n) is true for every natural number n (b) Inductive case:
I assume the inductive hypothesis: that P(E1) and P(E2) are both true I from this hypothesis prove that
I P(E1 + E2) follows I P(E1 × E2) follows
If (a) (b) are established it follows that: P(E) is true for every arithmetic expression E
Induction Matthew Hennessy
Example: normalisation of big-step semantics
For every arithmetic expression E there exists some natural
number k such that `big E ⇓ k
P(E) is: `big E ⇓ k for some natural number k
Proof by structural induction: (a) Base case: We have to show P(n) for every n in N (b) Inductive case: Assume P(E1) and P(E2) are true. We have to show
I P(E1 + E2) is true I P(E1 × E2) is true
Induction Matthew Hennessy Example: small-step semantics
`sm E → F implies `ch E →ch F for all expressions E, F
P(E) is E → F implies E →ch F
Proof by structural induction:
(a) Base case: We have to show n →ch F implies n → F for every n in N (b) Inductive case: Assume the inductive hypotheses (IH)
I E1 → F implies E1 →ch F
I E2 → F implies E2 →ch F From (IH) we have to show
I E1 + E2 → F implies E1 + E2 →ch F
I E1 × E2 → F implies E1 × E2 →ch F
Induction Matthew Hennessy
More examples
I Determinacy of big-step semantics:
`big E ⇓ m and `big E ⇓ n implies m = n I Determinacy of small-step semantics: ∗ ∗ I E → m and E → n implies m = n ∗ ∗ I E →ch m and E →ch n implies m = n I Consistency: ∗ ∗ I E → n implies E →ch n ∗ ∗ I E →ch n implies E → n ∗ I `big E ⇓ n implies E → n ∗ I E → n implies `big E ⇓ n
I Some proofs are not easy ∗ I Some require proof principle for
Induction Matthew Hennessy Rule Induction
I When there is no structure ?
I When structure is infinite ?
Solution: Perform induction on size of derivations
Induction Matthew Hennessy
Example
(ax) (plus) n D m n D 0 n D(m + n)
Derivations:
(ax) 7 D 0 (ax) (plus) 2 D 0 7 D 7 (plus) (plus) 2 D 2 7 D 14 (plus) (plus) 2 D 4 7 D 21 Size of derivations: 2 D 4 < 7 D 21
Induction Matthew Hennessy Example proof
To prove: If n D m then m = n × k for some natural number k
I Let P(n, m) be: m = n × k for some natural number k.
I We prove n D m implies P(n, m) by strong mathematical induction on size of derivation of n D m. I Which was the rule last used?
I (ax): m must be 0 and P(n, 0) holds for every n I (plus): m must be m1 + n where n D m1 has a smaller derivation I use induction on n D m1 to finish proof
Induction Matthew Hennessy
Rule induction
(ax) (plus) n D m n D 0 n D(m + n)
To prove n D m implies P(n, m)
I Axiom (ax): prove P(n, 0) for every n ∈ N I Rule (plus):
I assume P(n, m) - because of hypothesis n D m I from this assumption deduce P(n, m + n) follows - because of conclusion n D(m + n)
Induction Matthew Hennessy What is going on?
Inductively defined sets Given a set T - world of discourse
I Axiom: an element of T h1,h2,...hn I Rule: c where n > 0 I each hi an element of T hypotheses I c an element of T conclusion
I Deductive system D : set of axioms and rules
D(T): All elements of T which can be proved from the axioms using the rules
Induction Matthew Hennessy
Rule induction for deductive systems
To prove P(t) for every t in D(T ) (a) prove P(a) for every axiom in D
h1,h2,...hn (b) for every rule c I assume P(hi ) for every hypothesis hi I from these assumptions show P(c) follows From (a), (b) conclude P(t) for every t in D(T ) Alternative: Strong mathematical induction on the size of derivations in the deductive system D.
Induction Matthew Hennessy Strong mathematical induction
To prove Prop(n) for every n ∈ N: (i) Assume the inductive hypothesis (IH) which says that Prop(k) is true for all k strictly less than some m m an arbitrary number
(ii) Show that Prop(m) follows from (IH).
Note: Apriori no base case
Induction Matthew Hennessy
Strong mathematical induction: an example
Prop(n): if n > 1 then n = p1 × ... × pl for some prime numbers pi , 1 ≤ i ≤ l
Recall: p is prime if p = a × b means a is either 1 or p itself. Proof: (i) Assume (IH): Prop(k) is true for every k I m = 1 I m is prime I m is not prime. So m = m1 × m2 Induction Matthew Hennessy Another example E ∈ Exploc ::= x ∈ Vars | n ∈ Nums | (E + E) | (E × E) | let x = E in E Prop(P) : If `big P ⇓ n, then `big P ⇓ m implies n = m Proof method: I strong mathematical induction on the size of P Better proof method: I strong mathematical induction on the size of the proof of `big P ⇓ n rule induction Induction Matthew Hennessy An example of rule induction C, D ∈ Com ::= l := E | if B then C else C | C ; C | skip | while B do C 0 ∗ 0 Prop(C) : If `big hC, si ⇓ s then hC, si → hskip, s i Proof method: 0 I Induction on the size of the proof of `big hC, si ⇓ s Case analysis on C: I Five possibilities I C of form while B do D most interesting Induction Matthew Hennessy The interesting case C is while B do D: The proof of hC, si ⇓ s0 looks like: ...... (b-?) (b-?) (b-?) 0 hB, si ⇓ true hD, si ⇓ s1 hwhile B do D, s1i ⇓ s (b-while.t) hwhile B do D, si ⇓ s0 This contains lots of information we can use Induction Matthew Hennessy