let rec replace_vars_in_term (term: term) (func: var -> term -> term) : term =
match term with
| Var var ->
func var term
| Const _ ->
term
| Func func' ->
let new_terms =
Array.map
(fun term ->
replace_vars_in_term term func
)
func'.subterms
in
request_func (func'.symbol, new_terms)