proposition: Lemma fin_is_0 (n : nat) (i : Fin.t (S n)) : fin_to_nat i = 0 -> i = Fin0.
proof: Proof. intros H. pose proof fin_destruct_S i as [ (i'&->) | ->]; cbn in *; auto. rewrite fin_to_nat_S in H. lia. 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)