let diff m1 m2 =
match m1, m2 with
| Top _, _ | _, Top _ -> m1
| Map mm1, Map mm2 ->
let result =
M.fold
(fun k v1 acc ->
let dif =
try
let v2 = M.find k mm2 in
(V.diff v1 v2)
with Not_found -> v1
in
add_or_bottom k dif acc)
mm1
M.empty
in
Map result