src/HOL/Library/Infinite_Set.thy
changeset 66837 6ba663ff2b1c
parent 64967 1ab49aa7f3c0
child 67408 4a4c14b24800
equal deleted inserted replaced
66836:4eb431c3f974 66837:6ba663ff2b1c
    62 
    62 
    63 subsection \<open>The set of integers is also infinite\<close>
    63 subsection \<open>The set of integers is also infinite\<close>
    64 
    64 
    65 lemma infinite_int_iff_infinite_nat_abs: "infinite S \<longleftrightarrow> infinite ((nat \<circ> abs) ` S)"
    65 lemma infinite_int_iff_infinite_nat_abs: "infinite S \<longleftrightarrow> infinite ((nat \<circ> abs) ` S)"
    66   for S :: "int set"
    66   for S :: "int set"
    67   by (auto simp: transfer_nat_int_set_relations o_def image_comp dest: finite_image_absD)
    67 proof -
       
    68   have "inj_on nat (abs ` A)" for A
       
    69     by (rule inj_onI) auto
       
    70   then show ?thesis
       
    71     by (auto simp add: image_comp [symmetric] dest: finite_image_absD finite_imageD)
       
    72 qed
    68 
    73 
    69 proposition infinite_int_iff_unbounded_le: "infinite S \<longleftrightarrow> (\<forall>m. \<exists>n. \<bar>n\<bar> \<ge> m \<and> n \<in> S)"
    74 proposition infinite_int_iff_unbounded_le: "infinite S \<longleftrightarrow> (\<forall>m. \<exists>n. \<bar>n\<bar> \<ge> m \<and> n \<in> S)"
    70   for S :: "int set"
    75   for S :: "int set"
    71   by (simp add: infinite_int_iff_infinite_nat_abs infinite_nat_iff_unbounded_le o_def image_def)
    76   by (simp add: infinite_int_iff_infinite_nat_abs infinite_nat_iff_unbounded_le o_def image_def)
    72     (metis abs_ge_zero nat_le_eq_zle le_nat_iff)
    77     (metis abs_ge_zero nat_le_eq_zle le_nat_iff)
   179 lemma MOST_SucI: "MOST n. P n \<Longrightarrow> MOST n. P (Suc n)"
   184 lemma MOST_SucI: "MOST n. P n \<Longrightarrow> MOST n. P (Suc n)"
   180   and MOST_SucD: "MOST n. P (Suc n) \<Longrightarrow> MOST n. P n"
   185   and MOST_SucD: "MOST n. P (Suc n) \<Longrightarrow> MOST n. P n"
   181   by (simp_all add: MOST_Suc_iff)
   186   by (simp_all add: MOST_Suc_iff)
   182 
   187 
   183 lemma MOST_ge_nat: "MOST n::nat. m \<le> n"
   188 lemma MOST_ge_nat: "MOST n::nat. m \<le> n"
   184   by (simp add: cofinite_eq_sequentially eventually_ge_at_top)
   189   by (simp add: cofinite_eq_sequentially)
   185 
   190 
   186 (* legacy names *)
   191 (* legacy names *)
   187 lemma Inf_many_def: "Inf_many P \<longleftrightarrow> infinite {x. P x}" by (fact frequently_cofinite)
   192 lemma Inf_many_def: "Inf_many P \<longleftrightarrow> infinite {x. P x}" by (fact frequently_cofinite)
   188 lemma Alm_all_def: "Alm_all P \<longleftrightarrow> \<not> (INFM x. \<not> P x)" by simp
   193 lemma Alm_all_def: "Alm_all P \<longleftrightarrow> \<not> (INFM x. \<not> P x)" by simp
   189 lemma INFM_iff_infinite: "(INFM x. P x) \<longleftrightarrow> infinite {x. P x}" by (fact frequently_cofinite)
   194 lemma INFM_iff_infinite: "(INFM x. P x) \<longleftrightarrow> infinite {x. P x}" by (fact frequently_cofinite)