let subst_var var exp_opt p =
let subst v =
if Fol.eq_var v var then
match exp_opt with
| Some exp -> Some exp
| None -> raise Invalid_subst
else None (* no substitution *)
in
try (subst_vars subst p)
with Invalid_subst ->
if !Calculus.use_bottom then pbot
else abort "need untranslatable expression (see previous warning)"