Flow decomposition theorem
ProvedLinearOptimization.network_flow_decomposition(Bertsimas & Tsitsiklis, Lemma 7.1, Flow decomposition theorem, p. 298) Let be a nonzero circulation. Then, there exist simple circulations , involving only forward arcs, and positive scalars , such that
Furthermore, if is an integer vector, then each can be chosen to be an integer.
(A circulation satisfies ; a simple circulation involving only forward arcs is the vector of a directed cycle , cf. §7.2 p. 278.)
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. -/
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
Read-back
What the Lean code literally says, in plain math · claude-fable-5
Fix a network of directed arcs on nodes with no self-loops, and a vector with componentwise, where is the incidence matrix (; i.e. is a circulation), and . The conclusion is a conjunction. (a) There exist , step-lists and reals such that: each is a cycle at some vertex — a nonempty walk from back to (each step = arc index + direction flag) whose visited-node list with its final entry removed has no repeats, and whose arc indices are pairwise distinct (an arc cannot be reused even in the other direction); every step of every is a forward traversal; each ; and for every arc , where ; since all steps are forward with distinct arcs, is the indicator of the arcs of . (b) If moreover every equals an integer, the same decomposition exists with strictly positive integer coefficients . There is no bound claimed on the number of cycles.
Confirmed by the mission captain (proposal self-audit).