Highlights #
This is the repository's auditable, reader-facing statement layer. The definitions used in theorem statements are repeated here in full: they do not alias or invoke the implementation library. Proof bodies, below the statement vocabulary, explicitly cross from these local definitions to the repository's proved API.
The current installments record Brill--Noether existence through genus five, CDPR and its sharp mixed-chain extensions, the tricycle counterexample to invariance of divisorial gonality under regular subdivision, and the treewidth lower bound on divisorial gonality. Further headline theorems can be added one at a time in the same style.
Self-contained statement vocabulary #
A finite, nonempty, loopless undirected multigraph. An undirected edge is
stored by either ordering of its endpoints; numEdges below forgets that
ordering.
- V : Type u
The finite nonempty vertex type of the loopless multigraph.
- instDecidableEq : DecidableEq self.V
The multiset of edges, retaining parallel-edge multiplicities through ordered endpoint pairs.
Instances For
A graph is connected when every nontrivial vertex cut has a crossing edge.
Equations
- Highlights.graphConnected G = ∀ (S : Finset G.V), (∃ (v : G.V) (w : G.V), v ∈ S ∧ w ∉ S) → ∃ v ∈ S, ∃ w ∉ S, Highlights.numEdges G v w > 0
Instances For
The genus (cyclomatic number) |E| - |V| + 1.
Equations
- Highlights.genus G = ↑G.edges.card - ↑(Fintype.card G.V) + 1
Instances For
The degree (valence) of a vertex.
Equations
- Highlights.vertexDegree G v = ∑ u : G.V, ↑(Highlights.numEdges G v u)
Instances For
A divisor is an integer-valued function on the vertices.
Equations
- Highlights.CFDiv G = (G.V → ℤ)
Instances For
The principal divisor obtained by firing one vertex once.
Equations
- Highlights.firingVector G v w = if w = v then -Highlights.vertexDegree G v else ↑(Highlights.numEdges G v w)
Instances For
The subgroup generated by all vertex firings.
Equations
Instances For
Two divisors are linearly equivalent when their difference is principal.
Equations
- Highlights.linearEquiv G D D' = (D' - D ∈ Highlights.principalDivisors G)
Instances For
A divisor is effective when it has no negative coefficient.
Equations
- Highlights.effective D = ∀ (v : G.V), D v ≥ 0
Instances For
The additive monoid of effective divisors.
Equations
- Highlights.Eff G = { carrier := {D : Highlights.CFDiv G | Highlights.effective D}, add_mem' := ⋯, zero_mem' := ⋯ }
Instances For
A divisor is winnable when it is linearly equivalent to an effective divisor.
Equations
- Highlights.winnable G D = ∃ D' ∈ Highlights.Eff G, Highlights.linearEquiv G D D'
Instances For
The degree of a divisor, i.e. its total number of chips.
Equations
- Highlights.deg = { toFun := fun (D : Highlights.CFDiv G) => ∑ v : G.V, D v, map_zero' := ⋯, map_add' := ⋯ }
Instances For
The effective divisors of a prescribed degree.
Equations
- Highlights.effOfDegree G k = {E : Highlights.CFDiv G | Highlights.effective E ∧ Highlights.deg E = k}
Instances For
rankGeq G D k means that removing any effective divisor of degree k
from D leaves a winnable divisor.
Equations
- Highlights.rankGeq G D k = ∀ E ∈ Highlights.effOfDegree G k, Highlights.winnable G (D - E)
Instances For
rankEq G D r means that the Baker--Norine rank of D is exactly r.
Equations
- Highlights.rankEq G D r = (Highlights.rankGeq G D r ∧ ¬Highlights.rankGeq G D (r + 1))
Instances For
gonalityLeq G k means that G has a degree-k divisor of rank at
least one. This deliberately states the witness property directly, without
introducing a minimum or an infimum.
Equations
- Highlights.gonalityLeq G k = ∃ (D : Highlights.CFDiv G), Highlights.deg D = k ∧ Highlights.rankGeq G D 1
Instances For
gonalityEq G k means that degree k supports a rank-one divisor and
no smaller degree does. This witness formulation avoids hiding the statement
behind an infimum.
Equations
- Highlights.gonalityEq G k = (Highlights.gonalityLeq G k ∧ ∀ d < k, ¬Highlights.gonalityLeq G d)
Instances For
Brill--Noether generality and twice-marked graphs #
The Brill--Noether number rho(g,r,d).
Equations
- Highlights.brillNoetherNumber G r d = Highlights.genus G - (r + 1) * (Highlights.genus G - d + r)
Instances For
Existence of a degree-d divisor of rank at least r.
Equations
- Highlights.brillNoetherExists G r d = ∃ (D : Highlights.CFDiv G), Highlights.deg D = d ∧ Highlights.rankGeq G D r
Instances For
The nonexistence half of Brill--Noether generality: every divisor that exists lies in the range predicted by the Brill--Noether number.
Equations
- Highlights.brillNoetherGeneral G = ∀ (r d : ℤ), 0 ≤ r → Highlights.brillNoetherExists G r d → 0 ≤ Highlights.brillNoetherNumber G r d
Instances For
A graph with an ordered left and right marked vertex. The graph is packaged existentially so twice-marked graphs with different vertex types can occur in one list.
- graph : CFGraph
The underlying finite loopless multigraph with two distinguished vertices.
The first distinguished vertex, used as the incoming mark when joining a chain.
The second distinguished vertex, used as the outgoing mark when joining a chain.
Instances For
A harmless one-vertex value, used for an empty chain and for malformed path-length data.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Join two twice-marked graphs by taking their disjoint union and adding one bridge from the right mark of the first to the left mark of the second. The new marks are the two outside marks.
This deliberately uses a bridge rather than identifying the two vertices; it is the most literal finite-graph presentation of a chain.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Glue a list from left to right. The empty list has the harmless one-vertex value above.
Equations
Instances For
The two complementary arc lengths of a twice-marked cycle.
Equations
Instances For
Vertices of the cycle: the two marked endpoints and the disjoint interior vertices of its top and bottom arcs.
Equations
- Highlights.TwiceMarkedCycleVertex m n = (Fin 2 ⊕ (arc : Fin 2) × Fin (Highlights.twiceMarkedCycleLength m n arc - 1))
Instances For
Unit steps along the two arcs.
Equations
- Highlights.TwiceMarkedCycleStep m n = ((arc : Fin 2) × Fin (Highlights.twiceMarkedCycleLength m n arc))
Instances For
Left endpoint of a unit step along a cycle arc.
Equations
Instances For
Right endpoint of a unit step along a cycle arc.
Equations
Instances For
A cycle marked at the endpoints of two complementary arcs of lengths
m and n. If either length is zero, the value is the documented junk
graph trivialTwiceMarkedGraph.
Equations
- One or more equations did not get rendered due to their size.
Instances For
torsionGt M n says that no positive multiple k ≤ n of the two
marked points is linearly equivalent. Equivalently, the order of [u-v] in
the Jacobian is greater than n (including the infinite-order convention).
Equations
- Highlights.torsionGt M n = ∀ (k : ℕ), 1 ≤ k → k ≤ n → ¬Highlights.linearEquiv M.graph (↑k • Highlights.oneChip M.u) (↑k • Highlights.oneChip M.v)
Instances For
CDPR genericity for integer cycle lengths. There are at least two loops;
all arc lengths are positive, ruling out the junk branch of
twiceMarkedCycle; and no two arc lengths have a ratio of positive
numerator-plus-denominator at most 2g-2, where g is the number of cycles.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The bridge-chain built from a list of pairs of cycle arc lengths.
Equations
- Highlights.chainOfCycles lengths = Highlights.glueChain (List.map (fun (mn : ℕ × ℕ) => Highlights.twiceMarkedCycle mn.1 mn.2) lengths)
Instances For
Vertices of Theta a b c: the top and bottom vertices, together with
three disjoint sets of a - 1, b - 1, and c - 1 interior vertices.
Equations
- Highlights.ThetaVertex a b c = (Fin 2 ⊕ (strand : Fin 3) × Fin (Highlights.thetaLength a b c strand - 1))
Instances For
Unit steps along the three strands of Theta a b c.
Equations
- Highlights.ThetaStep a b c = ((strand : Fin 3) × Fin (Highlights.thetaLength a b c strand))
Instances For
Right endpoint of one unit step along a theta strand.
Equations
Instances For
Theta a b c is the graph made from three internally disjoint paths of
lengths a, b, and c joining a common top vertex to a common bottom
vertex.
Equations
- One or more equations did not get rendered due to their size.
Instances For
TMTheta a b c u v marks position u on the first (a-) strand and
position v on the third (c-) strand. Invalid positions receive the same
documented junk value used by twiceMarkedCycle; evenlyMarkedK below
contains the guards used by every theorem.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The two kinds of factor admitted in the mixed-chain highlight.
- cycle (m n : ℕ) : CycleThetaFactor
- theta (a b c u v k : ℕ) : CycleThetaFactor
Instances For
Forget the readable factor tag and retain its twice-marked graph.
Equations
- (Highlights.CycleThetaFactor.cycle m n).markedGraph = Highlights.twiceMarkedCycle m n
- (Highlights.CycleThetaFactor.theta a b c u v _k).markedGraph = Highlights.TMTheta a b c u v
Instances For
The genus contribution of a factor: one for a cycle and two for a theta graph.
Equations
- (Highlights.CycleThetaFactor.cycle m n).factorGenus = 1
- (Highlights.CycleThetaFactor.theta a b c u v _k).factorGenus = 2
Instances For
The exact torsion period supplied by the numerical factor data.
Equations
- (Highlights.CycleThetaFactor.cycle m n).period = (m + n) / m.gcd n
- (Highlights.CycleThetaFactor.theta a b c u v _k).period = _k
Instances For
The total genus contributed by a list of cycle/theta factors.
Equations
Instances For
Corollary 6.16's sharp torsion budget for a mixed chain: the exact period of a factor exceeds the smaller of the genera accumulated on its two sides, counting the factor on both sides.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The one-sided torsion budget for marked generality at the left endpoint
of a mixed chain. At factor i, its period exceeds the total genus of the
suffix beginning there.
Equations
Instances For
The twice-marked bridge-chain represented by mixed readable factors.
Equations
Instances For
A canonical, reader-facing regular subdivision #
Every occurrence of an edge gets its own slot, so parallel edges remain
distinct. In the nth regular subdivision that slot is replaced by a path of
n unit edges. Its n - 1 new vertices remember the edge occurrence and
their position along that path. The implementation below spells these counts
as n * 1 only to make the later bridge to “scale a unit edge by n” exact;
this reduces definitionally to n.
A canonical enumeration of the occurrences in the edge multiset. The
subtype G.edges distinguishes repeated copies of the same endpoint pair.
Equations
Instances For
The endpoint pair occupying a canonical edge-occurrence slot.
Equations
- Highlights.subdivisionEdgeAt G edge = ((Highlights.subdivisionEdgeEquiv G).symm edge).fst
Instances For
Vertices in the nth regular subdivision: relabelled original vertices,
together with an edge occurrence and an interior position 0, ..., n - 2.
The harmless relabelling by Fin makes the construction canonical.
Equations
Instances For
The left endpoint of one unit step in a subdivided edge.
Equations
- Highlights.subdivisionStepLeft G n edge offset = if hzero : ↑offset = 0 then Sum.inl ((Fintype.equivFin G.V) (Highlights.subdivisionEdgeAt G edge).1) else Sum.inr ⟨edge, ⟨↑offset - 1, ⋯⟩⟩
Instances For
The right endpoint of one unit step in a subdivided edge.
Equations
- Highlights.subdivisionStepRight G n edge offset = if hlast : ↑offset + 1 = n * 1 then Sum.inl ((Fintype.equivFin G.V) (Highlights.subdivisionEdgeAt G edge).2) else Sum.inr ⟨edge, ⟨↑offset, ⋯⟩⟩
Instances For
The minimal tricycle #
Number the centre 0, the three minus vertices 1, 3, 5, and the three plus
vertices 2, 4, 6. There are six centre spokes; two parallel edges join each
minus/plus pair; and three transition edges join each plus vertex to the next
minus vertex around the ring.
The minimal tricycle, displayed directly as its seven vertices and fifteen edges. The repeated pairs are the three doubled minus/plus edges.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Tree decompositions and treewidth #
The simple graph underlying a multigraph: two vertices are adjacent when at least one edge occurrence joins them. Parallel edges therefore do not affect treewidth.
Equations
- Highlights.underlyingSimpleGraph G = { Adj := fun (v w : G.V) => Highlights.numEdges G v w > 0, symm := ⋯, loopless := ⋯ }
Instances For
A tree decomposition of a simple graph consists of a finite tree and a bag of graph vertices at each tree node. Every vertex and edge is covered, and the bags containing any fixed vertex form a connected subtree.
- Node : Type
Nodes of the decomposition tree.
- nodeDecidableEq : DecidableEq self.Node
- tree : SimpleGraph self.Node
The finite decomposition tree.
The decomposition graph is connected and acyclic.
The bag at each tree node.
Every graph vertex occurs in a bag.
The endpoints of every graph edge occur together in a bag.
The nodes whose bags contain a fixed vertex form a connected subtree.
Instances For
The width of a tree decomposition: one less than its largest bag size.
Instances For
Widths realized by tree decompositions of H.
Equations
- Highlights.treewidthSet H = {w : ℕ | ∃ (D : Highlights.TreeDecomposition H), D.width = w}
Instances For
Treewidth is the least width of a tree decomposition.
Equations
Instances For
Proof bridges #
Everything above this point is statement vocabulary. The following public conversion is where the file deliberately crosses into the implementation library.
View a public graph in the chip-firing implementation model.
Equations
- Highlights.libraryGraph G = { V := G.V, instDecidableEq := G.instDecidableEq, instFintype := G.instFintype, instNonempty := ⋯, edges := G.edges, loopless := ⋯ }
Instances For
Cross a reader-facing twice-marked graph into the library's marked-graph bundle without changing any graph data.
Equations
- Highlights.libraryMarkedGraph M = { graph := Highlights.libraryGraph M.graph, left := M.u, right := M.v }
Instances For
Convert a library graph to the auditable statement vocabulary.
Equations
- Highlights.ofLibraryGraph G = { V := G.V, instDecidableEq := G.instDecidableEq, instFintype := G.instFintype, instNonempty := ⋯, edges := G.edges, loopless := ⋯ }
Instances For
The copied local definition of Brill--Noether generality agrees with the library predicate after crossing the graph boundary.
Explicit cycle factors versus the Bananas implementation #
Explicit theta factors versus the Bananas implementation #
The readable construction above agrees exactly with the occurrence-safe regular subdivision used by the library.
The local witness-based gonality predicate is exactly the library's predicate after crossing the graph-structure boundary.
Convert a local tree decomposition to the implementation structure.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The local and implementation definitions realize exactly the same widths.
Consequently the copied reader-facing definition of treewidth agrees with the load-bearing implementation definition.
The locally defined underlying simple graph agrees with the library's.
Brill--Noether existence through genus five #
Chains of loops: the CDPR theorem and its sharp extensions #
Marked CDPR theorem. At the left endpoint of a generic chain of
g loops, a degree-d, rank-at-least-r divisor cannot retain rank zero
after removing r + rho + 1 chips.
CDPR Theorem 1.1(1), discrete form. A generic chain of cycles is Brill--Noether general in the nonexistence sense.
The sharp cycle-chain form behind CDPR. Numbering the g cycles from
1 to g, the torsion order of cycle i need only exceed
min(i, g + 1 - i).
Marked mixed cycle/theta chain theorem. Under the sharp one-sided
torsion budget, a degree-d, rank-at-least-r divisor cannot retain rank zero
after removing r + rho + 1 chips at the left endpoint of the chain.
Mixed cycle/theta chain theorem. A chain whose factors are cycles or evenly marked theta graphs is Brill--Noether general whenever every cycle is nondegenerate and each factor satisfies the sharp minimum genus/torsion budget. This is the existential/unmarked conclusion of Corollary 6.16.
Exact gonality of common-torsion chains #
Exact gonality of a common-torsion cycle/theta chain. If every
factor has the same torsion order k, then the bridge-chain has gonality
exactly k whenever k is at most the generic gonality
floor((g+3)/2) of its total genus g.
The theta factors are allowed because the proof uses the common
k-general-transmission package, not a factorwise gonality assertion.
Every gonality between two and the generic gonality occurs. More
precisely, for every genus g and
2 ≤ k ≤ floor((g+3)/2) = ceil(g/2)+1, there is a connected finite graph of
genus g and divisorial gonality exactly k.
Divisorial gonality can drop under regular subdivision #
There is a connected graph with no degree-k, rank-one divisor, although
one of its regular subdivisions does have such a divisor. The witness is the
minimal tricycle, with k = 5 and subdivision factor n = 2.
This is the direction that yields the divisorial/metric gonality gap: the minimal tricycle has divisorial gonality six, while its second regular subdivision has divisorial gonality five.
Treewidth is at most divisorial gonality #
Treewidth is at most divisorial gonality
(van Dobben de Bruyn--Gijswijt). In witness form: on a connected graph, any
degree-k divisor of rank at least one bounds the treewidth by k.