src/ZF/AC/AC17_AC1.thy
changeset 46822 95f1e700b712
parent 41777 1f7cbe39d425
child 61394 6142b282b164
equal deleted inserted replaced
46821:ff6b0c1087f2 46822:95f1e700b712
    73      "~AC1 ==> \<exists>A. \<forall>f \<in> Pow(A)-{0} -> A. \<exists>u \<in> Pow(A)-{0}. f`u \<notin> u"
    73      "~AC1 ==> \<exists>A. \<forall>f \<in> Pow(A)-{0} -> A. \<exists>u \<in> Pow(A)-{0}. f`u \<notin> u"
    74 apply (unfold AC1_def)
    74 apply (unfold AC1_def)
    75 apply (erule swap)
    75 apply (erule swap)
    76 apply (rule allI)
    76 apply (rule allI)
    77 apply (erule swap)
    77 apply (erule swap)
    78 apply (rule_tac x = "Union (A)" in exI)
    78 apply (rule_tac x = "\<Union>(A)" in exI)
    79 apply (blast intro: lam_type)
    79 apply (blast intro: lam_type)
    80 done
    80 done
    81 
    81 
    82 lemma AC17_AC1_aux1:
    82 lemma AC17_AC1_aux1:
    83      "[| \<forall>f \<in> Pow(x) - {0} -> x. \<exists>u \<in> Pow(x) - {0}. f`u\<notin>u;   
    83      "[| \<forall>f \<in> Pow(x) - {0} -> x. \<exists>u \<in> Pow(x) - {0}. f`u\<notin>u;   
   134 
   134 
   135 (* **********************************************************************
   135 (* **********************************************************************
   136     AC1 ==> AC2 ==> AC1
   136     AC1 ==> AC2 ==> AC1
   137     AC1 ==> AC4 ==> AC3 ==> AC1
   137     AC1 ==> AC4 ==> AC3 ==> AC1
   138     AC4 ==> AC5 ==> AC4
   138     AC4 ==> AC5 ==> AC4
   139     AC1 <-> AC6
   139     AC1 \<longleftrightarrow> AC6
   140 ************************************************************************* *)
   140 ************************************************************************* *)
   141 
   141 
   142 (* ********************************************************************** *)
   142 (* ********************************************************************** *)
   143 (* AC1 ==> AC2                                                            *)
   143 (* AC1 ==> AC2                                                            *)
   144 (* ********************************************************************** *)
   144 (* ********************************************************************** *)
   145 
   145 
   146 lemma AC1_AC2_aux1:
   146 lemma AC1_AC2_aux1:
   147      "[| f:(\<Pi> X \<in> A. X);  B \<in> A;  0\<notin>A |] ==> {f`B} \<subseteq> B Int {f`C. C \<in> A}"
   147      "[| f:(\<Pi> X \<in> A. X);  B \<in> A;  0\<notin>A |] ==> {f`B} \<subseteq> B \<inter> {f`C. C \<in> A}"
   148 by (fast elim!: apply_type)
   148 by (fast elim!: apply_type)
   149 
   149 
   150 lemma AC1_AC2_aux2: 
   150 lemma AC1_AC2_aux2: 
   151         "[| pairwise_disjoint(A); B \<in> A; C \<in> A; D \<in> B; D \<in> C |] ==> f`B = f`C"
   151         "[| pairwise_disjoint(A); B \<in> A; C \<in> A; D \<in> B; D \<in> C |] ==> f`B = f`C"
   152 by (unfold pairwise_disjoint_def, fast)
   152 by (unfold pairwise_disjoint_def, fast)
   167 (* ********************************************************************** *)
   167 (* ********************************************************************** *)
   168 
   168 
   169 lemma AC2_AC1_aux1: "0\<notin>A ==> 0 \<notin> {B*{B}. B \<in> A}"
   169 lemma AC2_AC1_aux1: "0\<notin>A ==> 0 \<notin> {B*{B}. B \<in> A}"
   170 by (fast dest!: sym [THEN Sigma_empty_iff [THEN iffD1]])
   170 by (fast dest!: sym [THEN Sigma_empty_iff [THEN iffD1]])
   171 
   171 
   172 lemma AC2_AC1_aux2: "[| X*{X} Int C = {y}; X \<in> A |]   
   172 lemma AC2_AC1_aux2: "[| X*{X} \<inter> C = {y}; X \<in> A |]   
   173                ==> (THE y. X*{X} Int C = {y}): X*A"
   173                ==> (THE y. X*{X} \<inter> C = {y}): X*A"
   174 apply (rule subst_elem [of y])
   174 apply (rule subst_elem [of y])
   175 apply (blast elim!: equalityE)
   175 apply (blast elim!: equalityE)
   176 apply (auto simp add: singleton_eq_iff) 
   176 apply (auto simp add: singleton_eq_iff) 
   177 done
   177 done
   178 
   178 
   179 lemma AC2_AC1_aux3:
   179 lemma AC2_AC1_aux3:
   180      "\<forall>D \<in> {E*{E}. E \<in> A}. \<exists>y. D Int C = {y}   
   180      "\<forall>D \<in> {E*{E}. E \<in> A}. \<exists>y. D \<inter> C = {y}   
   181       ==> (\<lambda>x \<in> A. fst(THE z. (x*{x} Int C = {z}))) \<in> (\<Pi> X \<in> A. X)"
   181       ==> (\<lambda>x \<in> A. fst(THE z. (x*{x} \<inter> C = {z}))) \<in> (\<Pi> X \<in> A. X)"
   182 apply (rule lam_type)
   182 apply (rule lam_type)
   183 apply (drule bspec, blast)
   183 apply (drule bspec, blast)
   184 apply (blast intro: AC2_AC1_aux2 fst_type)
   184 apply (blast intro: AC2_AC1_aux2 fst_type)
   185 done
   185 done
   186 
   186 
   210 
   210 
   211 (* ********************************************************************** *)
   211 (* ********************************************************************** *)
   212 (* AC4 ==> AC3                                                            *)
   212 (* AC4 ==> AC3                                                            *)
   213 (* ********************************************************************** *)
   213 (* ********************************************************************** *)
   214 
   214 
   215 lemma AC4_AC3_aux1: "f \<in> A->B ==> (\<Union>z \<in> A. {z}*f`z) \<subseteq> A*Union(B)"
   215 lemma AC4_AC3_aux1: "f \<in> A->B ==> (\<Union>z \<in> A. {z}*f`z) \<subseteq> A*\<Union>(B)"
   216 by (fast dest!: apply_type)
   216 by (fast dest!: apply_type)
   217 
   217 
   218 lemma AC4_AC3_aux2: "domain(\<Union>z \<in> A. {z}*f(z)) = {a \<in> A. f(a)\<noteq>0}"
   218 lemma AC4_AC3_aux2: "domain(\<Union>z \<in> A. {z}*f(z)) = {a \<in> A. f(a)\<noteq>0}"
   219 by blast
   219 by blast
   220 
   220 
   290 apply (blast intro: AC5_AC4_aux1) 
   290 apply (blast intro: AC5_AC4_aux1) 
   291 done
   291 done
   292 
   292 
   293 
   293 
   294 (* ********************************************************************** *)
   294 (* ********************************************************************** *)
   295 (* AC1 <-> AC6                                                            *)
   295 (* AC1 \<longleftrightarrow> AC6                                                            *)
   296 (* ********************************************************************** *)
   296 (* ********************************************************************** *)
   297 
   297 
   298 lemma AC1_iff_AC6: "AC1 <-> AC6"
   298 lemma AC1_iff_AC6: "AC1 \<longleftrightarrow> AC6"
   299 by (unfold AC1_def AC6_def, blast)
   299 by (unfold AC1_def AC6_def, blast)
   300 
   300 
   301 end
   301 end