Sweeps and the frontier counting lemma #
A sweep of a set of inputs S ⊆ U^ι reveals the coordinates of an input a few at a time:
∅ = X 0, X 1, ..., X T = ι. At each time t an input has a message μ t x, which may
depend on the whole input. The defining property is that messages permit splicing:
if two inputs of S have the same message at time t, then
the revealed part of one may be spliced onto the unrevealed part of the other without leaving
S. The last message, sent once everything is revealed, carries no information.
Between times t and t + 1 an input x takes the transition
(μ t x, μ (t + 1) x, x|_{X (t + 1) \ X t}): the message before the step, the message after
it, and the coordinates revealed during it.
The frontier counting lemma (Sweep.ncard_le). If S is K-rectangle-free and has at
least K elements, then
|S| ≤ (K - 1) ^ 2 · ∑_t #{transitions taken at step t}.
The proof charges each input x to the first time t + 1 at which the inputs sharing its
message have at least K distinct revealed parts. Their rectangular hull lies inside S, so
they have fewer than K distinct unrevealed parts. At time t the inputs sharing the message
of x still had fewer than K distinct revealed parts. An input charged to a step is
determined by its transition, its part revealed by time t, and its part unrevealed at time
t + 1; hence at most (K - 1) ^ 2 inputs share a charged step and a transition.
Nothing here mentions graphs or circuits: a sweep is an abstract family of splicing messages.
Its transitions alone need not form a correct branching program.
Constraint networks swept along a vertex ordering produce sweeps whose messages are the values
on the edges of the frontier (Frontier.Network.sweep).
Main definitions #
Frontier.Sweep S M: a sweep ofSwith messages inM.Frontier.Sweep.transition: the transition taken by an input at a step.
Main results #
Frontier.Sweep.ncard_le: the frontier counting lemma.
A sweep of a set of inputs S: coordinates revealed over time, starting from none and
ending with all, and a message at each time such that inputs of S sending the same message
can exchange their unrevealed parts.
- length : ℕ
The number of steps.
The coordinates revealed by time
t.Nothing is revealed at the start.
Everything is revealed at the end.
- message : ℕ → (ι → U) → M
The message at time
t, possibly depending on the whole input. - message_length (x : ι → U) : x ∈ S → ∀ y ∈ S, self.message self.length x = self.message self.length y
The final message is the same for all inputs of
S. - splice (t : ℕ) (x : ι → U) : x ∈ S → ∀ y ∈ S, self.message t x = self.message t y → ∀ (z : ι → U), Set.EqOn z x (self.revealed t) → Set.EqOn z y (self.revealed t)ᶜ → z ∈ S
Messages are sufficient: two inputs of
Swith the same message at timetmay be spliced, the revealed part of one with the unrevealed part of the other, insideS.
Instances For
The proof of the counting lemma #
The distinct parts unrevealed at time t among the peers of x.
Equations
- P.futureSide t x = (P.revealed t)ᶜ.domRestrict '' P.peers t x
Instances For
The rectangular hull of the peers lies inside S: one of its sides is small.
The total number of transitions used by accepted inputs.
Equations
- P.transitionCount = ∑ t ∈ Finset.range P.length, (P.transition t '' S).ncard
Instances For
Threshold charging only needs thin message classes, with asymmetric thresholds.
The frontier counting lemma. A K-rectangle-free set with at least K elements has at
most (K - 1) ^ 2 elements per transition.