(* Title: HOL/Proofs/Extraction/Util.thy Author: Stefan Berghofer, TU Muenchen
*)
section‹Auxiliary lemmas used in program extraction examples›
theory Util imports Main begin
text‹Decidability of equality on natural numbers.›
lemma nat_eq_dec: "\n::nat. m = n \ m \ n" apply (induct m) apply (case_tac n) apply (case_tac [3] n) apply (simp only: nat.simps, iprover?)+ done
text‹
Well-founded induction on natural numbers, derived using the standard
structural induction rule. ›
lemma nat_wf_ind: assumes R: "\x::nat. (\y. y < x \ P y) \ P x" shows"P z" proof (rule R) show"\y. y < z \ P y" proof (induct z) case 0 thenshow ?caseby simp next case (Suc n y) from nat_eq_dec show ?case proof assume ny: "n = y" have"P n" by (rule R) (rule Suc) with ny show ?caseby simp next assume"n \ y" with Suc have"y < n"by simp thenshow ?caseby (rule Suc) qed qed qed
text‹Bounded search for a natural number satisfying a decidable predicate.›
lemma search: assumes dec: "\x::nat. P x \ \ P x" shows"(\x \ (\x proof (induct y) case 0 show ?caseby simp next case (Suc z) thenshow ?case proof assume"\x thenobtain x where le: "x < z"and P: "P x"by iprover from le have"x < Suc z"by simp with P show ?caseby iprover next assume nex: "\ (\x from dec show ?case proof assume P: "P z" have"z < Suc z"by simp with P show ?thesis by iprover next assume nP: "\ P z" have"\ (\x proof assume"\x thenobtain x where le: "x < Suc z"and P: "P x"by iprover have"x < z" proof (cases "x = z") case True with nP and P show ?thesis by simp next case False with le show ?thesis by simp qed with P have"\xby iprover with nex show False .. qed thenshow ?caseby iprover qed qed qed
end
Messung V0.5
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.