let p_subst alpha x v p =
  match v with
    | Fol.Tvar y when (Fol.Var.equal x y) -> p (* v is equal to x *)
        
    | (Fol.Tconst _ | Fol.Tvar _ | Fol.Tapp(_,[]))
        when Wp_parameters.Simpl.get () ->
        Fol.pred_replace alpha x v p
          
    | _ -> Fol.p_let x v p