Section MapCode.
Variable sig tau : Type.
Variable retr : Retract sig tau.
Variable (sigX X : Type) (cX : codable sigX X) (I_x : Retract sigX sig) (I : Retract sig tau).
Global Instance Retract_plus : Retract (boundary + sig) (boundary + tau) := Retract_sum _ _.
Notation "'f''" := (@Retr_f (boundary+sig) (boundary+tau) Retract_plus).
Notation "'g''" := (@Retr_g (boundary+sig) (boundary+tau) Retract_plus).
Local Arguments Retr_f {X Y} (Retract).
Local Arguments Retr_g {X Y} (Retract).
Local Instance I_x' : Retract sigX tau := ComposeRetract _ _.
(* Translation Functions *)
Notation injectTape := (mapTape f').
Notation surjectTape := (surjectTape g' (inl UNKNOWN)).
(* Check injectTape : tape (sig^+) -> tape (tau^+) . *)
(* Check surjectTape : tape (tau^+) -> tape (sig^+). *)

Corollary contains_translate_eq (t1 t2 : tape (boundary+tau)) (x : X) :
surjectTape t1 = surjectTape t2 ->
t1 ≃ x -> t2 ≃ x.