Correlated sampling #
Two parties hold distributions P and Q on a finite set and share randomness, but do not
communicate. Correlated sampling lets each party output a sample with exactly its own distribution
so that the two samples agree with probability at least (1 - δ) / (1 + δ) ≥ 1 - 2δ, where δ is
the statistical distance between P and Q. This is the sampling step of Holenstein's proof of
the parallel repetition theorem Holenstein, Lemma 8.
Holenstein's parties scan a shared infinite sequence of uniform points of S × [0, 1] and output
the first point under the graph of their own distribution. We use a finite version of the same
idea. For a finite family P : I → PMF S, the region under the graph of each P i is a union of
finitely many cells (Cslib.Probability.CorrelatedSampling.Cell): above each s, the intervals
between consecutive values P i s. The shared randomness orders the cells by drawing them without
replacement, each draw proportional to the length of the cell (weightedOrder). In such an order
the first cell inside any region is distributed as a single draw from that region
(map_firstIn_weightedOrder). Party i outputs the point s of the first cell under the graph of
P i (sample), so its output has distribution P i (map_sample). If the first cell under the
graph of P i ⊔ P j lies under the graph of P i ⊓ P j, both parties output it, which gives the
agreement bound (agree_ge, disagree_le).
The finite construction of the shared randomness is an adaptation of Holenstein's argument; it proves the same bound.
Main definitions #
Cslib.Probability.CorrelatedSampling.weightedOrder: drawing all elements of a finite type without replacement, each draw proportional to a weight.Cslib.Probability.CorrelatedSampling.shared: the shared randomness of correlated sampling.Cslib.Probability.CorrelatedSampling.sample: the output of partyi.
Main results #
Cslib.Probability.CorrelatedSampling.map_firstIn_weightedOrder: the first element of a set in a weighted order is a weighted draw from that set.Cslib.Probability.CorrelatedSampling.map_sample: partyioutputs a sample ofP i.Cslib.Probability.CorrelatedSampling.agree_ge: the two outputs agree with probability at least(1 - δ) / (1 + δ).Cslib.Probability.CorrelatedSampling.disagree_le: they disagree with probability at most2δ.