Optimal Decomposition Theorem — a Steiner tree splits at a node into Steiner trees for , ,
ProvedDreyfusWagner.Steiner.optimal_decompositionLet be a finite connected undirected graph whose arcs have positive lengths. Let contain at least three nodes, let be a Steiner tree connecting , and let . Then there exist a node and a set such that
- is a nonempty proper subset of ;
- with pairwise disjoint;
- is a Steiner path connecting , is a Steiner path connecting , and is a Steiner path connecting .
The node need not belong to , may equal (then ), and may be empty. In particular
This is the structural fact behind the Dreyfus–Wagner dynamic program: an optimal tree for is assembled from a shortest path and two optimal trees for strictly smaller terminal sets meeting at a junction node.
Formalization Note " consists of 3 disjoint subsets" is stated as with the three sets pairwise disjoint; no is required to be nonempty and is not required to lie outside , as in the paper's Figures 5 and 6. The hypothesis is the paper's own (Appendix A, p. 205).
import Mathlib import Definitions.Def_DreyfusWagner_Steiner_SteinerProblem
namespace DreyfusWagner.Steiner
/-- Dreyfus–Wagner 1971, Appendix A, Optimal Decomposition Theorem, p. 206 (also §1, p. 197). -/
theorem optimal_decomposition {V : Type*} [Fintype V] [DecidableEq V]
(G : SimpleGraph V) [DecidableRel G.Adj] (ℓ : Sym2 V → ℝ)
(hpos : ∀ e ∈ G.edgeSet, 0 < ℓ e) (hconn : G.Connected)
(Y : Finset V) (S : Finset (Sym2 V)) (hS : IsSteinerTree G ℓ Y S)
(q : V) (hq : q ∈ Y) (hY : 3 ≤ Y.card) :
∃ (p : V) (D : Finset V) (S₁ S₂ S₃ : Finset (Sym2 V)),
D ⊆ Y.erase q ∧ D ≠ Y.erase q ∧ D.Nonempty ∧
S = S₁ ∪ S₂ ∪ S₃ ∧ Disjoint S₁ S₂ ∧ Disjoint S₁ S₃ ∧ Disjoint S₂ S₃ ∧
IsSteinerTree G ℓ {p, q} S₁ ∧
IsSteinerTree G ℓ (insert p D) S₂ ∧
IsSteinerTree G ℓ (insert p (Y.erase q \ D)) S₃ := by sorry
end DreyfusWagner.Steiner
Read-back
What the Lean code literally says, in plain math · claude-opus-5-5
Let be a finite node type with decidable equality, a connected simple graph on with edge set , and a length function with for every . Let be a finite node set with and a Steiner tree for . That is, , joins every two nodes of using its own arcs, and has minimum total length among all such subsets of . Let . The statement asserts that there exist:
- a node ;
- a node set with
- arc sets that are pairwise disjoint, with , such that
- is a Steiner tree for ;
- is a Steiner tree for ;
- is a Steiner tree for .
All three Steiner trees are taken in the same . Nothing constrains : it may equal , lie in or its complement, or be any other node. None of is required to be nonempty.
Degenerate cases. The conditions on force both and to be nonempty. This is possible because . If , then , being a Steiner tree for the singleton under positive lengths, must be .
Confirmed by the mission captain (proposal self-audit).
Confirmed by the moderator at approval.