kkp_expression2(empty) :-               !,kkp_opexpr(empty,[]).
 kkp_expression2(iden) :-                !,kkp_opexpr(iden,[]).
 kkp_expression2(univ) :-                !,kkp_opexpr(univ,[]).
 kkp_expression2(transpose(E)) :-        !,kkp_opexpr(transpose,[E]).
 kkp_expression2(closure(E)) :-          !,kkp_opexpr(closure,[E]).
 kkp_expression2(reflexive_closure(E)) :-!,kkp_opexpr(reflexive_closure,[E]).
 kkp_expression2(union(A,B)) :-          !,kkp_fopexpr(union,union(A,B)).
 kkp_expression2(intersection(A,B)) :-   !,kkp_fopexpr(intersection,intersection(A,B)).
 kkp_expression2(difference(A,B)) :-     !,kkp_opexpr(difference,[A,B]).
 kkp_expression2(join(A,B)) :-           !,kkp_opexpr(join,[A,B]).
 kkp_expression2(product(A,B)) :-        !,kkp_fopexpr(product,product(A,B)).
 kkp_expression2(overwrite(A,B)) :-      !,kkp_opexpr(overwrite,[A,B]).
 kkp_expression2(relref(I)) :-           !,kprint([t('relref '),id(I)]).
 kkp_expression2(varref(I)) :-           !,kprint([t('varref '),id(I)]).
 kkp_expression2(comp(Decls,Formula)) :- !,kkp_quantifier(comp, Decls, Formula).
 kkp_expression2(prj(Is,Expr)) :-        !,kprint(t(prj)),kkp_ints(Is),kkp_expression(Expr).
 kkp_expression2(int2pow2(E)) :-         !,kkp_opexpr(int2pow2,[E]).
 kkp_expression2(int2intset(E)) :-       !,kkp_opexpr(int2intset,[E]).
 kkp_expression2(if(Cond,Then,Else)) :-  !,kprint(t(if)),kkp_formula(Cond),kkp_expression_l([Then,Else]).
 kkp_expression2(card(E)) :-      !,kkp_opexpr(card,[E]).
 kkp_expression2(add(A,B)) :-     !,kkp_opexpr(add,[A,B]).
 kkp_expression2(sub(A,B)) :-     !,kkp_opexpr(sub,[A,B]).
 kkp_expression2(mul(A,B)) :-     !,kkp_opexpr(mul,[A,B]).
 kkp_expression2(div(A,B)) :-     !,kkp_opexpr(div,[A,B]).
 kkp_expression2(floored_div(A,B)) :-     !, add_warning(kodkod_printer,'Translating floored division as truncated division: ',div(A,B)),
         kkp_opexpr(div,[A,B]).
 kkp_expression2(mod(A,B)) :-     !,kkp_opexpr(mod,[A,B]).
 kkp_expression2(sum(E)) :-       !,kkp_opexpr(expr2int,[E]).
 kkp_expression2(expr2int(E)) :-  !,kkp_opexpr(expr2int,[E]).
 kkp_expression2(int(I)) :-       !,kprint(t(I)).
 kkp_expression2(E) :- throw(unknown_construct(expression,E)).