Hirsch routing for products hidden by a positive projective chart
ProvedHirsch.hpoly_diameter_le_excess_of_projectively_hidden_small_row_blocksLet be nonempty and bounded. Suppose an invertible linear change of coordinates and a partition of all describing rows identify with independent factors , each described by rows, where . All combinations of factor points must be feasible; the row identities certify an actual Cartesian product.
Choose and define . Suppose there are nonnegative weights satisfying
Then the polyhedron satisfies
There is no bound on total excess, number of factors, or repair-support deficit. The criterion includes products hidden by a positive projective transformation, even when the target normals do not split into independent linear blocks. The chart and factorization are supplied and certified; their existence for arbitrary polyhedra is not asserted.
Formalization Note Dimension and row partitions are explicit equivalences. Stationary steps permit padding to exactly steps, with natural subtraction. The certificate checker uses rational data; the theorem permits real coefficients.
import Mathlib import Definitions.Def_Hirsch_model open scoped BigOperators RealInnerProductSpace open Set Hirsch
namespace Hirsch
theorem hpoly_diameter_le_excess_of_projectively_hidden_small_row_blocks
{d n k : ℕ} (dims counts : Fin k → ℕ)
(a : Fin n → EuclideanSpace ℝ (Fin d)) (b : Fin n → ℝ)
(T : EuclideanSpace ℝ (Fin d) ≃ₗ[ℝ]
(∀ i : Fin k, EuclideanSpace ℝ (Fin (dims i))))
(e : (Σ i : Fin k, Fin (counts i)) ≃ Fin n)
(A : ∀ i : Fin k, Fin (counts i) → EuclideanSpace ℝ (Fin (dims i)))
(hrows : ∀ z i j, ⟪a (e ⟨i, j⟩), T.symm z⟫ = ⟪A i j, z i⟫)
(hbd : Bornology.IsBounded (Hpoly a b)) (hne : (Hpoly a b).Nonempty)
(hcount : ∀ i, dims i ≤ counts i)
(hsmallcount : ∀ i, counts i ≤ dims i + 3)
(c : EuclideanSpace ℝ (Fin d)) (weights inverseWeights : Fin n → ℝ)
(hweights : ∀ i, 0 ≤ weights i)
(hnormal : (∑ i, weights i • a i) = -c)
(hmargin : (∑ i, weights i * b i) < 1)
(hinverseWeights : ∀ i, 0 ≤ inverseWeights i)
(hinverseNormal : (∑ i, inverseWeights i • (a i + b i • c)) = c)
(hinverseMargin : (∑ i, inverseWeights i * b i) < 1) :
DiamLE (Hpoly (fun i => a i + b i • c) b) (n - d) := by sorry
end Hirsch