Documentation

LeanPool.BrillNoetherGraphs.TreewidthGonality.Gonality.BrambleGonality

Theorem A: the bramble number bounds the gonality #

This is ยง2 of van Dobben de Bruyn--Gijswijt (arXiv:1407.7055): for every bramble ๐”… of a connected graph G,

order ๐”… โ‰ค divisorialGonality G + 1.

Combined with Seymour--Thomas duality this gives treewidth โ‰ค gonality (TreewidthGonality/Gonality/TreewidthGonality.lean), but the statement here is stronger and unconditional: the bramble number of G is at least treewidth G + 1 for any graph, so this bound implies the treewidth one and holds whether or not the duality theorem has been formalized.

Conventions #

Brambles live on underlyingSimpleGraph G โ€” treewidth and brambles do not see edge multiplicities. The chip-firing side does: outdegreeSet and edgeCut count with multiplicity, which only strengthens the inequalities used here (more parallel edges make a cut more expensive, never less).

Connectivity of a vertex set is ((underlyingSimpleGraph G).induce (โ†‘B : Set G.V)).Connected, the convention fixed in TreewidthGonality/Treewidth/TreeDecomposition.lean.

Supports and cuts #

The vertices carrying at least one chip.

Equations
Instances For

    An effective divisor has at least one chip on each support vertex, so the support is no bigger than the degree.

    The number of edges leaving U, counted with multiplicity.

    Equations
    Instances For
      theorem Utilities.Gonality.edgeCut_eq_sum_outdeg {G : CFGraph} (U : Finset G.V) :
      edgeCut G U = โˆ‘ v โˆˆ U, outdegreeSet G U v

      The cut is the total boundary of the vertices of U.

      The three lemmas of ยง2 #

      theorem Utilities.Gonality.support_containment {G : CFGraph} {D : CFDiv G} {U B : Finset G.V} (hD : effective D) (hBconn : (SimpleGraph.induce (โ†‘B) (underlyingSimpleGraph G)).Connected) (hmeet : (B โˆฉ divisorSupport D).Nonempty) (hmiss : B โˆฉ divisorSupport (setFiring G D U) = โˆ…) :
      B โІ U

      Lemma 2.2 (support containment). If firing U clears the support off a connected set B that previously met the support, then B was contained in U.

      Proved (2026-08-25); the paper's argument in two steps:

      1. Chips outside the fired set never decrease (le_set_firing_apply_of_not_mem), so any w โˆˆ B โˆ– U with D w > 0 would still carry a chip after firing, contradicting hmiss. Hence B โˆฉ divisorSupport D โІ U, and by hmeet the intersection B โˆฉ U is nonempty.
      2. If B โŠ„ U, connectedness of B gives an edge of underlyingSimpleGraph G inside B with one end u โˆˆ U and the other end w โˆˆ B โˆ– U (Utilities.Treewidth.exists_adj_across_of_walk). Then setFiring G D U w = D w + outdegreeSet G Uแถœ w โ‰ฅ 0 + numEdges G w u > 0, again contradicting hmiss.

      Note no legality hypothesis is needed: only effectivity of D and the two set_firing_apply_* formulas.

      theorem Utilities.Gonality.hitting_of_cut {G : CFGraph} (๐”… : Treewidth.Bramble (underlyingSimpleGraph G)) {U B B' : Finset G.V} (hB : B โˆˆ ๐”….members) (hB' : B' โˆˆ ๐”….members) (hBU : B โІ U) (hB'U : B' โІ Uแถœ) :
      โ†‘๐”….order โ‰ค edgeCut G U + 1

      Lemma 2.3 (a cut separating two members bounds the order). If a bramble has a member inside U and a member inside the complement of U, then its order is at most one more than the number of edges crossing the cut.

      Proved (2026-08-25) following the paper's ยง2 verbatim (Lemma 2.3 there, where the containments are named the other way round: their B' is our B).

      The naive hitting set "all endpoints of cut edges" has size edgeCut + (components of the cut graph), so it overshoots. The paper's construction, reproduced here, is one endpoint per cut edge plus one extra vertex, and the choice that makes the case analysis close is:

      • let X, Y be the two shores of the cut and, among all members contained in U, let Bโ‚€ be one whose trace Bโ‚€ โˆฉ X is inclusionwise minimal (realized here by minimizing (Bโ‚€ โˆฉ X).card) โ€” this is the step that is easy to miss and without which the lemma's case 1 is false;
      • let s be any vertex of Bโ‚€ โˆฉ X (nonempty because Bโ‚€ touches B');
      • for each cut edge xy with x โˆˆ X, y โˆˆ Y, select x if x โˆ‰ Bโ‚€ and y otherwise; S is the selection together with s, so |S| โ‰ค edgeCut + 1.

      S hits every member A:

      • A โˆฉ Y = โˆ…: then A โІ U, so A is a competitor for the minimality of Bโ‚€ โˆฉ X. Either some x โˆˆ (A โˆฉ X) โˆ– Bโ‚€, and then x was selected for its own cut edge, or A โˆฉ X โІ Bโ‚€ โˆฉ X, whence A โˆฉ X = Bโ‚€ โˆฉ X by minimality and s โˆˆ A.
      • A โˆฉ X = โˆ…: then A โІ Uแถœ, and the cut edge joining A to Bโ‚€ has its U-end in Bโ‚€, so its Uแถœ-end โ€” a vertex of A โ€” was selected.
      • both nonempty: connectedness puts a whole cut edge inside A, and one of its ends was selected.

      The multiplicity convention only helps: the cut is modelled by the finite set of ordered pairs (x, y) โˆˆ U ร— Uแถœ with numEdges > 0, whose cardinality is at most edgeCut.

      Theorem A #

      Theorem A (van Dobben de Bruyn--Gijswijt ยง2). Every bramble of a connected graph has order at most divisorialGonality G + 1.

      Proved (2026-08-25); this is the main theorem of ยง2 of the paper. The proof narrative, matching the code line for line:

      Let d = divisorialGonality G. Among all effective divisors D of degree d with rank G D โ‰ฅ 1 (a nonempty finite-to-choose-from family: nonempty by exists_divisor_of_divisorialGonality), choose one maximizing the number of members of ๐”… that divisorSupport D hits. This is a finite extremal choice: the quantity being maximized is (๐”….members.filter fun B => (B โˆฉ divisorSupport D).Nonempty).card, bounded by ๐”….members.card.

      Case 1: divisorSupport D hits every member. Then divisorSupport D is a hitting set, so ๐”….order โ‰ค (divisorSupport D).card โ‰ค deg D = d by Bramble.order_le_card_of_isHittingSet and card_divisorSupport_le_deg โ€” even better than claimed.

      Case 2: some member Bโ‚€ is unhit. Pick v โˆˆ Bโ‚€ (members are nonempty, Bramble.nonempty_of_mem). Run the nested legal chain of exists_nested_legal_chain at q = v: sets U 0 โІ U 1 โІ โ€ฆ โІ U (k-1) โІ univ.erase v with divisors Dแตข = fireChain G D U i, every Dแตข effective (fireChain_effective), every Dแตข linearly equivalent to D (fireChain_linear_equiv, so deg Dแตข = d and rank G Dแตข โ‰ฅ 1), and D_k v-reduced. By one_le_apply_of_q_reduced_of_rank_geq_one, D_k v โ‰ฅ 1, so D_k does hit Bโ‚€.

      Let i be the first index at which the family of members hit by D fails to be contained in the family hit by D_i. Such an i exists: otherwise the hit family only grows along the chain, while Bโ‚€ is newly hit at the end, so D_k would hit strictly more members than D, contradicting the extremal choice of D (D_k is a competitor: effective, degree d, rank โ‰ฅ 1). Note i โ‰ฅ 1 because D_0 = D.

      Write U = U (i-1), B' for the member hit by D (hence, by minimality of i, also by D_{i-1}) and unhit by D_i. Then:

      • support_containment applied to D_{i-1}, U, B' gives B' โІ U;
      • Bโ‚€ โІ Uแถœ, by the paper's second index: maximality of D also forces Bโ‚€ โˆฉ supp D_{i-1} = โˆ… (otherwise D_{i-1} hits strictly more members than D), and Bโ‚€ is hit by D_k, so there is a first j โ‰ฅ i-1 with Bโ‚€ โˆฉ supp D_j = โˆ… and Bโ‚€ โˆฉ supp D_{j+1} โ‰  โˆ…. Since firing (U j)แถœ undoes firing U j (set_firing_compl_set_firing), support_containment applied to D_{j+1} and the fired set (U j)แถœ gives Bโ‚€ โІ (U j)แถœ โІ (U (i-1))แถœ by nestedness.
      • hitting_of_cut for the pair (B', Bโ‚€) gives ๐”….order โ‰ค edgeCut G U + 1;
      • charge_of_legal/edgeCut_le_deg_of_legal for the legal set U at D_{i-1} gives edgeCut G U โ‰ค deg D_{i-1} = d.

      Hence ๐”….order โ‰ค d + 1 in both cases.

      The extremal choice is realized as Nat.sSup of the (nonempty, bounded by ๐”….members.card) set of achievable hit counts, which avoids having to know that the family of competitors is finite.