equal
deleted
inserted
replaced
156 |
156 |
157 lemma comp_inj_on: |
157 lemma comp_inj_on: |
158 "[| inj_on f A; inj_on g (f`A) |] ==> inj_on (g o f) A" |
158 "[| inj_on f A; inj_on g (f`A) |] ==> inj_on (g o f) A" |
159 by (simp add: comp_def inj_on_def) |
159 by (simp add: comp_def inj_on_def) |
160 |
160 |
|
161 lemma inj_on_imageI: "inj_on (g o f) A \<Longrightarrow> inj_on g (f ` A)" |
|
162 apply(simp add:inj_on_def image_def) |
|
163 apply blast |
|
164 done |
|
165 |
161 lemma inj_on_contraD: "[| inj_on f A; ~x=y; x:A; y:A |] ==> ~ f(x)=f(y)" |
166 lemma inj_on_contraD: "[| inj_on f A; ~x=y; x:A; y:A |] ==> ~ f(x)=f(y)" |
162 by (unfold inj_on_def, blast) |
167 by (unfold inj_on_def, blast) |
163 |
168 |
164 lemma inj_singleton: "inj (%s. {s})" |
169 lemma inj_singleton: "inj (%s. {s})" |
165 by (simp add: inj_on_def) |
170 by (simp add: inj_on_def) |
166 |
171 |
167 lemma inj_on_empty[iff]: "inj_on f {}" |
172 lemma inj_on_empty[iff]: "inj_on f {}" |
168 by(simp add: inj_on_def) |
173 by(simp add: inj_on_def) |
169 |
174 |
170 lemma subset_inj_on: "[| A<=B; inj_on f B |] ==> inj_on f A" |
175 lemma subset_inj_on: "[| inj_on f B; A <= B |] ==> inj_on f A" |
171 by (unfold inj_on_def, blast) |
176 by (unfold inj_on_def, blast) |
172 |
177 |
173 lemma inj_on_Un: |
178 lemma inj_on_Un: |
174 "inj_on f (A Un B) = |
179 "inj_on f (A Un B) = |
175 (inj_on f A & inj_on f B & f`(A-B) Int f`(B-A) = {})" |
180 (inj_on f A & inj_on f B & f`(A-B) Int f`(B-A) = {})" |
361 lemma fun_upd_upd [simp]: "f(x:=y,x:=z) = f(x:=z)" |
366 lemma fun_upd_upd [simp]: "f(x:=y,x:=z) = f(x:=z)" |
362 by (simp add: expand_fun_eq) |
367 by (simp add: expand_fun_eq) |
363 |
368 |
364 lemma fun_upd_twist: "a ~= c ==> (m(a:=b))(c:=d) = (m(c:=d))(a:=b)" |
369 lemma fun_upd_twist: "a ~= c ==> (m(a:=b))(c:=d) = (m(c:=d))(a:=b)" |
365 by (rule ext, auto) |
370 by (rule ext, auto) |
|
371 |
|
372 lemma inj_on_fun_updI: "\<lbrakk> inj_on f A; y \<notin> f`A \<rbrakk> \<Longrightarrow> inj_on (f(x:=y)) A" |
|
373 by(fastsimp simp:inj_on_def image_def) |
366 |
374 |
367 subsection{* overwrite *} |
375 subsection{* overwrite *} |
368 |
376 |
369 lemma overwrite_emptyset[simp]: "f(g|{}) = f" |
377 lemma overwrite_emptyset[simp]: "f(g|{}) = f" |
370 by(simp add:overwrite_def) |
378 by(simp add:overwrite_def) |