Halfspaces (nonzero normal) and polyhedra in
DefinitionVanderbeiLP_StrictComp_Polyhedronconvex-analysisp2o-batch-b23ap2o-gran-per-chapterp2o-plan-bookp2o-v1polyhedra
A halfspace of is a set given by a single nontrivial linear inequality:
If the coefficient vector is allowed to vanish, the set is a generalized halfspace; a generalized halfspace is a halfspace, all of , or the empty set.
A polyhedron is the intersection of finitely many generalized halfspaces, that is, any set of the form
for some , some real matrix and some . With this is all of .
These are the objects of the Separation Theorem for polyhedra. The requirement in a halfspace is what makes separation meaningful: without it, the empty set would count as a halfspace.
Formalization Note IsHalfspace H asks for and with ; IsPolyhedron P asks for , and with componentwise.
Definition code
import Mathlib
open Matrix
namespace VanderbeiLP.StrictComp
/-- A halfspace of `ℝⁿ` (10.3): a set `{x : aᵀx ≤ β}` given by a single nontrivial linear
inequality, i.e. with coefficient vector `a ≠ 0`. -/
def IsHalfspace {n : ℕ} (H : Set (Fin n → ℝ)) : Prop :=
∃ (a : Fin n → ℝ) (β : ℝ), a ≠ 0 ∧ H = {x | a ⬝ᵥ x ≤ β}
/-- A polyhedron of `ℝⁿ` (p. 145): a set of the form `{x : Σⱼ aᵢⱼ xⱼ ≤ bᵢ, i = 1, …, m}`
for some `m`, some `m × n` real matrix `A` and some `b ∈ ℝᵐ`, i.e. the intersection of
finitely many generalized halfspaces. -/
def IsPolyhedron {n : ℕ} (P : Set (Fin n → ℝ)) : Prop :=
∃ (m : ℕ) (A : Matrix (Fin m) (Fin n) ℝ) (b : Fin m → ℝ), P = {x | A *ᵥ x ≤ b}
end VanderbeiLP.StrictComp
Source
Vanderbei, Linear Programming: Foundations and Extensions, 4th ed., Springer 2014, p. 144, Eq. (10.3) (halfspace, PDF p. 157); p. 145 (generalized halfspace, polyhedron, PDF p. 158)