Lemma 3.1 — the algorithm maintains a valid labeling
ProvedGoldbergTarjan.Generic.run_valid_labelingLet be an execution of the generic algorithm on a flow network with vertices, started from the initial state of Fig. 2 with the simple labeling. Then for every , is a valid labeling for :
This invariant feeds Lemma 3.3 (no augmenting path), Lemma 2.1 and the label bound of Lemma 3.7.
import Mathlib import Definitions.Def_GoldbergTarjan_Generic_Run
namespace GoldbergTarjan.Generic
/-- Lemma 3.1 (Goldberg–Tarjan 1988, p. 926). The algorithm maintains the invariant that `d`
is a valid labeling: along any execution `σ 0, …, σ K` of the generic algorithm (started with
the simple labeling), every `d_k` is a valid labeling for `f_k`. -/
theorem run_valid_labeling {V : Type} [Fintype V] [DecidableEq V]
(N : Network V) (σ : ℕ → State V) (K : ℕ) (hrun : IsRun N σ K) :
∀ k ≤ K, IsValidLabeling N (σ k).1 (σ k).2 := by sorry
end GoldbergTarjan.Generic
Read-back
What the Lean code literally says, in plain math · claude-opus-5-5
The statement concerns an arbitrary finite type with decidable equality, , a network with capacities , source and sink , a sequence of states , and .
Hypothesis. is a run of length :
- is the initial state. Its flow is , for , and otherwise. Its labeling is and for .
- Each with arises from by one applicable push or relabel.
Conclusion. For every , is a valid labeling for :
Here labels take values in .
Degenerate cases. For , the statement asserts that is valid for . States beyond index are not constrained.
Confirmed by the mission captain (proposal self-audit).
Confirmed by the moderator at approval.