(* The code of this file is included with Autosubst 2 *)
(* considered preliminaries *)
From Undecidability.HOU Require Import std.std.
From Undecidability.HOU Require Export axioms.
Definition fin := nat.
Definition shift  := S.
Definition scons {X: Type} (x : X) (xi : nat -> X) :=
fun n => match n with
|0 => x
|S n => xi n
end.
Notation "s .: sigma" := (scons s sigma) (at level 67, right associativity).
Definition var_zero := 0.
Definition up_ren (xi : nat -> nat) :=
0 .: (xi >> S).
Definition ap {X Y} (f : X -> Y) {x y : X} (p : x = y) : f x = f y :=
match p with eq_refl => eq_refl end.
Definition apc {X Y} {f g : X -> Y} {x y : X} (p : f = g) (q : x = y) : f x = g y :=
match q with eq_refl => match p with eq_refl => eq_refl end end.

Lemma up_ren_ren (xi: nat -> nat) (zeta : nat -> nat) (rho: nat -> nat) (E: forall x, (xi >> zeta) x = rho x) :
forall x, (up_ren xi >> up_ren zeta) x = up_ren rho x.