(* 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.
Definition id {X} (x: X) := x.

Lemma scons_eta {T} (f : nat -> T) :
f var_zero .: shift >> f = f.