(* 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 in Prozent
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-04-27)
¤
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.