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.

Lemma MoveToSymbol_correct_midtape_end tl c tr :
(forall x, List.In x (c::tr) -> stop x = false) ->
MoveToSymbol_Fun stop f (midtape tl c tr) = rightof (hd (f c) (map f (rev tr))) (List.tl (map f (rev tr) ++ f c::tl)).