363 shows "convergent X \<Longrightarrow> liminf X = lim X" |
363 shows "convergent X \<Longrightarrow> liminf X = lim X" |
364 by (auto simp: convergent_def limI lim_imp_Liminf) |
364 by (auto simp: convergent_def limI lim_imp_Liminf) |
365 |
365 |
366 lemma lim_increasing_cl: |
366 lemma lim_increasing_cl: |
367 assumes "\<And>n m. n \<ge> m \<Longrightarrow> f n \<ge> f m" |
367 assumes "\<And>n m. n \<ge> m \<Longrightarrow> f n \<ge> f m" |
368 obtains l where "f ----> (l::'a::{complete_linorder,linorder_topology})" |
368 obtains l where "f \<longlonglongrightarrow> (l::'a::{complete_linorder,linorder_topology})" |
369 proof |
369 proof |
370 show "f ----> (SUP n. f n)" |
370 show "f \<longlonglongrightarrow> (SUP n. f n)" |
371 using assms |
371 using assms |
372 by (intro increasing_tendsto) |
372 by (intro increasing_tendsto) |
373 (auto simp: SUP_upper eventually_sequentially less_SUP_iff intro: less_le_trans) |
373 (auto simp: SUP_upper eventually_sequentially less_SUP_iff intro: less_le_trans) |
374 qed |
374 qed |
375 |
375 |
376 lemma lim_decreasing_cl: |
376 lemma lim_decreasing_cl: |
377 assumes "\<And>n m. n \<ge> m \<Longrightarrow> f n \<le> f m" |
377 assumes "\<And>n m. n \<ge> m \<Longrightarrow> f n \<le> f m" |
378 obtains l where "f ----> (l::'a::{complete_linorder,linorder_topology})" |
378 obtains l where "f \<longlonglongrightarrow> (l::'a::{complete_linorder,linorder_topology})" |
379 proof |
379 proof |
380 show "f ----> (INF n. f n)" |
380 show "f \<longlonglongrightarrow> (INF n. f n)" |
381 using assms |
381 using assms |
382 by (intro decreasing_tendsto) |
382 by (intro decreasing_tendsto) |
383 (auto simp: INF_lower eventually_sequentially INF_less_iff intro: le_less_trans) |
383 (auto simp: INF_lower eventually_sequentially INF_less_iff intro: le_less_trans) |
384 qed |
384 qed |
385 |
385 |
386 lemma compact_complete_linorder: |
386 lemma compact_complete_linorder: |
387 fixes X :: "nat \<Rightarrow> 'a::{complete_linorder,linorder_topology}" |
387 fixes X :: "nat \<Rightarrow> 'a::{complete_linorder,linorder_topology}" |
388 shows "\<exists>l r. subseq r \<and> (X \<circ> r) ----> l" |
388 shows "\<exists>l r. subseq r \<and> (X \<circ> r) \<longlonglongrightarrow> l" |
389 proof - |
389 proof - |
390 obtain r where "subseq r" and mono: "monoseq (X \<circ> r)" |
390 obtain r where "subseq r" and mono: "monoseq (X \<circ> r)" |
391 using seq_monosub[of X] |
391 using seq_monosub[of X] |
392 unfolding comp_def |
392 unfolding comp_def |
393 by auto |
393 by auto |
394 then have "(\<forall>n m. m \<le> n \<longrightarrow> (X \<circ> r) m \<le> (X \<circ> r) n) \<or> (\<forall>n m. m \<le> n \<longrightarrow> (X \<circ> r) n \<le> (X \<circ> r) m)" |
394 then have "(\<forall>n m. m \<le> n \<longrightarrow> (X \<circ> r) m \<le> (X \<circ> r) n) \<or> (\<forall>n m. m \<le> n \<longrightarrow> (X \<circ> r) n \<le> (X \<circ> r) m)" |
395 by (auto simp add: monoseq_def) |
395 by (auto simp add: monoseq_def) |
396 then obtain l where "(X \<circ> r) ----> l" |
396 then obtain l where "(X \<circ> r) \<longlonglongrightarrow> l" |
397 using lim_increasing_cl[of "X \<circ> r"] lim_decreasing_cl[of "X \<circ> r"] |
397 using lim_increasing_cl[of "X \<circ> r"] lim_decreasing_cl[of "X \<circ> r"] |
398 by auto |
398 by auto |
399 then show ?thesis |
399 then show ?thesis |
400 using \<open>subseq r\<close> by auto |
400 using \<open>subseq r\<close> by auto |
401 qed |
401 qed |