let rec check_equal positive e1 e2 =
let one,zero =
if positive then Ival.singleton_one, Ival.singleton_zero else
Ival.singleton_zero, Ival.singleton_one
in
let result = inject_ival
(if cardinal_zero_or_one e1 &&
cardinal_zero_or_one e2 &&
(equal e1 e2)
then one
else
if intersects e1 e2
(* [intersects] gives an exact answer *)
then Ival.zero_or_one
else zero)
in
(* Format.printf "check_equal: positive:%b e1=%a e2=%a result=%a@\n"
positive
pretty e1
pretty e2
pretty result
;*)
result