equal
deleted
inserted
replaced
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 |