(* * Copying Machines and Helper functions for verifying machines using [CopySymbols] ane [MoveToSymbol] *)
From Undecidability Require Export TM.Compound.CopySymbols TM.Compound.MoveToSymbol.
Local Generalizable All Variables.
Set Default Proof Using "Type".
(* Don't simplify [skipn (S n) xs]; only, if the number and the lists are constructors *)
Local Arguments skipn { A } !n !l.
Local Arguments plus : simpl never.
Local Arguments mult : simpl never.
Variable f : sig -> sig.

Lemma CopySymbols_L_steps_local t r1 sym r2 :
tape_local_l t = r1 ++ sym :: r2 ->
stop sym = true ->
CopySymbols_L_steps stop t <= 8 + 8 * length r1.