diff -r 7c8bc41ce810 -r a226f29d4bdc src/HOL/MetisExamples/Tarski.thy --- a/src/HOL/MetisExamples/Tarski.thy Fri Oct 02 04:44:56 2009 +0200 +++ b/src/HOL/MetisExamples/Tarski.thy Sat Oct 03 12:05:40 2009 +0200 @@ -416,7 +416,7 @@ (*never proved, 2007-01-22: Tarski__CLF_unnamed_lemma NOT PROVABLE because of the conjunction used in the definition: we don't allow reasoning with rules like conjE, which is essential here.*) -ML_command{*AtpWrapper.problem_name:="Tarski__CLF_unnamed_lemma"*} +declare [[ atp_problem_prefix = "Tarski__CLF_unnamed_lemma" ]] lemma (in CLF) [simp]: "f: pset cl -> pset cl & monotone f (pset cl) (order cl)" apply (insert f_cl) @@ -433,7 +433,7 @@ by (simp add: A_def r_def) (*never proved, 2007-01-22*) -ML_command{*AtpWrapper.problem_name:="Tarski__CLF_CLF_dual"*} +declare [[ atp_problem_prefix = "Tarski__CLF_CLF_dual" ]] declare (in CLF) CLF_set_def [simp] CL_dualCL [simp] monotone_dual [simp] dualA_iff [simp] lemma (in CLF) CLF_dual: "(dual cl, f) \ CLF_set" @@ -461,7 +461,7 @@ subsection {* lemmas for Tarski, lub *} (*never proved, 2007-01-22*) -ML{*AtpWrapper.problem_name:="Tarski__CLF_lubH_le_flubH"*} +declare [[ atp_problem_prefix = "Tarski__CLF_lubH_le_flubH" ]] declare CL.lub_least[intro] CLF.f_in_funcset[intro] funcset_mem[intro] CL.lub_in_lattice[intro] PO.transE[intro] PO.monotoneE[intro] CLF.monotone_f[intro] CL.lub_upper[intro] lemma (in CLF) lubH_le_flubH: "H = {x. (x, f x) \ r & x \ A} ==> (lub H cl, f (lub H cl)) \ r" @@ -471,7 +471,7 @@ -- {* @{text "\x:H. (x, f (lub H r)) \ r"} *} apply (rule ballI) (*never proved, 2007-01-22*) -ML_command{*AtpWrapper.problem_name:="Tarski__CLF_lubH_le_flubH_simpler"*} +using [[ atp_problem_prefix = "Tarski__CLF_lubH_le_flubH_simpler" ]] apply (rule transE) -- {* instantiates @{text "(x, ?z) \ order cl to (x, f x)"}, *} -- {* because of the def of @{text H} *} @@ -489,7 +489,7 @@ CLF.monotone_f[rule del] CL.lub_upper[rule del] (*never proved, 2007-01-22*) -ML{*AtpWrapper.problem_name:="Tarski__CLF_flubH_le_lubH"*} +declare [[ atp_problem_prefix = "Tarski__CLF_flubH_le_lubH" ]] declare CLF.f_in_funcset[intro] funcset_mem[intro] CL.lub_in_lattice[intro] PO.monotoneE[intro] CLF.monotone_f[intro] CL.lub_upper[intro] CLF.lubH_le_flubH[simp] @@ -499,7 +499,7 @@ apply (rule_tac t = "H" in ssubst, assumption) apply (rule CollectI) apply (rule conjI) -ML_command{*AtpWrapper.problem_name:="Tarski__CLF_flubH_le_lubH_simpler"*} +using [[ atp_problem_prefix = "Tarski__CLF_flubH_le_lubH_simpler" ]] (*??no longer terminates, with combinators apply (metis CO_refl_on lubH_le_flubH monotone_def monotone_f reflD1 reflD2) *) @@ -513,7 +513,7 @@ (*never proved, 2007-01-22*) -ML{*AtpWrapper.problem_name:="Tarski__CLF_lubH_is_fixp"*} +declare [[ atp_problem_prefix = "Tarski__CLF_lubH_is_fixp" ]] (*Single-step version fails. The conjecture clauses refer to local abstraction functions (Frees), which prevents expand_defs_tac from removing those "definitions" at the end of the proof. *) @@ -588,7 +588,7 @@ "H = {x. (x, f x) \ r & x \ A} ==> lub H cl \ fix f A" apply (simp add: fix_def) apply (rule conjI) -ML_command{*AtpWrapper.problem_name:="Tarski__CLF_lubH_is_fixp_simpler"*} +using [[ atp_problem_prefix = "Tarski__CLF_lubH_is_fixp_simpler" ]] apply (metis CO_refl_on lubH_le_flubH refl_onD1) apply (metis antisymE flubH_le_lubH lubH_le_flubH) done @@ -607,7 +607,7 @@ apply (simp_all add: P_def) done -ML{*AtpWrapper.problem_name:="Tarski__CLF_lubH_least_fixf"*} +declare [[ atp_problem_prefix = "Tarski__CLF_lubH_least_fixf" ]] lemma (in CLF) lubH_least_fixf: "H = {x. (x, f x) \ r & x \ A} ==> \L. (\y \ fix f A. (y,L) \ r) --> (lub H cl, L) \ r" @@ -615,7 +615,7 @@ done subsection {* Tarski fixpoint theorem 1, first part *} -ML{*AtpWrapper.problem_name:="Tarski__CLF_T_thm_1_lub"*} +declare [[ atp_problem_prefix = "Tarski__CLF_T_thm_1_lub" ]] declare CL.lubI[intro] fix_subset[intro] CL.lub_in_lattice[intro] CLF.fixf_le_lubH[simp] CLF.lubH_least_fixf[simp] lemma (in CLF) T_thm_1_lub: "lub P cl = lub {x. (x, f x) \ r & x \ A} cl" @@ -623,7 +623,7 @@ apply (rule sym) apply (simp add: P_def) apply (rule lubI) -ML_command{*AtpWrapper.problem_name:="Tarski__CLF_T_thm_1_lub_simpler"*} +using [[ atp_problem_prefix = "Tarski__CLF_T_thm_1_lub_simpler" ]] apply (metis P_def fix_subset) apply (metis Collect_conj_eq Collect_mem_eq Int_commute Int_lower1 lub_in_lattice vimage_def) (*??no longer terminates, with combinators @@ -638,7 +638,7 @@ (*never proved, 2007-01-22*) -ML{*AtpWrapper.problem_name:="Tarski__CLF_glbH_is_fixp"*} +declare [[ atp_problem_prefix = "Tarski__CLF_glbH_is_fixp" ]] declare glb_dual_lub[simp] PO.dualA_iff[intro] CLF.lubH_is_fixp[intro] PO.dualPO[intro] CL.CL_dualCL[intro] PO.dualr_iff[simp] lemma (in CLF) glbH_is_fixp: "H = {x. (f x, x) \ r & x \ A} ==> glb H cl \ P" @@ -662,13 +662,13 @@ (*never proved, 2007-01-22*) -ML{*AtpWrapper.problem_name:="Tarski__T_thm_1_glb"*} (*ALL THEOREMS*) +declare [[ atp_problem_prefix = "Tarski__T_thm_1_glb" ]] (*ALL THEOREMS*) lemma (in CLF) T_thm_1_glb: "glb P cl = glb {x. (f x, x) \ r & x \ A} cl" (*sledgehammer;*) apply (simp add: glb_dual_lub P_def A_def r_def) apply (rule dualA_iff [THEN subst]) (*never proved, 2007-01-22*) -ML_command{*AtpWrapper.problem_name:="Tarski__T_thm_1_glb_simpler"*} (*ALL THEOREMS*) +using [[ atp_problem_prefix = "Tarski__T_thm_1_glb_simpler" ]] (*ALL THEOREMS*) (*sledgehammer;*) apply (simp add: CLF.T_thm_1_lub [of _ f, OF CLF.intro, OF CL.intro CLF_axioms.intro, OF PO.intro CL_axioms.intro, OF dualPO CL_dualCL] dualPO CL_dualCL CLF_dual dualr_iff) @@ -677,13 +677,13 @@ subsection {* interval *} -ML{*AtpWrapper.problem_name:="Tarski__rel_imp_elem"*} +declare [[ atp_problem_prefix = "Tarski__rel_imp_elem" ]] declare (in CLF) CO_refl_on[simp] refl_on_def [simp] lemma (in CLF) rel_imp_elem: "(x, y) \ r ==> x \ A" by (metis CO_refl_on refl_onD1) declare (in CLF) CO_refl_on[simp del] refl_on_def [simp del] -ML{*AtpWrapper.problem_name:="Tarski__interval_subset"*} +declare [[ atp_problem_prefix = "Tarski__interval_subset" ]] declare (in CLF) rel_imp_elem[intro] declare interval_def [simp] lemma (in CLF) interval_subset: "[| a \ A; b \ A |] ==> interval r a b \ A" @@ -718,7 +718,7 @@ "[| a \ A; b \ A; S \ interval r a b |]==> S \ A" by (simp add: subset_trans [OF _ interval_subset]) -ML{*AtpWrapper.problem_name:="Tarski__L_in_interval"*} (*ALL THEOREMS*) +declare [[ atp_problem_prefix = "Tarski__L_in_interval" ]] (*ALL THEOREMS*) lemma (in CLF) L_in_interval: "[| a \ A; b \ A; S \ interval r a b; S \ {}; isLub S cl L; interval r a b \ {} |] ==> L \ interval r a b" @@ -737,7 +737,7 @@ done (*never proved, 2007-01-22*) -ML{*AtpWrapper.problem_name:="Tarski__G_in_interval"*} (*ALL THEOREMS*) +declare [[ atp_problem_prefix = "Tarski__G_in_interval" ]] (*ALL THEOREMS*) lemma (in CLF) G_in_interval: "[| a \ A; b \ A; interval r a b \ {}; S \ interval r a b; isGlb S cl G; S \ {} |] ==> G \ interval r a b" @@ -746,7 +746,7 @@ dualA_iff A_def dualPO CL_dualCL CLF_dual isGlb_dual_isLub) done -ML{*AtpWrapper.problem_name:="Tarski__intervalPO"*} (*ALL THEOREMS*) +declare [[ atp_problem_prefix = "Tarski__intervalPO" ]] (*ALL THEOREMS*) lemma (in CLF) intervalPO: "[| a \ A; b \ A; interval r a b \ {} |] ==> (| pset = interval r a b, order = induced (interval r a b) r |) @@ -819,7 +819,7 @@ lemmas (in CLF) intv_CL_glb = intv_CL_lub [THEN Rdual] (*never proved, 2007-01-22*) -ML{*AtpWrapper.problem_name:="Tarski__interval_is_sublattice"*} (*ALL THEOREMS*) +declare [[ atp_problem_prefix = "Tarski__interval_is_sublattice" ]] (*ALL THEOREMS*) lemma (in CLF) interval_is_sublattice: "[| a \ A; b \ A; interval r a b \ {} |] ==> interval r a b <<= cl" @@ -827,7 +827,7 @@ apply (rule sublatticeI) apply (simp add: interval_subset) (*never proved, 2007-01-22*) -ML_command{*AtpWrapper.problem_name:="Tarski__interval_is_sublattice_simpler"*} +using [[ atp_problem_prefix = "Tarski__interval_is_sublattice_simpler" ]] (*sledgehammer *) apply (rule CompleteLatticeI) apply (simp add: intervalPO) @@ -846,7 +846,7 @@ lemma (in CLF) Bot_dual_Top: "Bot cl = Top (dual cl)" by (simp add: Top_def Bot_def least_def greatest_def dualA_iff dualr_iff) -ML_command{*AtpWrapper.problem_name:="Tarski__Bot_in_lattice"*} (*ALL THEOREMS*) +declare [[ atp_problem_prefix = "Tarski__Bot_in_lattice" ]] (*ALL THEOREMS*) lemma (in CLF) Bot_in_lattice: "Bot cl \ A" (*sledgehammer; *) apply (simp add: Bot_def least_def) @@ -856,12 +856,12 @@ done (*first proved 2007-01-25 after relaxing relevance*) -ML_command{*AtpWrapper.problem_name:="Tarski__Top_in_lattice"*} (*ALL THEOREMS*) +declare [[ atp_problem_prefix = "Tarski__Top_in_lattice" ]] (*ALL THEOREMS*) lemma (in CLF) Top_in_lattice: "Top cl \ A" (*sledgehammer;*) apply (simp add: Top_dual_Bot A_def) (*first proved 2007-01-25 after relaxing relevance*) -ML_command{*AtpWrapper.problem_name:="Tarski__Top_in_lattice_simpler"*} (*ALL THEOREMS*) +using [[ atp_problem_prefix = "Tarski__Top_in_lattice_simpler" ]] (*ALL THEOREMS*) (*sledgehammer*) apply (rule dualA_iff [THEN subst]) apply (blast intro!: CLF.Bot_in_lattice [OF CLF.intro, OF CL.intro CLF_axioms.intro, OF PO.intro CL_axioms.intro] dualPO CL_dualCL CLF_dual) @@ -876,7 +876,7 @@ done (*never proved, 2007-01-22*) -ML_command{*AtpWrapper.problem_name:="Tarski__Bot_prop"*} (*ALL THEOREMS*) +declare [[ atp_problem_prefix = "Tarski__Bot_prop" ]] (*ALL THEOREMS*) lemma (in CLF) Bot_prop: "x \ A ==> (Bot cl, x) \ r" (*sledgehammer*) apply (simp add: Bot_dual_Top r_def) @@ -885,12 +885,12 @@ dualA_iff A_def dualPO CL_dualCL CLF_dual) done -ML_command{*AtpWrapper.problem_name:="Tarski__Bot_in_lattice"*} (*ALL THEOREMS*) +declare [[ atp_problem_prefix = "Tarski__Bot_in_lattice" ]] (*ALL THEOREMS*) lemma (in CLF) Top_intv_not_empty: "x \ A ==> interval r x (Top cl) \ {}" apply (metis Top_in_lattice Top_prop empty_iff intervalI reflE) done -ML_command{*AtpWrapper.problem_name:="Tarski__Bot_intv_not_empty"*} (*ALL THEOREMS*) +declare [[ atp_problem_prefix = "Tarski__Bot_intv_not_empty" ]] (*ALL THEOREMS*) lemma (in CLF) Bot_intv_not_empty: "x \ A ==> interval r (Bot cl) x \ {}" apply (metis Bot_prop ex_in_conv intervalI reflE rel_imp_elem) done @@ -902,7 +902,7 @@ by (simp add: P_def fix_subset po_subset_po) (*first proved 2007-01-25 after relaxing relevance*) -ML_command{*AtpWrapper.problem_name:="Tarski__Y_subset_A"*} +declare [[ atp_problem_prefix = "Tarski__Y_subset_A" ]] declare (in Tarski) P_def[simp] Y_ss [simp] declare fix_subset [intro] subset_trans [intro] lemma (in Tarski) Y_subset_A: "Y \ A" @@ -918,7 +918,7 @@ by (rule Y_subset_A [THEN lub_in_lattice]) (*never proved, 2007-01-22*) -ML_command{*AtpWrapper.problem_name:="Tarski__lubY_le_flubY"*} (*ALL THEOREMS*) +declare [[ atp_problem_prefix = "Tarski__lubY_le_flubY" ]] (*ALL THEOREMS*) lemma (in Tarski) lubY_le_flubY: "(lub Y cl, f (lub Y cl)) \ r" (*sledgehammer*) apply (rule lub_least) @@ -927,12 +927,12 @@ apply (rule lubY_in_A) -- {* @{text "Y \ P ==> f x = x"} *} apply (rule ballI) -ML_command{*AtpWrapper.problem_name:="Tarski__lubY_le_flubY_simpler"*} (*ALL THEOREMS*) +using [[ atp_problem_prefix = "Tarski__lubY_le_flubY_simpler" ]] (*ALL THEOREMS*) (*sledgehammer *) apply (rule_tac t = "x" in fix_imp_eq [THEN subst]) apply (erule Y_ss [simplified P_def, THEN subsetD]) -- {* @{text "reduce (f x, f (lub Y cl)) \ r to (x, lub Y cl) \ r"} by monotonicity *} -ML_command{*AtpWrapper.problem_name:="Tarski__lubY_le_flubY_simplest"*} (*ALL THEOREMS*) +using [[ atp_problem_prefix = "Tarski__lubY_le_flubY_simplest" ]] (*ALL THEOREMS*) (*sledgehammer*) apply (rule_tac f = "f" in monotoneE) apply (rule monotone_f) @@ -942,7 +942,7 @@ done (*first proved 2007-01-25 after relaxing relevance*) -ML_command{*AtpWrapper.problem_name:="Tarski__intY1_subset"*} (*ALL THEOREMS*) +declare [[ atp_problem_prefix = "Tarski__intY1_subset" ]] (*ALL THEOREMS*) lemma (in Tarski) intY1_subset: "intY1 \ A" (*sledgehammer*) apply (unfold intY1_def) @@ -954,7 +954,7 @@ lemmas (in Tarski) intY1_elem = intY1_subset [THEN subsetD] (*never proved, 2007-01-22*) -ML_command{*AtpWrapper.problem_name:="Tarski__intY1_f_closed"*} (*ALL THEOREMS*) +declare [[ atp_problem_prefix = "Tarski__intY1_f_closed" ]] (*ALL THEOREMS*) lemma (in Tarski) intY1_f_closed: "x \ intY1 \ f x \ intY1" (*sledgehammer*) apply (simp add: intY1_def interval_def) @@ -962,7 +962,7 @@ apply (rule transE) apply (rule lubY_le_flubY) -- {* @{text "(f (lub Y cl), f x) \ r"} *} -ML_command{*AtpWrapper.problem_name:="Tarski__intY1_f_closed_simpler"*} (*ALL THEOREMS*) +using [[ atp_problem_prefix = "Tarski__intY1_f_closed_simpler" ]] (*ALL THEOREMS*) (*sledgehammer [has been proved before now...]*) apply (rule_tac f=f in monotoneE) apply (rule monotone_f) @@ -975,13 +975,13 @@ apply (simp add: intY1_def interval_def intY1_elem) done -ML_command{*AtpWrapper.problem_name:="Tarski__intY1_func"*} (*ALL THEOREMS*) +declare [[ atp_problem_prefix = "Tarski__intY1_func" ]] (*ALL THEOREMS*) lemma (in Tarski) intY1_func: "(%x: intY1. f x) \ intY1 -> intY1" apply (rule restrict_in_funcset) apply (metis intY1_f_closed restrict_in_funcset) done -ML_command{*AtpWrapper.problem_name:="Tarski__intY1_mono"*} (*ALL THEOREMS*) +declare [[ atp_problem_prefix = "Tarski__intY1_mono" ]] (*ALL THEOREMS*) lemma (in Tarski) intY1_mono: "monotone (%x: intY1. f x) intY1 (induced intY1 r)" (*sledgehammer *) @@ -990,7 +990,7 @@ done (*proof requires relaxing relevance: 2007-01-25*) -ML_command{*AtpWrapper.problem_name:="Tarski__intY1_is_cl"*} (*ALL THEOREMS*) +declare [[ atp_problem_prefix = "Tarski__intY1_is_cl" ]] (*ALL THEOREMS*) lemma (in Tarski) intY1_is_cl: "(| pset = intY1, order = induced intY1 r |) \ CompleteLattice" (*sledgehammer*) @@ -1003,7 +1003,7 @@ done (*never proved, 2007-01-22*) -ML_command{*AtpWrapper.problem_name:="Tarski__v_in_P"*} (*ALL THEOREMS*) +declare [[ atp_problem_prefix = "Tarski__v_in_P" ]] (*ALL THEOREMS*) lemma (in Tarski) v_in_P: "v \ P" (*sledgehammer*) apply (unfold P_def) @@ -1013,7 +1013,7 @@ v_def CL_imp_PO intY1_is_cl CLF_set_def intY1_func intY1_mono) done -ML_command{*AtpWrapper.problem_name:="Tarski__z_in_interval"*} (*ALL THEOREMS*) +declare [[ atp_problem_prefix = "Tarski__z_in_interval" ]] (*ALL THEOREMS*) lemma (in Tarski) z_in_interval: "[| z \ P; \y\Y. (y, z) \ induced P r |] ==> z \ intY1" (*sledgehammer *) @@ -1027,14 +1027,14 @@ apply (simp add: induced_def) done -ML_command{*AtpWrapper.problem_name:="Tarski__fz_in_int_rel"*} (*ALL THEOREMS*) +declare [[ atp_problem_prefix = "Tarski__fz_in_int_rel" ]] (*ALL THEOREMS*) lemma (in Tarski) f'z_in_int_rel: "[| z \ P; \y\Y. (y, z) \ induced P r |] ==> ((%x: intY1. f x) z, z) \ induced intY1 r" apply (metis P_def acc_def fix_imp_eq fix_subset indI reflE restrict_apply subset_eq z_in_interval) done (*never proved, 2007-01-22*) -ML_command{*AtpWrapper.problem_name:="Tarski__tarski_full_lemma"*} (*ALL THEOREMS*) +declare [[ atp_problem_prefix = "Tarski__tarski_full_lemma" ]] (*ALL THEOREMS*) lemma (in Tarski) tarski_full_lemma: "\L. isLub Y (| pset = P, order = induced P r |) L" apply (rule_tac x = "v" in exI) @@ -1064,12 +1064,12 @@ prefer 2 apply (simp add: v_in_P) apply (unfold v_def) (*never proved, 2007-01-22*) -ML_command{*AtpWrapper.problem_name:="Tarski__tarski_full_lemma_simpler"*} +using [[ atp_problem_prefix = "Tarski__tarski_full_lemma_simpler" ]] (*sledgehammer*) apply (rule indE) apply (rule_tac [2] intY1_subset) (*never proved, 2007-01-22*) -ML_command{*AtpWrapper.problem_name:="Tarski__tarski_full_lemma_simplest"*} +using [[ atp_problem_prefix = "Tarski__tarski_full_lemma_simplest" ]] (*sledgehammer*) apply (rule CL.glb_lower [OF CL.intro, OF PO.intro CL_axioms.intro, OF _ intY1_is_cl, simplified]) apply (simp add: CL_imp_PO intY1_is_cl) @@ -1087,7 +1087,7 @@ (*never proved, 2007-01-22*) -ML_command{*AtpWrapper.problem_name:="Tarski__Tarski_full"*} +declare [[ atp_problem_prefix = "Tarski__Tarski_full" ]] declare (in CLF) fixf_po[intro] P_def [simp] A_def [simp] r_def [simp] Tarski.tarski_full_lemma [intro] cl_po [intro] cl_co [intro] CompleteLatticeI_simp [intro] @@ -1097,7 +1097,7 @@ apply (rule CompleteLatticeI_simp) apply (rule fixf_po, clarify) (*never proved, 2007-01-22*) -ML_command{*AtpWrapper.problem_name:="Tarski__Tarski_full_simpler"*} +using [[ atp_problem_prefix = "Tarski__Tarski_full_simpler" ]] (*sledgehammer*) apply (simp add: P_def A_def r_def) apply (blast intro!: Tarski.tarski_full_lemma [OF Tarski.intro, OF CLF.intro Tarski_axioms.intro,