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])