let rec p_bool = function
| Ttrue -> Ptrue
| Tfalse -> Pfalse
| Tprim(TERM.L_eq ,[a;b]) -> Prel(L_eq ,[a;b])
| Tprim(TERM.L_neq,[a;b]) -> Prel(L_neq,[a;b])
| Tprim(TERM.I_lt ,[a;b]) -> Prel(I_lt ,[a;b])
| Tprim(TERM.I_leq ,[a;b]) -> Prel(I_leq ,[a;b])
| Tprim(TERM.R_lt ,[a;b]) -> Prel(R_lt ,[a;b])
| Tprim(TERM.R_leq ,[a;b]) -> Prel(R_leq ,[a;b])
| Tprim(B_and,[a;b]) -> p_and (p_bool a) (p_bool b)
| Tprim(B_or,[a;b]) -> p_or (p_bool a) (p_bool b)
| Tprim(B_not,[a]) -> p_not (p_bool a)
| p -> Prel(B_true,[p])