Exact dyadic distribution ensembles -- definitions #
A DyadicEnsemble α represents each parameter slice by a uniformly random
finite Boolean seed and a deterministic sample map. Repeated samples may map to
the same output, so this representation captures arbitrary finite dyadic
distributions without quotienting away sampler multiplicity.
This is the representation-independent finite layer needed by average-case complexity. Polynomial-time samplability is a separate machine-level property.
A parameterized family of finite dyadic distributions on α.
At parameter n, a uniformly random Boolean string of length seedLength n is
mapped to an output by sample n. Distinct seeds may produce the same output.
Number of uniformly random bits used by the
nth slice.- sample (n : ℕ) : (Fin (self.seedLength n) → Bool) → α
Deterministic sample produced from the parameter and random seed.
Instances For
The seed event whose samples satisfy P.
Instances For
Exact probability of P in the nth ensemble slice.
Equations
- D.probability n P = Complexity.eventProb (D.event n P)
Instances For
Probability mass of one output in the nth slice.
Equations
- D.mass n x = D.probability n fun (y : α) => y = x
Instances For
Finite support of the nth slice.
Equations
- D.support n = Finset.image (D.sample n) Finset.univ
Instances For
Push an ensemble forward through a deterministic map.
Equations
- D.map f = { seedLength := D.seedLength, sample := fun (n : ℕ) (seed : Fin (D.seedLength n) → Bool) => f (D.sample n seed) }
Instances For
Independently sample two ensembles using disjoint blocks of one seed.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Point-mass ensemble. Its slices use no random bits.
Equations
Instances For
Uniform distribution on all Boolean strings of length n, represented as
lists in increasing index order.