let diff d1 d2 =
fold
(fun x ds acc ->
Set.fold
(fun (y, rho) acc ->
(match is_diseq d2 x y with
| Some _ -> acc
| None ->
let (acc', _) = add (Fact.Diseq.make x y rho) acc in
acc'))
ds acc)
d1 empty