let neg = function
| True -> False
| False -> True
| Comp (c, Eq, (Elem (x, Constr))) when Hstring.equal x Term.hfalse ->
Comp (c, Eq, (Elem (Term.htrue, Constr)))
| Comp (c, Eq, (Elem (x, Constr))) when Hstring.equal x Term.htrue ->
Comp (c, Eq, (Elem (Term.hfalse, Constr)))
| Comp (x, Eq, y) -> Comp (x, Neq, y)
| Comp (x, Lt, y) -> Comp (y, Le, x)
| Comp (x, Le, y) -> Comp (y, Lt, x)
| Comp (x, Neq, y) -> Comp (x, Eq, y)
| _ -> assert false