let is_allowed_sub (neg_ctrs,_ : t_vi_ctrs) ls =
(* a dummy substitution, to apply egal *)
let sub = (ls,FreeVar 0,[])
in
let rec is_allowed_sub_rec = function
| (n,m)::tail ->
(* n and m are not allowed to be equal *)
if egal sub (Var n) (Var m) then
(* n and m must not be equal, but they are, so ls is not an allowed
* substitution. *)
false
else
is_allowed_sub_rec tail
| [] -> true
in
is_allowed_sub_rec neg_ctrs