§2, p. 200 and §4, p. 203 — every table entry of Algorithm A is the Steiner length of
ProvedDreyfusWagner.Steiner.tableA_eq_steinerLengthLet be a finite connected undirected graph whose arcs have positive lengths, with linearly ordered. Let be the table of Algorithm A built from the shortest-path lengths of . Then for every nonempty node set and every node ,
the length of the Steiner path for the nodes .
This is the invariant that the table of Algorithm A maintains: each entry is the optimal value of the subproblem it stands for. With it, the value returned by the algorithm is the recurrence of §2 evaluated at and .
Formalization Note The statement is made for every nonempty , not only for the proper subsets of that the algorithm stores; the table is defined for all node sets by the same recursion.
import Mathlib import Definitions.Def_DreyfusWagner_Steiner_SteinerProblem import Definitions.Def_DreyfusWagner_Steiner_AlgorithmA
namespace DreyfusWagner.Steiner
/-- Dreyfus–Wagner 1971, §2, p. 200 and §4, p. 203: every entry `S[D, I]` of the table of
Algorithm A, built from the shortest-path lengths `D(i,j)`, is the length `S(I, D)` of the
Steiner path for the nodes `{I} ∪ D`. -/
theorem tableA_eq_steinerLength {V : Type*} [Fintype V] [LinearOrder V]
(G : SimpleGraph V) [DecidableRel G.Adj] (ℓ : Sym2 V → ℝ)
(hpos : ∀ e ∈ G.edgeSet, 0 < ℓ e) (hconn : G.Connected)
(D : Finset V) (hD : D.Nonempty) (I : V) :
tableA (pathDist G ℓ) D I = steinerLength G ℓ (insert I D) := by sorry
end DreyfusWagner.Steiner
Read-back
What the Lean code literally says, in plain math · claude-opus-5-5
Let be a finite, linearly ordered node type, a connected simple graph on with edge set , and a length function with for every . Take , the shortest node-repeat-free path length in . Let be the table defined recursively on :
- ;
- ;
- for :
where ranges over the subsets of that contain the least element of and differ from .
The statement says that for every nonempty node set and every node :
Here is the minimum total length over joining every two nodes of using only arcs of .
Degenerate cases. For the claim reads . For both sides are . The node may belong to . The empty is excluded by hypothesis; for it the table value is not claimed to equal anything.
Confirmed by the mission captain (proposal self-audit).
Confirmed by the moderator at approval.