Corollary 10.4 — for , has an optimal cut through a boundary point of on
OpenDisjunctive.RayCGLP.ray_normalization_geometry_v2Let be the disjunctive hull, a polyhedron , and let be the point to be cut off. Let for some . Then the cut-generating LP under the ray normalization,
has an optimal solution such that (i) , i.e. the cut cuts off , and (ii) is a supporting hyperplane of : is valid for , and the hyperplane meets the segment at a point , , that belongs to .
Formalization Note. The retired version omitted the standing hypothesis ( is the LP optimum to be separated); with the normalization is infeasible. It also allowed to be any closed convex set, for which the minimum of need not be attained (a disk tangent to the segment at ); in the book for finitely many polyhedra, hence a polyhedron, which is now assumed. "Supporting" is made explicit by requiring the contact point to lie in . The printed corollary's "" is a misprint for (Fig. 10.3); the book's is the same set as .
import Mathlib import Definitions.Def_Disjunctive_RayCGLP_Basic
namespace Disjunctive.RayCGLP
/-- Corollary 10.4 (Balas, *Disjunctive Programming*, §10.6, p. 139, [32]): let `P_D` be the
disjunctive hull (a polyhedron) and `x̄ ∉ P_D` the point to be cut off. For `y := x* - x̄` with
`x* ∈ P_D`, `(CGLP)_y` has an optimal solution `(α̃, β̃)` such that (i) `α̃x̄ < β̃`, and
(ii) `α̃x = β̃` is a supporting hyperplane of `P_D` (`α̃x ≥ β̃` is valid for `P_D` and the
hyperplane touches `P_D`) meeting the segment `(x̄, x*]` at the point `x̄ + t(x* - x̄)`,
`t ∈ (0,1]`, which lies in `P_D`.
**Corrects a source typo**: the printed corollary reads "`y := x̄` for some `x* ∈ P_Q`"; the
figure caption (Fig. 10.3) gives `y = x* - x̄`. On the page `P_Q` is the same set as `P_D`.
Corrected from the retired version: (a) `x̄ ∉ P_D` is assumed, as throughout the section
(`x̄` is the LP optimum to be separated; for `x̄ ∈ P_D` no valid inequality cuts it off and for
`x̄ = x*` the normalization `α(x* - x̄) = 1` is infeasible); (b) `P_D` is a polyhedron
(`P_D = cl conv ∪ P_i` for finitely many polyhedra `P_i`), not just a closed convex set: for a
disk tangent to the segment the infimum of `(CGLP)_y` is not attained; (c) the contact point is
stated to lie in `P_D` ("supporting hyperplane"). -/
theorem ray_normalization_geometry_v2 {n m : ℕ} (G : Matrix (Fin m) (Fin n) ℝ) (g : Fin m → ℝ)
(PD : Set (Fin n → ℝ)) (hPD : PD = {x | ∀ r, g r ≤ (G.mulVec x) r})
(xbar xstar : Fin n → ℝ) (hxbar : xbar ∉ PD) (hxstar : xstar ∈ PD) :
∃ alphaT betaT, IsCGLPYOptimal PD (xstar - xbar) xbar alphaT betaT ∧
dotProduct alphaT xbar < betaT ∧ (∀ x ∈ PD, betaT ≤ dotProduct alphaT x) ∧
∃ t : ℝ, IsGreatest
{t' : ℝ | t' ∈ Set.Ioc (0 : ℝ) 1 ∧
dotProduct alphaT (xbar + t' • (xstar - xbar)) = betaT} t ∧
xbar + t • (xstar - xbar) ∈ PD := by sorry
end Disjunctive.RayCGLP