(* Title: HOL/Import/HOL_Light_Maps.thy Author: Cezary Kaliszyk, University of Innsbruck Author: Alexander Krauss, QAware GmbH Based on earlier code by Steven Obua and Sebastian Skalberg *)
section‹Type and constant mappings of HOL Light importer›
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 ∧ 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 ∨ 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) ∧ 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
end
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.15 Sekunden
(vorverarbeitet am 2026-04-25)
¤
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.