Resetting a list of tapes to blank, content-agnostically #
The full reset an opaque machine's scratch needs between calls: park everything
(TM.parkAll_hoareTime), rewind every targeted tape to cell 1
(TM.rewindList_hoareTime), then wipe H cells forward from there
(TM.wipeLoop_hoareTime). A fuel register disjoint from the targets drives the
wipe and is left exactly as it started.
Main results #
TM.resetTapesTM— the composite reset machineTM.resetTapesTM_hoareTime/TM.resetTapesTM_hoareTime_of_bounds— its contract
Resetting a list of tapes. Regardless of their current content or head
position (bounded by H), every tape in targets ends up blanked from cell
1 through cell H, with its tail beyond cell H untouched; the fuel
register r (disjoint from targets) and every other tape are exactly as
they were.
The full reset. Every tape in targets whose content is confined to
cells 1 … H — no matter where in that range, and no matter where its head
currently sits — ends up literally blank and parked at cell 1. The fuel
register r and all other tapes are returned exactly as they were.
The reset, keyed on bounds rather than on a named tape family. The tapes an opaque machine leaves behind are only known through bounds, never as a closed form, so this is the shape the loop body actually needs: the exact starting family is instantiated inside the proof.