Repository navigation
feat(MultiTapeTM): input shortening - #1152
Open
barni120400 wants to merge 2 commits into
Open
barni120400 wants to merge 2 commits into
barni120400 wants to merge 2 commits into
Conversation
barni120400
requested review from
SamuelSchlesinger,
arademaker,
chenson2018,
crei,
fmontesi and
sorrachai
as code owners
October 19, 2026 13:39
barni120400
force-pushed
the
feat/tm-input-shortening
branch
from
October 19, 2026 13:46
80eaccb to
4ab9db9
Compare
barni120400
force-pushed
the
feat/tm-input-shortening
branch
2 times, most recently
from
October 21, 2026 08:09
d2f9301 to
1a7302d
Compare
barni120400
force-pushed
the
feat/tm-input-shortening
branch
from
October 24, 2026 22:03
1a7302d to
43b395c
Compare
A machine follows another when it performs each of its transitions through an adapter: what the inner machine reads, computed from the symbols under the heads of the outer machine (`HeadSymbols`), and the outer action performing each inner action. `adapt` runs a machine through an adapter, and `Follows.runningStepHom` and `Follows.stepHom` turn a configuration map that agrees with the adapter into a homomorphism of step relations. `extendTapes`, `outputToTape` and `inputFromTape` run `tm` through their adapters, so their homomorphisms come from `follows_adapt`. `seq` and `repeatUntilBlank` relabel the actions of their inner machines with `Action.mapState` and follow them by definition, and `prependOutputHom` follows the machine itself. This replaces the step lemmas of each simulation and the deterministic `stepHom` and `runningStepHom`. 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, `MultiTapeTM.eraseOutput`, built with `adapt`. It comes from the single-step lemma `Follows.step`, which now also gives `stepHom` and `runningStepHom`. 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
force-pushed
the
feat/tm-input-shortening
branch
from
October 27, 2026 00:31
43b395c to
a97f309
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 withadapt. Segments of the path between boundary visits map withRelSeries.mapand join withsmash, and all statements are about computation paths. Replaces the unusednot_halts_of_repeat_nonhaltwith 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.