Shifted distinctness tests #
The counting argument of Lecomte and Ramakrishnan, Sections 3 and 4.
A test shifts one weight per group element and checks that all shifted weights are distinct. The
prescribed sum of shifts makes this a one-sided certificate for the sum of the weights. For each
valid weight vector, the accepting shifts are in bijection with permutations of the group, so there
are exactly |G|!.
We sample from all |G| ^ |G| shifts and reject shifts with the wrong sum. The paper instead
samples only shifts with the prescribed sum. This slightly weaker success density still gives the
same exponential bound and avoids a conditional sampling space. The argument works for any finite
abelian group; the circuit construction uses ZMod k.
Main definitions #
Cslib.Circuits.Boolean.ShallowSymmetric.ShiftTest: the shifted distinctness tests.
Main results #
Cslib.Circuits.Boolean.ShallowSymmetric.ShiftTest.sound: an accepting test certifies the sum of the weights.Cslib.Circuits.Boolean.ShallowSymmetric.card_acceptingShifts: a valid weight vector is accepted by exactly|G|!shifts.
References #
Sum of all residues of the finite group.
Instances For
A shifted distinctness test certifying the target sum t.
Instances For
Passing a shifted distinctness test certifies the sum of the weights.
For a valid weight vector, choosing a permutation determines the shifts.
Accepting shifts are precisely permutations translated by the weight vector.
Instances For
Exactly |G|! shifts accept each weight vector with the target sum.
Some test accepts a weight vector exactly when its sum is the target.
Distinctness is a conjunction of constraints involving only two weights.