The long code, odd Boolean functions, folding, and projections of characters #
The long code of a label a : ι is the dictator r ↦ r a, the evaluation Function.eval a on
ι → Bool (BitString.longCode) Arora and Barak, Chapter 22. It is the Hadamard
encoding of the unit vector of a (BitString.longCode_eq_hadamardCode), so a table within
relative distance 1/4 of a long code determines its label
(BitString.eq_of_hammingDist_longCode_lt).
A Boolean function B : (ι → Bool) → Bool is odd (BitString.IsOdd) when complementing its
input complements its output, B (f + 1) = !B f; in ±1 notation this is F (-x) = -F x, and
such functions are also called self-dual. In PCP constructions, odd long code tables are called
folded. Every long code is odd (BitString.isOdd_longCode), every table can be folded around a
coordinate into an odd one (BitString.foldTable), and the Fourier coefficients of an odd function
vanish on every set of even cardinality (BitString.IsOdd.fourierCoeff_of_even), in particular on
∅ (BitString.IsOdd.fourierCoeff_empty).
For a map π : β → γ, the mod-2 projection BitString.projectSet π T of T : Finset β is the
set of points of γ with an odd number of preimages in T. Pulling a character back along π
projects its frequency set: chi T (f ∘ π) = chi (projectSet π T) f
(BitString.chi_comp_eq_chi_projectSet) Håstad, O'Donnell, Chapter 7.
Main definitions #
Cslib.BitString.longCode: the long code of a label.Cslib.BitString.IsOdd: odd (folded) Boolean functions.Cslib.BitString.foldTable: folding a table around a coordinate.Cslib.BitString.projectSet: the mod-2 projection of a set along a map.
Main results #
Cslib.BitString.longCode_eq_hadamardCode,Cslib.BitString.eq_of_hammingDist_longCode_lt: the long code is a Hadamard code, and unique decoding of the long code.Cslib.BitString.isOdd_longCode,Cslib.BitString.isOdd_foldTable: long codes and folded tables are odd.Cslib.BitString.IsOdd.fourierCoeff_empty,Cslib.BitString.IsOdd.fourierCoeff_of_even: odd functions have no Fourier weight on sets of even cardinality.Cslib.BitString.chi_comp_eq_chi_projectSet: pulling a character back along a map.
References #
The long code #
The long code of a label a : ι: the dictator r ↦ r a on ι → Bool, that is, the
evaluation Function.eval a Arora and Barak, Chapter 22. It is the Hadamard
encoding of the unit vector of a (longCode_eq_hadamardCode).
Instances For
The long code of a is the Hadamard encoding of the unit vector of a.
Unique decoding of the long code: a Boolean function within relative distance less than
1/4 of the long codes of a and of b forces a = b.
Odd functions and folding #
A Boolean function B : (α → Bool) → Bool is odd when complementing the input
(f + fun _ => true) complements the output. In ±1 notation this says F (-x) = -F x; such
functions are also called self-dual, and odd long code tables are called folded.
Instances For
An odd function has zero empty Fourier coefficient: its ±1 values at f and
f + fun _ => true cancel.
An odd function has Fourier coefficient 0 on every set of even cardinality.
Mod-2 projection of subsets and character pullback #
The mod-2 projection π₂(T) of T : Finset β along π : β → γ: the set of y : γ
whose fiber in T under π has odd cardinality Håstad.
Instances For
y lies in the mod-2 projection of T exactly when its fiber in T has odd cardinality.
The mod-2 projection of the empty set is empty.
Every element of projectSet π T lies in the image of T under π.
The mod-2 projection of T along π is contained in the image T.image π.
The mod-2 projection never increases cardinality: #(projectSet π T) ≤ #T.
Inserting x ∉ T toggles π x in projectSet π T.
Pulling a character back along π projects the frequency set by projectSet π:
chi ℝ T (f ∘ π) = chi ℝ (projectSet π T) f.