src/ZF/func.thy
changeset 63901 4ce989e962e0
parent 60770 240563fbf41d
child 69587 53982d5ec0bb
equal deleted inserted replaced
63899:dc036b1a2a6f 63901:4ce989e962e0
    23     "f \<in> Pi(A,B) \<longleftrightarrow> function(f) & f<=Sigma(A,B) & A<=domain(f)"
    23     "f \<in> Pi(A,B) \<longleftrightarrow> function(f) & f<=Sigma(A,B) & A<=domain(f)"
    24 by (unfold Pi_def, blast)
    24 by (unfold Pi_def, blast)
    25 
    25 
    26 (*For upward compatibility with the former definition*)
    26 (*For upward compatibility with the former definition*)
    27 lemma Pi_iff_old:
    27 lemma Pi_iff_old:
    28     "f \<in> Pi(A,B) \<longleftrightarrow> f<=Sigma(A,B) & (\<forall>x\<in>A. EX! y. <x,y>: f)"
    28     "f \<in> Pi(A,B) \<longleftrightarrow> f<=Sigma(A,B) & (\<forall>x\<in>A. \<exists>!y. <x,y>: f)"
    29 by (unfold Pi_def function_def, blast)
    29 by (unfold Pi_def function_def, blast)
    30 
    30 
    31 lemma fun_is_function: "f \<in> Pi(A,B) ==> function(f)"
    31 lemma fun_is_function: "f \<in> Pi(A,B) ==> function(f)"
    32 by (simp only: Pi_iff)
    32 by (simp only: Pi_iff)
    33 
    33 
   173 lemma lam_cong [cong]:
   173 lemma lam_cong [cong]:
   174     "[| A=A';  !!x. x \<in> A' ==> b(x)=b'(x) |] ==> Lambda(A,b) = Lambda(A',b')"
   174     "[| A=A';  !!x. x \<in> A' ==> b(x)=b'(x) |] ==> Lambda(A,b) = Lambda(A',b')"
   175 by (simp only: lam_def cong add: RepFun_cong)
   175 by (simp only: lam_def cong add: RepFun_cong)
   176 
   176 
   177 lemma lam_theI:
   177 lemma lam_theI:
   178     "(!!x. x \<in> A ==> EX! y. Q(x,y)) ==> \<exists>f. \<forall>x\<in>A. Q(x, f`x)"
   178     "(!!x. x \<in> A ==> \<exists>!y. Q(x,y)) ==> \<exists>f. \<forall>x\<in>A. Q(x, f`x)"
   179 apply (rule_tac x = "\<lambda>x\<in>A. THE y. Q (x,y)" in exI)
   179 apply (rule_tac x = "\<lambda>x\<in>A. THE y. Q (x,y)" in exI)
   180 apply simp
   180 apply simp
   181 apply (blast intro: theI)
   181 apply (blast intro: theI)
   182 done
   182 done
   183 
   183