fact: Definition ReadCurrentSymbols_Step_Rel (st : Vector.t (option sig) n * Fin.t n) : pRel sigSim (Vector.t (option sig) n * Fin.t n + Vector.t (option sig) n) 1 := fun tin '(yout, tout) => (forall tps1 tps2 tp , (length tps1 =? fin_to_nat (snd st)) = true -> (length tps1 + (1 + length tps2) =? n) = true -> atCons tin[@Fin0] tps1 tps2 tp -> knowsFirstSymbols (fst st) tps1 -> match tps2 with | nil => atNil tout[@Fin0] (tps1 ++ [tp]) /\ yout = inr (insertKnownSymbol (fst st) (snd st) (current tp)) | tp' :: tps2' => atCons tout[@Fin0] (tps1 ++ [tp]) tps2' tp' /\ match finSucc_opt (snd st) with | Some i' => yout = inl (insertKnownSymbol (fst st) (snd st) (current tp), i') | None => False end end) /\ (forall tps, atNil tin[@Fin0] tps -> atNil tout[@Fin0] tps /\ yout = inr (fst st)).
imports: Undecidability.TM.Basic.Mono Undecidability.TM.Combinators.Combinators Undecidability.TM.Code.Code Undecidability.TM.Single.EncodeTapes Undecidability.TM.Compound(TMTac MoveToSymbol Multi Shift)