let rec bad_eq_terms a b =
match a , b with
| Tconst k1 , Tconst k2 -> k1 = k2 (* strings,int and bools *)
| Tvar x , Tvar y -> Var.equal x y
| Tapp(f,xs) , Tapp(g,ys) when f=g ->
(try List.for_all2 bad_eq_terms xs ys
with _ -> false)
| Tif(x,y,z) , Tif(x',y',z') ->
bad_eq_terms x x' && bad_eq_terms y y' && bad_eq_terms z z'
| _ -> a==b