equal
deleted
inserted
replaced
713 by (rule set_map_of_compr) |
713 by (rule set_map_of_compr) |
714 moreover from `distinct (map fst ys)` have "set ys = {(k, v). map_of ys k = Some v}" |
714 moreover from `distinct (map fst ys)` have "set ys = {(k, v). map_of ys k = Some v}" |
715 by (rule set_map_of_compr) |
715 by (rule set_map_of_compr) |
716 ultimately show ?rhs by simp |
716 ultimately show ?rhs by simp |
717 next |
717 next |
718 assume ?rhs show ?lhs proof |
718 assume ?rhs show ?lhs |
|
719 proof |
719 fix k |
720 fix k |
720 show "map_of xs k = map_of ys k" proof (cases "map_of xs k") |
721 show "map_of xs k = map_of ys k" proof (cases "map_of xs k") |
721 case None |
722 case None |
722 moreover with `?rhs` have "map_of ys k = None" |
723 with `?rhs` have "map_of ys k = None" |
723 by (simp add: map_of_eq_None_iff) |
724 by (simp add: map_of_eq_None_iff) |
724 ultimately show ?thesis by simp |
725 with None show ?thesis by simp |
725 next |
726 next |
726 case (Some v) |
727 case (Some v) |
727 moreover with distinct `?rhs` have "map_of ys k = Some v" |
728 with distinct `?rhs` have "map_of ys k = Some v" |
728 by simp |
729 by simp |
729 ultimately show ?thesis by simp |
730 with Some show ?thesis by simp |
730 qed |
731 qed |
731 qed |
732 qed |
732 qed |
733 qed |
733 |
734 |
734 end |
735 end |