proposition: Lemma fin_destruct_S (n : nat) (i : Fin.t (S n)) : { i' | i = Fin.FS i' } + { i = Fin.F1 }.
proof: Proof. refine (match i in (Fin.t n') with | Fin.F1 => _ | Fin.FS i' => _ end); eauto. Qed.
imports: Undecidability.TM.Basic.Mono Undecidability.TM.Combinators.Combinators Undecidability.TM.Code.Code Undecidability.TM.Single.EncodeTapes Undecidability.TM.Compound(TMTac MoveToSymbol Multi Shift)