The symmetric wedge over a facet projects its vertex-edge graph onto the base
ProvedHirsch.spindle_wedge_vertex_graph_projectionLet be bounded with and fix a row . The symmetric wedge over row is the polytope cut out by the rows with the same right-hand sides and one extra row with right-hand side ; its fibre over is . Then the coordinate projection sends vertices of to vertices of and sends every edge of either to an edge of or to a single point.
This is the Klee--Walkup -step wedge in the symmetric normalization used by Santos (Lemma 2.4 in the polar). Vertices of lie on one of the two roofs (otherwise the vertical direction is a tight-row kernel vector), each roof is an affine copy of , and an edge not inside a roof has all common tight rows with zero last coordinate, so its projection is a point. The one-sided version of this argument is the accepted platform proof of Hirsch.balanced_hpoly_transfer.
import Mathlib import Definitions.Def_Hirsch_model open scoped RealInnerProductSpace open WithLp EuclideanSpace
namespace Hirsch
theorem spindle_wedge_vertex_graph_projection
(d n : ℕ) (a : Fin n → EuclideanSpace ℝ (Fin d))
(b : Fin n → ℝ) (k : Fin n) (hb : ∀ i, 0 < b i)
(hbd : Bornology.IsBounded (Hpoly a b)) :
let A : Fin (n + 1) → EuclideanSpace ℝ (Fin (d + 1)) :=
Fin.snoc (fun i => toLp 2 (Fin.snoc (ofLp (a i))
(if i = k then (1 : ℝ) else 0)))
(toLp 2 (Fin.snoc (ofLp (a k)) (-1 : ℝ)))
let B : Fin (n + 1) → ℝ := Fin.snoc b (b k)
let π : EuclideanSpace ℝ (Fin (d + 1)) → EuclideanSpace ℝ (Fin d) :=
fun z => toLp 2 (Fin.init (ofLp z))
(∀ z ∈ Set.extremePoints ℝ (Hpoly A B),
π z ∈ Set.extremePoints ℝ (Hpoly a b)) ∧
(∀ z z', Adj (Hpoly A B) z z' →
π z = π z' ∨ Adj (Hpoly a b) (π z) (π z')) := by sorry
end Hirsch