equal
deleted
inserted
replaced
126 by (simp add: Pi_def compose_def restrict_def) |
126 by (simp add: Pi_def compose_def restrict_def) |
127 |
127 |
128 lemma compose_assoc: |
128 lemma compose_assoc: |
129 "[| f \<in> A -> B; g \<in> B -> C; h \<in> C -> D |] |
129 "[| f \<in> A -> B; g \<in> B -> C; h \<in> C -> D |] |
130 ==> compose A h (compose A g f) = compose A (compose B h g) f" |
130 ==> compose A h (compose A g f) = compose A (compose B h g) f" |
131 by (simp add: expand_fun_eq Pi_def compose_def restrict_def) |
131 by (simp add: ext_iff Pi_def compose_def restrict_def) |
132 |
132 |
133 lemma compose_eq: "x \<in> A ==> compose A g f x = g(f(x))" |
133 lemma compose_eq: "x \<in> A ==> compose A g f x = g(f(x))" |
134 by (simp add: compose_def restrict_def) |
134 by (simp add: compose_def restrict_def) |
135 |
135 |
136 lemma surj_compose: "[| f ` A = B; g ` B = C |] ==> compose A g f ` A = C" |
136 lemma surj_compose: "[| f ` A = B; g ` B = C |] ==> compose A g f ` A = C" |
149 "(\<lambda>y\<in>A. f y) x = (if x \<in> A then f x else undefined)" |
149 "(\<lambda>y\<in>A. f y) x = (if x \<in> A then f x else undefined)" |
150 by (simp add: restrict_def) |
150 by (simp add: restrict_def) |
151 |
151 |
152 lemma restrict_ext: |
152 lemma restrict_ext: |
153 "(!!x. x \<in> A ==> f x = g x) ==> (\<lambda>x\<in>A. f x) = (\<lambda>x\<in>A. g x)" |
153 "(!!x. x \<in> A ==> f x = g x) ==> (\<lambda>x\<in>A. f x) = (\<lambda>x\<in>A. g x)" |
154 by (simp add: expand_fun_eq Pi_def restrict_def) |
154 by (simp add: ext_iff Pi_def restrict_def) |
155 |
155 |
156 lemma inj_on_restrict_eq [simp]: "inj_on (restrict f A) A = inj_on f A" |
156 lemma inj_on_restrict_eq [simp]: "inj_on (restrict f A) A = inj_on f A" |
157 by (simp add: inj_on_def restrict_def) |
157 by (simp add: inj_on_def restrict_def) |
158 |
158 |
159 lemma Id_compose: |
159 lemma Id_compose: |
160 "[|f \<in> A -> B; f \<in> extensional A|] ==> compose A (\<lambda>y\<in>B. y) f = f" |
160 "[|f \<in> A -> B; f \<in> extensional A|] ==> compose A (\<lambda>y\<in>B. y) f = f" |
161 by (auto simp add: expand_fun_eq compose_def extensional_def Pi_def) |
161 by (auto simp add: ext_iff compose_def extensional_def Pi_def) |
162 |
162 |
163 lemma compose_Id: |
163 lemma compose_Id: |
164 "[|g \<in> A -> B; g \<in> extensional A|] ==> compose A g (\<lambda>x\<in>A. x) = g" |
164 "[|g \<in> A -> B; g \<in> extensional A|] ==> compose A g (\<lambda>x\<in>A. x) = g" |
165 by (auto simp add: expand_fun_eq compose_def extensional_def Pi_def) |
165 by (auto simp add: ext_iff compose_def extensional_def Pi_def) |
166 |
166 |
167 lemma image_restrict_eq [simp]: "(restrict f A) ` A = f ` A" |
167 lemma image_restrict_eq [simp]: "(restrict f A) ` A = f ` A" |
168 by (auto simp add: restrict_def) |
168 by (auto simp add: restrict_def) |
169 |
169 |
170 |
170 |
203 by (simp add: compose_def) |
203 by (simp add: compose_def) |
204 |
204 |
205 lemma extensionalityI: |
205 lemma extensionalityI: |
206 "[| f \<in> extensional A; g \<in> extensional A; |
206 "[| f \<in> extensional A; g \<in> extensional A; |
207 !!x. x\<in>A ==> f x = g x |] ==> f = g" |
207 !!x. x\<in>A ==> f x = g x |] ==> f = g" |
208 by (force simp add: expand_fun_eq extensional_def) |
208 by (force simp add: ext_iff extensional_def) |
209 |
209 |
210 lemma inv_into_funcset: "f ` A = B ==> (\<lambda>x\<in>B. inv_into A f x) : B -> A" |
210 lemma inv_into_funcset: "f ` A = B ==> (\<lambda>x\<in>B. inv_into A f x) : B -> A" |
211 by (unfold inv_into_def) (fast intro: someI2) |
211 by (unfold inv_into_def) (fast intro: someI2) |
212 |
212 |
213 lemma compose_inv_into_id: |
213 lemma compose_inv_into_id: |