let replace_in_bound_terms (subst: subst) (old_term: Term.term) (new_term: Term.term) : subst =
if Term.term_equal old_term new_term then
subst
else
map
(fun binding ->
let new_bound_term =
Term.replace_term_in_term binding.sb_term.st_term old_term new_term
in
if Term.term_equal binding.sb_term.st_term new_bound_term then begin
binding
end
else begin
{ binding with
sb_term = {
binding.sb_term with
st_term = new_bound_term
};
}
end
)
subst