Internal obstructions #
The bad events of the local lemma are not the global proximity events "some point of
C_h is close to many other certificates": those depend on gate labels with an endpoint
outside the support, and so have no local dependency graph (Section 7).
Instead we keep only the necessary conditions that mention arcs internal to the support.
For a support S, an owner h ∈ S and a radius ell, a centered internal obstruction
is a family of putative zero sets Z j ⊆ Fin r — the coordinates of block j at which a
hypothetical point is 0 — such that Z h = ∅, every gate out of h lands in its target
zero set, and every non-owner spends at most ell on its own zeros plus its internal
misses. This is IntObstruction, and intObstruction_of_close is the implication of
Section 7: a genuine proximity configuration produces one. The converse is neither
claimed nor needed.
Section 8 analyses radius one. Every non-owner has already spent its whole budget on its
unique conflict with the owner, so the set of non-owners beating the owner has at most one
element, leaving exactly two patterns on a five-element support: Type A, where the owner
dominates the other four, and Type B, where a single vertex a beats the owner and both
beat the remaining three. In either case all six arcs among the non-owners are forced to
reproduce the owner's gate label in their head block, an event of probability r ^ (-6).
Section 9 consolidates radius two on a nine-element support into the single event
radiusTwoEvent of probability at most radiusTwoConst / r ^ 20.
The lemmas below take an IsTournament hypothesis rather than an IsDRTournamentWith
instance: none of them needs double regularity.
Adapted for Lean Pool from Timeroot/BS_Lam at commit
7bd39a8d41ee7910d3296d0477ad18f8fff9d870; ported to Lean Pool with proof and dependency cleanup.
The arc variables: an independent uniform gate label for each ordered pair.
Equations
- BSLambda.LLL.GateCfg ι r = (ι × ι → Fin r)
Instances For
Read a configuration of the product space as a gate labelling.
Equations
Instances For
Supports meeting in at most one vertex share no arc variable (Section 7). This is what makes the dependency graph of Section 10 — adjacency iff the supports share at least two vertices — a valid one.
The variables of a support S are its off-diagonal pairs: no event ever reads a loop
variable ω (v, v), since every arc is irreflexive and every conditioned owner gate (h, j)
has j a non-owner, and leaving the diagonal out is exactly what makes this true.
The arcs inside a vertex set #
The arcs internal to T: the ordered pairs of distinct vertices of T carrying a
forward arc. These are exactly the variables constrained by the radius-one flag event of
Section 8.1 (with T the non-owners of the flag) and by the radius-two branches of
Section 9 (with T the non-owners of the support).
Equations
- BSLambda.LLL.arcSet Arc T = {p ∈ T.offDiag | Arc p.1 p.2 = true}
Instances For
In a tournament the arcs of T and the reversed arcs of T together exhaust the
off-diagonal pairs of T.
A pair cannot carry an arc in both directions.
A tournament on T has exactly C(|T|, 2) internal arcs: six for the four non-owners
of a radius-one flag, and Q = 28 for the eight non-owners of Section 9.
Internal obstructions (Section 7) #
The misses of i inside T (Section 7): the out-neighbours j ∈ T of i whose
gate label γ i j avoids the putative zero set Z j, so that the gate literal of the arc
i → j is violated. A miss costs i one unit of its budget.
Equations
- BSLambda.LLL.missSet Arc γ Z T i = {j ∈ T | Arc i j = true ∧ γ i j ∉ Z j}
Instances For
The misses out of i only read gate labels of arcs with both endpoints in S, so they
are unchanged by a relabelling that fixes those arcs.
A centered internal obstruction of radius ell (Section 7). The sets Z j are
the putative zero coordinates of a hypothetical point in block j. Z h = ∅ because a
point of C_h is 1 throughout its own block; each gate out of the owner is forced into
its target zero set; and every other index of the support spends at most ell on its own
zeros together with its internal misses.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A centered internal obstruction only reads gate labels of arcs with both endpoints in its support, so it transports along any relabelling that fixes those arcs.
The zero set of a point of C_h in the owner's own block is empty.
The literals of P_i violated by x, spelled out: either a coordinate of the owner
block B_i where x is 0, or the gate coordinate of an outgoing arc where x is 1.
The violated literals of P_i split into the zeros of x in the owner block and the
outgoing gates whose target coordinate x fails to zero out.
The two halves of the violation set are disjoint: both halves shrink to the two halves
of Construction.disjoint_block_image_gateCoord, the owner block and the image of the full
out-neighbourhood.
The distance from x to C_i counts the zeros of x in block i together with the
gates out of i that miss their target zero set.
Section 7: a genuine proximity configuration yields an internal obstruction. Only external misses have been discarded, so the implication is valid.
Radius-one flags (Section 8) #
The data of a candidate radius-one flag on a five-element support: an owner (owner),
an optional second top vertex (top) — absent for Type A, present for Type B — and the
remaining bottom vertices (bot) (Section 8).
- owner : ι
The proposed owner.
- top : Option ι
The second top vertex, for
Type Bpatterns. - bot : Finset ι
The bottom vertices.
Instances For
A flag is a triple (owner, top, bot); both the DecidableEq and the Fintype
instance are transported along this equivalence. deriving DecidableEq does not work here:
the derived instance builds its own decision procedure for the Finset field instead of
using the ambient Finset.decidableEq, and Lean rejects it as not definitionally equal.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
Activeness #
Activeness of a flag (Section 8): the tournament must realise the pattern. For
Type A the owner dominates four vertices; for Type B the second top vertex beats the
owner and both top vertices beat the three bottom ones.
Consumers should use the two unfolding lemmas Flag1.active_iff_of_top_eq_none and
Flag1.active_iff_of_top_eq_some, or the named accessors in the Flag1.Active namespace,
rather than unfolding this definition.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Activeness of a Type A flag: the owner dominates its four bottom vertices.
Activeness of a Type B flag: the owner, the second top vertex a and the three bottom
vertices are distinct, a beats the owner, and both top vertices dominate every bottom
vertex.
The owner of an active flag is not one of its non-owners.
The owner of an active flag is not one of its bottom vertices.
An active flag has exactly four non-owners.
An active flag has a five-element support.
The flag event (Section 8.1) #
An active flag has exactly six internal arcs among its four non-owners: C(4, 2) = 6.
Every non-owner arc of an active flag has its head in F.bot, so the owner's gate into
that head block is defined; and its tail is not the owner, so its label is a variable
distinct from the conditioned owner gates.
The active radius-one flag event (Section 8.1): every internal non-owner arc selects exactly the zero coordinate forced by the owner's gate in its head block.
Equations
- BSLambda.LLL.flagEvent Arc F = {ω : BSLambda.LLL.GateCfg ι r | ∀ p ∈ BSLambda.LLL.arcSet Arc F.nonOwners, ω p = ω (F.owner, p.2)}
Instances For
Both variables read by the flag event at an internal arc are variables of its support.
The flag event is determined by the arc variables inside its support.
The owner gates conditioned on in Section 8.1 are disjoint from the internal arcs, so the two families of variables are independent.
The owner gate into the head block of an internal arc is one of the conditioned gates.
Section 8.1: the flag event pins one uniform label per internal arc, each to a single value read off the owner gates.
Section 8.1: an active radius-one flag has probability r ^ (-6). After
conditioning on the owner gates, the six non-owner arc labels are independent and uniform,
and each is pinned to a single value.
The two radius-one patterns #
Under a radius-one obstruction centred at h, a vertex j dominated by h has its
zero set pinned to the single owner gate γ h j, and hence no internal miss of its own.
Under a radius-one obstruction centred at h, a vertex j that beats h already
spends its whole budget on the miss j → h, so Z j = ∅ and it has no other miss.
Section 8: at most one vertex of the support beats the centre h; two of them
would give one a second internal miss.
Section 8: a radius-one obstruction realises exactly one of the two patterns —
either h dominates the whole support (Type A), or a single a beats h and the two of
them jointly dominate the rest (Type B).
Section 8: every non-owner arc into a dominated j carries the owner's label,
since Z j is the singleton {γ h j}.
The Type B flag built from a centre h and the unique a beating it is active with
support S.
Section 8: all internal arcs of the flag produced from a radius-one obstruction carry the owner's gate label.
Section 8: on a five-element support a radius-one internal obstruction forces one
of the two patterns. If h → j then |Z j| = 1 and j can have no internal miss; if
j → h then the arc j → h is automatically a miss, so Z j = ∅ and again j has no
other miss. Hence any two vertices beating h would give one of them a second miss, so at
most one vertex beats h.
Section 8: the flag produced from a radius-one obstruction satisfies its event.
Radius-two obstructions (Section 9) #
The consolidated radius-two internal obstruction on a nine-element support (Section 9): some vertex of the support owns a radius-two internal obstruction.
Equations
- BSLambda.LLL.radiusTwoEvent Arc S = {ω : BSLambda.LLL.GateCfg ι r | ∃ h ∈ S, BSLambda.LLL.IntObstruction Arc 2 S h (BSLambda.LLL.toGamma ω)}
Instances For
Membership in the radius-two event.
The radius-two event is determined by the arc variables inside its support.
The Section 9 constant for a single owner: l of the eight non-owners spend their
residual discrepancy on a discretionary zero (C(8,l) choices), at most C(28, 8-l) arcs are
exceptional, and each of the remaining 20 + l arc labels has two admissible values.
Equations
- BSLambda.LLL.radiusTwoOwnerConst = 2 ^ 20 * ∑ l ∈ Finset.range 9, Nat.choose 8 l * Nat.choose 28 (8 - l) * 2 ^ l
Instances For
The constant radiusTwoConst = 9 · 2 ^ 20 · ∑_{l=0}^{8} C(8,l) C(28,8-l) 2 ^ l of Section 9.
Equations
- BSLambda.LLL.radiusTwoConst = 1300311466573824
Instances For
radiusTwoConst has one radiusTwoOwnerConst for each of the nine possible owners.
The missing arcs of T: the internal arcs whose gate label avoids the target zero
set. Section 9 covers these by an exceptional set X.
Equations
- BSLambda.LLL.missArcs Arc γ Z T = {p ∈ BSLambda.LLL.arcSet Arc T | γ p.1 p.2 ∉ Z p.2}
Instances For
The discretionary vertices of T: those whose zero set is not just the owner gate,
so that they have spent their residual discrepancy on a zero of their own.
Equations
- BSLambda.LLL.discSet γ Z T h = {j ∈ T | ¬Z j ⊆ {γ h j}}
Instances For
One branch of the Section 9 enumeration: the owner is h, the non-owners in L
spend their residual discrepancy on the discretionary zero w, the arcs of X are the
exceptional (missing) ones, and every other internal non-owner arc hits the two-element
target set of its head block.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Section 9: the consolidated event is the union over the nine possible owners.
The eight conditioned owner gates are disjoint from the arcs among the non-owners.
The eight non-owners of a nine-element support span Q = C(8, 2) = 28 internal arcs.
Section 9, budget at one non-owner. If h → j then γ h j ∈ Z j; if j → h then
the arc j → h is an automatic miss because Z h = ∅. Either way Z j is contained in a
two-element set consisting of the owner gate and one discretionary zero, and j has at most
one further internal discrepancy, which it loses if it uses the discretionary zero.
Section 9: if l non-owners take a discretionary zero, the total number of misses
among the twenty-eight internal non-owner arcs is at most 8 - l.
Section 9: every radius-two internal obstruction with owner h lies in one of the
enumerated branches.
Section 9: the radius-two event for a fixed owner is covered by the branches.
Section 9: in a fixed branch the 28 - |X| remaining arc labels are independent and
uniform after conditioning on the owner gates, and each must hit a target set of size at
most two.
Section 9: evaluating the triple sum of the branch bounds: collapse the two inner constant sums, then regroup the outer powerset sum by cardinality.
Section 9: the radius-two obstruction for a fixed owner has probability at most
radiusTwoConst / (9 * r ^ 20).
Section 9: the consolidated radius-two obstruction on a nine-element support has
probability at most radiusTwoConst / r ^ 20. Each non-owner has one residual discrepancy;
if l of them spend it on a discretionary zero there are at most C(8,l) r ^ l choices, at
most C(28, 8-l) choices of an exceptional superset of the missing arcs, and each of the
remaining 20 + l arc labels must hit a target set of size at most two.