lemma SUC_INJ: "\m n. (Suc m = Suc n) = (m = n)" by simp
lemma num_INDUCTION: "\P. P 0 \ (\n. P n \ P (Suc n)) \ (\n. P n)" by (auto intro: nat.induct)
lemma num_Axiom: "\(e::'A) f. \!fn. fn 0 = e \ (\n. fn (Suc n) = f (fn n) n)" apply (intro allI)
subgoal for e f apply (rule ex1I [where a = "Nat.rec_nat e (\a b. f b a)"]) apply simp apply (rule ext)
subgoal for fn x by (induct x) simp_all done done
lemma [import_const NUMERAL]: "id = (\x :: nat. x)" by auto
definition [simp]: "bit0 n = 2 * n"
lemma [import_const BIT0]: "bit0 = (SOME fn. fn (id 0) = id 0 \ (\n. fn (Suc n) = Suc (Suc (fn n))))" apply (auto intro!: some_equality[symmetric])
subgoal for fn apply (rule ext)
subgoal for x by (induct x) simp_all done done
lemma ALL[import_const ALL : list_all]: "list_all (P::'t18393 \ bool) [] = True \
list_all P (h # t) = (P h \<and> list_all P t)" by simp
lemma EX[import_const EX : list_ex]: "list_ex (P::'t18414 \ bool) [] = False \
list_ex P (h # t) = (P h \<or> list_ex P t)" by simp
lemma ITLIST[import_const ITLIST : foldr]: "foldr (f::'t18437 \ 't18436 \ 't18436) [] b = b \
foldr f (h # t) b = f h (foldr f t b)" by simp
lemma ALL2_DEF[import_const ALL2 : list_all2]: "list_all2 (P::'t18495 \ 't18502 \ bool) [] (l2::'t18502 list) = (l2 = []) \
list_all2 P ((h1::'t18495) # (t1::'t18495 list)) l2 =
(if l2 = [] then False else P h1 (hd l2) \<and> list_all2 P t1 (tl l2))" by simp (induct l2, simp_all)
lemma FILTER[import_const FILTER : filter]: "filter (P::'t18680 \ bool) [] = [] \
filter P ((h::'t18680) # t) = (if P h then h # filter P t else filter P t)" by simp
lemma ZIP[import_const ZIP : zip]: "zip [] [] = ([] :: ('t18824 \ 't18825) list) \
zip ((h1::'t18849) # t1) ((h2::'t18850) # t2) = (h1, h2) # zip t1 t2" by simp
lemma WF[import_const WF : wfP]: "\R. wfP R \ (\P. (\x :: 'A. P x) \ (\x. P x \ (\y. R y x \ \ P y)))" proof (intro allI iffI impI wfI_min[to_pred], elim exE wfE_min[to_pred]) fix R :: "'a \ 'a \ bool" and P :: "'a \ bool" and x z :: "'a"
{ fix Q assume a: "x \ Q" assume"\P. (\x. P x) \ (\x. P x \ (\y. R y x \ \ P y))" thenhave"(\x. x \ Q) \ (\x. (\x. x \ Q) x \ (\y. R y x \ y \ Q))" by auto with a show"\x\Q. \y. R y x \ y \ Q" by auto next assume"P x""z \ {a. P a}" "\y. R y z \ y \ {a. P a}" thenshow"\x. P x \ (\y. R y x \ \ P y)" by auto
} qed auto
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 ist noch experimentell.