let e_subst alpha x v t = match v with | Fol.Tvar y when (Fol.Var.equal x y) -> t | (Fol.Tconst _ | Fol.Tvar _ | Fol.Tapp(_,[])) -> Fol.term_replace alpha x v t | _ -> Fol.e_let x v t