Affine dispersers #
A Boolean function f on n bits is an affine disperser for dimension d when it is
nonconstant on the image of every injective affine map from BitString d
(Cslib.BitString.IsAffineDisperser), informally on every affine subspace of dimension d.
Dispersers for dimension d are dispersers for every larger dimension
(Cslib.BitString.IsAffineDisperser.mono), and no function is a disperser for dimension 0
(Cslib.BitString.not_isAffineDisperser_zero).
Affine dispersers exist for every dimension d with n (d + 1) + 1 < 2 ^ d
(Cslib.BitString.exists_isAffineDisperser), for instance for n = 100 and d = 11. There are at
most 2 ^ (n (d + 1)) affine maps from BitString d to BitString n
(Cslib.BitString.card_isAffine_le), and at most 2 · 2 ^ (2 ^ n - 2 ^ d) functions are constant
on the image of each injective one (Cslib.BitString.card_const_on_range_le); together these are
fewer than the 2 ^ 2 ^ n functions on n bits.
Main definitions #
Cslib.BitString.IsAffineDisperser: affine dispersers for dimensiond.
Main results #
Cslib.BitString.IsAffineDisperser.mono: dispersers for smaller dimension are dispersers for larger dimension.Cslib.BitString.not_isAffineDisperser_zero: no function is an affine disperser for dimension0.Cslib.BitString.exists_isAffineDisperser: affine dispersers exist for every dimensiondwithn (d + 1) + 1 < 2 ^ d.
References #
f is an affine disperser for dimension d: it is nonconstant on the image of every
injective affine map from BitString d. By Cslib.BitString.IsAffine.finrank_direction_map_top
each such image is an affine subspace of dimension d, so nonconstancy on d-dimensional affine
subspaces suffices (Cslib.BitString.isAffineDisperser_of_forall_exists_ne).
Instances For
Dispersers for dimension d are dispersers for every larger dimension.
No function is an affine disperser for dimension 0: it is constant on every point.
At most 2 · 2 ^ (2 ^ n - 2 ^ d) functions on n bits are constant on the image of an
injective map from BitString d.
Affine dispersers exist for every dimension d with n (d + 1) + 1 < 2 ^ d: fewer
functions on n bits are constant on the image of some injective affine map from BitString d
than there are functions.