Counting partial assignments and random restrictions #
Over a finite index type ι, the partial assignments extending ρ₀ with exactly ℓ free
coordinates number (m choose ℓ) 2 ^ (m - ℓ) for the m free coordinates of ρ₀
(PartialAssignment.card_extensions), so (|ι| choose ℓ) 2 ^ (|ι| - ℓ) partial assignments leave
exactly ℓ coordinates free (PartialAssignment.card_withFree). Drawing such a partial assignment
uniformly is drawing a set of ℓ free coordinates and a word for the others
(PartialAssignment.sum_card_filter_outside), and double counting relates partial assignments
with different numbers of free coordinates (PartialAssignment.sum_card_filter_extensions,
PartialAssignment.sum_extensions_update); these are the random restrictions of Subbotovskaya's
method and Håstad's switching lemma.
Main definitions #
Cslib.BitString.PartialAssignment.extensions: the extensions ofρ₀leavingℓcoordinates free.Cslib.BitString.PartialAssignment.withFree: the partial assignments leavingℓcoordinates free.
Main results #
Cslib.BitString.PartialAssignment.card_extensions,Cslib.BitString.PartialAssignment.card_withFree,Cslib.BitString.PartialAssignment.card_filter_extensions_free_subset,Cslib.BitString.PartialAssignment.card_extensions_le_two_mul_card_filter_forall_nonempty: counting partial assignments by their free coordinates and union-bounding block survival.Cslib.BitString.PartialAssignment.sum_card_filter_outside,Cslib.BitString.PartialAssignment.sum_card_filter_extensions,Cslib.BitString.PartialAssignment.sum_extensions_update,Cslib.BitString.PartialAssignment.mul_card_extensions_sub_one: drawing random restrictions and double counting extensions.Cslib.BitString.PartialAssignment.mul_card_filter_withFree_le: two stages of restrictions, counted.
References #
Counting extensions #
The extensions of ρ₀ leaving exactly ℓ coordinates free.
Instances For
ρ is in ρ₀.extensions ℓ exactly when it extends ρ₀ and leaves exactly ℓ coordinates
free.
There are (m choose ℓ) 2 ^ (m - ℓ) extensions of ρ₀ leaving ℓ of the m free
coordinates of ρ₀ free.
The number of extensions in ρ₀.extensions ℓ whose free coordinates lie inside U ⊆ ρ₀.free is
C(|U|, ℓ) * 2 ^ (#ρ₀.free - ℓ).
The partial assignments leaving exactly ℓ coordinates free: the extensions of the one fixing
nothing.
Instances For
ρ is in withFree ι ℓ exactly when it leaves exactly ℓ coordinates free.
There are (|ι| choose ℓ) 2 ^ (|ι| - ℓ) partial assignments leaving exactly ℓ coordinates
free.
Drawing random restrictions #
Drawing a free set and a word: fixing the coordinates outside a set J of ℓ
coordinates to a word z draws every partial assignment with ℓ free coordinates 2 ^ ℓ
times.
Double counting extensions. Summed over the partial assignments with ℓ free coordinates,
the extensions with ℓ' ≤ ℓ free coordinates satisfying P count each partial assignment with ℓ'
free coordinates satisfying P once for each of the C(|ι| - ℓ', ℓ - ℓ') ones it extends.
Double counting one-step extensions. Summing g (update ρ i (some b)) over all extensions
ρ ∈ ρ₀.extensions t, free coordinates i ∈ ρ.free, and constants b : Bool counts each
extension ρ' ∈ ρ₀.extensions (t - 1) once for each of the #ρ₀.free - (t - 1) coordinates of
ρ₀.free fixed by ρ'.
Relating the number of extensions with t - 1 and t free coordinates:
(#ρ₀.free - (t - 1)) * #(ρ₀.extensions (t - 1)) = 2 * t * #(ρ₀.extensions t).
Union bound for block survival: if ρ₀ has b * m free coordinates and B 0, …, B (b - 1)
are b subsets of ρ₀.free of size m, then for 1 ≤ b and 2 * b ≤ 2 ^ r, at least half of
all extensions in ρ₀.extensions (b * r) leave at least one free coordinate in every block
B j.
Two stages of restrictions, counted. Drawing a restriction with ℓ' free bits by first
drawing one with ℓ ≥ ℓ' free bits and then an extension of it: if at most a G / c fraction of
the restrictions with ℓ free bits satisfy B, and for each other one at most an H / c fraction
of its extensions with ℓ' free bits satisfy B', then at most a (G + H) / c fraction of the
restrictions with ℓ' free bits satisfy B'.