Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Nonnegative rank of the spanning-tree slack matrix

Contributed by Sebastian Pokutta
First published 2026-10-19 · last changed 2026-10-20 (4af5b76)
License: CC BY 4.0

Cite as
@misc{lemmata:2610.00003,
  title        = {Nonnegative rank of the spanning-tree slack matrix},
  author       = {Sebastian Pokutta},
  howpublished = {Lemmata Repository, lemmata:2610.00003, \url{https://lemmata.iol.berlin/abs/2610.00003}},
  year         = {2026},
  url          = {https://lemmata.iol.berlin/abs/2610.00003},
  note         = {Version a9429cb9cbf5; formal statements checked in Lean 4}
}

A minimum-root decomposition of tree slacks can also accommodate every edge nonnegativity row without adding factors. This gives an explicit cubic upper bound on nonnegative rank, saving (n2)\binom n2 factors over appending a separate factor for every edge. No symmetry of the factorization is required.

The matrix and the result

Nonnegative rank is the smallest inner dimension of a factorization M=ABM=AB with A,BA,B entrywise nonnegative. The Lean definition uses extended natural numbers, assigning infinity if no such factorization exists; the explicit witness below makes the rank finite here.

Construction and proof

For a tree rooted at rr, let pT,r(v)p_{T,r}(v) be the neighbor of vv toward rr, with pT,r(r)=rp_{T,r}(r)=r. For every r∈Sr\in S,

∣S∣−1−∣E(T)∩(S2)∣=∑v∈S∖{r}1pT,r(v)∉S.|S|-1-|E(T)\cap\tbinom S2| =\sum_{v\in S\setminus\{r\}}\mathbf1_{p_{T,r}(v)\notin S}.

Indeed, the parent-edge map bijects the nonroot vertices with the tree edges. The internal edges of SS correspond precisely to the children in S∖{r}S\setminus\{r\} whose parents are also in SS. Subtracting their number from ∣S∣−1|S|-1 gives the identity, including when the induced forest on SS is disconnected.

Index the factors by

Cn={(r,v,w):0≤r<v<n, r<w<n}.\mathcal C_n=\{(r,v,w):0\le r<v<n,\ r<w<n\}.

The diagonal slots (0,v,v)(0,v,v) are special: put B(0,v,v),T=1{0,v}∈E(T)B_{(0,v,v),T}=\mathbf1_{\{0,v\}\in E(T)} and AS,(0,v,v)=0A_{S,(0,v,v)}=0 for every subtour row. For every other slot c=(r,v,w)c=(r,v,w), put

Bc,T={1pT,r(v)<r,w=v,1pT,r(v)=w,w≠v,AS,c=1min⁡S=r1v∈S1 w=v or w∉S.B_{c,T}=\begin{cases} \mathbf1_{p_{T,r}(v)<r},&w=v,\\ \mathbf1_{p_{T,r}(v)=w},&w\ne v, \end{cases} \qquad A_{S,c}=\mathbf1_{\min S=r}\mathbf1_{v\in S} \mathbf1_{\,w=v\ \text{or}\ w\notin S}.

For an edge row {a,b}\{a,b\} with a<ba<b, its row factor is one at (0,b,b)(0,b,b) if a=0a=0; if a>0a>0, it is one at the two slots (0,a,b)(0,a,b) and (0,b,a)(0,b,a). All its other coefficients are zero.

This remains cubic, with leading term n3/3n^3/3. The saving relative to the older append-every-edge count is

n3−n3−n(n−1)(2n−1)6=(n2).\frac{n^3-n}{3}-\frac{n(n-1)(2n-1)}6=\binom n2.

Scope and source

The formalization constructs parents from unique paths in actual SimpleGraph trees, proves the parent-edge bijection and slack identity, and checks both row families. It does not assume an abstract tree-model correctness interface. The connection between nonnegative rank and extension complexity, an affine extended formulation, and completeness of a polyhedral description are outside this entry. No optimality or literature-priority claim is made.

The construction comes from Sebastian Pokutta’s spanning-tree extension-complexity project: the unpublished note Candidate upper improvement by reusing full-slack factors and the earlier min-split factorization. The source snapshot is commit 75f45e8dd38eae648222e11a99559ed8ec991e2e of symmetric-spanning-tree-lb. The graph lemmas adapt that project’s unique-path and parent-edge proofs. These source notes are not distributed with this entry; the construction and proofs needed here are given in full. The entry is self-contained over the archive’s pinned Mathlib and does not import the source project.

Main.lean
/-- The full standard spanning-tree slack matrix has an explicit nonnegative
factorization with n(n-1)(2n-1)/6 factors, including all nonnegativity rows. -/
theorem fullSlack_factorization (n : ℕ) (hn : 3 ≤ n) :
    Nonempty (NonnegativeFactorization (fullSlack n) (n * (n - 1) * (2 * n - 1) / 6)) := by
  let : NeZero n := ⟨by omega⟩
  simpa only [card_cert] using
    (⟨fullFactorization (n := n)⟩ : Nonempty
      (NonnegativeFactorization (fullSlack n) (Fintype.card (Cert n))))

/-- The nonnegative-rank bound for the actual full graph slack matrix. -/
theorem fullSlack_rank_bound (n : ℕ) (hn : 3 ≤ n) :
    nonnegativeRank (fullSlack n) ≤ ((n * (n - 1) * (2 * n - 1) / 6 : ℕ) : ℕ∞) := by
  obtain ⟨F⟩ := fullSlack_factorization n hn
  exact nonnegativeRank_le F
Formal verification
  • ◇ elaborated definition (Lean v4.35.0) Definition 1 — Lemmata.SpanningTreeMinSplit.fullSlack (source)

  • ✓ kernel-checked (Lean v4.35.0) Theorem 1 — Lemmata.SpanningTreeMinSplit.fullSlack_rank_bound (source)

  • ✓ kernel-checked (Lean v4.35.0) Proposition 1 — Lemmata.SpanningTreeMinSplit.fullSlack_factorization (source)

Checked at commit a9429cb9cbf5. The formal statement is machine-checked; that it matches the prose is checked by review. What “checked” means.

AI use. Obtained as auxiliary result when using GPT-6 Astra to formalize other research.

Acknowledgements. Research reported in this paper was partially supported by the Berlin Mathematics Research Center MATH+^+ (EXC-2046/2, project ID 390685689), funded by the Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) under Germany’s Excellence Strategy. This work has been partially supported by OpenAI’s Academic Researchers program.