Reserving work tapes for effectful machines #
Reindexing the source's tapes leaves every additional tape and head unchanged. The construction uses upstream's configuration embedding and preserves the entire typed execution program, hence also the joint distribution of configuration and private interpreter state. It requires only that the choice interpreter commute with mapping; coin draws may be stateful.
Main definitions #
Turing.MultiTapeMachine.extendTapes: run on tapes selected by an embedding.Turing.MultiTapeMachine.Config.embed: retain arbitrary data on the additional tapes.
Main results #
Turing.MultiTapeMachine.runConfigFrom_embed: reindexing preserves the full clocked program.Turing.MultiTapeMachine.toTM_extendTapes: agreement with upstream's deterministic compiler.
References #
Adapted from MultiTape/Oracle/ExtendTapes.lean on the cslib crypto branch at
5ff69ca93402e7c947208dc56396d6d86203ccd8 to the common machine and typed program interface.
Reindex a tape action, leaving every additional tape and head untouched.
Instances For
Run on the tapes selected by e, preserving all other tapes and every oracle interaction.
Instances For
Unfold a reindexed transition without unfolding its machine in a recursive continuation.
A source configuration with arbitrary contents and head positions on additional tapes.
Instances For
Reindexing preserves the entire program, including all unused tape contents and heads.
The additional work tapes do not affect the observable output program.
Reserving additional tapes starts them blank, with every work head at zero.
Reserving blank scratch tapes preserves the clocked output program.
Tape extension preserves a halting bound against every stateful interpreter.
In the effect-free deterministic case, tape extension is exactly upstream's compiler.