src/HOL/Probability/Projective_Limit.thy
changeset 66447 a1f5c5c26fa6
parent 64267 b9a1486e79be
child 66453 cc19f7ca2ed6
equal deleted inserted replaced
66445:407de0768126 66447:a1f5c5c26fa6
    43 end
    43 end
    44 
    44 
    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" "subseq r" "((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 "subseq (op + m)" by (simp add: subseq_def)
    50   have "strict_mono (op + 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" "subseq ((\<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 subseq_o[OF \<open>subseq (op + m)\<close> \<open>subseq r\<close>] by (auto simp: o_def)
    54     using strict_mono_o[OF \<open>strict_mono (op + m)\<close> \<open>strict_mono r\<close>] by (auto simp: o_def)
    55   thus "\<exists>l r. l \<in> S \<and> subseq 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
    60   fix n s
    60   fix n and s :: "nat \<Rightarrow> nat"
    61   assume "subseq s"
    61   assume "strict_mono s"
    62   from proj_in_KE[of n] guess n0 . note n0 = this
    62   from proj_in_KE[of n] guess n0 . note n0 = this
    63   have "\<forall>i \<ge> n0. ((f \<circ> s) i)\<^sub>F n \<in> (\<lambda>k. (k)\<^sub>F n) ` K n0"
    63   have "\<forall>i \<ge> n0. ((f \<circ> s) i)\<^sub>F n \<in> (\<lambda>k. (k)\<^sub>F n) ` K n0"
    64   proof safe
    64   proof safe
    65     fix i assume "n0 \<le> i"
    65     fix i assume "n0 \<le> i"
    66     also have "\<dots> \<le> s i" by (rule seq_suble) fact
    66     also have "\<dots> \<le> s i" by (rule seq_suble) fact
    67     finally have "n0 \<le> s i" .
    67     finally have "n0 \<le> s i" .
    68     with n0 show "((f \<circ> s) i)\<^sub>F n \<in> (\<lambda>k. (k)\<^sub>F n) ` K n0 "
    68     with n0 show "((f \<circ> s) i)\<^sub>F n \<in> (\<lambda>k. (k)\<^sub>F n) ` K n0 "
    69       by auto
    69       by auto
    70   qed
    70   qed
    71   from compactE'[OF compact_projset this] guess ls rs .
    71   from compactE'[OF compact_projset this] guess ls rs .
    72   thus "\<exists>r'. subseq 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 op + (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 "subseq r"
    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"
    83       by (auto simp: o_def)
    83       by (auto simp: o_def)
    84     hence "((\<lambda>i. (f i)\<^sub>F n) o s o r) \<longlonglongrightarrow> l" using \<open>subseq r\<close>
    84     hence "((\<lambda>i. (f i)\<^sub>F n) o s o r) \<longlonglongrightarrow> l" using \<open>strict_mono r\<close>
    85       by (rule LIMSEQ_subseq_LIMSEQ)
    85       by (rule LIMSEQ_subseq_LIMSEQ)
    86     thus "\<exists>l. (\<lambda>i. ((f \<circ> (s \<circ> r)) i)\<^sub>F n) \<longlonglongrightarrow> l" by (auto simp add: o_def)
    86     thus "\<exists>l. (\<lambda>i. ((f \<circ> (s \<circ> r)) i)\<^sub>F n) \<longlonglongrightarrow> l" by (auto simp add: o_def)
    87   qed
    87   qed
    88   hence "(\<lambda>i. ((f (diagseq (i + Suc n))))\<^sub>F n) \<longlonglongrightarrow> l" by (simp add: ac_simps)
    88   hence "(\<lambda>i. ((f (diagseq (i + Suc n))))\<^sub>F n) \<longlonglongrightarrow> l" by (simp add: ac_simps)
    89   hence "(\<lambda>i. (f (diagseq i))\<^sub>F n) \<longlonglongrightarrow> l" by (rule LIMSEQ_offset)
    89   hence "(\<lambda>i. (f (diagseq i))\<^sub>F n) \<longlonglongrightarrow> l" by (rule LIMSEQ_offset)
   404         by (simp add: tendsto_intros)
   404         by (simp add: tendsto_intros)
   405     } ultimately
   405     } ultimately
   406     have "(\<lambda>i. fm n (y (Suc (diagseq i)))) \<longlonglongrightarrow> finmap_of (Utn ` J n) z"
   406     have "(\<lambda>i. fm n (y (Suc (diagseq i)))) \<longlonglongrightarrow> finmap_of (Utn ` J n) z"
   407       by (rule tendsto_finmap)
   407       by (rule tendsto_finmap)
   408     hence "((\<lambda>i. fm n (y (Suc (diagseq i)))) o (\<lambda>i. i + n)) \<longlonglongrightarrow> finmap_of (Utn ` J n) z"
   408     hence "((\<lambda>i. fm n (y (Suc (diagseq i)))) o (\<lambda>i. i + n)) \<longlonglongrightarrow> finmap_of (Utn ` J n) z"
   409       by (rule LIMSEQ_subseq_LIMSEQ) (simp add: subseq_def)
   409       by (rule LIMSEQ_subseq_LIMSEQ) (simp add: strict_mono_def)
   410     moreover
   410     moreover
   411     have "(\<forall>i. ((\<lambda>i. fm n (y (Suc (diagseq i)))) o (\<lambda>i. i + n)) i \<in> K' n)"
   411     have "(\<forall>i. ((\<lambda>i. fm n (y (Suc (diagseq i)))) o (\<lambda>i. i + n)) i \<in> K' n)"
   412       apply (auto simp add: o_def intro!: fm_in_K' \<open>1 \<le> n\<close> le_SucI)
   412       apply (auto simp add: o_def intro!: fm_in_K' \<open>1 \<le> n\<close> le_SucI)
   413       apply (rule le_trans)
   413       apply (rule le_trans)
   414       apply (rule le_add2)
   414       apply (rule le_add2)