Legal set firings and the nested reduction chain #
This module supplies the divisor-theoretic input of the van Dobben de
Bruyn--Gijswijt proof that treewidth ≤ gonality: their Lemma 1.3, which says
that an effective divisor can be driven to its q-reduced form through a
nested chain of legal set firings, every intermediate divisor effective.
The dependency (chip-firing-with-lean) supplies the legal-set vocabulary,
set-firing formulas, script primitives, and reduced-divisor chip test. What it
does not yet supply is the truncation lemma or nestedness of the firing sets,
which is what the extremal argument in
TreewidthGonality/Gonality/BrambleGonality.lean needs.
Conventions (multiplicity!) #
outdegreeSet G U v = ∑_{u ∉ U} numEdges G v u counts with edge multiplicity,
matching both setFiring and the dependency's qReduced. Firing every
vertex of U exactly once satisfies
setFiring G D U v = D v - outdegreeSet G U vforv ∈ U;setFiring G D U v = D v + outdegreeSet G Uᶜ vforv ∉ U
— chips only ever leave the fired set and only ever arrive outside it.
A set U is legal for D when firing it keeps D effective, i.e.
D u ≥ outdegreeSet G U u for all u ∈ U.
Firing scripts and truncation #
The nested chain below is obtained as the level-set decomposition of the
firing script that carries D to its q-reduced representative, so this section
records the one remaining piece of script calculus it needs.
Firing everything once changes nothing, so firing Uᶜ undoes firing U.
This is what turns the step Dⱼ₋₁ → Dⱼ around in the main theorem: Dⱼ₋₁ is
obtained from Dⱼ by firing the complement of U j.
The truncation lemma. If D and D + prin G x are both effective then so
is every intermediate divisor obtained by truncating the script from below:
D + prin G (x - c)⁺ is effective for every c.
This is the whole content of the nested chain: the level sets of x fire in
increasing order and every partial sum is such a truncation.
Iterated firing #
fireChain G D U i is the result of firing U 0, U 1, …, U (i-1) in turn.
Equations
- Utilities.Gonality.fireChain G D U 0 = D
- Utilities.Gonality.fireChain G D U i.succ = setFiring G (Utilities.Gonality.fireChain G D U i) (U i)
Instances For
Every divisor in a firing chain is linearly equivalent to the initial one.
The nested chain (van Dobben de Bruyn--Gijswijt, Lemma 1.3) #
The nested legal chain. From an effective divisor D and a vertex q
there is a finite chain of legal firings, with the fired sets nested and
avoiding q, whose end result is q-reduced.
Proved (2026-08-25); this is Lemma 1.3 of van Dobben de Bruyn--Gijswijt (arXiv:1407.7055), and only existence is claimed — the paper never uses uniqueness of the chain.
The route actually taken is the paper's level-set decomposition, not the
"maximal legal set" route this docstring used to recommend. That route is a
dead end: a set U legal for D is not in general legal for
setFiring G D U (that would need D u ≥ 2 · outdegreeSet G U u), so maximality at consecutive
steps
does not force nestedness. What works instead:
- take
D', theq-reduced representative ofD(exists_q_reduced_representative), effective becauseDis (effective_of_winnable_and_q_reduced); - write
D' = D + prin G xand normalize the script byx q = 0(prin_sub_const); x ≥ 0: the bottom level setW = {v | x v = min x}is legal forD'— it is the first firing of the reverse chain, soeffective_add_prin_truncateapplies — and aq-reduced divisor admits no nonempty legal subset ofuniv.erase q, forcingq ∈ W, i.e.min x = x q = 0;- the chain is the level-set family
U i = {v | K - i ≤ x v}withK = max x, fired in increasing orderi = 0, …, K-1. Its partial sums are exactly the truncations(x - (K - t))⁺, soeffective_add_prin_truncatemakes every intermediate divisor effective, which is the same thing as legality of each step; and the last truncation isxitself, so the chain ends atD'.
The only real content is effective_add_prin_truncate, four lines of case
analysis on x v ≤ c.