Moving left unconditionally #
Before scratch tapes can be wiped (TM.wipeStepTM scans rightward), every head
needs to be at a known position. The ▷ marker at cell 0 is immutable, so
moving left far enough always reaches it whatever the content:
TM.moveLeftStepTM, run enough times, is a content-agnostic bulk rewind for a
whole list of tapes, exactly as TM.wipeStepTM is a content-agnostic bulk wipe.
Main results #
TM.moveLeftStepTM— move every targeted tape one cell leftTM.moveLeftStepTM_hoareTime— its one-step contract
Unconditional write-then-move collapses to a pure move whenever the
tape's only possible ▷ is at cell 0 — regardless of whether the head is
currently on it.
One unconditional step: every work tape named in targets moves left
(bouncing off ▷ via moveLeftDir); every other work tape, the input, and
the output are held by readBackWrite/idleDir. Content is always preserved.
Equations
- One or more equations did not get rendered due to their size.
Instances For
moveLeftStepTM's exact one-step Hoare contract. Targeted tapes need
only StartInvariant (their ▷, if any, is at cell 0 — true regardless of
current head position); every other work tape, the input, and the output
must be Parked.