Tape head visitation and space-usage lemmas #
This file collects lemmas about the set of positions visited by a work-tape head
(MultiTapeTM.visitedByTapeHead) and the resulting space-usage measures
(MultiTapeTM.spaceUsedByTape, MultiTapeTM.space) and how the tape head positions
influence the cells that are modified on a tape.
MultiTapeTM.exists_spaceUsedByTape_max shows that a computation whose space usage is bounded
attains its per-tape space usage at a single step, which makes a bound that holds at every point
in time usable as a bound for the whole run.
If the work tape head is not at position z, then the tape does not change there.
The set of positions visited by a tape head is monotone in the number of steps.
Starting from configuration cfg, every position between the initial head position of tape
i and the one after t steps is part of the "visited set" at step t.
If a work tape cell is changed after t steps, it must have been visited by the tape head.
Every position visited by the head of tape i lies within spaceUsedByTape … i of the
head's starting position.
Every non-blank cell on work tape i lies within spaceUsedByTape … i t of the origin.
The number of cells visited by a single work-tape head grows by at most one each step.
The space used by a single tape is monotone in the number of steps.
A computation whose total space usage stays below a bound reaches a step T at which the space
usage of every tape is maximal. This turns a bound that holds at every point in time into a
bound for the whole run.
A run path that starts with every head at cell 0 and visits at most s cells keeps its heads
within [-s, s].