Theorem 1.1 — the intersection cut
OpenDisjunctive.IntroDuality.intersection_cut_v2This is Theorem 1.1 of Balas's Disjunctive Programming: the construction of an intersection cut, the origin of the subject.
Let index all (structural and surplus) variables of a linear program, and let be a basic solution with basic index set and nonbasic index set , where and partition ; thus for . Let be the simplex tableau's coefficients, so that the tableau reads (). The LP cone at is
whose extreme-ray directions are with , () and otherwise. The mixed-integer feasible set is contained in the LP relaxation, hence in .
Let be a convex set with and , and for let
Then the intersection cut
cuts off (its left-hand side vanishes at ) and is satisfied by every point of .
Formalization Note. The retired version assumed only () on and did not require to partition the index set; with it then asserted on any nonempty outside . The new statement adds the book's setting explicitly: and are disjoint and cover (hIJ, hcover), and every point of lies in the LP cone (hPI_cone: the tableau equations and nonnegativity of the nonbasic variables), which in the book follows from (the tableau is an equivalent rewriting of the LP's equality system; only drops the nonnegativity of the basic variables). As before, is the maximum of (IsGreatest), i.e. the theorem is stated for the case in which these maxima exist, as in the book's formula; follows from . With the new hypotheses force , so and the statement holds.
import Mathlib import Definitions.Def_Disjunctive_IntroDuality_IntersectionCut
namespace Disjunctive.IntroDuality
/-- Theorem 1.1 (Balas, *Disjunctive Programming*, Springer 2018, §1.2, p. 4; Balas 1971 [4]):
the intersection cut. Let `x̄` be a basic solution of the LP relaxation, with basic index set `I`
and nonbasic index set `J` partitioning the full index set `ι` of structural and surplus
variables, so that `x̄_j = 0` for `j ∈ J`, and let `ā` be the simplex tableau's coefficients.
Every point of `P_I` lies in the LP cone
`C(J) = {x : x_i = x̄_i - Σ_{j ∈ J} ā_{ij} x_j (i ∈ I), x_j ≥ 0 (j ∈ J)} = x̄ + cone{r^j : j ∈ J}`
(`P_I ⊆ P ⊆ C(J)`: the tableau rows are an equivalent rewriting of the LP's equations, and `C(J)`
drops only the nonnegativity of the basic variables). If `S` is a convex set with `x̄ ∈ int S`
and no point of `P_I` in `int S`, and `λ*_j = max {λ : x̄ + λ r^j ∈ S}` for `j ∈ J`, then the
cut `Σ_{j ∈ J} x_j / λ*_j ≥ 1` cuts off `x̄` and is satisfied by every point of `P_I`.
Version 2: the retired statement did not require `I, J` to partition `ι` nor `P_I ⊆ C(J)`
(only `x_j ≥ 0` on `J`), so with `J = ∅` it claimed `1 ≤ 0` on any nonempty `P_I`. -/
theorem intersection_cut_v2 {ι : Type*} [Fintype ι] [DecidableEq ι]
(I J : Finset ι) (hIJ : Disjoint I J) (hcover : ∀ i : ι, i ∈ I ∨ i ∈ J)
(abar : ι → ι → ℝ) (xbar : ι → ℝ) (PI S : Set (ι → ℝ))
(hPIFree : PIFree S PI xbar)
(hxbarJ : ∀ j ∈ J, xbar j = 0)
(hPI_cone : ∀ x ∈ PI,
(∀ i ∈ I, x i = xbar i - ∑ j ∈ J, abar i j * x j) ∧ ∀ j ∈ J, 0 ≤ x j)
(lam : ι → ℝ)
(hlam_max : ∀ j ∈ J, IsGreatest {t : ℝ | xbar + t • extremeRay I abar j ∈ S} (lam j)) :
(∑ j ∈ J, (lam j)⁻¹ * xbar j) < 1 ∧ ∀ x ∈ PI, 1 ≤ ∑ j ∈ J, (lam j)⁻¹ * x j := by sorry
end Disjunctive.IntroDuality