# The Minkowski functional #

This file defines the Minkowski functional, aka gauge.

The Minkowski functional of a set s is the function which associates each point to how much you need to scale s for x to be inside it. When s is symmetric, convex and absorbent, its gauge is a seminorm. Reciprocally, any seminorm arises as the gauge of some set, namely its unit ball. This induces the equivalence of seminorms and locally convex topological vector spaces.

## Main declarations #

For a real vector space,

• gauge: Aka Minkowski functional. gauge s x is the least (actually, an infimum) r such that x ∈ r • s.
• gaugeSeminorm: The Minkowski functional as a seminorm, when s is symmetric, convex and absorbent.

## References #

• [H. H. Schaefer, Topological Vector Spaces][schaefer1966]

## Tags #

Minkowski functional, gauge

def gauge {E : Type u_2} [] [] (s : Set E) (x : E) :

The Minkowski functional. Given a set s in a real vector space, gauge s is the functional which sends x : E to the smallest r : ℝ such that x is in s scaled by r.

Equations
Instances For
theorem gauge_def {E : Type u_2} [] [] {s : Set E} {x : E} :
gauge s x = sInf {r : | r x r s}
theorem gauge_def' {E : Type u_2} [] [] {s : Set E} {x : E} :
gauge s x = sInf {r : | r r⁻¹ x s}

An alternative definition of the gauge using scalar multiplication on the element rather than on the set.

theorem Absorbent.gauge_set_nonempty {E : Type u_2} [] [] {s : Set E} {x : E} (absorbs : ) :
{r : | 0 < r x r s}.Nonempty

If the given subset is Absorbent then the set we take an infimum over in gauge is nonempty, which is useful for proving many properties about the gauge.

theorem gauge_mono {E : Type u_2} [] [] {s : Set E} {t : Set E} (hs : ) (h : s t) :
theorem exists_lt_of_gauge_lt {E : Type u_2} [] [] {s : Set E} {x : E} {a : } (absorbs : ) (h : gauge s x < a) :
∃ (b : ), 0 < b b < a x b s
@[simp]
theorem gauge_zero {E : Type u_2} [] [] {s : Set E} :
gauge s 0 = 0

The gauge evaluated at 0 is always zero (mathematically this requires 0 to be in the set s but, the real infimum of the empty set in Lean being defined as 0, it holds unconditionally).

@[simp]
theorem gauge_zero' {E : Type u_2} [] [] :
= 0
@[simp]
theorem gauge_empty {E : Type u_2} [] [] :
= 0
theorem gauge_of_subset_zero {E : Type u_2} [] [] {s : Set E} (h : s 0) :
= 0
theorem gauge_nonneg {E : Type u_2} [] [] {s : Set E} (x : E) :
0 gauge s x

The gauge is always nonnegative.

theorem gauge_neg {E : Type u_2} [] [] {s : Set E} (symmetric : xs, -x s) (x : E) :
gauge s (-x) = gauge s x
theorem gauge_neg_set_neg {E : Type u_2} [] [] {s : Set E} (x : E) :
gauge (-s) (-x) = gauge s x
theorem gauge_neg_set_eq_gauge_neg {E : Type u_2} [] [] {s : Set E} (x : E) :
gauge (-s) x = gauge s (-x)
theorem gauge_le_of_mem {E : Type u_2} [] [] {s : Set E} {x : E} {a : } (ha : 0 a) (hx : x a s) :
gauge s x a
theorem gauge_le_eq {E : Type u_2} [] [] {s : Set E} {a : } (hs₁ : ) (hs₀ : 0 s) (hs₂ : ) (ha : 0 a) :
{x : E | gauge s x a} = ⋂ (r : ), ⋂ (_ : a < r), r s
theorem gauge_lt_eq' {E : Type u_2} [] [] {s : Set E} (absorbs : ) (a : ) :
{x : E | gauge s x < a} = ⋃ (r : ), ⋃ (_ : 0 < r), ⋃ (_ : r < a), r s
theorem gauge_lt_eq {E : Type u_2} [] [] {s : Set E} (absorbs : ) (a : ) :
{x : E | gauge s x < a} = rSet.Ioo 0 a, r s
theorem mem_openSegment_of_gauge_lt_one {E : Type u_2} [] [] {s : Set E} {x : E} (absorbs : ) (hgauge : gauge s x < 1) :
ys, x
theorem gauge_lt_one_subset_self {E : Type u_2} [] [] {s : Set E} (hs : ) (h₀ : 0 s) (absorbs : ) :
{x : E | gauge s x < 1} s
theorem gauge_le_one_of_mem {E : Type u_2} [] [] {s : Set E} {x : E} (hx : x s) :
gauge s x 1
theorem gauge_add_le {E : Type u_2} [] [] {s : Set E} (hs : ) (absorbs : ) (x : E) (y : E) :
gauge s (x + y) gauge s x + gauge s y

theorem self_subset_gauge_le_one {E : Type u_2} [] [] {s : Set E} :
s {x : E | gauge s x 1}
theorem Convex.gauge_le {E : Type u_2} [] [] {s : Set E} (hs : ) (h₀ : 0 s) (absorbs : ) (a : ) :
Convex {x : E | gauge s x a}
theorem Balanced.starConvex {E : Type u_2} [] [] {s : Set E} (hs : ) :
theorem le_gauge_of_not_mem {E : Type u_2} [] [] {s : Set E} {x : E} {a : } (hs₀ : ) (hs₂ : Absorbs s {x}) (hx : xa s) :
a gauge s x
theorem one_le_gauge_of_not_mem {E : Type u_2} [] [] {s : Set E} {x : E} (hs₁ : ) (hs₂ : Absorbs s {x}) (hx : xs) :
1 gauge s x
theorem gauge_smul_of_nonneg {E : Type u_2} [] [] {α : Type u_4} [] [] [] [IsScalarTower α (Set E)] {s : Set E} {a : α} (ha : 0 a) (x : E) :
gauge s (a x) = a gauge s x
theorem gauge_smul_left_of_nonneg {E : Type u_2} [] [] {α : Type u_4} [] [] [] [] [] [] {s : Set E} {a : α} (ha : 0 a) :
gauge (a s) = a⁻¹
theorem gauge_smul_left {E : Type u_2} [] [] {α : Type u_4} [] [] [Module α E] [] [] [] {s : Set E} (symmetric : xs, -x s) (a : α) :
gauge (a s) = |a|⁻¹
theorem gauge_norm_smul {𝕜 : Type u_1} {E : Type u_2} [] [] {s : Set E} [] [Module 𝕜 E] [] (hs : Balanced 𝕜 s) (r : 𝕜) (x : E) :
gauge s (r x) = gauge s (r x)
theorem gauge_smul {𝕜 : Type u_1} {E : Type u_2} [] [] {s : Set E} [] [Module 𝕜 E] [] (hs : Balanced 𝕜 s) (r : 𝕜) (x : E) :
gauge s (r x) = r * gauge s x

If s is balanced, then the Minkowski functional is ℂ-homogeneous.

theorem comap_gauge_nhds_zero_le {E : Type u_2} [] [] {s : Set E} [] (ha : ) (hb : ) :
theorem gauge_eq_zero {E : Type u_2} [] [] {s : Set E} {x : E} [] [] (hs : ) (hb : ) :
gauge s x = 0 x = 0
theorem gauge_pos {E : Type u_2} [] [] {s : Set E} {x : E} [] [] (hs : ) (hb : ) :
0 < gauge s x x 0
theorem interior_subset_gauge_lt_one {E : Type u_2} [] [] [] [] (s : Set E) :
{x : E | gauge s x < 1}
theorem gauge_lt_one_eq_self_of_isOpen {E : Type u_2} [] [] {s : Set E} [] [] (hs₁ : ) (hs₀ : 0 s) (hs₂ : ) :
{x : E | gauge s x < 1} = s
theorem gauge_lt_one_of_mem_of_isOpen {E : Type u_2} [] [] {s : Set E} [] [] (hs₂ : ) {x : E} (hx : x s) :
gauge s x < 1
theorem gauge_lt_of_mem_smul {E : Type u_2} [] [] {s : Set E} [] [] (x : E) (ε : ) (hε : 0 < ε) (hs₂ : ) (hx : x ε s) :
gauge s x < ε
theorem mem_closure_of_gauge_le_one {E : Type u_2} [] [] {s : Set E} {x : E} [] [] (hc : ) (hs₀ : 0 s) (ha : ) (h : gauge s x 1) :
x
theorem mem_frontier_of_gauge_eq_one {E : Type u_2} [] [] {s : Set E} {x : E} [] [] (hc : ) (hs₀ : 0 s) (ha : ) (h : gauge s x = 1) :
x
theorem tendsto_gauge_nhds_zero' {E : Type u_2} [] [] {s : Set E} [] [] (hs : s nhds 0) :
theorem tendsto_gauge_nhds_zero {E : Type u_2} [] [] {s : Set E} [] [] (hs : s nhds 0) :
theorem continuousAt_gauge_zero {E : Type u_2} [] [] {s : Set E} [] [] (hs : s nhds 0) :

If s is a neighborhood of the origin, then gauge s is continuous at the origin. See also continuousAt_gauge.

theorem comap_gauge_nhds_zero {E : Type u_2} [] [] {s : Set E} [] [] (hb : ) (h₀ : s nhds 0) :
theorem continuousAt_gauge {E : Type u_2} [] [] {s : Set E} {x : E} [] [] (hc : ) (hs₀ : s nhds 0) :

If s is a convex neighborhood of the origin in a topological real vector space, then gauge s is continuous. If the ambient space is a normed space, then gauge s is Lipschitz continuous, see Convex.lipschitz_gauge.

theorem continuous_gauge {E : Type u_2} [] [] {s : Set E} [] [] (hc : ) (hs₀ : s nhds 0) :

If s is a convex neighborhood of the origin in a topological real vector space, then gauge s is continuous. If the ambient space is a normed space, then gauge s is Lipschitz continuous, see Convex.lipschitz_gauge.

theorem gauge_lt_one_eq_interior {E : Type u_2} [] [] {s : Set E} [] [] (hc : ) (hs₀ : s nhds 0) :
{x : E | gauge s x < 1} =
theorem gauge_lt_one_iff_mem_interior {E : Type u_2} [] [] {s : Set E} {x : E} [] [] (hc : ) (hs₀ : s nhds 0) :
gauge s x < 1 x
theorem gauge_le_one_iff_mem_closure {E : Type u_2} [] [] {s : Set E} {x : E} [] [] (hc : ) (hs₀ : s nhds 0) :
gauge s x 1 x
theorem gauge_eq_one_iff_mem_frontier {E : Type u_2} [] [] {s : Set E} {x : E} [] [] (hc : ) (hs₀ : s nhds 0) :
gauge s x = 1 x
@[simp]
theorem gaugeSeminorm_toFun {𝕜 : Type u_1} {E : Type u_2} [] [] {s : Set E} [] [Module 𝕜 E] [] (hs₀ : Balanced 𝕜 s) (hs₁ : ) (hs₂ : ) (x : E) :
(gaugeSeminorm hs₀ hs₁ hs₂) x = gauge s x
def gaugeSeminorm {𝕜 : Type u_1} {E : Type u_2} [] [] {s : Set E} [] [Module 𝕜 E] [] (hs₀ : Balanced 𝕜 s) (hs₁ : ) (hs₂ : ) :
Seminorm 𝕜 E

gauge s as a seminorm when s is balanced, convex and absorbent.

Equations
Instances For
theorem gaugeSeminorm_lt_one_of_isOpen {𝕜 : Type u_1} {E : Type u_2} [] [] {s : Set E} [] [Module 𝕜 E] [] {hs₀ : Balanced 𝕜 s} {hs₁ : } {hs₂ : } [] [] (hs : ) {x : E} (hx : x s) :
(gaugeSeminorm hs₀ hs₁ hs₂) x < 1
theorem gaugeSeminorm_ball_one {𝕜 : Type u_1} {E : Type u_2} [] [] {s : Set E} [] [Module 𝕜 E] [] {hs₀ : Balanced 𝕜 s} {hs₁ : } {hs₂ : } [] [] (hs : ) :
(gaugeSeminorm hs₀ hs₁ hs₂).ball 0 1 = s
@[simp]
theorem Seminorm.gauge_ball {E : Type u_2} [] [] (p : ) :
gauge (p.ball 0 1) = p

Any seminorm arises as the gauge of its unit ball.

theorem Seminorm.gaugeSeminorm_ball {E : Type u_2} [] [] (p : ) :
= p
theorem gauge_unit_ball {E : Type u_2} [] (x : E) :
gauge () x = x
theorem gauge_ball {E : Type u_2} [] {r : } (hr : 0 r) (x : E) :
gauge () x = x / r
@[deprecated gauge_ball]
theorem gauge_ball' {E : Type u_2} [] {r : } (hr : 0 < r) (x : E) :
gauge () x = x / r
@[simp]
theorem gauge_closure_zero {E : Type u_2} [] :
gauge () = 0
@[simp]
theorem gauge_closedBall {E : Type u_2} [] {r : } (hr : 0 r) (x : E) :
gauge () x = x / r
theorem mul_gauge_le_norm {E : Type u_2} [] {s : Set E} {r : } {x : E} (hs : s) :
r * gauge s x x
theorem Convex.lipschitzWith_gauge {E : Type u_2} [] {s : Set E} {r : NNReal} (hc : ) (hr : 0 < r) (hs : Metric.ball 0 r s) :
theorem Convex.lipschitz_gauge {E : Type u_2} [] {s : Set E} (hc : ) (h₀ : s nhds 0) :
∃ (K : NNReal), LipschitzWith K ()
theorem Convex.uniformContinuous_gauge {E : Type u_2} [] {s : Set E} (hc : ) (h₀ : s nhds 0) :
theorem le_gauge_of_subset_closedBall {E : Type u_2} [] {s : Set E} {r : } {x : E} (hs : ) (hr : 0 r) (hsr : s ) :
x / r gauge s x