Hanner polytopes
DefinitionCentered unit segment#✓fully proved
The centered unit segment is the closed unit ball \(\{x \in \mathbb{R}^1 : \|x\| \le 1\}\), that is, the segment \([-1, 1]\). It is the one-dimensional leaf in the recursive definition of Hanner polytopes.
def hannerUnitSegment : Set (EuclideanSpace ℝ (Fin 1)) :=
Metric.closedBall 0 1
Used by 13
Definition\(\ell_\infty\) sum of bodies#✓fully proved
For sets \(K \subseteq \mathbb{R}^m\) and \(L \subseteq \mathbb{R}^n\), the \(\ell_\infty\) sum of \(K\) and \(L\) is the set of points of \(\mathbb{R}^{m+n}\) whose first \(m\) coordinates form a point of \(K\) and whose last \(n\) coordinates form a point of \(L\); that is, the product \(K \times L\) under the identification \(\mathbb{R}^{m+n} = \mathbb{R}^m \times \mathbb{R}^n\).
noncomputable def hannerInfinitySum {m n : ℕ}
(K : Set (EuclideanSpace ℝ (Fin m)))
(L : Set (EuclideanSpace ℝ (Fin n))) :
Set (EuclideanSpace ℝ (Fin (m + n))) :=
EuclideanSpace.finAddEquivProd.symm.toLinearEquiv '' (K ×ˢ L)
Used by 11
Definition\(\ell_1\) sum of bodies#✓fully proved
For sets \(K \subseteq \mathbb{R}^m\) and \(L \subseteq \mathbb{R}^n\), the \(\ell_1\) sum of \(K\) and \(L\) is the convex hull in \(\mathbb{R}^{m+n}\) of \((K \times \{0\}) \cup (\{0\} \times L)\), where \(\mathbb{R}^{m+n}\) is identified with \(\mathbb{R}^m \times \mathbb{R}^n\) by splitting off the first \(m\) coordinates.
noncomputable def hannerOneSum {m n : ℕ}
(K : Set (EuclideanSpace ℝ (Fin m)))
(L : Set (EuclideanSpace ℝ (Fin n))) :
Set (EuclideanSpace ℝ (Fin (m + n))) :=
EuclideanSpace.finAddEquivProd.symm.toLinearEquiv ''
convexHull ℝ ((K ×ˢ ({0} : Set (EuclideanSpace ℝ (Fin n)))) ∪
(({0} : Set (EuclideanSpace ℝ (Fin m))) ×ˢ L))
Used by 9
InductiveHanner polytopes#✓fully proved
For \(K \subseteq \mathbb{R}^m\) and \(L \subseteq \mathbb{R}^n\), identify \(\mathbb{R}^{m+n}\) with \(\mathbb{R}^m \times \mathbb{R}^n\) by splitting off the first \(m\) coordinates; the \(\ell_\infty\) sum of \(K\) and \(L\) is \(K \times L\), and their \(\ell_1\) sum is the convex hull of \((K \times \{0\}) \cup (\{0\} \times L)\), both viewed as subsets of \(\mathbb{R}^{m+n}\). The Hanner polytopes are the smallest family of subsets of the Euclidean spaces \(\mathbb{R}^n\) such that: the unit segment \([-1, 1] \subseteq \mathbb{R}^1\) is a Hanner polytope; if \(K \subseteq \mathbb{R}^n\) is a Hanner polytope and \(e \colon \mathbb{R}^n \to \mathbb{R}^n\) is an invertible linear map, then \(e(K)\) is a Hanner polytope; and if \(K \subseteq \mathbb{R}^m\) and \(L \subseteq \mathbb{R}^n\) are Hanner polytopes with \(m, n > 0\), then their \(\ell_\infty\) sum and their \(\ell_1\) sum are Hanner polytopes.
MetaMathlibExt.IsHannerPolytope · 16 lines
inductive IsHannerPolytope : {n : ℕ} → Set (EuclideanSpace ℝ (Fin n)) → Prop
| unitSegment : IsHannerPolytope hannerUnitSegment
| linearImage {n : ℕ} {K : Set (EuclideanSpace ℝ (Fin n))}
(hK : IsHannerPolytope K)
(e : EuclideanSpace ℝ (Fin n) ≃ₗ[ℝ] EuclideanSpace ℝ (Fin n)) :
IsHannerPolytope (e '' K)
| infinitySum {m n : ℕ} {K : Set (EuclideanSpace ℝ (Fin m))}
{L : Set (EuclideanSpace ℝ (Fin n))}
(hm : 0 < m) (hn : 0 < n)
(hK : IsHannerPolytope K) (hL : IsHannerPolytope L) :
IsHannerPolytope (hannerInfinitySum K L)
| oneSum {m n : ℕ} {K : Set (EuclideanSpace ℝ (Fin m))}
{L : Set (EuclideanSpace ℝ (Fin n))}
(hm : 0 < m) (hn : 0 < n)
(hK : IsHannerPolytope K) (hL : IsHannerPolytope L) :
IsHannerPolytope (hannerOneSum K L)
def hannerUnitSegment : Set (EuclideanSpace ℝ (Fin 1)) :=
Metric.closedBall 0 1
MathlibExt/Analysis/Convex/HannerPolytope.lean:28
noncomputable def hannerInfinitySum {m n : ℕ}
(K : Set (EuclideanSpace ℝ (Fin m)))
(L : Set (EuclideanSpace ℝ (Fin n))) :
Set (EuclideanSpace ℝ (Fin (m + n))) :=
EuclideanSpace.finAddEquivProd.symm.toLinearEquiv '' (K ×ˢ L)
MathlibExt/Analysis/Convex/HannerPolytope.lean:32
noncomputable def hannerOneSum {m n : ℕ}
(K : Set (EuclideanSpace ℝ (Fin m)))
(L : Set (EuclideanSpace ℝ (Fin n))) :
Set (EuclideanSpace ℝ (Fin (m + n))) :=
EuclideanSpace.finAddEquivProd.symm.toLinearEquiv ''
convexHull ℝ ((K ×ˢ ({0} : Set (EuclideanSpace ℝ (Fin n)))) ∪
(({0} : Set (EuclideanSpace ℝ (Fin m))) ×ˢ L))
MathlibExt/Analysis/Convex/HannerPolytope.lean:40
Uses 3 · Used by 9
DefinitionHanner cube#✓fully proved
For \(n \in \mathbb{N}\), the Hanner cube \(C_n \subseteq \mathbb{R}^{n+1}\) is defined by recursion on \(n\): \(C_0\) is the centered unit segment \([-1, 1] \subseteq \mathbb{R}^1\), and \(C_{n+1} \subseteq \mathbb{R}^{n+2}\) is the \(\ell_\infty\) sum of \(C_n\) and the centered unit segment.
noncomputable def hannerCube : (n : ℕ) → Set (EuclideanSpace ℝ (Fin (n + 1)))
| 0 => hannerUnitSegment
| n + 1 => hannerInfinitySum (hannerCube n) hannerUnitSegment
def hannerUnitSegment : Set (EuclideanSpace ℝ (Fin 1)) :=
Metric.closedBall 0 1
MathlibExt/Analysis/Convex/HannerPolytope.lean:28
noncomputable def hannerInfinitySum {m n : ℕ}
(K : Set (EuclideanSpace ℝ (Fin m)))
(L : Set (EuclideanSpace ℝ (Fin n))) :
Set (EuclideanSpace ℝ (Fin (m + n))) :=
EuclideanSpace.finAddEquivProd.symm.toLinearEquiv '' (K ×ˢ L)
MathlibExt/Analysis/Convex/HannerPolytope.lean:32
Uses 2 · Used by 2
DefinitionHanner cross-polytope#✓fully proved
For \(n \in \mathbb{N}\), the Hanner cross-polytope \(P_n \subseteq \mathbb{R}^{n+1}\) is defined by recursion on \(n\): \(P_0\) is the centered unit segment \([-1, 1] \subseteq \mathbb{R}^1\), and \(P_{n+1} \subseteq \mathbb{R}^{n+2}\) is the \(\ell_1\) sum of \(P_n\) and the centered unit segment.
noncomputable def hannerCrossPolytope : (n : ℕ) → Set (EuclideanSpace ℝ (Fin (n + 1)))
| 0 => hannerUnitSegment
| n + 1 => hannerOneSum (hannerCrossPolytope n) hannerUnitSegment
def hannerUnitSegment : Set (EuclideanSpace ℝ (Fin 1)) :=
Metric.closedBall 0 1
MathlibExt/Analysis/Convex/HannerPolytope.lean:28
noncomputable def hannerOneSum {m n : ℕ}
(K : Set (EuclideanSpace ℝ (Fin m)))
(L : Set (EuclideanSpace ℝ (Fin n))) :
Set (EuclideanSpace ℝ (Fin (m + n))) :=
EuclideanSpace.finAddEquivProd.symm.toLinearEquiv ''
convexHull ℝ ((K ×ˢ ({0} : Set (EuclideanSpace ℝ (Fin n)))) ∪
(({0} : Set (EuclideanSpace ℝ (Fin m))) ×ˢ L))
MathlibExt/Analysis/Convex/HannerPolytope.lean:40
Uses 2 · Used by 1
TheoremThe Hanner cubes are Hanner polytopes#✓fully proved
For every \(n \in \mathbb{N}\), the Hanner cube \(C_n \subseteq \mathbb{R}^{n+1}\) is a Hanner polytope.
theorem hannerCube_isHannerPolytope (n : ℕ) : IsHannerPolytope (hannerCube n)
inductive IsHannerPolytope : {n : ℕ} → Set (EuclideanSpace ℝ (Fin n)) → Prop
| unitSegment : IsHannerPolytope hannerUnitSegment
| linearImage {n : ℕ} {K : Set (EuclideanSpace ℝ (Fin n))}
(hK : IsHannerPolytope K)
(e : EuclideanSpace ℝ (Fin n) ≃ₗ[ℝ] EuclideanSpace ℝ (Fin n)) :
IsHannerPolytope (e '' K)
| infinitySum {m n : ℕ} {K : Set (EuclideanSpace ℝ (Fin m))}
{L : Set (EuclideanSpace ℝ (Fin n))}
(hm : 0 < m) (hn : 0 < n)
(hK : IsHannerPolytope K) (hL : IsHannerPolytope L) :
IsHannerPolytope (hannerInfinitySum K L)
| oneSum {m n : ℕ} {K : Set (EuclideanSpace ℝ (Fin m))}
⋯
MathlibExt/Analysis/Convex/HannerPolytope.lean:51
noncomputable def hannerCube : (n : ℕ) → Set (EuclideanSpace ℝ (Fin (n + 1)))
| 0 => hannerUnitSegment
| n + 1 => hannerInfinitySum (hannerCube n) hannerUnitSegment
MathlibExt/Analysis/Convex/HannerPolytope.lean:69
Uses 4
TheoremThe Hanner cross-polytopes are Hanner polytopes#✓fully proved
For every \(n \in \mathbb{N}\), the Hanner cross-polytope \(P_n \subseteq \mathbb{R}^{n+1}\) is a Hanner polytope.
theorem hannerCrossPolytope_isHannerPolytope (n : ℕ) :
IsHannerPolytope (hannerCrossPolytope n)
inductive IsHannerPolytope : {n : ℕ} → Set (EuclideanSpace ℝ (Fin n)) → Prop
| unitSegment : IsHannerPolytope hannerUnitSegment
| linearImage {n : ℕ} {K : Set (EuclideanSpace ℝ (Fin n))}
(hK : IsHannerPolytope K)
(e : EuclideanSpace ℝ (Fin n) ≃ₗ[ℝ] EuclideanSpace ℝ (Fin n)) :
IsHannerPolytope (e '' K)
| infinitySum {m n : ℕ} {K : Set (EuclideanSpace ℝ (Fin m))}
{L : Set (EuclideanSpace ℝ (Fin n))}
(hm : 0 < m) (hn : 0 < n)
(hK : IsHannerPolytope K) (hL : IsHannerPolytope L) :
IsHannerPolytope (hannerInfinitySum K L)
| oneSum {m n : ℕ} {K : Set (EuclideanSpace ℝ (Fin m))}
⋯
MathlibExt/Analysis/Convex/HannerPolytope.lean:51
noncomputable def hannerCrossPolytope : (n : ℕ) → Set (EuclideanSpace ℝ (Fin (n + 1)))
| 0 => hannerUnitSegment
| n + 1 => hannerOneSum (hannerCrossPolytope n) hannerUnitSegment
MathlibExt/Analysis/Convex/HannerPolytope.lean:74
Uses 4
TheoremMembership in the Hanner unit segment#✓fully proved
A point \(x \in \mathbb{R}^1\) lies in the Hanner unit segment if and only if every coordinate \(x_i\) of \(x\) satisfies \(|x_i| \le 1\).
theorem mem_hannerUnitSegment_iff (x : EuclideanSpace ℝ (Fin 1)) :
x ∈ hannerUnitSegment ↔ ∀ i, |x i| ≤ 1
def hannerUnitSegment : Set (EuclideanSpace ℝ (Fin 1)) :=
Metric.closedBall 0 1
MathlibExt/Analysis/Convex/HannerPolytope.lean:28
Uses 1 · Used by 1
TheoremMembership in the \(\ell_\infty\) Hanner sum#✓fully proved
Let \(K \subseteq \mathbb{R}^m\) and \(L \subseteq \mathbb{R}^n\). A point \(x \in \mathbb{R}^{m+n}\) lies in the \(\ell_\infty\) Hanner sum of \(K\) and \(L\) if and only if \((x_1, \dots, x_m) \in K\) and \((x_{m+1}, \dots, x_{m+n}) \in L\).
theorem mem_hannerInfinitySum_iff {m n : ℕ}
{K : Set (EuclideanSpace ℝ (Fin m))} {L : Set (EuclideanSpace ℝ (Fin n))}
(x : EuclideanSpace ℝ (Fin (m + n))) :
x ∈ hannerInfinitySum K L ↔
(EuclideanSpace.finAddEquivProd x).1 ∈ K ∧
(EuclideanSpace.finAddEquivProd x).2 ∈ L
noncomputable def hannerInfinitySum {m n : ℕ}
(K : Set (EuclideanSpace ℝ (Fin m)))
(L : Set (EuclideanSpace ℝ (Fin n))) :
Set (EuclideanSpace ℝ (Fin (m + n))) :=
EuclideanSpace.finAddEquivProd.symm.toLinearEquiv '' (K ×ˢ L)
MathlibExt/Analysis/Convex/HannerPolytope.lean:32
Uses 1 · Used by 1
TheoremThe Hanner cube is the coordinate cube#✓fully proved
For every \(n \in \mathbb{N}\), the Hanner cube \(C_n \subseteq \mathbb{R}^{n+1}\) equals the coordinate cube \(\{x \in \mathbb{R}^{n+1} : -1 \le x_i \le 1 \text{ for every } i\} = [-1, 1]^{n+1}\).
theorem hannerCube_eq_coordinateCube (n : ℕ) :
hannerCube n = ConvexCovering.coordinateCube (n + 1)
noncomputable def hannerCube : (n : ℕ) → Set (EuclideanSpace ℝ (Fin (n + 1)))
| 0 => hannerUnitSegment
| n + 1 => hannerInfinitySum (hannerCube n) hannerUnitSegment
MathlibExt/Analysis/Convex/HannerPolytope.lean:69
def coordinateCube (n : ℕ) : Set (EuclideanSpace ℝ (Fin n)) :=
{x | ∀ i, x i ∈ Set.Icc (-1 : ℝ) 1}
MathlibExt/Geometry/Convex/CubeCovering.lean:31
TheoremHanner polytopes live in positive dimension#✓fully proved
If \(K \subseteq \mathbb{R}^n\) is a Hanner polytope, then \(0 < n\).
theorem IsHannerPolytope.dimension_pos {n : ℕ}
{K : Set (EuclideanSpace ℝ (Fin n))} (hK : IsHannerPolytope K) : 0 < n
inductive IsHannerPolytope : {n : ℕ} → Set (EuclideanSpace ℝ (Fin n)) → Prop
| unitSegment : IsHannerPolytope hannerUnitSegment
| linearImage {n : ℕ} {K : Set (EuclideanSpace ℝ (Fin n))}
(hK : IsHannerPolytope K)
(e : EuclideanSpace ℝ (Fin n) ≃ₗ[ℝ] EuclideanSpace ℝ (Fin n)) :
IsHannerPolytope (e '' K)
| infinitySum {m n : ℕ} {K : Set (EuclideanSpace ℝ (Fin m))}
{L : Set (EuclideanSpace ℝ (Fin n))}
(hm : 0 < m) (hn : 0 < n)
(hK : IsHannerPolytope K) (hL : IsHannerPolytope L) :
IsHannerPolytope (hannerInfinitySum K L)
| oneSum {m n : ℕ} {K : Set (EuclideanSpace ℝ (Fin m))}
⋯
MathlibExt/Analysis/Convex/HannerPolytope.lean:51
Uses 4
TheoremHanner polytopes are centrally symmetric#✓fully proved
Every Hanner polytope \(K\) is centrally symmetric about the origin: \(-K = K\).
theorem IsHannerPolytope.neg_eq_self {n : ℕ}
{K : Set (EuclideanSpace ℝ (Fin n))} (hK : IsHannerPolytope K) : -K = K
inductive IsHannerPolytope : {n : ℕ} → Set (EuclideanSpace ℝ (Fin n)) → Prop
| unitSegment : IsHannerPolytope hannerUnitSegment
| linearImage {n : ℕ} {K : Set (EuclideanSpace ℝ (Fin n))}
(hK : IsHannerPolytope K)
(e : EuclideanSpace ℝ (Fin n) ≃ₗ[ℝ] EuclideanSpace ℝ (Fin n)) :
IsHannerPolytope (e '' K)
| infinitySum {m n : ℕ} {K : Set (EuclideanSpace ℝ (Fin m))}
{L : Set (EuclideanSpace ℝ (Fin n))}
(hm : 0 < m) (hn : 0 < n)
(hK : IsHannerPolytope K) (hL : IsHannerPolytope L) :
IsHannerPolytope (hannerInfinitySum K L)
| oneSum {m n : ℕ} {K : Set (EuclideanSpace ℝ (Fin m))}
⋯
MathlibExt/Analysis/Convex/HannerPolytope.lean:51
Uses 4 · Used by 1
TheoremNegation preserves membership in a Hanner polytope#✓fully proved
For every Hanner polytope \(K \subseteq \mathbb{R}^n\) and every \(x \in \mathbb{R}^n\), \(-x \in K\) if and only if \(x \in K\).
theorem IsHannerPolytope.neg_mem_iff {n : ℕ}
{K : Set (EuclideanSpace ℝ (Fin n))} (hK : IsHannerPolytope K)
{x : EuclideanSpace ℝ (Fin n)} : -x ∈ K ↔ x ∈ K
inductive IsHannerPolytope : {n : ℕ} → Set (EuclideanSpace ℝ (Fin n)) → Prop
| unitSegment : IsHannerPolytope hannerUnitSegment
| linearImage {n : ℕ} {K : Set (EuclideanSpace ℝ (Fin n))}
(hK : IsHannerPolytope K)
(e : EuclideanSpace ℝ (Fin n) ≃ₗ[ℝ] EuclideanSpace ℝ (Fin n)) :
IsHannerPolytope (e '' K)
| infinitySum {m n : ℕ} {K : Set (EuclideanSpace ℝ (Fin m))}
{L : Set (EuclideanSpace ℝ (Fin n))}
(hm : 0 < m) (hn : 0 < n)
(hK : IsHannerPolytope K) (hL : IsHannerPolytope L) :
IsHannerPolytope (hannerInfinitySum K L)
| oneSum {m n : ℕ} {K : Set (EuclideanSpace ℝ (Fin m))}
⋯
MathlibExt/Analysis/Convex/HannerPolytope.lean:51
Uses 2
TheoremHanner polytopes are convex#✓fully proved
Every Hanner polytope \(K \subseteq \mathbb{R}^n\) is convex.
theorem IsHannerPolytope.convex {n : ℕ}
{K : Set (EuclideanSpace ℝ (Fin n))} (hK : IsHannerPolytope K) : Convex ℝ K
inductive IsHannerPolytope : {n : ℕ} → Set (EuclideanSpace ℝ (Fin n)) → Prop
| unitSegment : IsHannerPolytope hannerUnitSegment
| linearImage {n : ℕ} {K : Set (EuclideanSpace ℝ (Fin n))}
(hK : IsHannerPolytope K)
(e : EuclideanSpace ℝ (Fin n) ≃ₗ[ℝ] EuclideanSpace ℝ (Fin n)) :
IsHannerPolytope (e '' K)
| infinitySum {m n : ℕ} {K : Set (EuclideanSpace ℝ (Fin m))}
{L : Set (EuclideanSpace ℝ (Fin n))}
(hm : 0 < m) (hn : 0 < n)
(hK : IsHannerPolytope K) (hL : IsHannerPolytope L) :
IsHannerPolytope (hannerInfinitySum K L)
| oneSum {m n : ℕ} {K : Set (EuclideanSpace ℝ (Fin m))}
⋯
MathlibExt/Analysis/Convex/HannerPolytope.lean:51
Uses 4 · Used by 1
TheoremHanner polytopes contain the origin#✓fully proved
The origin belongs to every Hanner polytope.
theorem IsHannerPolytope.zero_mem {n : ℕ}
{K : Set (EuclideanSpace ℝ (Fin n))} (hK : IsHannerPolytope K) : 0 ∈ K
inductive IsHannerPolytope : {n : ℕ} → Set (EuclideanSpace ℝ (Fin n)) → Prop
| unitSegment : IsHannerPolytope hannerUnitSegment
| linearImage {n : ℕ} {K : Set (EuclideanSpace ℝ (Fin n))}
(hK : IsHannerPolytope K)
(e : EuclideanSpace ℝ (Fin n) ≃ₗ[ℝ] EuclideanSpace ℝ (Fin n)) :
IsHannerPolytope (e '' K)
| infinitySum {m n : ℕ} {K : Set (EuclideanSpace ℝ (Fin m))}
{L : Set (EuclideanSpace ℝ (Fin n))}
(hm : 0 < m) (hn : 0 < n)
(hK : IsHannerPolytope K) (hL : IsHannerPolytope L) :
IsHannerPolytope (hannerInfinitySum K L)
| oneSum {m n : ℕ} {K : Set (EuclideanSpace ℝ (Fin m))}
⋯
MathlibExt/Analysis/Convex/HannerPolytope.lean:51
Uses 4 · Used by 1
TheoremHanner polytopes are compact#✓fully proved
Every Hanner polytope is compact.
theorem IsHannerPolytope.isCompact {n : ℕ}
{K : Set (EuclideanSpace ℝ (Fin n))} (hK : IsHannerPolytope K) : IsCompact K
inductive IsHannerPolytope : {n : ℕ} → Set (EuclideanSpace ℝ (Fin n)) → Prop
| unitSegment : IsHannerPolytope hannerUnitSegment
| linearImage {n : ℕ} {K : Set (EuclideanSpace ℝ (Fin n))}
(hK : IsHannerPolytope K)
(e : EuclideanSpace ℝ (Fin n) ≃ₗ[ℝ] EuclideanSpace ℝ (Fin n)) :
IsHannerPolytope (e '' K)
| infinitySum {m n : ℕ} {K : Set (EuclideanSpace ℝ (Fin m))}
{L : Set (EuclideanSpace ℝ (Fin n))}
(hm : 0 < m) (hn : 0 < n)
(hK : IsHannerPolytope K) (hL : IsHannerPolytope L) :
IsHannerPolytope (hannerInfinitySum K L)
| oneSum {m n : ℕ} {K : Set (EuclideanSpace ℝ (Fin m))}
⋯
MathlibExt/Analysis/Convex/HannerPolytope.lean:51
Uses 6
TheoremHanner polytopes contain the origin in their interior#✓fully proved
For every \(n \in \mathbb{N}\) and every Hanner polytope \(K \subseteq \mathbb{R}^n\), the origin is an interior point of \(K\).
theorem IsHannerPolytope.zero_mem_interior {n : ℕ}
{K : Set (EuclideanSpace ℝ (Fin n))} (hK : IsHannerPolytope K) : 0 ∈ interior K
inductive IsHannerPolytope : {n : ℕ} → Set (EuclideanSpace ℝ (Fin n)) → Prop
| unitSegment : IsHannerPolytope hannerUnitSegment
| linearImage {n : ℕ} {K : Set (EuclideanSpace ℝ (Fin n))}
(hK : IsHannerPolytope K)
(e : EuclideanSpace ℝ (Fin n) ≃ₗ[ℝ] EuclideanSpace ℝ (Fin n)) :
IsHannerPolytope (e '' K)
| infinitySum {m n : ℕ} {K : Set (EuclideanSpace ℝ (Fin m))}
{L : Set (EuclideanSpace ℝ (Fin n))}
(hm : 0 < m) (hn : 0 < n)
(hK : IsHannerPolytope K) (hL : IsHannerPolytope L) :
IsHannerPolytope (hannerInfinitySum K L)
| oneSum {m n : ℕ} {K : Set (EuclideanSpace ℝ (Fin m))}
⋯
MathlibExt/Analysis/Convex/HannerPolytope.lean:51
Uses 4
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.