1 / 17

Recursion and Induction

Recursion and Induction. Define sets by induction zero  N n  N  succ( n )  N Define functions on sets by recursion  n  N : plus(zero, n ) = n  m, n  N : plus(succ( m ), n ) = succ(plus( m , n ))

tiana
Télécharger la présentation

Recursion and Induction

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Recursion and Induction L13Induction

  2. Define sets by induction zero  N n  N  succ(n)  N • Define functions on sets by recursion  n  N : plus(zero, n) = n  m, n  N : plus(succ(m), n) = succ(plus(m,n)) • Prove properties about the defined functions using principle of structural induction. L13Induction

  3. Example 0 + n = n (obvious) n + 0 = n (not so obvious!) • Prove that the two rules for “+” are adequate to rewrite (n+0) to n. (Induction on the structure of the first argument) • Show that “+” is commutative, that is, (x + y) = (y + x). • Motivation To ensure that sufficient relevant information has been encoded for automated reasoning. L13Induction

  4. Definition of “+” 0 + m = m s(n) + m = s(n+m) Proof that 0 is the identity w.r.t. + 0+m = m+0 = m Basis: 0 + 0 = 0 Induction Hypothesis:  k >= 0: k + 0 = k Induction Step: Show s(k) + 0 = s(k) s(k) + 0 = s(k + 0) (*rule 2*) = s(k) (*ind hyp*) Conclusion: By principle of mathematical induction m N: m + 0 = m Induction Proof L13Induction

  5. Basis: n : n + 0 = n n : 0 + n = n n: n + 0 = n + 0 Induction Hypothesis:  k >= 0, n : k + n = n + k Induction Step: s(k)+n = n+s(k) s(k)+n = (*rule2*)s(k+n) = (*ind. hyp.*) s(n+k) = (*rule2*)s(n)+k (* STUCK!!! ourgoal: n+s(k) *) So prove the auxiliary result. s(k)+n = k+s(n) n Proof proceeds row by row m L13Induction

  6. Auxiliary result s(i)+ m = i+s(m) Basis: s(0) + m = (*rule2*) s(0 + m) = (*rule1*) s(m) = (*rule1*) 0 + s(m) Induction step: s(s(j)) + m =(*rule2*) s(s(j)+m) =(*ind.hyp.*)s(j+s(m)) =(*rule2*) s(j)+s(m) Overall result s(k) + n =(*auxiliary result*) k + s(n) =(*induction hyp.*) s(n) + k =(*auxiliary result*) n + s(k) (* End of proof of commutativity *) L13Induction

  7. Motivation for formal proofs • In mathematics, proving theorems enhances our understanding of the domain of discourse and our faith in the formalization. • In automated theorem proving, these results demonstrate the adequacy of the formal description and the symbol manipulation system. • These properties also guide the design of canonical forms for (optimal) representation of expressions and for proving equivalence. L13Induction

  8. Semantic Equivalence vs Syntactic Identity • Machines can directly test only syntactic identity. • Several distinct expressions can have the same meaning (value) in the domain of discourse. To formally establish their equivalence, the domain is first axiomatized, by providing axioms (equations) that characterize (are satisfied by) the operations. • In practice, an equational specification is transformed into a set of rewrite rules, to normalize expressions (into a canonical form). (Cf. Arithmetic Expression Evaluation) L13Induction

  9. Induction Principle for Lists • P(xs) holds for any finite list xsif: • P([]) holds, and • Whenever P(xs) holds, it implies that for every x, P(x::xs) also holds. • Prove: filter p (map f xs) = map f (filter (p o f) xs) L13Induction

  10. Basis: filter p (map f []) = filter p [] = [] map f(filter (p o f) []) = map f []= [] • Induction Step: map f (filter (p o f) (x::xs)) = map f (if ((p o f) x) then x:: (filter (p o f) xs) else filter (p o f) xs ) case 1: (p o f) x = true case 2: (p o f) x = false L13Induction

  11. case 1: map f ( x:: (filter (p o f) xs) ) = f x :: map f (filter (p o f) xs) = f x :: filter p (map f xs) (* induction hypothesis *) = filter p (f x :: map f xs) (* p (f x) holds *) = filter p (map f (x::xs)) • case 2: filter p (map f (x::xs)) = filter p (f x :: map f xs) (* p (f x)does not hold *) = filter p (map f xs) = map f ( filter (p o f) xs ) (* induction hypothesis *) L13Induction

  12. Tailoring Induction Principle fun interval m n = if m > n then [] else m:: interval (m+1) n (* Quantity (n-m) reduces at each recursive call. *) • Basis: P(m,n) holds for m > n • Induction step: P(m,n) holds for m <= n, given that P(m+1,n) holds. L13Induction

  13. Induction Proof with Auxiliaries fun [] @ xs = xs | (y::ys) @ xs = y:: (ys@xs); fun rev [] = [] | rev (x::xs) = (rev xs) @ [x]; Prove : rev (rev xs) = xs • Basis: rev (rev []) = rev [] = [] • Induction step: rev(rev (y::ys)) = rev ( (rev ys) @ [y] ) = (* via auxiliary result *) y :: ( rev (rev ys) ) = y :: ys (* ind. hyp. *) L13Induction

  14. Auxiliary result rev ( zs @ [z] ) = z:: rev zs Induction Step: rev ((u::us) @ [z]) = rev ( u :: (us @ [z])) (* @ def *) = (rev (us @ [z])) @ [u] (* rev def*) = (z :: (rev us)) @ [u] (* ind hyp *) = z :: ((rev us) @ [u]) (* @ def *) = z :: rev (u::us) (* rev def*) (*Creativity required in guessing a suitable auxiliary result.*) L13Induction

  15. Weak Induction vs Strong Induction datatype exp = Var of string | Op of exp * exp; • Prove that the number of occurrences of the constructors in a legal exp are related thus: #Var(e) = #Op(e) + 1 • To show this result, we need the result on all smaller exps, not just the exps whose “node count” or “height” is one less. • Motivates Strong/Complete Induction Principle. L13Induction

  16. McCarthy’s 91-function fun f x = if x > 100 then x - 10 else f(f(x+11)) fun f x = if x > 100 then x - 10 else 91 L13Induction

  17. Is f total? fun f x = if (x mod 2) = 0 then x div 2 else f(f(3*x+1)) View int x as (2i + 1) 2^k - 1 L13Induction

More Related