Structural Induction Warm-Up “Balanced String of Parentheses” • Base case: – The empty string εis balanced • Constructor rules: – C1: If x is balanced then so is (x), that is, the result of writing a “(“, then x, then “)” – C2: If x and y are balanced then so is xy A String of Parentheses is Balanced iff it Satisfies the Counting Rule (SCR) • Say that a string s∈{ ), ( }* SCR iff starting from 0 at the left end of the string, adding 1 for each (, subtracting 1 for each ), gives 0 at the end without ever going negative. • Theorem: A string of parentheses is balanced iff it SCR. If a string of parentheses x is balanced, then x SCR. • Structural Induction Base case: x=ε. Then count begins and ends 0 so x SCR. • Induction case 1: x = (y) where y is balanced. Then y SCR (why?). Then the count for x is +1 after first (, +1 again after the last character of y, stays positive in between, and ends at 0 after the final ). • Induction case 2: x = yz where y and z are balanced. Then y and z SCR and the count goes from 0, to 0 after y, to 0 after z without ever going negative. If x SCR then x is balanced. • Proof by strong induction on |x|. Suppose x SCR. • Base case: |x|=0. Then x=εand x is balanced. • Induction step. Fix n, suppose |x| = n+1>0 and for all m≤n and any y of length m, if y SCR then y is balanced. • Case 1. The count never reaches 0 except at the end. Then x=(y) where y SCR (why?). But |y|=|x|-2 and by IH y is balanced. By construction rule 1 so is x. • Case 2. x=yz where the y and z are nonempty and the count goes to 0 after y. Then y and z are shorter than x and each SCR, so each is balanced by IH. Then x is balanced by construction rule 2.