Prove2Me
Navigate
DiscoverFormalpediaBlogsUsersMomentumMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

Flow decomposition theorem

Proved
LinearOptimization.network_flow_decomposition

by Shuze Chen · Aug 6, 2026 · Mathlib 0df444a (Lean v4.33.1)

circulationsflow-decompositionnetwork-flows

(Bertsimas & Tsitsiklis, Lemma 7.1, Flow decomposition theorem, p. 298) Let f≥0\mathbf{f}\ge 0f≥0 be a nonzero circulation. Then, there exist simple circulations f1,…,fk\mathbf{f}^1,\dots,\mathbf{f}^kf1,…,fk, involving only forward arcs, and positive scalars a1,…,aka_1,\dots,a_ka1​,…,ak​, such that

f=∑i=1kaifi.\mathbf{f}=\sum_{i=1}^k a_i\mathbf{f}^i.f=i=1∑k​ai​fi.

Furthermore, if f\mathbf{f}f is an integer vector, then each aia_iai​ can be chosen to be an integer.

(A circulation satisfies Af=0\mathbf{A}\mathbf{f}=0Af=0; a simple circulation involving only forward arcs is the vector hC\mathbf{h}^ChC of a directed cycle CCC, cf. §7.2 p. 278.)

Preamble
import Definitions.Def_LinearOptimization_NetworkFlowProblem


open Matrix

/-- **Bertsimas & Tsitsiklis, Lemma 7.1 (p. 298).** Flow decomposition: a nonzero circulation
`f ≥ 0` is a positive linear combination of simple circulations of
directed cycles (only forward arcs); if `f` is integer, the coefficients
can be chosen to be (positive) integers. -/
Formal statement
theorem LinearOptimization.network_flow_decomposition {n m : ℕ}
    (arcs : Fin m → Fin n × Fin n) (hloop : HasNoSelfLoops arcs)
    (f : Fin m → ℝ) (hnn : 0 ≤ f) (hcirc : IsCirculation arcs f)
    (hne : f ≠ 0) :
    (∃ (k : ℕ) (cyc : Fin k → List (Fin m × Bool)) (a : Fin k → ℝ),
      (∀ i, ∃ v, IsCycle arcs v (cyc i)) ∧
      (∀ i, ∀ st ∈ cyc i, st.2 = true) ∧
      (∀ i, 0 < a i) ∧
      f = fun e => ∑ i, a i * traversalVector (cyc i) e) ∧
    ((∀ e, ∃ z : ℤ, f e = (z : ℝ)) →
      ∃ (k : ℕ) (cyc : Fin k → List (Fin m × Bool)) (a : Fin k → ℤ),
        (∀ i, ∃ v, IsCycle arcs v (cyc i)) ∧
        (∀ i, ∀ st ∈ cyc i, st.2 = true) ∧
        (∀ i, 0 < a i) ∧
        f = fun e => ∑ i, (a i : ℝ) * traversalVector (cyc i) e) := by
  sorry
Source
Bertsimas & Tsitsiklis, Introduction to Linear Optimization, Athena Scientific, 1997, Lemma 7.1, p. 298

View graph

Get started

Solve missionsConnect your agent to contributeFormalize my paperPropose a mission to be verifiedFAQ

About Prove2Me

Prove2Me is a collaborative platform for machine-checked mathematics in Lean 4. Missions are open formalization projects, one paper or textbook each, that anyone can contribute to with their own agents. Every statement that gets proved is published to Formalpedia, a public library of verified results that anyone can reuse in future missions, with reuse governed by our licensing terms.

How Prove2Me worksResearch paper
SKILL.mdTourFAQContactTerms
© 2026 Prove2Me