Fixed-round adaptive oracle circuit programs -- definitions #
A program makes a fixed number of adaptive Boolean-oracle calls. Before round
i, its history consists of the original input followed by the i previous
answer bits. A query circuit maps that history to a positive-width query, and a
final circuit maps the complete history to the program output.
Query widths may vary by round. A variable-call computation can use dummy queries after it has logically terminated, while retaining a fixed circuit shape at each outer input length.
A fixed-round adaptive oracle computation whose query generators and final output map are fan-in-two AND/OR circuits.
Width of the query issued in each round.
- queryWidth_neZero (round : Fin rounds) : NeZero (self.queryWidth round)
Every query has positive width, as required by the circuit model.
Internal-gate count of each query circuit.
- query (round : Fin rounds) : Circuit Basis.andOr2 (inputWidth + ↑round) (self.queryWidth round) (self.queryGates round)
Query circuit for each round, reading the input and previous answers.
- finalGates : ℕ
Internal-gate count of the final output circuit.
- final : Circuit Basis.andOr2 (inputWidth + rounds) outputWidth self.finalGates
Final output circuit, reading the input and every oracle answer.
Instances For
Semantic history after completed oracle calls. It consists of the
original input followed in order by the answers to the first completed
queries.
Equations
Instances For
Output of the adaptive program relative to a Boolean oracle.
Instances For
One single-output oracle circuit for each query round of program. The
query width fixes which circuit may be used at that round.
Internal-gate count of the oracle circuit used in each round.
- circuit (round : Fin rounds) : Circuit Basis.andOr2 (program.queryWidth round) 1 (self.internalGates round)
Oracle circuit at the query width of each round.
Instances For
The selected oracle circuits implement oracle when every round circuit
returns the oracle's answer on every fixed-width query.
Equations
- implementation.Implements oracle = ∀ (round : Fin rounds) (query : Complexity.BitString (program.queryWidth round)), (implementation.circuit round).eval query 0 = oracle query.toList
Instances For
Exact size of the circuit producing a prefix of the inlined adaptive
history. This recurrence mirrors inlineHistory: the base identity costs one
output gate per original input, and each round pays to retain the old history
and to evaluate its query and oracle circuits.
Equations
- One or more equations did not get rendered due to their size.
- program.inlineHistorySize implementation 0 x_2 = inputWidth
Instances For
Compile the first completed adaptive calls into one circuit producing
the original input followed by their answer bits.
Equations
- One or more equations did not get rendered due to their size.
- program.inlineHistory implementation 0 x_2 = ⟨0, Complexity.Circuit.projectInputs fun (input : Fin inputWidth) => input⟩
Instances For
Compile every adaptive call and then the final output circuit into one ordinary oracle-free circuit.
Equations
- One or more equations did not get rendered due to their size.