# HG changeset patch # User haftmann # Date 1310305535 -7200 # Node ID fac11b64713c54d6caba05f34b9d84feafb4e598 # Parent 3316e6831801a7e2c7eb9e62e34adb9c03c3817a tuned proofs and notation diff -r 3316e6831801 -r fac11b64713c src/HOL/Complete_Lattice.thy --- a/src/HOL/Complete_Lattice.thy Sun Jul 10 14:26:07 2011 +0200 +++ b/src/HOL/Complete_Lattice.thy Sun Jul 10 15:45:35 2011 +0200 @@ -85,47 +85,47 @@ lemma le_Inf_iff: "b \ Inf A \ (\a\A. b \ a)" by (auto intro: Inf_greatest dest: Inf_lower) -lemma Sup_le_iff: "Sup A \ b \ (\a\A. a \ b)" +lemma Sup_le_iff: "\A \ b \ (\a\A. a \ b)" by (auto intro: Sup_least dest: Sup_upper) lemma Inf_mono: assumes "\b. b \ B \ \a\A. a \ b" - shows "Inf A \ Inf B" + shows "\A \ \B" proof (rule Inf_greatest) fix b assume "b \ B" with assms obtain a where "a \ A" and "a \ b" by blast - from `a \ A` have "Inf A \ a" by (rule Inf_lower) - with `a \ b` show "Inf A \ b" by auto + from `a \ A` have "\A \ a" by (rule Inf_lower) + with `a \ b` show "\A \ b" by auto qed lemma Sup_mono: assumes "\a. a \ A \ \b\B. a \ b" - shows "Sup A \ Sup B" + shows "\A \ \B" proof (rule Sup_least) fix a assume "a \ A" with assms obtain b where "b \ B" and "a \ b" by blast - from `b \ B` have "b \ Sup B" by (rule Sup_upper) - with `a \ b` show "a \ Sup B" by auto + from `b \ B` have "b \ \B" by (rule Sup_upper) + with `a \ b` show "a \ \B" by auto qed lemma top_le: - "top \ x \ x = top" + "\ \ x \ x = \" by (rule antisym) auto lemma le_bot: - "x \ bot \ x = bot" + "x \ \ \ x = \" by (rule antisym) auto -lemma not_less_bot[simp]: "\ (x \ bot)" +lemma not_less_bot[simp]: "\ (x \ \)" using bot_least[of x] by (auto simp: le_less) -lemma not_top_less[simp]: "\ (top \ x)" +lemma not_top_less[simp]: "\ (\ \ x)" using top_greatest[of x] by (auto simp: le_less) -lemma Sup_upper2: "u \ A \ v \ u \ v \ Sup A" +lemma Sup_upper2: "u \ A \ v \ u \ v \ \A" using Sup_upper[of u A] by auto -lemma Inf_lower2: "u \ A \ u \ v \ Inf A \ v" +lemma Inf_lower2: "u \ A \ u \ v \ \A \ v" using Inf_lower[of u A] by auto definition INFI :: "'b set \ ('b \ 'a) \ 'a" where @@ -172,22 +172,22 @@ lemma INF_cong: "(\x. x \ A \ f x = g x) \ INFI A f = INFI A g" by (simp add: INFI_def cong: image_cong) -lemma le_SUPI: "i : A \ M i \ (SUP i:A. M i)" +lemma le_SUPI: "i \ A \ M i \ (\i\A. M i)" by (auto simp add: SUPR_def intro: Sup_upper) -lemma le_SUPI2: "i \ A \ u \ M i \ u \ (SUP i:A. M i)" +lemma le_SUPI2: "i \ A \ u \ M i \ u \ (\i\A. M i)" using le_SUPI[of i A M] by auto -lemma SUP_leI: "(\i. i : A \ M i \ u) \ (SUP i:A. M i) \ u" +lemma SUP_leI: "(\i. i \ A \ M i \ u) \ (\i\A. M i) \ u" by (auto simp add: SUPR_def intro: Sup_least) -lemma INF_leI: "i : A \ (INF i:A. M i) \ M i" +lemma INF_leI: "i \ A \ (\i\A. M i) \ M i" by (auto simp add: INFI_def intro: Inf_lower) -lemma INF_leI2: "i \ A \ M i \ u \ (INF i:A. M i) \ u" +lemma INF_leI2: "i \ A \ M i \ u \ (\i\A. M i) \ u" using INF_leI[of i A M] by auto -lemma le_INFI: "(\i. i : A \ u \ M i) \ u \ (INF i:A. M i)" +lemma le_INFI: "(\i. i \ A \ u \ M i) \ u \ (\i\A. M i)" by (auto simp add: INFI_def intro: Inf_greatest) lemma SUP_le_iff: "(SUP i:A. M i) \ u \ (\i \ A. M i \ u)" @@ -328,27 +328,27 @@ by (simp add: Inf_fun_def Inf_bool_def) (simp add: mem_def) qed -lemma Inter_iff [simp,no_atp]: "(A : Inter C) = (ALL X:C. A:X)" +lemma Inter_iff [simp,no_atp]: "A \ \C \ (\X\C. A \ X)" by (unfold Inter_eq) blast -lemma InterI [intro!]: "(!!X. X:C ==> A:X) ==> A : Inter C" +lemma InterI [intro!]: "(\X. X \ C \ A \ X) \ A \ \C" by (simp add: Inter_eq) text {* \medskip A ``destruct'' rule -- every @{term X} in @{term C} - contains @{term A} as an element, but @{prop "A:X"} can hold when - @{prop "X:C"} does not! This rule is analogous to @{text spec}. + contains @{term A} as an element, but @{prop "A \ X"} can hold when + @{prop "X \ C"} does not! This rule is analogous to @{text spec}. *} -lemma InterD [elim, Pure.elim]: "A : Inter C ==> X:C ==> A:X" +lemma InterD [elim, Pure.elim]: "A \ \C \ X \ C \ A \ X" by auto -lemma InterE [elim]: "A : Inter C ==> (X~:C ==> R) ==> (A:X ==> R) ==> R" +lemma InterE [elim]: "A \ \C \ (X \ C \ R) \ (A \ X \ R) \ R" -- {* ``Classical'' elimination rule -- does not require proving - @{prop "X:C"}. *} + @{prop "X \ C"}. *} by (unfold Inter_eq) blast -lemma Inter_lower: "B \ A ==> Inter A \ B" +lemma Inter_lower: "B \ A \ \A \ B" by (fact Inf_lower) lemma (in complete_lattice) Inf_less_eq: @@ -380,18 +380,23 @@ lemma Inter_insert [simp]: "\(insert a B) = a \ \B" by (fact Inf_insert) +lemma (in complete_lattice) Inf_inter_less: "\A \ \B \ \(A \ B)" + by (auto intro: Inf_greatest Inf_lower) + lemma Inter_Un_subset: "\A \ \B \ \(A \ B)" - by blast + by (fact Inf_inter_less) + +(*lemma (in complete_lattice) Inf_union_distrib: "\(A \ B) = \A \ \B"*) lemma Inter_Un_distrib: "\(A \ B) = \A \ \B" by blast lemma Inter_UNIV_conv [simp,no_atp]: - "(\A = UNIV) = (\x\A. x = UNIV)" - "(UNIV = \A) = (\x\A. x = UNIV)" + "\A = UNIV \ (\x\A. x = UNIV)" + "UNIV = \A \ (\x\A. x = UNIV)" by blast+ -lemma Inter_anti_mono: "B \ A ==> \A \ \B" +lemma Inter_anti_mono: "B \ A \ \A \ \B" by blast