diff -r 75660d89c339 -r 16907431e477 src/HOL/Probability/Caratheodory.thy --- a/src/HOL/Probability/Caratheodory.thy Wed Oct 10 12:12:14 2012 +0200 +++ b/src/HOL/Probability/Caratheodory.thy Wed Oct 10 12:12:15 2012 +0200 @@ -9,12 +9,6 @@ imports Measure_Space begin -lemma sums_def2: - "f sums x \ (\n. (\i\n. f i)) ----> x" - unfolding sums_def - apply (subst LIMSEQ_Suc_iff[symmetric]) - unfolding atLeastLessThanSuc_atLeastAtMost atLeast0AtMost .. - text {* Originally from the Hurd/Coble measure theory development, translated by Lawrence Paulson. *} @@ -684,146 +678,6 @@ subsubsection {*Alternative instances of caratheodory*} -lemma (in ring_of_sets) countably_additive_iff_continuous_from_below: - assumes f: "positive M f" "additive M f" - shows "countably_additive M f \ - (\A. range A \ M \ incseq A \ (\i. A i) \ M \ (\i. f (A i)) ----> f (\i. A i))" - unfolding countably_additive_def -proof safe - assume count_sum: "\A. range A \ M \ disjoint_family A \ UNION UNIV A \ M \ (\i. f (A i)) = f (UNION UNIV A)" - fix A :: "nat \ 'a set" assume A: "range A \ M" "incseq A" "(\i. A i) \ M" - then have dA: "range (disjointed A) \ M" by (auto simp: range_disjointed_sets) - with count_sum[THEN spec, of "disjointed A"] A(3) - have f_UN: "(\i. f (disjointed A i)) = f (\i. A i)" - by (auto simp: UN_disjointed_eq disjoint_family_disjointed) - moreover have "(\n. (\i=0.. (\i. f (disjointed A i))" - using f(1)[unfolded positive_def] dA - by (auto intro!: summable_sumr_LIMSEQ_suminf summable_ereal_pos) - from LIMSEQ_Suc[OF this] - have "(\n. (\i\n. f (disjointed A i))) ----> (\i. f (disjointed A i))" - unfolding atLeastLessThanSuc_atLeastAtMost atLeast0AtMost . - moreover have "\n. (\i\n. f (disjointed A i)) = f (A n)" - using disjointed_additive[OF f A(1,2)] . - ultimately show "(\i. f (A i)) ----> f (\i. A i)" by simp -next - assume cont: "\A. range A \ M \ incseq A \ (\i. A i) \ M \ (\i. f (A i)) ----> f (\i. A i)" - fix A :: "nat \ 'a set" assume A: "range A \ M" "disjoint_family A" "(\i. A i) \ M" - have *: "(\n. (\i\n. A i)) = (\i. A i)" by auto - have "(\n. f (\i\n. A i)) ----> f (\i. A i)" - proof (unfold *[symmetric], intro cont[rule_format]) - show "range (\i. \ i\i. A i) \ M" "(\i. \ i\i. A i) \ M" - using A * by auto - qed (force intro!: incseq_SucI) - moreover have "\n. f (\i\n. A i) = (\i\n. f (A i))" - using A - by (intro additive_sum[OF f, of _ A, symmetric]) - (auto intro: disjoint_family_on_mono[where B=UNIV]) - ultimately - have "(\i. f (A i)) sums f (\i. A i)" - unfolding sums_def2 by simp - from sums_unique[OF this] - show "(\i. f (A i)) = f (\i. A i)" by simp -qed - -lemma (in ring_of_sets) continuous_from_above_iff_empty_continuous: - assumes f: "positive M f" "additive M f" - shows "(\A. range A \ M \ decseq A \ (\i. A i) \ M \ (\i. f (A i) \ \) \ (\i. f (A i)) ----> f (\i. A i)) - \ (\A. range A \ M \ decseq A \ (\i. A i) = {} \ (\i. f (A i) \ \) \ (\i. f (A i)) ----> 0)" -proof safe - assume cont: "(\A. range A \ M \ decseq A \ (\i. A i) \ M \ (\i. f (A i) \ \) \ (\i. f (A i)) ----> f (\i. A i))" - fix A :: "nat \ 'a set" assume A: "range A \ M" "decseq A" "(\i. A i) = {}" "\i. f (A i) \ \" - with cont[THEN spec, of A] show "(\i. f (A i)) ----> 0" - using `positive M f`[unfolded positive_def] by auto -next - assume cont: "\A. range A \ M \ decseq A \ (\i. A i) = {} \ (\i. f (A i) \ \) \ (\i. f (A i)) ----> 0" - fix A :: "nat \ 'a set" assume A: "range A \ M" "decseq A" "(\i. A i) \ M" "\i. f (A i) \ \" - - have f_mono: "\a b. a \ M \ b \ M \ a \ b \ f a \ f b" - using additive_increasing[OF f] unfolding increasing_def by simp - - have decseq_fA: "decseq (\i. f (A i))" - using A by (auto simp: decseq_def intro!: f_mono) - have decseq: "decseq (\i. A i - (\i. A i))" - using A by (auto simp: decseq_def) - then have decseq_f: "decseq (\i. f (A i - (\i. A i)))" - using A unfolding decseq_def by (auto intro!: f_mono Diff) - have "f (\x. A x) \ f (A 0)" - using A by (auto intro!: f_mono) - then have f_Int_fin: "f (\x. A x) \ \" - using A by auto - { fix i - have "f (A i - (\i. A i)) \ f (A i)" using A by (auto intro!: f_mono) - then have "f (A i - (\i. A i)) \ \" - using A by auto } - note f_fin = this - have "(\i. f (A i - (\i. A i))) ----> 0" - proof (intro cont[rule_format, OF _ decseq _ f_fin]) - show "range (\i. A i - (\i. A i)) \ M" "(\i. A i - (\i. A i)) = {}" - using A by auto - qed - from INF_Lim_ereal[OF decseq_f this] - have "(INF n. f (A n - (\i. A i))) = 0" . - moreover have "(INF n. f (\i. A i)) = f (\i. A i)" - by auto - ultimately have "(INF n. f (A n - (\i. A i)) + f (\i. A i)) = 0 + f (\i. A i)" - using A(4) f_fin f_Int_fin - by (subst INFI_ereal_add) (auto simp: decseq_f) - moreover { - fix n - have "f (A n - (\i. A i)) + f (\i. A i) = f ((A n - (\i. A i)) \ (\i. A i))" - using A by (subst f(2)[THEN additiveD]) auto - also have "(A n - (\i. A i)) \ (\i. A i) = A n" - by auto - finally have "f (A n - (\i. A i)) + f (\i. A i) = f (A n)" . } - ultimately have "(INF n. f (A n)) = f (\i. A i)" - by simp - with LIMSEQ_ereal_INFI[OF decseq_fA] - show "(\i. f (A i)) ----> f (\i. A i)" by simp -qed - -lemma positiveD1: "positive M f \ f {} = 0" by (auto simp: positive_def) -lemma positiveD2: "positive M f \ A \ M \ 0 \ f A" by (auto simp: positive_def) - -lemma (in ring_of_sets) empty_continuous_imp_continuous_from_below: - assumes f: "positive M f" "additive M f" "\A\M. f A \ \" - assumes cont: "\A. range A \ M \ decseq A \ (\i. A i) = {} \ (\i. f (A i)) ----> 0" - assumes A: "range A \ M" "incseq A" "(\i. A i) \ M" - shows "(\i. f (A i)) ----> f (\i. A i)" -proof - - have "\A\M. \x. f A = ereal x" - proof - fix A assume "A \ M" with f show "\x. f A = ereal x" - unfolding positive_def by (cases "f A") auto - qed - from bchoice[OF this] guess f' .. note f' = this[rule_format] - from A have "(\i. f ((\i. A i) - A i)) ----> 0" - by (intro cont[rule_format]) (auto simp: decseq_def incseq_def) - moreover - { fix i - have "f ((\i. A i) - A i) + f (A i) = f ((\i. A i) - A i \ A i)" - using A by (intro f(2)[THEN additiveD, symmetric]) auto - also have "(\i. A i) - A i \ A i = (\i. A i)" - by auto - finally have "f' (\i. A i) - f' (A i) = f' ((\i. A i) - A i)" - using A by (subst (asm) (1 2 3) f') auto - then have "f ((\i. A i) - A i) = ereal (f' (\i. A i) - f' (A i))" - using A f' by auto } - ultimately have "(\i. f' (\i. A i) - f' (A i)) ----> 0" - by (simp add: zero_ereal_def) - then have "(\i. f' (A i)) ----> f' (\i. A i)" - by (rule LIMSEQ_diff_approach_zero2[OF tendsto_const]) - then show "(\i. f (A i)) ----> f (\i. A i)" - using A by (subst (1 2) f') auto -qed - -lemma (in ring_of_sets) empty_continuous_imp_countably_additive: - assumes f: "positive M f" "additive M f" and fin: "\A\M. f A \ \" - assumes cont: "\A. range A \ M \ decseq A \ (\i. A i) = {} \ (\i. f (A i)) ----> 0" - shows "countably_additive M f" - using countably_additive_iff_continuous_from_below[OF f] - using empty_continuous_imp_continuous_from_below[OF f fin] cont - by blast - lemma (in ring_of_sets) caratheodory_empty_continuous: assumes f: "positive M f" "additive M f" and fin: "\A. A \ M \ f A \ \" assumes cont: "\A. range A \ M \ decseq A \ (\i. A i) = {} \ (\i. f (A i)) ----> 0"