src/HOL/Map.thy
changeset 53374 a14d2a854c02
parent 53015 a1119cf551e8
child 53820 9c7e97d67b45
equal deleted inserted replaced
53373:3ca9e79ac926 53374:a14d2a854c02
   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