Section ForwardDirection.
Definition ginst (I: list nat) : exp X :=
lambda AppL (repeat (var 0) (pred (|I|))) (var 1).
(* ** Forward Direction *)

Lemma ginst_equivalence I (S: stack):
I <> nil -> I ⊆ nats (length S) ->
AppR (ren (add 3) (finst I (length S)))
(repeat (var (u 1)) (| S |)) ≡ var (u 1) (ren (add 3) (ginst I) (var (u 1))).