Section lift_sigma_tau.
Variable n : nat.
Variable sig tau : Type.
Variable g : tau -> option sig.
Variable def : sig.
Variable F : Type.
Definition surjectTapes : tapes tau n -> tapes sig n :=
Vector.map (surjectTape g def).
Definition lift_sigma_tau_Rel (R : Rel (tapes sig n) (F * tapes sig n)) :
Rel (tapes tau n) (F * tapes tau n) :=
fun tin '(yout,tout) => R (surjectTapes tin) (yout, surjectTapes tout).
Definition lift_sigma_tau_T (T : Rel (Vector.t (tape sig) n) nat) :
Rel (Vector.t (tape tau) n) nat :=
fun tin k => T (surjectTapes tin) k.

Lemma surject_inject_tape (t : tape sig) :
surjectTape Retr_g def (injectTape Retr_f t) = t.