Theorem 13.24 — the closed-form convex hull of a union of two polymatroids
ProvedDisjunctive.Polymatroids.polymatroid_union_closed_formThis is Theorem 13.24 of Balas's Disjunctive Programming, the goal theorem of this mission and the closing result of the entire book: a fully explicit, closed-form description of the convex hull of a union of two polymatroids, in the original variable space (no lifting, no auxiliary variables).
For polymatroid rank functions (satisfying , monotone, submodular),
The book's proof, resting on Propositions 13.22 and 13.23, reduces to examining the extreme points of : a basic feasible solution has at most two nonzero components . A single nonzero yields the first family of inequalities; two simultaneously nonzero solving , have a (unique, positive) solution exactly when , yielding the second family. This generalizes an earlier result on the disjunction of matroid polyhedra (proved by different means) to arbitrary polymatroids.
Formalization Note. IsPolymatroidRankFunction (not IsApp1SetFunction) is the correct
hypothesis here, matching the book's own " for are polymatroid
rank functions (satisfying 1 and 3 in Application 1 and submodular)" — this is r(\emptyset)=0
plus monotonicity plus submodularity, not the r(A)\le|A| bound of IsApp1SetFunction
(that bound is specific to the matroid-truncated special case of §13.4, not required for the
general polymatroid closed form). Confusing the two hypotheses here would misstate exactly
which set functions the theorem covers — this is the distinction BRIEF.md explicitly warns
to get right.
import Mathlib import Definitions.Def_Disjunctive_Polymatroids_Basic
namespace Disjunctive.Polymatroids
/-- Theorem 13.24 (Balas §13.8, p. 232), the goal theorem of this mission and the book's closing
result: for polymatroid rank functions `r₁,r₂`, `conv(P(r₁)∪P(r₂))` has a closed-form description
in the original variable space: `x(A)≤max{r₁(A),r₂(A)}` for every `A⊆N`, together with a two-set
inequality for every pair `A,B⊆N` with `(r₁(A)-r₂(A))(r₁(B)-r₂(B))<0`. -/
theorem polymatroid_union_closed_form {n : ℕ} (r1 r2 : Finset (Fin n) → ℝ)
(hr1 : IsPolymatroidRankFunction r1) (hr2 : IsPolymatroidRankFunction r2) :
convexHull ℝ (PolymatroidP r1 ∪ PolymatroidP r2) =
{x : Fin n → ℝ | 0 ≤ x ∧ (∀ A : Finset (Fin n), SumOver x A ≤ max (r1 A) (r2 A)) ∧
∀ A B : Finset (Fin n), (r1 A - r2 A) * (r1 B - r2 B) < 0 →
(r2 B - r1 B) / (r1 A * r2 B - r1 B * r2 A) * SumOver x A +
(r1 A - r2 A) / (r1 A * r2 B - r1 B * r2 A) * SumOver x B ≤ 1} := by sorry
end Disjunctive.Polymatroids
Confirmed by the mission captain (proposal self-audit).
Confirmed by the moderator at approval.