Fair-coin multi-tape machines #
MultiTapePTM specializes the common table to one action per Boolean coin value. Its run is
the common interpreter with a handler that samples a bit and selects the corresponding action.
Even equal branches consume a bit; halted configurations consume no more bits.
The open run accepts a typed program supplying coins and a program answering each named oracle
call. This separates the syntax from the interpretation: fair-coin semantics requires interpreting
the coin program as an independent uniform bit. runClosed fixes this interpretation through
ProbComp.uniform Bool for machines without oracle channels. No efficiency assertion about an
arbitrary coin program or oracle handler is made here.
Adapted from the cslib crypto branch at 5ff69ca93402e7c947208dc56396d6d86203ccd8.
Main definitions #
Turing.MultiTapePTM: the Boolean-indexed specialization of the common machine.Turing.MultiTapePTM.runConfigFrom: the run program with explicit coin and query programs.Turing.MultiTapePTM.runClosed: a closed fair-coin run using the finite-uniform interface.
Run with the supplied coin program, retaining the whole configuration at clock exhaustion.
Instances For
Observe the output word of an open run.
Instances For
Run from the initial configuration with explicit coin and oracle programs.
Instances For
A zero clock observes the current output without drawing a coin or making a query.
A live instruction draws one coin, then performs one ordinary step or one external request. This equation is left out of the simp set to avoid expanding a symbolic clock.
The closed fair-coin run, with fresh uniform Boolean choices at each live transition.
Instances For
Every supported closed output has length at most the machine's clock.
Forget probabilities, retaining exactly the actions selected by some coin value.