equal
deleted
inserted
replaced
45 lemma compactE': |
45 lemma compactE': |
46 fixes S :: "'a :: metric_space set" |
46 fixes S :: "'a :: metric_space set" |
47 assumes "compact S" "\<forall>n\<ge>m. f n \<in> S" |
47 assumes "compact S" "\<forall>n\<ge>m. f n \<in> S" |
48 obtains l r where "l \<in> S" "strict_mono (r::nat\<Rightarrow>nat)" "((f \<circ> r) \<longlongrightarrow> l) sequentially" |
48 obtains l r where "l \<in> S" "strict_mono (r::nat\<Rightarrow>nat)" "((f \<circ> r) \<longlongrightarrow> l) sequentially" |
49 proof atomize_elim |
49 proof atomize_elim |
50 have "strict_mono (op + m)" by (simp add: strict_mono_def) |
50 have "strict_mono ((+) m)" by (simp add: strict_mono_def) |
51 have "\<forall>n. (f o (\<lambda>i. m + i)) n \<in> S" using assms by auto |
51 have "\<forall>n. (f o (\<lambda>i. m + i)) n \<in> S" using assms by auto |
52 from seq_compactE[OF \<open>compact S\<close>[unfolded compact_eq_seq_compact_metric] this] guess l r . |
52 from seq_compactE[OF \<open>compact S\<close>[unfolded compact_eq_seq_compact_metric] this] guess l r . |
53 hence "l \<in> S" "strict_mono ((\<lambda>i. m + i) o r) \<and> (f \<circ> ((\<lambda>i. m + i) o r)) \<longlonglongrightarrow> l" |
53 hence "l \<in> S" "strict_mono ((\<lambda>i. m + i) o r) \<and> (f \<circ> ((\<lambda>i. m + i) o r)) \<longlonglongrightarrow> l" |
54 using strict_mono_o[OF \<open>strict_mono (op + m)\<close> \<open>strict_mono r\<close>] by (auto simp: o_def) |
54 using strict_mono_o[OF \<open>strict_mono ((+) m)\<close> \<open>strict_mono r\<close>] by (auto simp: o_def) |
55 thus "\<exists>l r. l \<in> S \<and> strict_mono r \<and> (f \<circ> r) \<longlonglongrightarrow> l" by blast |
55 thus "\<exists>l r. l \<in> S \<and> strict_mono r \<and> (f \<circ> r) \<longlonglongrightarrow> l" by blast |
56 qed |
56 qed |
57 |
57 |
58 sublocale finmap_seqs_into_compact \<subseteq> subseqs "\<lambda>n s. (\<exists>l. (\<lambda>i. ((f o s) i)\<^sub>F n) \<longlonglongrightarrow> l)" |
58 sublocale finmap_seqs_into_compact \<subseteq> subseqs "\<lambda>n s. (\<exists>l. (\<lambda>i. ((f o s) i)\<^sub>F n) \<longlonglongrightarrow> l)" |
59 proof |
59 proof |
72 thus "\<exists>r'. strict_mono r' \<and> (\<exists>l. (\<lambda>i. ((f \<circ> (s \<circ> r')) i)\<^sub>F n) \<longlonglongrightarrow> l)" by (auto simp: o_def) |
72 thus "\<exists>r'. strict_mono r' \<and> (\<exists>l. (\<lambda>i. ((f \<circ> (s \<circ> r')) i)\<^sub>F n) \<longlonglongrightarrow> l)" by (auto simp: o_def) |
73 qed |
73 qed |
74 |
74 |
75 lemma (in finmap_seqs_into_compact) diagonal_tendsto: "\<exists>l. (\<lambda>i. (f (diagseq i))\<^sub>F n) \<longlonglongrightarrow> l" |
75 lemma (in finmap_seqs_into_compact) diagonal_tendsto: "\<exists>l. (\<lambda>i. (f (diagseq i))\<^sub>F n) \<longlonglongrightarrow> l" |
76 proof - |
76 proof - |
77 obtain l where "(\<lambda>i. ((f o (diagseq o op + (Suc n))) i)\<^sub>F n) \<longlonglongrightarrow> l" |
77 obtain l where "(\<lambda>i. ((f o (diagseq o (+) (Suc n))) i)\<^sub>F n) \<longlonglongrightarrow> l" |
78 proof (atomize_elim, rule diagseq_holds) |
78 proof (atomize_elim, rule diagseq_holds) |
79 fix r s n |
79 fix r s n |
80 assume "strict_mono (r :: nat \<Rightarrow> nat)" |
80 assume "strict_mono (r :: nat \<Rightarrow> nat)" |
81 assume "\<exists>l. (\<lambda>i. ((f \<circ> s) i)\<^sub>F n) \<longlonglongrightarrow> l" |
81 assume "\<exists>l. (\<lambda>i. ((f \<circ> s) i)\<^sub>F n) \<longlonglongrightarrow> l" |
82 then obtain l where "((\<lambda>i. (f i)\<^sub>F n) o s) \<longlonglongrightarrow> l" |
82 then obtain l where "((\<lambda>i. (f i)\<^sub>F n) o s) \<longlonglongrightarrow> l" |
294 also have "\<dots> < ennreal (1 * enn2real ?a)" |
294 also have "\<dots> < ennreal (1 * enn2real ?a)" |
295 proof (intro ennreal_lessI mult_strict_right_mono) |
295 proof (intro ennreal_lessI mult_strict_right_mono) |
296 have "(\<Sum>i = 1..n. 2 powr - real i) = (\<Sum>i = 1..<Suc n. (1/2) ^ i)" |
296 have "(\<Sum>i = 1..n. 2 powr - real i) = (\<Sum>i = 1..<Suc n. (1/2) ^ i)" |
297 by (rule sum.cong) (auto simp: powr_realpow powr_divide power_divide powr_minus_divide) |
297 by (rule sum.cong) (auto simp: powr_realpow powr_divide power_divide powr_minus_divide) |
298 also have "{1..<Suc n} = {..<Suc n} - {0}" by auto |
298 also have "{1..<Suc n} = {..<Suc n} - {0}" by auto |
299 also have "sum (op ^ (1 / 2::real)) ({..<Suc n} - {0}) = |
299 also have "sum ((^) (1 / 2::real)) ({..<Suc n} - {0}) = |
300 sum (op ^ (1 / 2)) ({..<Suc n}) - 1" by (auto simp: sum_diff1) |
300 sum ((^) (1 / 2)) ({..<Suc n}) - 1" by (auto simp: sum_diff1) |
301 also have "\<dots> < 1" by (subst geometric_sum) auto |
301 also have "\<dots> < 1" by (subst geometric_sum) auto |
302 finally show "(\<Sum>i = 1..n. 2 powr - enn2real i) < 1" by simp |
302 finally show "(\<Sum>i = 1..n. 2 powr - enn2real i) < 1" by simp |
303 qed (auto simp: r enn2real_positive_iff) |
303 qed (auto simp: r enn2real_positive_iff) |
304 also have "\<dots> = ?a" by (auto simp: r) |
304 also have "\<dots> = ?a" by (auto simp: r) |
305 also have "\<dots> \<le> \<mu>G (Z n)" |
305 also have "\<dots> \<le> \<mu>G (Z n)" |