1% Predicates that use syntax specific of the CLP(FD) library of the host Prolog 
    2% Version for SWI Prolog
    3% The main difference is that SICStus uses #<=>, while SWI uses #<==>
    4
    5reified_equality_solver(X,Y,B):- X #= Y #<==> B.
    6
    7solver_and(B,B1,B2):- B #<==> (B1 #/\ B2).
    8
    9reification(T,B):- call(T #<==> B).
   10
   11opposite(eq(A,B),neq(A,B)).
   12opposite(neq(A,B),eq(A,B)).
   13opposite(lt(A,B),geq(A,B)).
   14opposite(leq(A,B),gt(A,B)).
   15opposite(gt(A,B),leq(A,B)).
   16opposite(geq(A,B),lt(A,B)).
   17opposite(C,C