Derandomizing multi-output circuits #
This module isolates the finite nonuniform randomness-fixing step for a
randomized multi-output circuit. If the circuit fails its pointwise
specification with probability at most 2^-(n + 1) on every n-bit input,
then one seed works simultaneously on all inputs. Hardwiring that seed preserves
the circuit's exact size.
This is the circuit-level union-bound step used when turning a sufficiently accurate randomized approximate counter into a deterministic nonuniform multi-output circuit.
The seeds on which a randomized circuit fails its output specification at one fixed input. Random bits occupy the circuit's input prefix.
Equations
- circuit.badSeedEvent IsCorrect input = {seed : Complexity.BitString seedWidth | ¬IsCorrect input (circuit.eval (Fin.append seed input))}
Instances For
Membership in the bad-seed event is exactly failure of the output specification on the seed-prefixed input.
A pointwise 2^-(n + 1) failure bound leaves one seed that satisfies a
multi-output specification simultaneously on every n-bit input.
The uniformly correct seed can be hardwired without increasing circuit size, producing a deterministic multi-output circuit with the same pointwise specification.