src/HOL/Probability/Regularity.thy
changeset 51000 c9adb50f74ad
parent 50881 ae630bab13da
child 52141 eff000cab70f
equal deleted inserted replaced
50999:3de230ed0547 51000:c9adb50f74ad
    14   assumes f_bound: "\<And>i. i \<in> A \<Longrightarrow> f i \<le> x"
    14   assumes f_bound: "\<And>i. i \<in> A \<Longrightarrow> f i \<le> x"
    15   assumes f_fin: "\<And>i. i \<in> A \<Longrightarrow> f i \<noteq> \<infinity>"
    15   assumes f_fin: "\<And>i. i \<in> A \<Longrightarrow> f i \<noteq> \<infinity>"
    16   assumes f_nonneg: "\<And>i. 0 \<le> f i"
    16   assumes f_nonneg: "\<And>i. 0 \<le> f i"
    17   assumes approx: "\<And>e. (e::real) > 0 \<Longrightarrow> \<exists>i \<in> A. x \<le> f i + e"
    17   assumes approx: "\<And>e. (e::real) > 0 \<Longrightarrow> \<exists>i \<in> A. x \<le> f i + e"
    18   shows "x = (SUP i : A. f i)"
    18   shows "x = (SUP i : A. f i)"
    19 proof (subst eq_commute, rule ereal_SUPI)
    19 proof (subst eq_commute, rule SUP_eqI)
    20   show "\<And>i. i \<in> A \<Longrightarrow> f i \<le> x" using f_bound by simp
    20   show "\<And>i. i \<in> A \<Longrightarrow> f i \<le> x" using f_bound by simp
    21 next
    21 next
    22   fix y :: ereal assume f_le_y: "(\<And>i::'a. i \<in> A \<Longrightarrow> f i \<le> y)"
    22   fix y :: ereal assume f_le_y: "(\<And>i::'a. i \<in> A \<Longrightarrow> f i \<le> y)"
    23   with A_notempty f_nonneg have "y \<ge> 0" by auto (metis order_trans)
    23   with A_notempty f_nonneg have "y \<ge> 0" by auto (metis order_trans)
    24   show "x \<le> y"
    24   show "x \<le> y"
    43   assumes f_bound: "\<And>i. i \<in> A \<Longrightarrow> x \<le> f i"
    43   assumes f_bound: "\<And>i. i \<in> A \<Longrightarrow> x \<le> f i"
    44   assumes f_fin: "\<And>i. i \<in> A \<Longrightarrow> f i \<noteq> \<infinity>"
    44   assumes f_fin: "\<And>i. i \<in> A \<Longrightarrow> f i \<noteq> \<infinity>"
    45   assumes f_nonneg: "\<And>i. 0 \<le> f i"
    45   assumes f_nonneg: "\<And>i. 0 \<le> f i"
    46   assumes approx: "\<And>e. (e::real) > 0 \<Longrightarrow> \<exists>i \<in> A. f i \<le> x + e"
    46   assumes approx: "\<And>e. (e::real) > 0 \<Longrightarrow> \<exists>i \<in> A. f i \<le> x + e"
    47   shows "x = (INF i : A. f i)"
    47   shows "x = (INF i : A. f i)"
    48 proof (subst eq_commute, rule ereal_INFI)
    48 proof (subst eq_commute, rule INF_eqI)
    49   show "\<And>i. i \<in> A \<Longrightarrow> x \<le> f i" using f_bound by simp
    49   show "\<And>i. i \<in> A \<Longrightarrow> x \<le> f i" using f_bound by simp
    50 next
    50 next
    51   fix y :: ereal assume f_le_y: "(\<And>i::'a. i \<in> A \<Longrightarrow> y \<le> f i)"
    51   fix y :: ereal assume f_le_y: "(\<And>i::'a. i \<in> A \<Longrightarrow> y \<le> f i)"
    52   with A_notempty f_fin have "y \<noteq> \<infinity>" by force
    52   with A_notempty f_fin have "y \<noteq> \<infinity>" by force
    53   show "y \<le> x"
    53   show "y \<le> x"
    77   assume "\<forall>i\<in>A. \<not> f i < x + e"
    77   assume "\<forall>i\<in>A. \<not> f i < x + e"
    78   moreover
    78   moreover
    79   from INF have "\<And>y. (\<And>i. i \<in> A \<Longrightarrow> y \<le> f i) \<Longrightarrow> y \<le> x" by (auto intro: INF_greatest)
    79   from INF have "\<And>y. (\<And>i. i \<in> A \<Longrightarrow> y \<le> f i) \<Longrightarrow> y \<le> x" by (auto intro: INF_greatest)
    80   ultimately
    80   ultimately
    81   have "(INF i : A. f i) = x + e" using `e > 0`
    81   have "(INF i : A. f i) = x + e" using `e > 0`
    82     by (intro ereal_INFI)
    82     by (intro INF_eqI)
    83       (force, metis add.comm_neutral add_left_mono ereal_less(1)
    83       (force, metis add.comm_neutral add_left_mono ereal_less(1)
    84         linorder_not_le not_less_iff_gr_or_eq)
    84         linorder_not_le not_less_iff_gr_or_eq)
    85   thus False using assms by auto
    85   thus False using assms by auto
    86 qed
    86 qed
    87 
    87 
    95   assume "\<forall>i\<in>A. \<not> x \<le> f i + e"
    95   assume "\<forall>i\<in>A. \<not> x \<le> f i + e"
    96   moreover
    96   moreover
    97   from SUP have "\<And>y. (\<And>i. i \<in> A \<Longrightarrow> f i \<le> y) \<Longrightarrow> y \<ge> x" by (auto intro: SUP_least)
    97   from SUP have "\<And>y. (\<And>i. i \<in> A \<Longrightarrow> f i \<le> y) \<Longrightarrow> y \<ge> x" by (auto intro: SUP_least)
    98   ultimately
    98   ultimately
    99   have "(SUP i : A. f i) = x - e" using `e > 0` `\<bar>x\<bar> \<noteq> \<infinity>`
    99   have "(SUP i : A. f i) = x - e" using `e > 0` `\<bar>x\<bar> \<noteq> \<infinity>`
   100     by (intro ereal_SUPI)
   100     by (intro SUP_eqI)
   101        (metis PInfty_neq_ereal(2) abs_ereal.simps(1) ereal_minus_le linorder_linear,
   101        (metis PInfty_neq_ereal(2) abs_ereal.simps(1) ereal_minus_le linorder_linear,
   102         metis ereal_between(1) ereal_less(2) less_eq_ereal_def order_trans)
   102         metis ereal_between(1) ereal_less(2) less_eq_ereal_def order_trans)
   103   thus False using assms by auto
   103   thus False using assms by auto
   104 qed
   104 qed
   105 
   105 
   288       qed
   288       qed
   289       moreover
   289       moreover
   290       have "emeasure M A \<le> (INF U:{U. A \<subseteq> U \<and> open U}. emeasure M U)"
   290       have "emeasure M A \<le> (INF U:{U. A \<subseteq> U \<and> open U}. emeasure M U)"
   291         by (rule INF_greatest) (auto intro!: emeasure_mono simp: sb)
   291         by (rule INF_greatest) (auto intro!: emeasure_mono simp: sb)
   292       ultimately show ?thesis by simp
   292       ultimately show ?thesis by simp
   293     qed (auto intro!: ereal_INFI)
   293     qed (auto intro!: INF_eqI)
   294     note `?inner A` `?outer A` }
   294     note `?inner A` `?outer A` }
   295   note closed_in_D = this
   295   note closed_in_D = this
   296   from `B \<in> sets borel`
   296   from `B \<in> sets borel`
   297   have "Int_stable (Collect closed)" "Collect closed \<subseteq> Pow UNIV" "B \<in> sigma_sets UNIV (Collect closed)" 
   297   have "Int_stable (Collect closed)" "Collect closed \<subseteq> Pow UNIV" "B \<in> sigma_sets UNIV (Collect closed)" 
   298     by (auto simp: Int_stable_def borel_eq_closed)
   298     by (auto simp: Int_stable_def borel_eq_closed)
   299   then show "?inner B" "?outer B"
   299   then show "?inner B" "?outer B"
   300   proof (induct B rule: sigma_sets_induct_disjoint)
   300   proof (induct B rule: sigma_sets_induct_disjoint)
   301     case empty
   301     case empty
   302     { case 1 show ?case by (intro ereal_SUPI[symmetric]) auto }
   302     { case 1 show ?case by (intro SUP_eqI[symmetric]) auto }
   303     { case 2 show ?case by (intro ereal_INFI[symmetric]) (auto elim!: meta_allE[of _ "{}"]) }
   303     { case 2 show ?case by (intro INF_eqI[symmetric]) (auto elim!: meta_allE[of _ "{}"]) }
   304   next
   304   next
   305     case (basic B)
   305     case (basic B)
   306     { case 1 from basic closed_in_D show ?case by auto }
   306     { case 1 from basic closed_in_D show ?case by auto }
   307     { case 2 from basic closed_in_D show ?case by auto }
   307     { case 2 from basic closed_in_D show ?case by auto }
   308   next
   308   next