equal
deleted
inserted
replaced
486 lemma ex_map_conv: |
486 lemma ex_map_conv: |
487 "(EX xs. ys = map f xs) = (ALL y : set ys. EX x. y = f x)" |
487 "(EX xs. ys = map f xs) = (ALL y : set ys. EX x. y = f x)" |
488 by(induct ys, auto) |
488 by(induct ys, auto) |
489 |
489 |
490 lemma map_injective: |
490 lemma map_injective: |
491 "!!xs. map f xs = map f ys ==> (\<forall>x y. f x = f y --> x = y) ==> xs = ys" |
491 "!!xs. map f xs = map f ys ==> inj f ==> xs = ys" |
492 by (induct ys) auto |
492 by (induct ys) (auto dest!:injD) |
493 |
493 |
494 lemma inj_mapI: "inj f ==> inj (map f)" |
494 lemma inj_mapI: "inj f ==> inj (map f)" |
495 by (rules dest: map_injective injD intro: inj_onI) |
495 by (rules dest: map_injective injD intro: inj_onI) |
496 |
496 |
497 lemma inj_mapD: "inj (map f) ==> inj f" |
497 lemma inj_mapD: "inj (map f) ==> inj f" |