Counting the accepting coins in polynomial space #
This file computes, for a verifier machine, the number of coin values whose programs accept after
a history (Cslib.Complexity.Interaction.accepted), within space polynomial in the input and the
history, and in exponential time.
- A replay keeping only whether it is still live
(
Cslib.Complexity.Interaction.aliveStep) decides whether the program of given coins accepts after a history (Cslib.Complexity.Interaction.accepts_eq_true_iff), in polynomial time (Cslib.Complexity.Interaction.computableInPolyTime_accepts): it folds one instruction per coin over the configuration of the machine, whose storage grows by a bounded amount per instruction. - The coin values are enumerated by the binary counter of the shared streaming count
Cslib.Complexity.streamAcceptCount, and the accepting ones are counted with a binary accumulator (Cslib.Complexity.Interaction.countAccepts,Cslib.Complexity.Interaction.countAccepts_eq_accepted), within polynomial space (Turing.MultiTapeTM.ComputableInPolySpace,Cslib.Complexity.Interaction.computableInPolySpace_countAccepts).
Main definitions #
Cslib.Complexity.Interaction.accepts: whether the program of given coins accepts.Cslib.Complexity.Interaction.countAccepts: the number of accepting coin values.
Main results #
Cslib.Complexity.Interaction.computableInPolyTime_accepts: acceptance in polynomial time.Cslib.Complexity.Interaction.countAccepts_eq_accepted: the count of accepting coin values.Cslib.Complexity.Interaction.computableInPolySpace_countAccepts: the count in polynomial space.
References #
A live replay #
The state of a replay that only records whether it is still live: the configuration, the rest of the history and liveness.
Instances For
The instruction of M in the configuration cfg with the coin b, unless it has halted.
Instances For
Answer a request on the channel op from the history, moving to the control state next, or
stop when the history is exhausted or sends another message.
Instances For
The live replay step by its liveness and instruction.
Instances For
One instruction of a live replay: taggedStep dispatched by liveness and instruction.
Instances For
The live replay of M on the input x with the coins r against the history h, its replies
truncated to the number of coins.
Instances For
Whether the program of the coins r accepts after the history h: the replay is live, has
consumed the whole history and has output [true].
Instances For
When the replay succeeds on x, r, h, the live replay stops at the same state and stays
live.
When the replay pauses waiting for a reply to m, the live replay stops inactive with m on
channel ().
The live replay decides acceptance: accepts holds exactly when the program of the coins
accepts after the history.
The live replay in polynomial time #
The instruction is polynomial-time: it reads finitely many observations.
The live replay is polynomial-time in the input, the coins and the history.
Acceptance is polynomial-time in the input, the coins and the history.
Counting the accepting coins #
The number of accepting values of fuel a coins after the history h, counted by trying the
coins one after another with a binary counter (Cslib.Complexity.streamAcceptCount).
Instances For
The count of accepting coins: countAccepts is the number of coin values of fuel a coins
whose programs accept after the history.
The count of accepting coins within polynomial space, in the input and the history, for a number of coins computed in polynomial time.