method subst x (v : Formula.abstract F.term) =
if not captured then
let modified = ref false in
let partials' = List.map
(function
| Svalue t as s ->
if F.term_has_var [x] t then
( modified := true ; Svalue (F.e_subst D.alpha x v t) )
else s
| Sclosure _ as s -> s)
partials
in
if !modified then
begin
id <- (incr hints ; !hints) ;
partials <- partials'
end