let union u v =
let keys = List.dedup (Map.keys u @ Map.keys v) in
List.fold keys ~init:Map.empty ~f:(fun accu k ->
Map.add accu ~key:k ~data:(
Biocaml_iset.union
(Option.value (Map.find u k) ~default:Biocaml_iset.empty)
(Option.value (Map.find v k) ~default:Biocaml_iset.empty)
)
)