src/HOL/Library/Countable_Set.thy
changeset 68860 f443ec10447d
parent 67613 ce654b0e6d69
child 69661 a03a63b81f44
equal deleted inserted replaced
68859:9207ada0ca31 68860:f443ec10447d
    67   ultimately have "bij_betw (the_inv_into UNIV (enumerate (f`S)) \<circ> f) S UNIV"
    67   ultimately have "bij_betw (the_inv_into UNIV (enumerate (f`S)) \<circ> f) S UNIV"
    68     by (rule bij_betw_trans)
    68     by (rule bij_betw_trans)
    69   then show thesis ..
    69   then show thesis ..
    70 qed
    70 qed
    71 
    71 
       
    72 lemma countable_infiniteE':
       
    73   assumes "countable A" "infinite A"
       
    74   obtains g where "bij_betw g (UNIV :: nat set) A"
       
    75   using bij_betw_inv[OF countableE_infinite[OF assms]] that by blast
       
    76 
    72 lemma countable_enum_cases:
    77 lemma countable_enum_cases:
    73   assumes "countable S"
    78   assumes "countable S"
    74   obtains (finite) f :: "'a \<Rightarrow> nat" where "finite S" "bij_betw f S {..<card S}"
    79   obtains (finite) f :: "'a \<Rightarrow> nat" where "finite S" "bij_betw f S {..<card S}"
    75         | (infinite) f :: "'a \<Rightarrow> nat" where "infinite S" "bij_betw f S UNIV"
    80         | (infinite) f :: "'a \<Rightarrow> nat" where "infinite S" "bij_betw f S UNIV"
    76   using ex_bij_betw_finite_nat[of S] countableE_infinite \<open>countable S\<close>
    81   using ex_bij_betw_finite_nat[of S] countableE_infinite \<open>countable S\<close>