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

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.

Equations
    Instances For

      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) :

      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
      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 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 {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 : ฮฑ) :
      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) :
      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) :

      If s is balanced, then the Minkowski functional is โ„‚-homogeneous.

      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) :
      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) :

      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.

      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.

      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.

      Equations
        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 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)