Skip to content

feat(MultiTapeTM): input shortening - #1152

Open
barni120400 wants to merge 3 commits into
leanprover:mainfrom
barni120400:feat/tm-input-shortening
Open

barni120400 wants to merge 3 commits into
leanprover:mainfrom
barni120400:feat/tm-input-shortening

Conversation

@barni120400

Copy link
Copy Markdown
Contributor

Adds visit sequences of run paths and an input-shortening theorem for multi-tape Turing machines: when two input cells carry the same symbol and a halting computation path visits them with the same storages, deleting the cells after the first through the second preserves every storage reached by a step on either retained side. A long enough input to a space-bounded machine has such a pair of cells.

Collapsing the cut is a homomorphism from the steps on one retained side to the steps of the machine with its output erased, MultiTapeNTM.eraseOutput, built with adapt. Segments of the path between boundary visits map with RelSeries.map and join with smash, and all statements are about computation paths. Replaces the unused not_halts_of_repeat_nonhalt with its path version, RunPath.injOn_running.

Depends on #1151, which depends on #1122 and #1145: their commits are included temporarily and will leave this diff when they merge.

Composed with Claude Code.

barni120400 and others added 3 commits October 21, 2026 11:08
Space is counted only on run and computation paths. The visitation and
displacement lemmas hold for the run paths of nondeterministic
machines, and the configuration bounds take `RunsInSpace` and count the
storages and cores at the ends of computation paths: the computation
paths of a deterministic machine are prefixes of one another, so the
one visiting the most cells contains the windows of every other. The
deterministic `visitedByTapeHead`, `spaceUsedByTape` and `space` go,
with their lemmas and the unused `core_step_eq_of_core_eq`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…hines

Defines `extendTapes`, `outputToTape` and `inputFromTape` for
nondeterministic machines through a common adapter,
`MultiTapeNTM.adapt`, whose `adaptHom` maps run paths. The
deterministic machines become one-line wrappers sharing
`IsDeterministic.adapt`, and the simulation space bounds hold for every
machine. `stepHom` and the per-simulation step lemmas are removed, and
the input-head bound becomes `RunPath.inputPos_last_le`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Adds visit sequences of run paths and an input-shortening theorem for
multi-tape Turing machines: when two input cells carry the same symbol
and a halting computation path visits them with the same storages,
deleting the cells after the first through the second preserves every
storage reached by a step on either retained side. A long enough input
to a space-bounded machine has such a pair of cells.

Collapsing the cut is a homomorphism from the steps on one retained
side to the steps of the machine with its output erased,
`MultiTapeNTM.eraseOutput`, built with `adapt`. Segments of the path
between boundary visits map with `RelSeries.map` and join with
`smash`, and all statements are about computation paths. Replaces the
unused `not_halts_of_repeat_nonhalt` with its path version,
`RunPath.injOn_running`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@barni120400
barni120400 force-pushed the feat/tm-input-shortening branch from d2f9301 to 1a7302d Compare October 21, 2026 08:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant