Integer weights for adaptive Boolean computations #
A finite computation chooses a Boolean answer at each step. The two answer weights sum to a
common denominator D, but may depend on the complete current state. Thus later answer weights
may depend on earlier answers. Products of these weights give unnormalized transcript weights.
This finite weighted-tree calculation is used in approximate oracle simulation [Fen03]. It makes no computability or machine-resource assumption.
Main definitions #
AdaptiveWeights.branchWeight: the weight of one answer,p sfortrueandD - p sforfalse.AdaptiveWeights.pathWeight: the product of weights along an explicit answer list.AdaptiveWeights.acceptWeight: the total weight of accepting answer sequences.
Main results #
AdaptiveWeights.pathWeight_eq_prod: express a transcript weight as a product over prefixes.AdaptiveWeights.acceptWeight_eq_sum: express the accepting weight as a finite Boolean sum.AdaptiveWeights.acceptWeight_bounds: accepting weight lies between zero andD ^ n.AdaptiveWeights.acceptWeight_error: per-step wrong-answer bounds give an adaptive error bound.AdaptiveWeights.sum_error: amplified error remains small after summing a Boolean batch.
References #
A product over the successive replay prefixes, suitable for uniform counting products.
The recursive weighted computation sums precisely the accepting transcript weights.
If every step gives weight at most D / M to the wrong answer, the total acceptance weight
differs from the ideal deterministic answer by at most n / M of the total mass. Answers and
future weights may depend on the state, so the estimate includes adaptive computations.
Summing over m witness bits preserves a one-sixteenth total error when each of n steps
has error at most 2 ^ -(m + n + 4). All quantities are unnormalized integers.