let e_cond c a b =
    match c with
      | Ttrue -> a
      | Tfalse -> b
      | Tprim(B_not,[p]) -> Tif(p,b,a)
      | _ -> Tif(c,a,b)