# HG changeset patch # User hoelzl # Date 1435663804 -7200 # Node ID e39e6881985cc45158dc72629420d82c5bcf1cfb # Parent f11e9fd70b7dc33eddcfdf89416b39a67ad98d60 generalized inf and sup_continuous; added intro rules diff -r f11e9fd70b7d -r e39e6881985c src/HOL/Library/Order_Continuity.thy --- a/src/HOL/Library/Order_Continuity.thy Tue Jun 30 13:29:30 2015 +0200 +++ b/src/HOL/Library/Order_Continuity.thy Tue Jun 30 13:30:04 2015 +0200 @@ -37,14 +37,13 @@ subsection \Continuity for complete lattices\ definition - sup_continuous :: "('a::complete_lattice \ 'a::complete_lattice) \ bool" where + sup_continuous :: "('a::complete_lattice \ 'b::complete_lattice) \ bool" where "sup_continuous F \ (\M::nat \ 'a. mono M \ F (SUP i. M i) = (SUP i. F (M i)))" lemma sup_continuousD: "sup_continuous F \ mono M \ F (SUP i::nat. M i) = (SUP i. F (M i))" by (auto simp: sup_continuous_def) lemma sup_continuous_mono: - fixes F :: "'a::complete_lattice \ 'a::complete_lattice" assumes [simp]: "sup_continuous F" shows "mono F" proof fix A B :: "'a" assume [simp]: "A \ B" @@ -56,6 +55,25 @@ by (simp add: SUP_nat_binary le_iff_sup) qed +lemma sup_continuous_intros: + shows sup_continuous_const: "sup_continuous (\x. c)" + and sup_continuous_id: "sup_continuous (\x. x)" + and sup_continuous_apply: "sup_continuous (\f. f x)" + and sup_continuous_fun: "(\s. sup_continuous (\x. P x s)) \ sup_continuous P" + by (auto simp: sup_continuous_def) + +lemma sup_continuous_compose: + assumes f: "sup_continuous f" and g: "sup_continuous g" + shows "sup_continuous (\x. f (g x))" + unfolding sup_continuous_def +proof safe + fix M :: "nat \ 'c" assume "mono M" + moreover then have "mono (\i. g (M i))" + using sup_continuous_mono[OF g] by (auto simp: mono_def) + ultimately show "f (g (SUPREMUM UNIV M)) = (SUP i. f (g (M i)))" + by (auto simp: sup_continuous_def g[THEN sup_continuousD] f[THEN sup_continuousD]) +qed + lemma sup_continuous_lfp: assumes "sup_continuous F" shows "lfp F = (SUP i. (F ^^ i) bot)" (is "lfp F = ?U") proof (rule antisym) @@ -105,14 +123,13 @@ qed definition - inf_continuous :: "('a::complete_lattice \ 'a::complete_lattice) \ bool" where + inf_continuous :: "('a::complete_lattice \ 'b::complete_lattice) \ bool" where "inf_continuous F \ (\M::nat \ 'a. antimono M \ F (INF i. M i) = (INF i. F (M i)))" lemma inf_continuousD: "inf_continuous F \ antimono M \ F (INF i::nat. M i) = (INF i. F (M i))" by (auto simp: inf_continuous_def) lemma inf_continuous_mono: - fixes F :: "'a::complete_lattice \ 'a::complete_lattice" assumes [simp]: "inf_continuous F" shows "mono F" proof fix A B :: "'a" assume [simp]: "A \ B" @@ -124,6 +141,25 @@ by (simp add: INF_nat_binary le_iff_inf inf_commute) qed +lemma inf_continuous_intros: + shows inf_continuous_const: "inf_continuous (\x. c)" + and inf_continuous_id: "inf_continuous (\x. x)" + and inf_continuous_apply: "inf_continuous (\f. f x)" + and inf_continuous_fun: "(\s. inf_continuous (\x. P x s)) \ inf_continuous P" + by (auto simp: inf_continuous_def) + +lemma inf_continuous_compose: + assumes f: "inf_continuous f" and g: "inf_continuous g" + shows "inf_continuous (\x. f (g x))" + unfolding inf_continuous_def +proof safe + fix M :: "nat \ 'c" assume "antimono M" + moreover then have "antimono (\i. g (M i))" + using inf_continuous_mono[OF g] by (auto simp: mono_def antimono_def) + ultimately show "f (g (INFIMUM UNIV M)) = (INF i. f (g (M i)))" + by (auto simp: inf_continuous_def g[THEN inf_continuousD] f[THEN inf_continuousD]) +qed + lemma inf_continuous_gfp: assumes "inf_continuous F" shows "gfp F = (INF i. (F ^^ i) top)" (is "gfp F = ?U") proof (rule antisym) diff -r f11e9fd70b7d -r e39e6881985c src/HOL/Probability/Nonnegative_Lebesgue_Integration.thy --- a/src/HOL/Probability/Nonnegative_Lebesgue_Integration.thy Tue Jun 30 13:29:30 2015 +0200 +++ b/src/HOL/Probability/Nonnegative_Lebesgue_Integration.thy Tue Jun 30 13:30:04 2015 +0200 @@ -1547,25 +1547,25 @@ lemma sup_continuous_nn_integral: assumes f: "\y. sup_continuous (f y)" - assumes [measurable]: "\F x. (\y. f y F x) \ borel_measurable (M x)" - shows "sup_continuous (\F x. (\\<^sup>+y. f y F x \M x))" + assumes [measurable]: "\x. (\y. f y x) \ borel_measurable M" + shows "sup_continuous (\x. (\\<^sup>+y. f y x \M))" unfolding sup_continuous_def proof safe - fix C :: "nat \ 'b \ ereal" assume C: "incseq C" - then show "(\x. \\<^sup>+ y. f y (SUPREMUM UNIV C) x \M x) = (SUP i. (\x. \\<^sup>+ y. f y (C i) x \M x))" - using sup_continuous_mono[OF f] - by (simp add: sup_continuousD[OF f C] fun_eq_iff nn_integral_monotone_convergence_SUP mono_def le_fun_def) + fix C :: "nat \ 'b" assume C: "incseq C" + with sup_continuous_mono[OF f] show "(\\<^sup>+ y. f y (SUPREMUM UNIV C) \M) = (SUP i. \\<^sup>+ y. f y (C i) \M)" + unfolding sup_continuousD[OF f C] + by (subst nn_integral_monotone_convergence_SUP) (auto simp: mono_def le_fun_def) qed lemma inf_continuous_nn_integral: assumes f: "\y. inf_continuous (f y)" - assumes [measurable]: "\F x. (\y. f y F x) \ borel_measurable (M x)" - assumes bnd: "\x F. (\\<^sup>+ y. f y F x \M x) \ \" - shows "inf_continuous (\F x. (\\<^sup>+y. f y F x \M x))" + assumes [measurable]: "\x. (\y. f y x) \ borel_measurable M" + assumes bnd: "\x. (\\<^sup>+ y. f y x \M) \ \" + shows "inf_continuous (\x. (\\<^sup>+y. f y x \M))" unfolding inf_continuous_def proof safe - fix C :: "nat \ 'b \ ereal" assume C: "decseq C" - then show "(\x. \\<^sup>+ y. f y (INFIMUM UNIV C) x \M x) = (INF i. (\x. \\<^sup>+ y. f y (C i) x \M x))" + fix C :: "nat \ 'b" assume C: "decseq C" + then show "(\\<^sup>+ y. f y (INFIMUM UNIV C) \M) = (INF i. \\<^sup>+ y. f y (C i) \M)" using inf_continuous_mono[OF f] by (auto simp add: inf_continuousD[OF f C] fun_eq_iff antimono_def mono_def le_fun_def bnd intro!: nn_integral_monotone_convergence_INF)