Halting bounds for effectful machines #
A halting bound concerns the control state of every supported run, rather than merely its externally stopped output. Once the machine has halted, extra fuel preserves the whole joint distribution of machine configuration and interpreter state.
The choice and query programs are explicit parameters, as in runConfigFrom. HaltsWithin
quantifies over every stateful interpretation of those programs; it does not assert efficiency
of either handler.
Main definitions #
Turing.MultiTapeMachine.HaltsWithin: all supported runs halt within the given clock.
Main results #
Turing.MultiTapeMachine.run_interpret_runConfigFrom_add_of_halted: extra fuel has no effect once every supported run has halted.Turing.MultiTapeMachine.interpret_runConfigFrom_add_of_halted_list: the corresponding occurrence-preserving equality for List interpretation.Turing.MultiTapeMachine.HaltsWithin.mono: a halting bound remains valid when increased.
References #
Adapted from MultiTape/Oracle/Halting.lean on the cslib crypto branch at
5ff69ca93402e7c947208dc56396d6d86203ccd8 to the common machine and typed program interface.
Every supported execution halts within fuel, against every stateful interpreter.
Instances For
Once every supported execution has halted, extra time preserves the complete distribution.
Enumerating finite responses preserves every endpoint occurrence after halting. Unlike a probability interpretation, a List interpreter may have no outcomes; this equality does not itself assert that the machine cannot get stuck.
Any larger clock gives the same joint distribution once a halting bound is known.
A halting bound remains valid when increased.
Padding a halting run also preserves its output and the final private state.