Documentation

Mathlib.Analysis.Convex.Gauge

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,

References #

Tags #

Minkowski functional, gauge

noncomputable def gauge {E : Type u_2} [AddCommGroup E] [Module โ„ E] (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.

Instances For
    theorem gauge_def {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} {x : E} :
    gauge s x = sInf {r : โ„ | r โˆˆ Set.Ioi 0 โˆง x โˆˆ r โ€ข s}
    theorem gauge_def' {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} {x : E} :
    gauge s x = sInf {r : โ„ | r โˆˆ Set.Ioi 0 โˆง 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} [AddCommGroup E] [Module โ„ E] {s : Set E} {x : E} (absorbs : Absorbent โ„ s) :
    {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} [AddCommGroup E] [Module โ„ E] {s t : Set E} (hs : Absorbent โ„ s) (h : s โІ t) :
    theorem exists_lt_of_gauge_lt {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} {x : E} {a : โ„} (absorbs : Absorbent โ„ s) (h : gauge s x < a) :
    โˆƒ (b : โ„), 0 < b โˆง b < a โˆง x โˆˆ b โ€ข s
    @[simp]
    theorem gauge_zero {E : Type u_2} [AddCommGroup E] [Module โ„ E] {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} [AddCommGroup E] [Module โ„ E] :
    gauge 0 = 0
    @[simp]
    theorem gauge_empty {E : Type u_2} [AddCommGroup E] [Module โ„ E] :
    gauge โˆ… = 0
    theorem gauge_of_subset_zero {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} (h : s โІ 0) :
    gauge s = 0
    theorem gauge_nonneg {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} (x : E) :

    The gauge is always nonnegative.

    theorem gauge_neg {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} (symmetric : โˆ€ x โˆˆ s, -x โˆˆ s) (x : E) :
    gauge s (-x) = gauge s x
    theorem gauge_neg_set_neg {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} (x : E) :
    gauge (-s) (-x) = gauge s x
    theorem gauge_neg_set_eq_gauge_neg {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} (x : E) :
    gauge (-s) x = gauge s (-x)
    theorem gauge_le_of_mem {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} {x : E} {a : โ„} (ha : 0 โ‰ค a) (hx : x โˆˆ a โ€ข s) :
    theorem gauge_le_eq {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} {a : โ„} (hsโ‚ : Convex โ„ s) (hsโ‚€ : 0 โˆˆ s) (hsโ‚‚ : Absorbent โ„ s) (ha : 0 โ‰ค a) :
    {x : E | gauge s x โ‰ค a} = โ‹‚ (r : โ„), โ‹‚ (_ : a < r), r โ€ข s
    theorem gauge_lt_eq' {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} (absorbs : Absorbent โ„ s) (a : โ„) :
    {x : E | gauge s x < a} = โ‹ƒ (r : โ„), โ‹ƒ (_ : 0 < r), โ‹ƒ (_ : r < a), r โ€ข s
    theorem gauge_lt_eq {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} (absorbs : Absorbent โ„ s) (a : โ„) :
    {x : E | gauge s x < a} = โ‹ƒ r โˆˆ Set.Ioo 0 a, r โ€ข s
    theorem mem_openSegment_of_gauge_lt_one {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} {x : E} (absorbs : Absorbent โ„ s) (hgauge : gauge s x < 1) :
    โˆƒ y โˆˆ s, x โˆˆ openSegment โ„ 0 y
    theorem gauge_lt_one_subset_self {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} (hs : Convex โ„ s) (hโ‚€ : 0 โˆˆ s) (absorbs : Absorbent โ„ s) :
    {x : E | gauge s x < 1} โІ s
    theorem gauge_le_one_of_mem {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} {x : E} (hx : x โˆˆ s) :
    theorem gauge_add_le {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} (hs : Convex โ„ s) (absorbs : Absorbent โ„ s) (x y : E) :
    gauge s (x + y) โ‰ค gauge s x + gauge s y

    Gauge is subadditive.

    theorem gauge_sum_le {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} {ฮน : Type u_3} (hs : Convex โ„ s) (absorbs : Absorbent โ„ s) (t : Finset ฮน) (f : ฮน โ†’ E) :
    gauge s (โˆ‘ i โˆˆ t, f i) โ‰ค โˆ‘ i โˆˆ t, gauge s (f i)
    theorem self_subset_gauge_le_one {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} :
    s โІ {x : E | gauge s x โ‰ค 1}
    theorem Convex.gauge_le {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} (hs : Convex โ„ s) (hโ‚€ : 0 โˆˆ s) (absorbs : Absorbent โ„ s) (a : โ„) :
    theorem le_gauge_of_notMem {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} {x : E} {a : โ„} (hsโ‚€ : StarConvex โ„ 0 s) (hsโ‚‚ : Absorbs โ„ s {x}) (hx : x โˆ‰ a โ€ข s) :
    theorem one_le_gauge_of_notMem {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} {x : E} (hsโ‚ : StarConvex โ„ 0 s) (hsโ‚‚ : Absorbs โ„ s {x}) (hx : x โˆ‰ s) :
    theorem gauge_smul_of_nonneg {E : Type u_2} [AddCommGroup E] [Module โ„ E] {ฮฑ : Type u_3} [Field ฮฑ] [LinearOrder ฮฑ] [IsStrictOrderedRing ฮฑ] [MulActionWithZero ฮฑ โ„] [IsStrictOrderedModule ฮฑ โ„] [MulActionWithZero ฮฑ E] [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} [AddCommGroup E] [Module โ„ E] {ฮฑ : Type u_3} [Field ฮฑ] [LinearOrder ฮฑ] [IsStrictOrderedRing ฮฑ] [MulActionWithZero ฮฑ โ„] [IsStrictOrderedModule ฮฑ โ„] [MulActionWithZero ฮฑ E] [SMulCommClass ฮฑ โ„ โ„] [IsScalarTower ฮฑ โ„ โ„] [IsScalarTower ฮฑ โ„ E] {s : Set E} {a : ฮฑ} (ha : 0 โ‰ค a) :
    gauge (a โ€ข s) = aโปยน โ€ข gauge s
    theorem gauge_smul_left {E : Type u_2} [AddCommGroup E] [Module โ„ E] {ฮฑ : Type u_3} [Field ฮฑ] [LinearOrder ฮฑ] [IsStrictOrderedRing ฮฑ] [MulActionWithZero ฮฑ โ„] [IsStrictOrderedModule ฮฑ โ„] [Module ฮฑ E] [SMulCommClass ฮฑ โ„ โ„] [IsScalarTower ฮฑ โ„ โ„] [IsScalarTower ฮฑ โ„ E] {s : Set E} (symmetric : โˆ€ x โˆˆ s, -x โˆˆ s) (a : ฮฑ) :
    gauge (a โ€ข s) = |a|โปยน โ€ข gauge s
    theorem gauge_norm_smul {๐•œ : Type u_1} {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} [RCLike ๐•œ] [Module ๐•œ E] [IsScalarTower โ„ ๐•œ 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} [AddCommGroup E] [Module โ„ E] {s : Set E} [RCLike ๐•œ] [Module ๐•œ E] [IsScalarTower โ„ ๐•œ 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 gauge_eq_zero {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} {x : E} [TopologicalSpace E] [T1Space E] (hs : Absorbent โ„ s) (hb : Bornology.IsVonNBounded โ„ s) :
    gauge s x = 0 โ†” x = 0
    theorem gauge_pos {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} {x : E} [TopologicalSpace E] [T1Space E] (hs : Absorbent โ„ s) (hb : Bornology.IsVonNBounded โ„ s) :
    0 < gauge s x โ†” x โ‰  0
    theorem gauge_lt_one_eq_self_of_isOpen {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} [TopologicalSpace E] [ContinuousSMul โ„ E] (hsโ‚ : Convex โ„ s) (hsโ‚€ : 0 โˆˆ s) (hsโ‚‚ : IsOpen s) :
    {x : E | gauge s x < 1} = s
    theorem gauge_lt_one_of_mem_of_isOpen {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} [TopologicalSpace E] [ContinuousSMul โ„ E] (hsโ‚‚ : IsOpen s) {x : E} (hx : x โˆˆ s) :
    gauge s x < 1
    theorem gauge_lt_of_mem_smul {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} [TopologicalSpace E] [ContinuousSMul โ„ E] (x : E) (ฮต : โ„) (hฮต : 0 < ฮต) (hsโ‚‚ : IsOpen s) (hx : x โˆˆ ฮต โ€ข s) :
    gauge s x < ฮต
    theorem mem_closure_of_gauge_le_one {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} {x : E} [TopologicalSpace E] [ContinuousSMul โ„ E] (hc : Convex โ„ s) (hsโ‚€ : 0 โˆˆ s) (ha : Absorbent โ„ s) (h : gauge s x โ‰ค 1) :
    x โˆˆ closure s
    theorem mem_frontier_of_gauge_eq_one {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} {x : E} [TopologicalSpace E] [ContinuousSMul โ„ E] (hc : Convex โ„ s) (hsโ‚€ : 0 โˆˆ s) (ha : Absorbent โ„ s) (h : gauge s x = 1) :
    x โˆˆ frontier s
    theorem continuousAt_gauge_zero {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} [TopologicalSpace E] [ContinuousSMul โ„ 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 continuousAt_gauge {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} {x : E} [TopologicalSpace E] [IsTopologicalAddGroup E] [ContinuousSMul โ„ E] (hc : Convex โ„ s) (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} [AddCommGroup E] [Module โ„ E] {s : Set E} [TopologicalSpace E] [IsTopologicalAddGroup E] [ContinuousSMul โ„ E] (hc : Convex โ„ s) (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_iff_mem_interior {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} {x : E} [TopologicalSpace E] [IsTopologicalAddGroup E] [ContinuousSMul โ„ E] (hc : Convex โ„ s) (hsโ‚€ : s โˆˆ nhds 0) :
    gauge s x < 1 โ†” x โˆˆ interior s
    theorem gauge_le_one_iff_mem_closure {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} {x : E} [TopologicalSpace E] [IsTopologicalAddGroup E] [ContinuousSMul โ„ E] (hc : Convex โ„ s) (hsโ‚€ : s โˆˆ nhds 0) :
    gauge s x โ‰ค 1 โ†” x โˆˆ closure s
    theorem gauge_eq_one_iff_mem_frontier {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} {x : E} [TopologicalSpace E] [IsTopologicalAddGroup E] [ContinuousSMul โ„ E] (hc : Convex โ„ s) (hsโ‚€ : s โˆˆ nhds 0) :
    gauge s x = 1 โ†” x โˆˆ frontier s
    noncomputable def gaugeSeminorm {๐•œ : Type u_1} {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} [RCLike ๐•œ] [Module ๐•œ E] [IsScalarTower โ„ ๐•œ E] (hsโ‚€ : Balanced ๐•œ s) (hsโ‚ : Convex โ„ s) (hsโ‚‚ : Absorbent โ„ s) :
    Seminorm ๐•œ E

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

    Instances For
      @[simp]
      theorem gaugeSeminorm_toFun {๐•œ : Type u_1} {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} [RCLike ๐•œ] [Module ๐•œ E] [IsScalarTower โ„ ๐•œ E] (hsโ‚€ : Balanced ๐•œ s) (hsโ‚ : Convex โ„ s) (hsโ‚‚ : Absorbent โ„ s) (x : E) :
      (gaugeSeminorm hsโ‚€ hsโ‚ hsโ‚‚) x = gauge s x
      theorem gaugeSeminorm_lt_one_of_isOpen {๐•œ : Type u_1} {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} [RCLike ๐•œ] [Module ๐•œ E] [IsScalarTower โ„ ๐•œ E] {hsโ‚€ : Balanced ๐•œ s} {hsโ‚ : Convex โ„ s} {hsโ‚‚ : Absorbent โ„ s} [TopologicalSpace E] [ContinuousSMul โ„ E] (hs : IsOpen s) {x : E} (hx : x โˆˆ s) :
      (gaugeSeminorm hsโ‚€ hsโ‚ hsโ‚‚) x < 1
      theorem gaugeSeminorm_ball_one {๐•œ : Type u_1} {E : Type u_2} [AddCommGroup E] [Module โ„ E] {s : Set E} [RCLike ๐•œ] [Module ๐•œ E] [IsScalarTower โ„ ๐•œ E] {hsโ‚€ : Balanced ๐•œ s} {hsโ‚ : Convex โ„ s} {hsโ‚‚ : Absorbent โ„ s} [TopologicalSpace E] [ContinuousSMul โ„ E] (hs : IsOpen s) :
      (gaugeSeminorm hsโ‚€ hsโ‚ hsโ‚‚).ball 0 1 = s
      @[simp]
      theorem Seminorm.gauge_ball {E : Type u_2} [AddCommGroup E] [Module โ„ E] (p : Seminorm โ„ E) :
      gauge (p.ball 0 1) = โ‡‘p

      Any seminorm arises as the gauge of its unit ball.

      theorem Seminorm.gaugeSeminorm_ball {E : Type u_2} [AddCommGroup E] [Module โ„ E] (p : Seminorm โ„ E) :
      gaugeSeminorm โ‹ฏ โ‹ฏ โ‹ฏ = p
      theorem mul_gauge_le_norm {E : Type u_2} [SeminormedAddCommGroup E] [NormedSpace โ„ E] {s : Set E} {r : โ„} {x : E} (hs : Metric.ball 0 r โІ s) :
      theorem Convex.lipschitzWith_gauge {E : Type u_2} [SeminormedAddCommGroup E] [NormedSpace โ„ E] {s : Set E} {r : NNReal} (hc : Convex โ„ s) (hr : 0 < r) (hs : Metric.ball 0 โ†‘r โІ s) :
      theorem Convex.lipschitz_gauge {E : Type u_2} [SeminormedAddCommGroup E] [NormedSpace โ„ E] {s : Set E} (hc : Convex โ„ s) (hโ‚€ : s โˆˆ nhds 0) :
      โˆƒ (K : NNReal), LipschitzWith K (gauge s)
      theorem le_gauge_of_subset_closedBall {E : Type u_2} [NormedAddCommGroup E] [NormedSpace โ„ E] {s : Set E} {r : โ„} {x : E} (hs : Absorbent โ„ s) (hr : 0 โ‰ค r) (hsr : s โІ Metric.closedBall 0 r) :