src/ZF/AC/AC_Equiv.thy
changeset 47101 ded5cc757bc9
parent 46822 95f1e700b712
child 61394 6142b282b164
equal deleted inserted replaced
47090:6b53d954255b 47101:ded5cc757bc9
   160 
   160 
   161 lemma inj_strengthen_type: 
   161 lemma inj_strengthen_type: 
   162      "[| f \<in> inj(A, B);  !!a. a \<in> A ==> f`a \<in> C |] ==> f \<in> inj(A,C)"
   162      "[| f \<in> inj(A, B);  !!a. a \<in> A ==> f`a \<in> C |] ==> f \<in> inj(A,C)"
   163 by (unfold inj_def, blast intro: Pi_type) 
   163 by (unfold inj_def, blast intro: Pi_type) 
   164 
   164 
   165 lemma nat_not_Finite: "~ Finite(nat)"
       
   166 by (unfold Finite_def, blast dest: eqpoll_imp_lepoll ltI lt_not_lepoll)
       
   167 
       
   168 lemmas le_imp_lepoll = le_imp_subset [THEN subset_imp_lepoll]
       
   169 
       
   170 (* ********************************************************************** *)
   165 (* ********************************************************************** *)
   171 (* Another elimination rule for \<exists>!                                       *)
   166 (* Another elimination rule for \<exists>!                                       *)
   172 (* ********************************************************************** *)
   167 (* ********************************************************************** *)
   173 
   168 
   174 lemma ex1_two_eq: "[| \<exists>! x. P(x); P(x); P(y) |] ==> x=y"
   169 lemma ex1_two_eq: "[| \<exists>! x. P(x); P(x); P(y) |] ==> x=y"
   175 by blast
   170 by blast
   176 
   171 
   177 (* ********************************************************************** *)
   172 (* ********************************************************************** *)
   178 (* image of a surjection                                                  *)
       
   179 (* ********************************************************************** *)
       
   180 
       
   181 lemma surj_image_eq: "f \<in> surj(A, B) ==> f``A = B"
       
   182 apply (unfold surj_def)
       
   183 apply (erule CollectE)
       
   184 apply (rule image_fun [THEN ssubst], assumption, rule subset_refl)
       
   185 apply (blast dest: apply_type) 
       
   186 done
       
   187 
       
   188 
       
   189 (* ********************************************************************** *)
       
   190 (* Lemmas used in the proofs like WO? ==> AC?                             *)
   173 (* Lemmas used in the proofs like WO? ==> AC?                             *)
   191 (* ********************************************************************** *)
   174 (* ********************************************************************** *)
   192 
   175 
   193 lemma first_in_B:
   176 lemma first_in_B:
   194      "[| well_ord(\<Union>(A),r); 0\<notin>A; B \<in> A |] ==> (THE b. first(b,B,r)) \<in> B"
   177      "[| well_ord(\<Union>(A),r); 0 \<notin> A; B \<in> A |] ==> (THE b. first(b,B,r)) \<in> B"
   195 by (blast dest!: well_ord_imp_ex1_first
   178 by (blast dest!: well_ord_imp_ex1_first
   196                     [THEN theI, THEN first_def [THEN def_imp_iff, THEN iffD1]])
   179                     [THEN theI, THEN first_def [THEN def_imp_iff, THEN iffD1]])
   197 
   180 
   198 lemma ex_choice_fun: "[| well_ord(\<Union>(A), R); 0\<notin>A |] ==> \<exists>f. f:(\<Pi> X \<in> A. X)"
   181 lemma ex_choice_fun: "[| well_ord(\<Union>(A), R); 0 \<notin> A |] ==> \<exists>f. f \<in> (\<Pi> X \<in> A. X)"
   199 by (fast elim!: first_in_B intro!: lam_type)
   182 by (fast elim!: first_in_B intro!: lam_type)
   200 
   183 
   201 lemma ex_choice_fun_Pow: "well_ord(A, R) ==> \<exists>f. f:(\<Pi> X \<in> Pow(A)-{0}. X)"
   184 lemma ex_choice_fun_Pow: "well_ord(A, R) ==> \<exists>f. f \<in> (\<Pi> X \<in> Pow(A)-{0}. X)"
   202 by (fast elim!: well_ord_subset [THEN ex_choice_fun])
   185 by (fast elim!: well_ord_subset [THEN ex_choice_fun])
   203 
   186 
   204 
   187 
   205 (* ********************************************************************** *)
   188 (* ********************************************************************** *)
   206 (* Lemmas needed to state when a finite relation is a function.           *)
   189 (* Lemmas needed to state when a finite relation is a function.           *)