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