Preparation and length increment: the missing step of Santos' strong -step for spindles
ProvedHirsch.spindle_preparation_and_lengthLet be a bounded spindle with apices , , rows, and no padded walk of length from to . Then there exist prepared data , apices and rows such that: all , the polytope is bounded, is feasible and is a vertex, the spindle (XOR) property holds, is tight at , is tight at , the rows tight at other than have trivial common kernel, and for every there is such that the symmetric wedge over with row tilted by admits no padded walk of length between and .
This is exactly the statement needed to finish Hirsch.spindle_one_step_axis: the remaining conjuncts (nonemptiness, boundedness, extremality of both lifted apices, XOR of the rows) are already proved for this construction. It follows from the row-simplicity preparation, the choice of a deletion-redundant row at the apex with more than tight rows (possible since ), and the prepared-spindle length lemma.
import Mathlib import Definitions.Def_Hirsch_model open scoped RealInnerProductSpace open WithLp EuclideanSpace
namespace Hirsch
theorem spindle_preparation_and_length (d n : ℕ) (hd : 0 < d) (hn : 2 * d < n)
(a : Fin n → EuclideanSpace ℝ (Fin d)) (b : Fin n → ℝ)
(u v : EuclideanSpace ℝ (Fin d)) (hb : ∀ i, 0 < b i)
(hbd : Bornology.IsBounded (Hpoly a b))
(hu : u ∈ Set.extremePoints ℝ (Hpoly a b))
(hv : v ∈ Set.extremePoints ℝ (Hpoly a b))
(hsp : ∀ i, (⟪a i, u⟫ = b i) ↔ ⟪a i, v⟫ ≠ b i)
(hlong : ∀ w : ℕ → EuclideanSpace ℝ (Fin d),
¬ (w 0 = u ∧ w d = v ∧
∀ l < d, w l = w (l + 1) ∨ Adj (Hpoly a b) (w l) (w (l + 1)))) :
∃ (a0 : Fin n → EuclideanSpace ℝ (Fin d)) (b0 : Fin n → ℝ)
(u0 v0 : EuclideanSpace ℝ (Fin d)) (k j : Fin n),
(∀ i, 0 < b0 i) ∧ Bornology.IsBounded (Hpoly a0 b0) ∧
u0 ∈ Hpoly a0 b0 ∧ v0 ∈ Set.extremePoints ℝ (Hpoly a0 b0) ∧
(∀ i, (⟪a0 i, u0⟫ = b0 i) ↔ ⟪a0 i, v0⟫ ≠ b0 i) ∧
⟪a0 k, v0⟫ = b0 k ∧ ⟪a0 j, u0⟫ = b0 j ∧
(∀ e : EuclideanSpace ℝ (Fin d),
(∀ i, i ≠ j → ⟪a0 i, u0⟫ = b0 i → ⟪a0 i, e⟫ = 0) → e = 0) ∧
∀ ε0 : ℝ, 0 < ε0 → ∃ ε : ℝ, 0 < ε ∧ ε < ε0 ∧
∀ w : ℕ → EuclideanSpace ℝ (Fin (d + 1)),
¬ (w 0 = toLp 2 (Fin.snoc (ofLp u0) (0 : ℝ)) ∧
w (d + 1) = toLp 2 (Fin.snoc (ofLp v0) (0 : ℝ)) ∧
∀ l < d + 1, w l = w (l + 1) ∨
Adj
(Hpoly
(Fin.snoc (fun i => toLp 2 (Fin.snoc (ofLp (a0 i))
(if i = k then (1 : ℝ) else if i = j then ε else 0)))
(toLp 2 (Fin.snoc (ofLp (a0 k)) (-1 : ℝ))))
(Fin.snoc b0 (b0 k)))
(w l) (w (l + 1))) := by sorry
end Hirsch