Configurations and superstable configurations #
Fix a vertex $q \in V$. A configuration (Config V q) is a nonnegative integer assignment
to the vertices $V \setminus \{q\}$, extended by zero at $q$. This corresponds to what
[Corry-Perkinson] calls a nonnegative configuration (Definition 2.9); we use "configuration"
to mean "nonnegative configuration" throughout this library.
A configuration $c$ is superstable if for every nonempty $S \subseteq V \setminus \{q\}$,
some vertex in $S$ has fewer chips than its out-degree into $V \setminus S$
([Corry-Perkinson], Definition 3.12). By superstable_iff_q_reduced, this is equivalent
to the associated divisor being $q$-reduced. A maximal superstable configuration is one
that is not dominated by any other superstable configuration.
The set outdeg_S G q S v counts edges from v to vertices outside S, and is the
relevant threshold for the superstability condition.
A configuration on G with respect to distinguished vertex q is a nonnegative integer
assignment to all vertices, with the convention that q holds zero chips. This is what
[Corry-Perkinson] calls a nonnegative configuration (Definition 2.9).
- vertex_degree : CFDiv V
Assignment of integers to vertices representing the number of chips at each vertex
Fix vertex_degree q = 0 for convenience
Proof that all vertices except q have non-negative values
Instances For
The degree of a configuration is the sum of all values except at q. deg(c) = ∑_{v ∈ V{q}} c(v)
Equations
Instances For
Convert a configuration c to a divisor of prescribed degree d by placing
d - config_degree c chips at q.
Equations
- toDiv d c = c.vertex_degree + (d - config_degree c) • one_chip q
Instances For
Two configurations are equal iff their vertex_degree functions agree.
The degree of a $q$-effective divisor equals its value at q plus the configuration degree.
Equations
- ⋯ = ⋯
Instances For
to_qed is a left inverse of toConfig at the correct degree: converting a $q$-effective
divisor to a configuration and back via toDiv (deg D.D) recovers the original divisor.
The divisor toDiv d c is effective iff d ≥ config_degree c, i.e. there are enough
chips at q to cover any debt.
Pointwise partial order on configurations: config_ge c c' iff c(v) ≥ c'(v) for all v.
Equations
- config_ge c c' = ∀ (v : V), c.vertex_degree v ≥ c'.vertex_degree v
Instances For
Two configurations are equal if one dominates the other pointwise and they have the same degree.
Equations
- instPartialOrderConfig = { le := fun (c₁ c₂ : Config V q) => c₁.vertex_degree ≤ c₂.vertex_degree, le_refl := ⋯, le_trans := ⋯, lt_iff_le_not_ge := ⋯, le_antisymm := ⋯ }
The out-degree of vertex v with respect to set S: the number of edges from v to
vertices outside S. Used to define the superstability condition.
Equations
- outdeg_S G q S v = ∑ w ∈ Finset.univ \ S, ↑(num_edges G v w)
Instances For
A configuration c is superstable if for every nonempty $S \subseteq V \setminus \{q\}$,
some vertex in $S$ has fewer chips than its out-degree into $V \setminus S$.
[Corry-Perkinson], Definition 3.12
Equations
- superstable G q c = ∀ S ⊆ Vtilde q, S.Nonempty → ∃ v ∈ S, c.vertex_degree v < outdeg_S G q S v
Instances For
A configuration c is superstable iff toDiv d c is $q$-reduced (for any d).
[Corry-Perkinson], Remark 3.14
Helper Lemma: Equivalence between q-reduced divisors and superstable configurations. A divisor D is q-reduced iff it can be written as c - δ_q for some superstable config c.
A maximal superstable configuration has no legal firings and is not ≤ any other superstable configuration.
Equations
- maximal_superstable G c = (superstable G q c ∧ ∀ (c' : Config V q), superstable G q c' → config_ge c' c → c' = c)
Instances For
Linear equivalence is preserved by adding a fixed divisor on the right.
Subtracting a chip at q from a superstable configuration gives an unwinnable divisor.
Burn lists and Dhar's burning algorithm #
A burn list for a configuration c is an ordered list of all vertices ending at q,
built by Dhar's burning algorithm: each vertex is added when its number of chips is less
than its out-degree into the remaining (unburned) vertices. The key property is that a
configuration is superstable if and only if a complete burn list (containing all vertices)
exists (superstable_burn_list).
The burn_flow function extracts an orientation from a burn list by directing each edge
toward the vertex that appears earlier in the list. This is used to construct the bijection
between maximal superstable configurations and acyclic orientations with unique source q
(see Orientation.lean).
Definition: A burn list for a Configuraton c is a list [v_1, v_2, ..., v_n, q] of distinct vertices ending at q, where the following condition holds at each vertex except q (which plays a special role): if S is the set V \ {v_1, ..., v_(n-1)} (which contains v_n), then the out-degree of v_n with respect to S is greater than the number of chips at v_n.
Equations
- is_burn_list G c [] = False
- is_burn_list G c [x] = (x = q)
- is_burn_list G c (v :: w :: rest) = (outdeg_S G q (Finset.univ \ (w :: rest).toFinset) v > c.vertex_degree v ∧ ¬(w :: rest).contains v = true ∧ is_burn_list G c (w :: rest))
Instances For
Every burn list contains q (since the base case of a burn list is [q]).
If c is superstable and a burn list L does not yet contain all vertices, it can be
extended by prepending a new vertex. This corresponds to the next edge burning in Dhar's
burning algorithm; superstability implies that the entire graph will burn.
A bundled burn list: a list L of vertices together with a proof that it satisfies the
is_burn_list conditions for configuration c.
- list : List V
- h_burn_list : is_burn_list G c self.list
Instances For
For each n < |V|, there exists a burn list of size n+1. Inductive step for
superstable_burn_list.
A superstable configuration admits a complete burn list containing every vertex of G.
This is the key output of Dhar's burning algorithm: in a superstable configuration, the
whole graph burns.
The orientation induced by a burn list: for each edge (u, v), direct it from u to v
(i.e. assign nonzero flow) if u appears in the list and v appears before u. In other
words, the orientation indicates the direction of the spreading fire in Dhar's burning
algorithm.
Equations
Instances For
The burn_flow of a complete burn list is a valid orientation: for every edge {u, v},
exactly num_edges G u v units of flow are directed in one of the two directions.
For any non-q vertex v in a burn list, the in-flow into v exceeds the number of
chips at v. This is the key inequality used to construct the acyclic orientation from a
maximal superstable configuration.