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