Theorem 7.2 — iterating split convexification over 0-1 variables,
ProvedDisjunctive.HigherDim.iterated_split_convexification_v2This is Theorem 7.2 of Balas's Disjunctive Programming. Let be the LP relaxation of a mixed 0-1 program with 0-1 index set , the system containing the bound rows and (), and let be distinct elements of . With (Theorem 7.1) and ,
Formalization Note. The retired version allowed an arbitrary polyhedron and arbitrary coordinates; for the unbounded line the first split creates fractional points the second split keeps. Throughout Chapter 7 the book works with : the bound constraints are rows of the system that every construction multiplies. This is now the explicit hypothesis HasBoundRows A b N' (the system contains the rows for every and for every ); it is satisfiable with nonempty (e.g. the unit box) and excludes the disproof's instance with no rows. The coordinates of the sequence are 0-1 variables (), which makes the disjunctions facial as the book's proof (Theorem 3.1) requires.
import Mathlib import Definitions.Def_Disjunctive_HigherDim_Basic import Definitions.Def_Disjunctive_HigherDim_BoundRows
namespace Disjunctive.HigherDim
/-- Theorem 7.2 (Balas, *Disjunctive Programming*, Springer 2018, §7.1, p. 93): for
`K = {x : Ãx ≥ b̃}` the LP relaxation of a mixed 0-1 program with 0-1 index set `N'` (bound rows
`x ≥ 0`, `x_j ≤ 1`, `j ∈ N'`, included in the system, `HasBoundRows`), applying the
one-variable convexification `P_j` successively along a duplicate-free sequence `i₁,…,i_t` of
0-1 indices gives `P_{i₁,…,i_t}(K) = conv(K ∩ {x : x_j ∈ {0,1}, j = i₁,…,i_t})`.
Corrected: the retired version allowed an arbitrary polyhedron `Ax ≥ b` (no bounds) and arbitrary
coordinates; the book's sequence consists of 0-1 variables of the mixed 0-1 program. -/
theorem iterated_split_convexification_v2 {m n : ℕ} (A : Matrix (Fin m) (Fin n) ℝ)
(b : Fin m → ℝ) (Nprime : Finset (Fin n)) (hK : HasBoundRows A b Nprime)
(l : List (Fin n)) (hnd : l.Nodup) (hl : ∀ j ∈ l, j ∈ Nprime) :
IteratedSplit (Poly A b) l = convexHull ℝ (Poly A b ∩ ⋂ j ∈ l.toFinset, ZeroOneSet j) := by
sorry
end Disjunctive.HigherDim