Fair-coin machines with external oracle calls #
runOracle fixes the coin program of the common machine interpreter and exposes its word-based
external channels. The two effects use disjoint query types: external handlers cannot choose
the machine's private coins. Every live instruction draws one fresh fair bit; query writing and
reply reading still use ordinary machine instructions.
Main definitions #
Turing.MultiTapePTM.runOracle: the clocked run as aProbOracleCompprogram.Turing.MultiTapePTM.ofClosed: a closed machine with unused external channels.
Main results #
Turing.MultiTapePTM.length_output_runOracle_le: the clock bounds supported output lengths.Turing.MultiTapePTM.run_interpret_runOracle_ofDeterministic: deterministic embedding preserves the output and external oracle state.Turing.MultiTapePTM.runOracle_ofClosed: a closed machine's oracle run is its sampled closed run.Turing.MultiTapePTM.runOracle_eq_sample_runClosed: without external channels, the oracle run is the sampled closed run.
References #
Adapts the oracle run from the cslib crypto branch at
5ff69ca93402e7c947208dc56396d6d86203ccd8 to the common machine and typed sum interface.
Use private fair coins and submit each channel's accumulated word to the external oracle.
Instances For
Arbitrarily long oracle replies cannot bypass the cost of writing the output.
A deterministic run ignores the external oracle and preserves its full private state.
A closed fair-coin machine with external channels that it never reads or writes.
Instances For
Running a closed machine with external channels samples its closed run: the program makes no external call, so it preserves every external oracle state.
A machine without external channels never calls the external oracle: its oracle run is its sampled closed run.
A closed machine's oracle run preserves every external oracle state and has the closed output distribution.