Corollary 13.8 — facets of the dominant of a polytope have at most nonzero coefficients
OpenDisjunctive.Dominants.facet_support_bound_v2This is Corollary 13.8 of Balas's Disjunctive Programming, an immediate consequence of Theorem 13.7.
Let be a polytope and its dominant. If the inequality defines a facet of , that is, if is a facet of , then
Formalization Note. The retired version took to be an arbitrary subset of . Points with negative coordinates are replaced by their positive parts in the dominant, which can raise the dimension of faces above . A four-point set in a 2-dimensional subspace of gave a facet with 4 nonzero coefficients. The new statement requires, as in Theorem 13.7, that be a polytope (hypothesis hPoly) contained in (hcube). Facets are faces of codimension one in the affine-dimension sense (IsFacet, PolyDim), and needs no special treatment because then has no facets.
import Mathlib import Definitions.Def_Disjunctive_Dominants_Basic
namespace Disjunctive.Dominants
/-- Corollary 13.8 (Balas, *Disjunctive Programming*, Springer 2018, §13.2, p. 221): for a
polytope `P ⊆ [0,1]ⁿ` (the setting of Theorem 13.7), every inequality `πx ≥ β` defining a facet
of the dominant `P⁺` has at most `dim(P) + 1` nonzero coefficients.
Correction w.r.t. the retired version: `P` was an arbitrary subset of `ℝⁿ`; it is now a
polytope (hypothesis `hPoly`) contained in the unit cube (`hcube`). With points having negative
coordinates the dominant `{y ≥ 0 : y ≥ x ∈ P}` can have facets with more nonzero coefficients
than `dim(P) + 1`. -/
theorem facet_support_bound_v2 {n : ℕ} (P : Set (Fin n → ℝ))
(hPoly : ∃ V : Finset (Fin n → ℝ), P = convexHull ℝ (V : Set (Fin n → ℝ)))
(hcube : P ⊆ UnitCube n) (pi : Fin n → ℝ) (beta : ℝ)
(hfacet : IsFacet (Dominant P) ({x ∈ Dominant P | dotProduct pi x = beta})) :
((Finset.univ.filter (fun j => pi j ≠ 0)).card : ℤ) ≤ PolyDim P + 1 := by sorry
end Disjunctive.Dominants