let remove_context_var_renamings (subst: subst) : subst =
let subst =
normalize_var_renamings subst
in
List.find_all
(fun binding ->
(* keep all clause literal variables -
this are used to actually instantiate the remainder literals
(Selection_assert, Selection_split, Context_unifier_check) *)
binding.sb_var.sv_offset == input_literal_offset
||
(
(* keep if ... *)
List.exists
(fun binding' ->
(* ... another variable *)
binding' != binding
&&
(* ... is bound to a context term *)
binding'.sb_term.st_offset == binding.sb_var.sv_offset
&&
(* ... containing this variable *)
Term.term_contains_var binding'.sb_term.st_term binding.sb_var.sv_var
)
subst
)
)
subst