# HG changeset patch # User blanchet # Date 1272496266 -7200 # Node ID 2673979cb54da14aaf0d9298be8b357042f1fbd9 # Parent 95bdfa572ceebae0aea4966451e84cc531d19d8f more neg_clausify proofs that get replaced by direct proofs diff -r 95bdfa572cee -r 2673979cb54d src/HOL/Metis_Examples/Tarski.thy --- a/src/HOL/Metis_Examples/Tarski.thy Wed Apr 28 22:36:39 2010 +0200 +++ b/src/HOL/Metis_Examples/Tarski.thy Thu Apr 29 01:11:06 2010 +0200 @@ -514,67 +514,44 @@ "H = {x. (x, f x) \ r & x \ A} ==> lub H cl \ fix f A" apply (simp add: fix_def) apply (rule conjI) -proof (neg_clausify) -assume 0: "H = -Collect - (COMBS (COMBB op \ (COMBC (COMBB op \ (COMBS Pair f)) r)) (COMBC op \ A))" -assume 1: "lub (Collect - (COMBS (COMBB op \ (COMBC (COMBB op \ (COMBS Pair f)) r)) - (COMBC op \ A))) - cl -\ A" -have 2: "lub H cl \ A" - by (metis 1 0) -have 3: "(lub H cl, f (lub H cl)) \ r" - by (metis lubH_le_flubH 0) -have 4: "(f (lub H cl), lub H cl) \ r" - by (metis flubH_le_lubH 0) -have 5: "lub H cl = f (lub H cl) \ (lub H cl, f (lub H cl)) \ r" - by (metis antisymE 4) -have 6: "lub H cl = f (lub H cl)" - by (metis 5 3) -have 7: "(lub H cl, lub H cl) \ r" - by (metis 6 4) -have 8: "\X1. lub H cl \ X1 \ \ refl_on X1 r" - by (metis 7 refl_onD2) -have 9: "\ refl_on A r" - by (metis 8 2) -show "False" - by (metis CO_refl_on 9); -next --{*apparently the way to insert a second structured proof*} - show "H = {x. (x, f x) \ r \ x \ A} \ - f (lub {x. (x, f x) \ r \ x \ A} cl) = lub {x. (x, f x) \ r \ x \ A} cl" - proof (neg_clausify) - assume 0: "H = - Collect - (COMBS (COMBB op \ (COMBC (COMBB op \ (COMBS Pair f)) r)) (COMBC op \ A))" - assume 1: "f (lub (Collect - (COMBS (COMBB op \ (COMBC (COMBB op \ (COMBS Pair f)) r)) - (COMBC op \ A))) - cl) \ - lub (Collect - (COMBS (COMBB op \ (COMBC (COMBB op \ (COMBS Pair f)) r)) - (COMBC op \ A))) - cl" - have 2: "f (lub H cl) \ - lub (Collect - (COMBS (COMBB op \ (COMBC (COMBB op \ (COMBS Pair f)) r)) - (COMBC op \ A))) - cl" - by (metis 1 0) - have 3: "f (lub H cl) \ lub H cl" - by (metis 2 0) - have 4: "(lub H cl, f (lub H cl)) \ r" - by (metis lubH_le_flubH 0) - have 5: "(f (lub H cl), lub H cl) \ r" - by (metis flubH_le_lubH 0) - have 6: "lub H cl = f (lub H cl) \ (lub H cl, f (lub H cl)) \ r" - by (metis antisymE 5) - have 7: "lub H cl = f (lub H cl)" - by (metis 6 4) - show "False" - by (metis 3 7) - qed +proof - + assume A1: "H = {x. (x, f x) \ r \ x \ A}" + have F1: "\x\<^isub>2. (\R. R \ x\<^isub>2) = x\<^isub>2" by (metis Collect_def Collect_mem_eq) + have F2: "\x\<^isub>1 x\<^isub>2. (\R. x\<^isub>2 (x\<^isub>1 R)) = x\<^isub>1 -` x\<^isub>2" + by (metis Collect_def vimage_Collect_eq) + have F3: "\x\<^isub>2 x\<^isub>1. (\R. x\<^isub>1 R \ x\<^isub>2) = x\<^isub>1 -` x\<^isub>2" + by (metis Collect_def vimage_def) + have F4: "\x\<^isub>3 x\<^isub>1. (\R. x\<^isub>1 R \ x\<^isub>3 R) = x\<^isub>1 \ x\<^isub>3" + by (metis Collect_def Collect_conj_eq) + have F5: "(\R. (R, f R) \ r \ R \ A) = H" using A1 by (metis Collect_def) + have F6: "\x\<^isub>1\A. glb x\<^isub>1 (dual cl) \ A" by (metis lub_dual_glb lub_in_lattice) + have F7: "\x\<^isub>2 x\<^isub>1. (\R. x\<^isub>1 R \ x\<^isub>2) = (\R. x\<^isub>2 (x\<^isub>1 R))" by (metis F2 F3) + have "(\R. (R, f R) \ r \ A R) = H" by (metis F1 F5) + hence "A \ (\R. r (R, f R)) = H" by (metis F4 F7 Int_commute) + hence "H \ A" by (metis Int_lower1) + hence "H \ A" by metis + hence "glb H (dual cl) \ A" using F6 by metis + hence "glb (\R. (R, f R) \ r \ R \ A) (dual cl) \ A" using F5 by metis + hence "lub (\R. (R, f R) \ r \ R \ A) cl \ A" by (metis lub_dual_glb) + thus "lub {x. (x, f x) \ r \ x \ A} cl \ A" by (metis Collect_def) +next + assume A1: "H = {x. (x, f x) \ r \ x \ A}" + have F1: "\v. (\R. R \ v) = v" by (metis Collect_mem_eq Collect_def) + have F2: "\w u. (\R. u R \ w R) = u \ w" + by (metis Collect_conj_eq Collect_def) + have F3: "\x v. (\R. v R \ x) = v -` x" by (metis vimage_def Collect_def) + hence F4: "A \ (\R. (R, f R)) -` r = H" using A1 by auto + hence F5: "(f (lub H cl), lub H cl) \ r" + by (metis F1 F3 F2 Int_commute flubH_le_lubH Collect_def) + have F6: "(lub H cl, f (lub H cl)) \ r" + by (metis F1 F3 F2 F4 Int_commute lubH_le_flubH Collect_def) + have "(lub H cl, f (lub H cl)) \ r \ f (lub H cl) = lub H cl" + using F5 by (metis antisymE) + hence "f (lub H cl) = lub H cl" using F6 by metis + thus "H = {x. (x, f x) \ r \ x \ A} + \ f (lub {x. (x, f x) \ r \ x \ A} cl) = + lub {x. (x, f x) \ r \ x \ A} cl" + by (metis F4 F2 F3 F1 Collect_def Int_commute) qed lemma (in CLF) (*lubH_is_fixp:*) @@ -744,18 +721,13 @@ "[| a \ A; b \ A; interval r a b \ {} |] ==> (| pset = interval r a b, order = induced (interval r a b) r |) \ PartialOrder" -proof (neg_clausify) -assume 0: "a \ A" -assume 1: "b \ A" -assume 2: "\pset = interval r a b, order = induced (interval r a b) r\ \ PartialOrder" -have 3: "\ interval r a b \ A" - by (metis 2 po_subset_po) -have 4: "b \ A \ a \ A" - by (metis 3 interval_subset) -have 5: "a \ A" - by (metis 4 1) -show "False" - by (metis 5 0) +proof - + assume A1: "a \ A" + assume "b \ A" + hence "\u. u \ A \ interval r u b \ A" by (metis interval_subset) + hence "interval r a b \ A" using A1 by metis + hence "interval r a b \ A" by metis + thus ?thesis by (metis po_subset_po) qed lemma (in CLF) intv_CL_lub: @@ -1096,9 +1068,9 @@ apply (blast intro!: Tarski.tarski_full_lemma [OF Tarski.intro, OF CLF.intro Tarski_axioms.intro, OF CL.intro CLF_axioms.intro, OF PO.intro CL_axioms.intro] cl_po cl_co f_cl) done - declare (in CLF) fixf_po[rule del] P_def [simp del] A_def [simp del] r_def [simp del] + +declare (in CLF) fixf_po [rule del] P_def [simp del] A_def [simp del] r_def [simp del] Tarski.tarski_full_lemma [rule del] cl_po [rule del] cl_co [rule del] CompleteLatticeI_simp [rule del] - end