Generating Random Seeds for Oracle Queries #
This file defines generateSeed spec qc js, which produces a random QuerySeed for
oracle specification spec, seeding qc j values for each oracle j ∈ js.
The definition is recursive on the list js, making it easy to prove properties by induction.
Generate a QuerySeed uniformly at random. For each oracle j ∈ js, generates qc j
uniform random values of type spec.Range j using SampleableType.
Instances For
If the seed-generation list js contains every oracle family with positive budget, then any
seed sampled by generateSeed spec qc js contains at least qc i answers for each oracle i.
This is the support-level coverage property needed by seeded replay arguments: one occurrence of
i in js already contributes qc i pre-generated answers to the seed at i, and additional
occurrences only increase that supply.
SeedListCovers qb js means that every oracle family with positive query budget appears in
the seed-generation list js.
When this holds, any seed sampled from generateSeed spec qb js supplies enough pre-generated
answers to cover one full execution of a computation satisfying the structural bound qb.
Instances For
Any seed sampled from generateSeed spec qb js has at least qb t entries for each
oracle t, provided js lists every oracle family with positive budget.
The expected number of uniform-oracle calls made by generateSeed spec qc js equals
∑ j in js, qc j * sampleCost j, i.e. each of the qc j samples at oracle j costs
sampleCost j.