Section MoveToSymbol_Sem.
Local Arguments skipn { A } !n !l.
Local Arguments plus : simpl never.
Local Arguments mult : simpl never.
Variable sig : finType.
(* Halt function *)
Variable stop : sig -> bool.
(* Rewrite function *)
Variable f : sig -> sig.

Corollary MoveToSymbol_correct_midtape ls rs rs' m x :
stop m = false ->
(forall x, List.In x rs -> stop x = false) ->
stop x = true ->
MoveToSymbol_Fun stop f (midtape ls m (rs ++ x :: rs')) =
midtape (rev (map f rs) ++ (f m) :: ls) (f x) rs'.