Documentation

LeanPool.BrillNoetherGraphs.Utilities.Gonality.LegalFiring

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

— 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.

theorem Utilities.Gonality.effective_add_prin_truncate {G : CFGraph} {D : CFDiv G} {x : firingScript G} (hD : effective D) (hDx : effective (D + (prin G) x)) (c : ℤ) :
effective (D + (prin G) fun (v : G.V) => max (x v - c) 0)

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 #

def Utilities.Gonality.fireChain (G : CFGraph) (D : CFDiv G) (U : ℕ → Finset G.V) :
ℕ → CFDiv G

fireChain G D U i is the result of firing U 0, U 1, …, U (i-1) in turn.

Equations
Instances For
    @[simp]
    theorem Utilities.Gonality.fireChain_zero {G : CFGraph} (D : CFDiv G) (U : ℕ → Finset G.V) :
    fireChain G D U 0 = D
    @[simp]
    theorem Utilities.Gonality.fireChain_succ {G : CFGraph} (D : CFDiv G) (U : ℕ → Finset G.V) (i : ℕ) :
    fireChain G D U (i + 1) = setFiring G (fireChain G D U i) (U i)
    theorem Utilities.Gonality.fireChain_linear_equiv {G : CFGraph} (D : CFDiv G) (U : ℕ → Finset G.V) (i : ℕ) :
    linearEquiv G D (fireChain G D U i)

    Every divisor in a firing chain is linearly equivalent to the initial one.

    theorem Utilities.Gonality.fireChain_effective {G : CFGraph} {D : CFDiv G} (hD : effective D) {U : ℕ → Finset G.V} {k : ℕ} (hlegal : ∀ i < k, legalSet G (fireChain G D U i) (U i)) (i : ℕ) :
    i ≤ k → effective (fireChain G D U i)

    Every divisor in a chain of legal firings is effective.

    The nested chain (van Dobben de Bruyn--Gijswijt, Lemma 1.3) #