let rec e_not = function
| Tprim(B_not,[p]) -> p
| Tprim(B_and,[p;q]) -> Tprim(B_or,[e_not p;e_not q])
| Tprim(B_or,[p;q]) -> Tprim(B_and,[e_not p;e_not q])
| Tprim(I_lt,[a;b]) -> Tprim(I_leq,[b;a])
| Tprim(I_leq,[a;b]) -> Tprim(I_lt,[b;a])
| p -> Tprim(B_not,[p])