# HG changeset patch # User haftmann # Date 1310927394 -7200 # Node ID 92129f50512526cbb4aa3836556e31dc79b7f531 # Parent 58be172c6ca4f3ca45f899a9813071d24adfd8b9 structuring duals together diff -r 58be172c6ca4 -r 92129f505125 src/HOL/Complete_Lattice.thy --- a/src/HOL/Complete_Lattice.thy Sun Jul 17 20:23:39 2011 +0200 +++ b/src/HOL/Complete_Lattice.thy Sun Jul 17 20:29:54 2011 +0200 @@ -224,38 +224,75 @@ lemma INF_empty: "(\x\{}. f x) = \" by (simp add: INFI_def) +lemma SUP_empty: "(\x\{}. f x) = \" + by (simp add: SUPR_def) + lemma INF_insert: "(\x\insert a A. f x) = f a \ INFI A f" by (simp add: INFI_def Inf_insert) +lemma SUP_insert: "(\x\insert a A. f x) = f a \ SUPR A f" + by (simp add: SUPR_def Sup_insert) + lemma INF_leI: "i \ A \ (\i\A. f i) \ f i" by (auto simp add: INFI_def intro: Inf_lower) +lemma le_SUPI: "i \ A \ f i \ (\i\A. f i)" + by (auto simp add: SUPR_def intro: Sup_upper) + lemma INF_leI2: "i \ A \ f i \ u \ (\i\A. f i) \ u" using INF_leI [of i A f] by auto +lemma le_SUPI2: "i \ A \ u \ f i \ u \ (\i\A. f i)" + using le_SUPI [of i A f] by auto + lemma le_INFI: "(\i. i \ A \ u \ f i) \ u \ (\i\A. f i)" by (auto simp add: INFI_def intro: Inf_greatest) +lemma SUP_leI: "(\i. i \ A \ f i \ u) \ (\i\A. f i) \ u" + by (auto simp add: SUPR_def intro: Sup_least) + lemma le_INF_iff: "u \ (\i\A. f i) \ (\i \ A. u \ f i)" by (auto simp add: INFI_def le_Inf_iff) +lemma SUP_le_iff: "(\i\A. f i) \ u \ (\i \ A. f i \ u)" + by (auto simp add: SUPR_def Sup_le_iff) + lemma INF_const [simp]: "A \ {} \ (\i\A. f) = f" by (auto intro: antisym INF_leI le_INFI) +lemma SUP_const [simp]: "A \ {} \ (\i\A. f) = f" + by (auto intro: antisym SUP_leI le_SUPI) + lemma INF_cong: "A = B \ (\x. x \ B \ C x = D x) \ (\x\A. C x) = (\x\B. D x)" by (simp add: INFI_def image_def) +lemma SUP_cong: + "A = B \ (\x. x \ B \ C x = D x) \ (\x\A. C x) = (\x\B. D x)" + by (simp add: SUPR_def image_def) + lemma INF_mono: "(\m. m \ B \ \n\A. f n \ g m) \ (\n\A. f n) \ (\n\B. g n)" by (force intro!: Inf_mono simp: INFI_def) -lemma INF_subset: "A \ B \ INFI B f \ INFI A f" +lemma SUP_mono: + "(\n. n \ A \ \m\B. f n \ g m) \ (\n\A. f n) \ (\n\B. g n)" + by (force intro!: Sup_mono simp: SUPR_def) + +lemma INF_subset: + "A \ B \ INFI B f \ INFI A f" by (intro INF_mono) auto +lemma SUP_subset: + "A \ B \ SUPR A f \ SUPR B f" + by (intro SUP_mono) auto + lemma INF_commute: "(\i\A. \j\B. f i j) = (\j\B. \i\A. f i j)" by (iprover intro: INF_leI le_INFI order_trans antisym) +lemma SUP_commute: "(\i\A. \j\B. f i j) = (\j\B. \i\A. f i j)" + by (iprover intro: SUP_leI le_SUPI order_trans antisym) + lemma (in complete_lattice) INFI_empty: "(\x\{}. B x) = \" by (simp add: INFI_def) @@ -298,41 +335,6 @@ -- {* The last inclusion is POSITIVE! *} by (blast intro: INF_mono dest: subsetD) -lemma SUP_cong: - "A = B \ (\x. x \ B \ C x = D x) \ (\x\A. C x) = (\x\B. D x)" - by (simp add: SUPR_def image_def) - -lemma le_SUPI: "i \ A \ f i \ (\i\A. f i)" - by (auto simp add: SUPR_def intro: Sup_upper) - -lemma le_SUPI2: "i \ A \ u \ f i \ u \ (\i\A. f i)" - using le_SUPI [of i A f] by auto - -lemma SUP_leI: "(\i. i \ A \ f i \ u) \ (\i\A. f i) \ u" - by (auto simp add: SUPR_def intro: Sup_least) - -lemma SUP_le_iff: "(\i\A. f i) \ u \ (\i \ A. f i \ u)" - unfolding SUPR_def by (auto simp add: Sup_le_iff) - -lemma SUP_const [simp]: "A \ {} \ (\i\A. f) = f" - by (auto intro: antisym SUP_leI le_SUPI) - -lemma SUP_mono: - "(\n. n \ A \ \m\B. f n \ g m) \ (\n\A. f n) \ (\n\B. g n)" - by (force intro!: Sup_mono simp: SUPR_def) - -lemma SUP_subset: "A \ B \ SUPR A f \ SUPR B f" - by (intro SUP_mono) auto - -lemma SUP_commute: "(\i\A. \j\B. f i j) = (\j\B. \i\A. f i j)" - by (iprover intro: SUP_leI le_SUPI order_trans antisym) - -lemma SUP_empty: "(\x\{}. f x) = \" - by (simp add: SUPR_def) - -lemma SUP_insert: "(\x\insert a A. f x) = f a \ SUPR A f" - by (simp add: SUPR_def Sup_insert) - end lemma Inf_less_iff: