Theorem 3.1 — faciality is sufficient for sequential convexifiability
ProvedDisjunctive.SequentialConvex.sequential_convexification_facialThis is Theorem 3.1 of Balas's Disjunctive Programming, the goal theorem of this mission: faciality is sufficient for a disjunctive program's convex hull to be computable one disjunction at a time.
Let be the constraint set of a disjunctive program with base polyhedron and disjunctions as above. For an arbitrary ordering of , define the recursion as in the companion definition. If the program is facial — every inequality appearing in a disjunction defines a face of — then
regardless of which ordering of was used. This means the convex hull of a facial disjunctive set can be generated in manageable stages, each requiring only the convex hull of a single elementary disjunction — a dramatically easier computation than generating directly. The class of facial disjunctive programs includes (pure or mixed) 0-1 programming, nonconvex quadratic programming, separable programming, and the linear complementarity problem, but not general (pure or mixed) integer programming — for which, as the book's Example 1 shows explicitly, sequential convexification can fail.
Formalization Note. The universal quantification over σ in the theorem's own hypotheses
(rather than fixing one ordering) is what encodes "for an arbitrary ordering" — the theorem
asserts the conclusion for every choice of σ, matching the book's emphasis that the final
result does not depend on the order in which disjunctions are imposed.
import Mathlib import Definitions.Def_Disjunctive_SequentialConvex_Basic import Definitions.Def_Disjunctive_SequentialConvex_Fseq
namespace Disjunctive.SequentialConvex
/-- Theorem 3.1 (Balas §3.1, p. 42): if the disjunctive program `DP` is facial, then the
recursive sequential-convexification construction, applied in any order of `S`, terminates at
`conv F`. -/
theorem sequential_convexification_facial {n m : ℕ} (A : Matrix (Fin m) (Fin n) ℝ)
(b : Fin m → ℝ) {S : Type*} [Fintype S] (Qidx : S → Type*) [∀ j, Fintype (Qidx j)]
(d : (j : S) → Qidx j → Fin n → ℝ) (d0 : (j : S) → Qidx j → ℝ)
(σ : Fin (Fintype.card S) ≃ S) (hFacial : Facial A b Qidx d d0) :
Fseq Qidx (F0Set A b) d d0 σ (Fintype.card S) =
convexHull ℝ (DisjunctiveConstraintSet A b Qidx d d0) := by sorry
end Disjunctive.SequentialConvex
Confirmed by the mission captain (proposal self-audit).
Confirmed by the moderator at approval.