Space dilation , widths , , and the ratio of a convex body
DefinitionShorNonsmooth_RAlgorithm_WidthsThroughout, is the -dimensional Euclidean space with inner product .
- Space dilation. For a unit vector and a real number , the operator of space dilation in the direction with coefficient is the linear map
which multiplies the component of along by and leaves the orthogonal component unchanged.
- Widths. For a set and a unit vector let
the positions of the two hyperplanes with normal that support . The width of in the direction is ; the width of is and its diameter is .
- The ratio . For a unit vector let , the distance from to the hyperplane through the origin with normal , and
These quantities measure how thin a convex body is and how far it is from the origin relative to its thickness; they are the tools with which Section 3.7 tracks the effect of repeated space dilations in the -algorithm.
Formalization Note is EuclideanSpace ℝ (Fin n). The book's minima and maxima over and over the unit sphere are written as sInf/sSup; they coincide with the book's values whenever is nonempty and compact, which every theorem of the mission assumes or guarantees (a closed bounded body; the set ). and take values in (ℝ≥0∞), so the book's value is represented exactly.
import Mathlib
open scoped InnerProductSpace ENNReal
namespace ShorNonsmooth.RAlgorithm
/-- Shor (1985), p. 50, Definition (§3.2): the **operator of space dilation** `R_α(ξ)` in the
direction `ξ` (a unit vector) with coefficient `α`: writing `x = (x, ξ) ξ + d_ξ(x)`, it maps
`x ↦ α (x, ξ) ξ + d_ξ(x) = x + (α - 1)(x, ξ) ξ`. Here `innerSL ℝ ξ x = (ξ, x)`. -/
noncomputable def dilation {n : ℕ} (α : ℝ) (ξ : EuclideanSpace ℝ (Fin n)) :
EuclideanSpace ℝ (Fin n) →L[ℝ] EuclideanSpace ℝ (Fin n) :=
ContinuousLinearMap.id ℝ (EuclideanSpace ℝ (Fin n)) + (α - 1) • (innerSL ℝ ξ).smulRight ξ
/-- Shor (1985), p. 80, (3.51): for a set `W` and a unit vector `η`,
`d_η⁻ = max {d | (η, x) - d ≥ 0, x ∈ W} = min_{x ∈ W} (η, x)`. Taken as an infimum; it is the
book's value whenever `W` is nonempty and compact (every use below). -/
noncomputable def lowerSupport {n : ℕ} (η : EuclideanSpace ℝ (Fin n))
(W : Set (EuclideanSpace ℝ (Fin n))) : ℝ :=
sInf ((fun x => ⟪η, x⟫_ℝ) '' W)
/-- Shor (1985), p. 80, (3.51): `d_η⁺ = min {d | (η, x) - d ≤ 0, x ∈ W} = max_{x ∈ W} (η, x)`. -/
noncomputable def upperSupport {n : ℕ} (η : EuclideanSpace ℝ (Fin n))
(W : Set (EuclideanSpace ℝ (Fin n))) : ℝ :=
sSup ((fun x => ⟪η, x⟫_ℝ) '' W)
/-- Shor (1985), p. 80: the **width of `W` in the direction `η`**, `d_η(W) = d_η⁺ - d_η⁻`, the
distance between the two parallel supporting hyperplanes with normal `η`. -/
noncomputable def dirWidth {n : ℕ} (η : EuclideanSpace ℝ (Fin n))
(W : Set (EuclideanSpace ℝ (Fin n))) : ℝ :=
upperSupport η W - lowerSupport η W
/-- Shor (1985), p. 80: the **width** `d(W) = min_{‖η‖ = 1} d_η(W)`. -/
noncomputable def width {n : ℕ} (W : Set (EuclideanSpace ℝ (Fin n))) : ℝ :=
sInf ((fun η => dirWidth η W) '' Metric.sphere (0 : EuclideanSpace ℝ (Fin n)) 1)
/-- Shor (1985), p. 80: the **diameter** `D(W) = max_{‖η‖ = 1} d_η(W)`. -/
noncomputable def diameterW {n : ℕ} (W : Set (EuclideanSpace ℝ (Fin n))) : ℝ :=
sSup ((fun η => dirWidth η W) '' Metric.sphere (0 : EuclideanSpace ℝ (Fin n)) 1)
/-- Shor (1985), p. 82: `e_ρ(W) = inf_{z ∈ W} |(ρ, z)|`, the distance from the hyperplane
`(ρ, z) = 0` through the origin to `W` (for a unit `ρ`). -/
noncomputable def eRho {n : ℕ} (ρ : EuclideanSpace ℝ (Fin n))
(W : Set (EuclideanSpace ℝ (Fin n))) : ℝ :=
sInf ((fun z => |⟪ρ, z⟫_ℝ|) '' W)
/-- Shor (1985), p. 82: `K_ρ(W) = d_ρ(W) / e_ρ(W)` if `e_ρ(W) ≠ 0`, and `+∞` if `e_ρ(W) = 0`;
valued in `[0, +∞]`. -/
noncomputable def kRatio {n : ℕ} (ρ : EuclideanSpace ℝ (Fin n))
(W : Set (EuclideanSpace ℝ (Fin n))) : ℝ≥0∞ :=
if eRho ρ W = 0 then ⊤ else ENNReal.ofReal (dirWidth ρ W / eRho ρ W)
/-- Shor (1985), p. 82: `p(W) = inf_{‖ρ‖ = 1} K_ρ(W)`, valued in `[0, +∞]`. -/
noncomputable def pRatio {n : ℕ} (W : Set (EuclideanSpace ℝ (Fin n))) : ℝ≥0∞ :=
⨅ ρ ∈ Metric.sphere (0 : EuclideanSpace ℝ (Fin n)) 1, kRatio ρ W
end ShorNonsmooth.RAlgorithm