diff -r 3464d7232670 -r bc874e1a7758 src/HOL/Extraction/Euclid.thy --- a/src/HOL/Extraction/Euclid.thy Wed Jun 02 15:35:14 2010 +0200 +++ b/src/HOL/Extraction/Euclid.thy Wed Jun 02 16:24:13 2010 +0200 @@ -10,23 +10,6 @@ imports "~~/src/HOL/Number_Theory/UniqueFactorization" Util Efficient_Nat begin -lemma list_nonempty_induct [consumes 1, case_names single cons]: - assumes "xs \ []" - assumes single: "\x. P [x]" - assumes cons: "\x xs. xs \ [] \ P xs \ P (x # xs)" - shows "P xs" -using `xs \ []` proof (induct xs) - case Nil then show ?case by simp -next - case (Cons x xs) show ?case proof (cases xs) - case Nil with single show ?thesis by simp - next - case Cons then have "xs \ []" by simp - moreover with Cons.hyps have "P xs" . - ultimately show ?thesis by (rule cons) - qed -qed - text {* A constructive version of the proof of Euclid's theorem by Markus Wenzel and Freek Wiedijk \cite{Wenzel-Wiedijk-JAR2002}. @@ -285,6 +268,7 @@ lemma "factor_exists 345 = [23, 5, 3]" by evaluation lemma "factor_exists 999 = [37, 3, 3, 3]" by evaluation lemma "factor_exists 876 = [73, 3, 2, 2]" by evaluation + lemma "iterate 4 Euclid 0 = [2, 3, 7, 71]" by evaluation end