(* Considered preliminaries *)
Set Implicit Arguments.
From Undecidability.HOU Require Export calculus.terms std.std.
Fixpoint sapp {X} (A: list X) (sigma: fin -> X): fin -> X :=
match A with
| nil => sigma
| a :: A => a .: sapp A sigma
end.
Notation "A .+ sigma" := (sapp A sigma) (at level 67, right associativity).

Lemma select_variables_subst X S I sigma:
I ⊆ nats (length S) -> map (subst_exp (S .+ sigma))  (map (@var_exp X) I) = select I S.