Documentation

Mathlib.Analysis.Seminorm

Seminorms #

This file defines seminorms.

A seminorm is a function to the reals which is positive-semidefinite, absolutely homogeneous, and subadditive. They are closely related to convex sets, and a topological vector space is locally convex if and only if its topology is induced by a family of seminorms.

Main declarations #

For a module over a normed ring:

References #

Tags #

seminorm, locally convex, LCTVS

structure Seminorm (๐•œ : Type u_13) (E : Type u_14) [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] extends AddGroupSeminorm :
Type u_14

A seminorm on a module over a normed ring is a function to the reals that is positive semidefinite, positive homogeneous, and subadditive.

Instances For
    class SeminormClass (F : Type u_13) (๐•œ : outParam (Type u_14)) (E : outParam (Type u_15)) [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] extends AddGroupSeminormClass :
    Type (max u_13 u_15)
    • coe : F โ†’ E โ†’ โ„
    • coe_injective' : Function.Injective FunLike.coe
    • map_add_le_add : โˆ€ (f : F) (a b : E), โ†‘f (a + b) โ‰ค โ†‘f a + โ†‘f b
    • map_zero : โˆ€ (f : F), โ†‘f 0 = 0
    • map_neg_eq_map : โˆ€ (f : F) (a : E), โ†‘f (-a) = โ†‘f a
    • map_smul_eq_mul : โˆ€ (f : F) (a : ๐•œ) (x : E), โ†‘f (a โ€ข x) = โ€–aโ€– * โ†‘f x

      The seminorm of a scalar multiplication is the product of the absolute value of the scalar and the original seminorm.

    SeminormClass F ๐•œ E states that F is a type of seminorms on the ๐•œ-module E.

    You should extend this class when you extend Seminorm.

    Instances
      def Seminorm.of {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] (f : E โ†’ โ„) (add_le : โˆ€ (x y : E), f (x + y) โ‰ค f x + f y) (smul : โˆ€ (a : ๐•œ) (x : E), f (a โ€ข x) = โ€–aโ€– * f x) :
      Seminorm ๐•œ E

      Alternative constructor for a Seminorm on an AddCommGroup E that is a module over a SeminormedRing ๐•œ.

      Instances For
        def Seminorm.ofSMulLE {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] (f : E โ†’ โ„) (map_zero : f 0 = 0) (add_le : โˆ€ (x y : E), f (x + y) โ‰ค f x + f y) (smul_le : โˆ€ (r : ๐•œ) (x : E), f (r โ€ข x) โ‰ค โ€–rโ€– * f x) :
        Seminorm ๐•œ E

        Alternative constructor for a Seminorm over a normed field ๐•œ that only assumes f 0 = 0 and an inequality for the scalar multiplication.

        Instances For
          instance Seminorm.instSeminormClass {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] :
          SeminormClass (Seminorm ๐•œ E) ๐•œ E
          instance Seminorm.instCoeFun {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] :
          CoeFun (Seminorm ๐•œ E) fun x => E โ†’ โ„

          Helper instance for when there's too many metavariables to apply FunLike.hasCoeToFun.

          theorem Seminorm.ext {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] {p : Seminorm ๐•œ E} {q : Seminorm ๐•œ E} (h : โˆ€ (x : E), โ†‘p x = โ†‘q x) :
          p = q
          instance Seminorm.instZero {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] :
          Zero (Seminorm ๐•œ E)
          @[simp]
          theorem Seminorm.coe_zero {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] :
          โ†‘0 = 0
          @[simp]
          theorem Seminorm.zero_apply {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] (x : E) :
          โ†‘0 x = 0
          instance Seminorm.instInhabitedSeminorm {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] :
          Inhabited (Seminorm ๐•œ E)
          instance Seminorm.instSMul {R : Type u_1} {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] [SMul R โ„] [SMul R NNReal] [IsScalarTower R NNReal โ„] :
          SMul R (Seminorm ๐•œ E)

          Any action on โ„ which factors through โ„โ‰ฅ0 applies to a seminorm.

          instance Seminorm.instIsScalarTowerSeminormInstSMulInstSMul {R : Type u_1} {R' : Type u_2} {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] [SMul R โ„] [SMul R NNReal] [IsScalarTower R NNReal โ„] [SMul R' โ„] [SMul R' NNReal] [IsScalarTower R' NNReal โ„] [SMul R R'] [IsScalarTower R R' โ„] :
          IsScalarTower R R' (Seminorm ๐•œ E)
          theorem Seminorm.coe_smul {R : Type u_1} {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] [SMul R โ„] [SMul R NNReal] [IsScalarTower R NNReal โ„] (r : R) (p : Seminorm ๐•œ E) :
          โ†‘(r โ€ข p) = r โ€ข โ†‘p
          @[simp]
          theorem Seminorm.smul_apply {R : Type u_1} {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] [SMul R โ„] [SMul R NNReal] [IsScalarTower R NNReal โ„] (r : R) (p : Seminorm ๐•œ E) (x : E) :
          โ†‘(r โ€ข p) x = r โ€ข โ†‘p x
          instance Seminorm.instAdd {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] :
          Add (Seminorm ๐•œ E)
          theorem Seminorm.coe_add {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] (p : Seminorm ๐•œ E) (q : Seminorm ๐•œ E) :
          โ†‘(p + q) = โ†‘p + โ†‘q
          @[simp]
          theorem Seminorm.add_apply {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] (p : Seminorm ๐•œ E) (q : Seminorm ๐•œ E) (x : E) :
          โ†‘(p + q) x = โ†‘p x + โ†‘q x
          instance Seminorm.instAddMonoid {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] :
          AddMonoid (Seminorm ๐•œ E)
          instance Seminorm.instOrderedCancelAddCommMonoid {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] :
          instance Seminorm.instMulAction {R : Type u_1} {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] [Monoid R] [MulAction R โ„] [SMul R NNReal] [IsScalarTower R NNReal โ„] :
          MulAction R (Seminorm ๐•œ E)
          @[simp]
          theorem Seminorm.coeFnAddMonoidHom_apply (๐•œ : Type u_3) (E : Type u_7) [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] :
          โˆ€ (a : Seminorm ๐•œ E) (a_1 : E), โ†‘(Seminorm.coeFnAddMonoidHom ๐•œ E) a a_1 = โ†‘a a_1
          def Seminorm.coeFnAddMonoidHom (๐•œ : Type u_3) (E : Type u_7) [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] :
          Seminorm ๐•œ E โ†’+ E โ†’ โ„

          coeFn as an AddMonoidHom. Helper definition for showing that Seminorm ๐•œ E is a module.

          Instances For
            theorem Seminorm.coeFnAddMonoidHom_injective (๐•œ : Type u_3) (E : Type u_7) [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] :
            instance Seminorm.instDistribMulAction {R : Type u_1} {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] [Monoid R] [DistribMulAction R โ„] [SMul R NNReal] [IsScalarTower R NNReal โ„] :
            DistribMulAction R (Seminorm ๐•œ E)
            instance Seminorm.instModule {R : Type u_1} {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] [Semiring R] [Module R โ„] [SMul R NNReal] [IsScalarTower R NNReal โ„] :
            Module R (Seminorm ๐•œ E)
            instance Seminorm.instSup {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] :
            Sup (Seminorm ๐•œ E)
            @[simp]
            theorem Seminorm.coe_sup {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] (p : Seminorm ๐•œ E) (q : Seminorm ๐•œ E) :
            โ†‘(p โŠ” q) = โ†‘p โŠ” โ†‘q
            theorem Seminorm.sup_apply {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] (p : Seminorm ๐•œ E) (q : Seminorm ๐•œ E) (x : E) :
            โ†‘(p โŠ” q) x = โ†‘p x โŠ” โ†‘q x
            theorem Seminorm.smul_sup {R : Type u_1} {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] [SMul R โ„] [SMul R NNReal] [IsScalarTower R NNReal โ„] (r : R) (p : Seminorm ๐•œ E) (q : Seminorm ๐•œ E) :
            instance Seminorm.instPartialOrder {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] :
            PartialOrder (Seminorm ๐•œ E)
            @[simp]
            theorem Seminorm.coe_le_coe {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] {p : Seminorm ๐•œ E} {q : Seminorm ๐•œ E} :
            โ†‘p โ‰ค โ†‘q โ†” p โ‰ค q
            @[simp]
            theorem Seminorm.coe_lt_coe {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] {p : Seminorm ๐•œ E} {q : Seminorm ๐•œ E} :
            โ†‘p < โ†‘q โ†” p < q
            theorem Seminorm.le_def {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] {p : Seminorm ๐•œ E} {q : Seminorm ๐•œ E} :
            p โ‰ค q โ†” โˆ€ (x : E), โ†‘p x โ‰ค โ†‘q x
            theorem Seminorm.lt_def {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] {p : Seminorm ๐•œ E} {q : Seminorm ๐•œ E} :
            p < q โ†” p โ‰ค q โˆง โˆƒ x, โ†‘p x < โ†‘q x
            instance Seminorm.instSemilatticeSup {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddGroup E] [SMul ๐•œ E] :
            SemilatticeSup (Seminorm ๐•œ E)
            def Seminorm.comp {๐•œ : Type u_3} {๐•œโ‚‚ : Type u_4} {E : Type u_7} {Eโ‚‚ : Type u_8} [SeminormedRing ๐•œ] [SeminormedRing ๐•œโ‚‚] {ฯƒโ‚โ‚‚ : ๐•œ โ†’+* ๐•œโ‚‚} [RingHomIsometric ฯƒโ‚โ‚‚] [AddCommGroup E] [AddCommGroup Eโ‚‚] [Module ๐•œ E] [Module ๐•œโ‚‚ Eโ‚‚] (p : Seminorm ๐•œโ‚‚ Eโ‚‚) (f : E โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Eโ‚‚) :
            Seminorm ๐•œ E

            Composition of a seminorm with a linear map is a seminorm.

            Instances For
              theorem Seminorm.coe_comp {๐•œ : Type u_3} {๐•œโ‚‚ : Type u_4} {E : Type u_7} {Eโ‚‚ : Type u_8} [SeminormedRing ๐•œ] [SeminormedRing ๐•œโ‚‚] {ฯƒโ‚โ‚‚ : ๐•œ โ†’+* ๐•œโ‚‚} [RingHomIsometric ฯƒโ‚โ‚‚] [AddCommGroup E] [AddCommGroup Eโ‚‚] [Module ๐•œ E] [Module ๐•œโ‚‚ Eโ‚‚] (p : Seminorm ๐•œโ‚‚ Eโ‚‚) (f : E โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Eโ‚‚) :
              โ†‘(Seminorm.comp p f) = โ†‘p โˆ˜ โ†‘f
              @[simp]
              theorem Seminorm.comp_apply {๐•œ : Type u_3} {๐•œโ‚‚ : Type u_4} {E : Type u_7} {Eโ‚‚ : Type u_8} [SeminormedRing ๐•œ] [SeminormedRing ๐•œโ‚‚] {ฯƒโ‚โ‚‚ : ๐•œ โ†’+* ๐•œโ‚‚} [RingHomIsometric ฯƒโ‚โ‚‚] [AddCommGroup E] [AddCommGroup Eโ‚‚] [Module ๐•œ E] [Module ๐•œโ‚‚ Eโ‚‚] (p : Seminorm ๐•œโ‚‚ Eโ‚‚) (f : E โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Eโ‚‚) (x : E) :
              โ†‘(Seminorm.comp p f) x = โ†‘p (โ†‘f x)
              @[simp]
              theorem Seminorm.comp_id {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : Seminorm ๐•œ E) :
              Seminorm.comp p LinearMap.id = p
              @[simp]
              theorem Seminorm.comp_zero {๐•œ : Type u_3} {๐•œโ‚‚ : Type u_4} {E : Type u_7} {Eโ‚‚ : Type u_8} [SeminormedRing ๐•œ] [SeminormedRing ๐•œโ‚‚] {ฯƒโ‚โ‚‚ : ๐•œ โ†’+* ๐•œโ‚‚} [RingHomIsometric ฯƒโ‚โ‚‚] [AddCommGroup E] [AddCommGroup Eโ‚‚] [Module ๐•œ E] [Module ๐•œโ‚‚ Eโ‚‚] (p : Seminorm ๐•œโ‚‚ Eโ‚‚) :
              @[simp]
              theorem Seminorm.zero_comp {๐•œ : Type u_3} {๐•œโ‚‚ : Type u_4} {E : Type u_7} {Eโ‚‚ : Type u_8} [SeminormedRing ๐•œ] [SeminormedRing ๐•œโ‚‚] {ฯƒโ‚โ‚‚ : ๐•œ โ†’+* ๐•œโ‚‚} [RingHomIsometric ฯƒโ‚โ‚‚] [AddCommGroup E] [AddCommGroup Eโ‚‚] [Module ๐•œ E] [Module ๐•œโ‚‚ Eโ‚‚] (f : E โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Eโ‚‚) :
              theorem Seminorm.comp_comp {๐•œ : Type u_3} {๐•œโ‚‚ : Type u_4} {๐•œโ‚ƒ : Type u_5} {E : Type u_7} {Eโ‚‚ : Type u_8} {Eโ‚ƒ : Type u_9} [SeminormedRing ๐•œ] [SeminormedRing ๐•œโ‚‚] [SeminormedRing ๐•œโ‚ƒ] {ฯƒโ‚โ‚‚ : ๐•œ โ†’+* ๐•œโ‚‚} [RingHomIsometric ฯƒโ‚โ‚‚] {ฯƒโ‚‚โ‚ƒ : ๐•œโ‚‚ โ†’+* ๐•œโ‚ƒ} [RingHomIsometric ฯƒโ‚‚โ‚ƒ] {ฯƒโ‚โ‚ƒ : ๐•œ โ†’+* ๐•œโ‚ƒ} [RingHomIsometric ฯƒโ‚โ‚ƒ] [AddCommGroup E] [AddCommGroup Eโ‚‚] [AddCommGroup Eโ‚ƒ] [Module ๐•œ E] [Module ๐•œโ‚‚ Eโ‚‚] [Module ๐•œโ‚ƒ Eโ‚ƒ] [RingHomCompTriple ฯƒโ‚โ‚‚ ฯƒโ‚‚โ‚ƒ ฯƒโ‚โ‚ƒ] (p : Seminorm ๐•œโ‚ƒ Eโ‚ƒ) (g : Eโ‚‚ โ†’โ‚›โ‚—[ฯƒโ‚‚โ‚ƒ] Eโ‚ƒ) (f : E โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Eโ‚‚) :
              theorem Seminorm.add_comp {๐•œ : Type u_3} {๐•œโ‚‚ : Type u_4} {E : Type u_7} {Eโ‚‚ : Type u_8} [SeminormedRing ๐•œ] [SeminormedRing ๐•œโ‚‚] {ฯƒโ‚โ‚‚ : ๐•œ โ†’+* ๐•œโ‚‚} [RingHomIsometric ฯƒโ‚โ‚‚] [AddCommGroup E] [AddCommGroup Eโ‚‚] [Module ๐•œ E] [Module ๐•œโ‚‚ Eโ‚‚] (p : Seminorm ๐•œโ‚‚ Eโ‚‚) (q : Seminorm ๐•œโ‚‚ Eโ‚‚) (f : E โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Eโ‚‚) :
              theorem Seminorm.comp_add_le {๐•œ : Type u_3} {๐•œโ‚‚ : Type u_4} {E : Type u_7} {Eโ‚‚ : Type u_8} [SeminormedRing ๐•œ] [SeminormedRing ๐•œโ‚‚] {ฯƒโ‚โ‚‚ : ๐•œ โ†’+* ๐•œโ‚‚} [RingHomIsometric ฯƒโ‚โ‚‚] [AddCommGroup E] [AddCommGroup Eโ‚‚] [Module ๐•œ E] [Module ๐•œโ‚‚ Eโ‚‚] (p : Seminorm ๐•œโ‚‚ Eโ‚‚) (f : E โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Eโ‚‚) (g : E โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Eโ‚‚) :
              theorem Seminorm.smul_comp {R : Type u_1} {๐•œ : Type u_3} {๐•œโ‚‚ : Type u_4} {E : Type u_7} {Eโ‚‚ : Type u_8} [SeminormedRing ๐•œ] [SeminormedRing ๐•œโ‚‚] {ฯƒโ‚โ‚‚ : ๐•œ โ†’+* ๐•œโ‚‚} [RingHomIsometric ฯƒโ‚โ‚‚] [AddCommGroup E] [AddCommGroup Eโ‚‚] [Module ๐•œ E] [Module ๐•œโ‚‚ Eโ‚‚] [SMul R โ„] [SMul R NNReal] [IsScalarTower R NNReal โ„] (p : Seminorm ๐•œโ‚‚ Eโ‚‚) (f : E โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Eโ‚‚) (c : R) :
              theorem Seminorm.comp_mono {๐•œ : Type u_3} {๐•œโ‚‚ : Type u_4} {E : Type u_7} {Eโ‚‚ : Type u_8} [SeminormedRing ๐•œ] [SeminormedRing ๐•œโ‚‚] {ฯƒโ‚โ‚‚ : ๐•œ โ†’+* ๐•œโ‚‚} [RingHomIsometric ฯƒโ‚โ‚‚] [AddCommGroup E] [AddCommGroup Eโ‚‚] [Module ๐•œ E] [Module ๐•œโ‚‚ Eโ‚‚] {p : Seminorm ๐•œโ‚‚ Eโ‚‚} {q : Seminorm ๐•œโ‚‚ Eโ‚‚} (f : E โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Eโ‚‚) (hp : p โ‰ค q) :
              @[simp]
              theorem Seminorm.pullback_apply {๐•œ : Type u_3} {๐•œโ‚‚ : Type u_4} {E : Type u_7} {Eโ‚‚ : Type u_8} [SeminormedRing ๐•œ] [SeminormedRing ๐•œโ‚‚] {ฯƒโ‚โ‚‚ : ๐•œ โ†’+* ๐•œโ‚‚} [RingHomIsometric ฯƒโ‚โ‚‚] [AddCommGroup E] [AddCommGroup Eโ‚‚] [Module ๐•œ E] [Module ๐•œโ‚‚ Eโ‚‚] (f : E โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Eโ‚‚) (p : Seminorm ๐•œโ‚‚ Eโ‚‚) :
              def Seminorm.pullback {๐•œ : Type u_3} {๐•œโ‚‚ : Type u_4} {E : Type u_7} {Eโ‚‚ : Type u_8} [SeminormedRing ๐•œ] [SeminormedRing ๐•œโ‚‚] {ฯƒโ‚โ‚‚ : ๐•œ โ†’+* ๐•œโ‚‚} [RingHomIsometric ฯƒโ‚โ‚‚] [AddCommGroup E] [AddCommGroup Eโ‚‚] [Module ๐•œ E] [Module ๐•œโ‚‚ Eโ‚‚] (f : E โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Eโ‚‚) :
              Seminorm ๐•œโ‚‚ Eโ‚‚ โ†’+ Seminorm ๐•œ E

              The composition as an AddMonoidHom.

              Instances For
                instance Seminorm.instOrderBot {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] :
                OrderBot (Seminorm ๐•œ E)
                @[simp]
                theorem Seminorm.coe_bot {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] :
                โ†‘โŠฅ = 0
                theorem Seminorm.bot_eq_zero {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] :
                theorem Seminorm.smul_le_smul {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] {p : Seminorm ๐•œ E} {q : Seminorm ๐•œ E} {a : NNReal} {b : NNReal} (hpq : p โ‰ค q) (hab : a โ‰ค b) :
                theorem Seminorm.finset_sup_apply {๐•œ : Type u_3} {E : Type u_7} {ฮน : Type u_12} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : ฮน โ†’ Seminorm ๐•œ E) (s : Finset ฮน) (x : E) :
                โ†‘(Finset.sup s p) x = โ†‘(Finset.sup s fun i => { val := โ†‘(p i) x, property := (_ : 0 โ‰ค โ†‘(p i) x) })
                theorem Seminorm.exists_apply_eq_finset_sup {๐•œ : Type u_3} {E : Type u_7} {ฮน : Type u_12} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : ฮน โ†’ Seminorm ๐•œ E) {s : Finset ฮน} (hs : Finset.Nonempty s) (x : E) :
                โˆƒ i, i โˆˆ s โˆง โ†‘(Finset.sup s p) x = โ†‘(p i) x
                theorem Seminorm.zero_or_exists_apply_eq_finset_sup {๐•œ : Type u_3} {E : Type u_7} {ฮน : Type u_12} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : ฮน โ†’ Seminorm ๐•œ E) (s : Finset ฮน) (x : E) :
                โ†‘(Finset.sup s p) x = 0 โˆจ โˆƒ i, i โˆˆ s โˆง โ†‘(Finset.sup s p) x = โ†‘(p i) x
                theorem Seminorm.finset_sup_smul {๐•œ : Type u_3} {E : Type u_7} {ฮน : Type u_12} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : ฮน โ†’ Seminorm ๐•œ E) (s : Finset ฮน) (C : NNReal) :
                theorem Seminorm.finset_sup_le_sum {๐•œ : Type u_3} {E : Type u_7} {ฮน : Type u_12} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : ฮน โ†’ Seminorm ๐•œ E) (s : Finset ฮน) :
                Finset.sup s p โ‰ค Finset.sum s fun i => p i
                theorem Seminorm.finset_sup_apply_le {๐•œ : Type u_3} {E : Type u_7} {ฮน : Type u_12} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] {p : ฮน โ†’ Seminorm ๐•œ E} {s : Finset ฮน} {x : E} {a : โ„} (ha : 0 โ‰ค a) (h : โˆ€ (i : ฮน), i โˆˆ s โ†’ โ†‘(p i) x โ‰ค a) :
                โ†‘(Finset.sup s p) x โ‰ค a
                theorem Seminorm.le_finset_sup_apply {๐•œ : Type u_3} {E : Type u_7} {ฮน : Type u_12} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] {p : ฮน โ†’ Seminorm ๐•œ E} {s : Finset ฮน} {x : E} {i : ฮน} (hi : i โˆˆ s) :
                โ†‘(p i) x โ‰ค โ†‘(Finset.sup s p) x
                theorem Seminorm.finset_sup_apply_lt {๐•œ : Type u_3} {E : Type u_7} {ฮน : Type u_12} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] {p : ฮน โ†’ Seminorm ๐•œ E} {s : Finset ฮน} {x : E} {a : โ„} (ha : 0 < a) (h : โˆ€ (i : ฮน), i โˆˆ s โ†’ โ†‘(p i) x < a) :
                โ†‘(Finset.sup s p) x < a
                theorem Seminorm.norm_sub_map_le_sub {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : Seminorm ๐•œ E) (x : E) (y : E) :
                โ€–โ†‘p x - โ†‘p yโ€– โ‰ค โ†‘p (x - y)
                theorem Seminorm.comp_smul {๐•œ : Type u_3} {๐•œโ‚‚ : Type u_4} {E : Type u_7} {Eโ‚‚ : Type u_8} [SeminormedRing ๐•œ] [SeminormedCommRing ๐•œโ‚‚] {ฯƒโ‚โ‚‚ : ๐•œ โ†’+* ๐•œโ‚‚} [RingHomIsometric ฯƒโ‚โ‚‚] [AddCommGroup E] [AddCommGroup Eโ‚‚] [Module ๐•œ E] [Module ๐•œโ‚‚ Eโ‚‚] (p : Seminorm ๐•œโ‚‚ Eโ‚‚) (f : E โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Eโ‚‚) (c : ๐•œโ‚‚) :
                theorem Seminorm.comp_smul_apply {๐•œ : Type u_3} {๐•œโ‚‚ : Type u_4} {E : Type u_7} {Eโ‚‚ : Type u_8} [SeminormedRing ๐•œ] [SeminormedCommRing ๐•œโ‚‚] {ฯƒโ‚โ‚‚ : ๐•œ โ†’+* ๐•œโ‚‚} [RingHomIsometric ฯƒโ‚โ‚‚] [AddCommGroup E] [AddCommGroup Eโ‚‚] [Module ๐•œ E] [Module ๐•œโ‚‚ Eโ‚‚] (p : Seminorm ๐•œโ‚‚ Eโ‚‚) (f : E โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Eโ‚‚) (c : ๐•œโ‚‚) (x : E) :
                โ†‘(Seminorm.comp p (c โ€ข f)) x = โ€–cโ€– * โ†‘p (โ†‘f x)
                theorem Seminorm.bddBelow_range_add {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] {p : Seminorm ๐•œ E} {q : Seminorm ๐•œ E} {x : E} :
                BddBelow (Set.range fun u => โ†‘p u + โ†‘q (x - u))

                Auxiliary lemma to show that the infimum of seminorms is well-defined.

                noncomputable instance Seminorm.instInf {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] :
                Inf (Seminorm ๐•œ E)
                @[simp]
                theorem Seminorm.inf_apply {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : Seminorm ๐•œ E) (q : Seminorm ๐•œ E) (x : E) :
                โ†‘(p โŠ“ q) x = โจ… (u : E), โ†‘p u + โ†‘q (x - u)
                noncomputable instance Seminorm.instLattice {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] :
                Lattice (Seminorm ๐•œ E)
                theorem Seminorm.smul_inf {R : Type u_1} {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] [SMul R โ„] [SMul R NNReal] [IsScalarTower R NNReal โ„] (r : R) (p : Seminorm ๐•œ E) (q : Seminorm ๐•œ E) :
                noncomputable instance Seminorm.instSupSet {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] :
                SupSet (Seminorm ๐•œ E)

                We define the supremum of an arbitrary subset of Seminorm ๐•œ E as follows:

                • if s is BddAbove as a set of functions E โ†’ โ„ (that is, if s is pointwise bounded above), we take the pointwise supremum of all elements of s, and we prove that it is indeed a seminorm.
                • otherwise, we take the zero seminorm โŠฅ.

                There are two things worth mentioning here:

                • First, it is not trivial at first that s being bounded above by a function implies being bounded above as a seminorm. We show this in Seminorm.bddAbove_iff by using that the Sup s as defined here is then a bounding seminorm for s. So it is important to make the case disjunction on BddAbove ((โ†‘) '' s : Set (E โ†’ โ„)) and not BddAbove s.
                • Since the pointwise Sup already gives 0 at points where a family of functions is not bounded above, one could hope that just using the pointwise Sup would work here, without the need for an additional case disjunction. As discussed on Zulip, this doesn't work because this can give a function which does not satisfy the seminorm axioms (typically sub-additivity).
                theorem Seminorm.coe_sSup_eq' {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] {s : Set (Seminorm ๐•œ E)} (hs : BddAbove (FunLike.coe '' s)) :
                โ†‘(sSup s) = โจ† (p : โ†‘s), โ†‘โ†‘p
                theorem Seminorm.bddAbove_iff {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] {s : Set (Seminorm ๐•œ E)} :
                BddAbove s โ†” BddAbove (FunLike.coe '' s)
                theorem Seminorm.bddAbove_range_iff {๐•œ : Type u_3} {E : Type u_7} {ฮน : Type u_12} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] {p : ฮน โ†’ Seminorm ๐•œ E} :
                BddAbove (Set.range p) โ†” โˆ€ (x : E), BddAbove (Set.range fun i => โ†‘(p i) x)
                theorem Seminorm.coe_sSup_eq {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] {s : Set (Seminorm ๐•œ E)} (hs : BddAbove s) :
                โ†‘(sSup s) = โจ† (p : โ†‘s), โ†‘โ†‘p
                theorem Seminorm.coe_iSup_eq {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] {ฮน : Type u_13} {p : ฮน โ†’ Seminorm ๐•œ E} (hp : BddAbove (Set.range p)) :
                โ†‘(โจ† (i : ฮน), p i) = โจ† (i : ฮน), โ†‘(p i)
                theorem Seminorm.sSup_apply {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] {s : Set (Seminorm ๐•œ E)} (hp : BddAbove s) {x : E} :
                โ†‘(sSup s) x = โจ† (p : โ†‘s), โ†‘โ†‘p x
                theorem Seminorm.iSup_apply {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] {ฮน : Type u_13} {p : ฮน โ†’ Seminorm ๐•œ E} (hp : BddAbove (Set.range p)) {x : E} :
                โ†‘(โจ† (i : ฮน), p i) x = โจ† (i : ฮน), โ†‘(p i) x
                theorem Seminorm.sSup_empty {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] :
                noncomputable instance Seminorm.instConditionallyCompleteLattice {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] :

                Seminorm ๐•œ E is a conditionally complete lattice.

                Note that, while inf, sup and sSup have good definitional properties (corresponding to the instances given here for Inf, Sup and SupSet respectively), sInf s is just defined as the supremum of the lower bounds of s, which is not really useful in practice. If you need to use sInf on seminorms, then you should probably provide a more workable definition first, but this is unlikely to happen so we keep the "bad" definition for now.

                Seminorm ball #

                def Seminorm.ball {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [SMul ๐•œ E] (p : Seminorm ๐•œ E) (x : E) (r : โ„) :
                Set E

                The ball of radius r at x with respect to seminorm p is the set of elements y with p (y - x) < r.

                Instances For
                  def Seminorm.closedBall {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [SMul ๐•œ E] (p : Seminorm ๐•œ E) (x : E) (r : โ„) :
                  Set E

                  The closed ball of radius r at x with respect to seminorm p is the set of elements y with p (y - x) โ‰ค r.

                  Instances For
                    @[simp]
                    theorem Seminorm.mem_ball {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [SMul ๐•œ E] (p : Seminorm ๐•œ E) {x : E} {y : E} {r : โ„} :
                    y โˆˆ Seminorm.ball p x r โ†” โ†‘p (y - x) < r
                    @[simp]
                    theorem Seminorm.mem_closedBall {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [SMul ๐•œ E] (p : Seminorm ๐•œ E) {x : E} {y : E} {r : โ„} :
                    y โˆˆ Seminorm.closedBall p x r โ†” โ†‘p (y - x) โ‰ค r
                    theorem Seminorm.mem_ball_self {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [SMul ๐•œ E] (p : Seminorm ๐•œ E) {x : E} {r : โ„} (hr : 0 < r) :
                    theorem Seminorm.mem_closedBall_self {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [SMul ๐•œ E] (p : Seminorm ๐•œ E) {x : E} {r : โ„} (hr : 0 โ‰ค r) :
                    theorem Seminorm.mem_ball_zero {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [SMul ๐•œ E] (p : Seminorm ๐•œ E) {y : E} {r : โ„} :
                    y โˆˆ Seminorm.ball p 0 r โ†” โ†‘p y < r
                    theorem Seminorm.mem_closedBall_zero {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [SMul ๐•œ E] (p : Seminorm ๐•œ E) {y : E} {r : โ„} :
                    theorem Seminorm.ball_zero_eq {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [SMul ๐•œ E] (p : Seminorm ๐•œ E) {r : โ„} :
                    Seminorm.ball p 0 r = {y | โ†‘p y < r}
                    theorem Seminorm.closedBall_zero_eq {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [SMul ๐•œ E] (p : Seminorm ๐•œ E) {r : โ„} :
                    Seminorm.closedBall p 0 r = {y | โ†‘p y โ‰ค r}
                    theorem Seminorm.ball_subset_closedBall {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [SMul ๐•œ E] (p : Seminorm ๐•œ E) (x : E) (r : โ„) :
                    theorem Seminorm.closedBall_eq_biInter_ball {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [SMul ๐•œ E] (p : Seminorm ๐•œ E) (x : E) (r : โ„) :
                    Seminorm.closedBall p x r = โ‹‚ (ฯ : โ„) (_ : ฯ > r), Seminorm.ball p x ฯ
                    @[simp]
                    theorem Seminorm.ball_zero' {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [SMul ๐•œ E] {r : โ„} (x : E) (hr : 0 < r) :
                    Seminorm.ball 0 x r = Set.univ
                    @[simp]
                    theorem Seminorm.closedBall_zero' {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [SMul ๐•œ E] {r : โ„} (x : E) (hr : 0 < r) :
                    Seminorm.closedBall 0 x r = Set.univ
                    theorem Seminorm.ball_smul {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [SMul ๐•œ E] (p : Seminorm ๐•œ E) {c : NNReal} (hc : 0 < c) (r : โ„) (x : E) :
                    Seminorm.ball (c โ€ข p) x r = Seminorm.ball p x (r / โ†‘c)
                    theorem Seminorm.closedBall_smul {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [SMul ๐•œ E] (p : Seminorm ๐•œ E) {c : NNReal} (hc : 0 < c) (r : โ„) (x : E) :
                    theorem Seminorm.ball_sup {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [SMul ๐•œ E] (p : Seminorm ๐•œ E) (q : Seminorm ๐•œ E) (e : E) (r : โ„) :
                    theorem Seminorm.closedBall_sup {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [SMul ๐•œ E] (p : Seminorm ๐•œ E) (q : Seminorm ๐•œ E) (e : E) (r : โ„) :
                    theorem Seminorm.ball_finset_sup' {๐•œ : Type u_3} {E : Type u_7} {ฮน : Type u_12} [SeminormedRing ๐•œ] [AddCommGroup E] [SMul ๐•œ E] (p : ฮน โ†’ Seminorm ๐•œ E) (s : Finset ฮน) (H : Finset.Nonempty s) (e : E) (r : โ„) :
                    Seminorm.ball (Finset.sup' s H p) e r = Finset.inf' s H fun i => Seminorm.ball (p i) e r
                    theorem Seminorm.closedBall_finset_sup' {๐•œ : Type u_3} {E : Type u_7} {ฮน : Type u_12} [SeminormedRing ๐•œ] [AddCommGroup E] [SMul ๐•œ E] (p : ฮน โ†’ Seminorm ๐•œ E) (s : Finset ฮน) (H : Finset.Nonempty s) (e : E) (r : โ„) :
                    theorem Seminorm.ball_mono {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [SMul ๐•œ E] {x : E} {p : Seminorm ๐•œ E} {rโ‚ : โ„} {rโ‚‚ : โ„} (h : rโ‚ โ‰ค rโ‚‚) :
                    Seminorm.ball p x rโ‚ โŠ† Seminorm.ball p x rโ‚‚
                    theorem Seminorm.closedBall_mono {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [SMul ๐•œ E] {x : E} {p : Seminorm ๐•œ E} {rโ‚ : โ„} {rโ‚‚ : โ„} (h : rโ‚ โ‰ค rโ‚‚) :
                    theorem Seminorm.ball_antitone {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [SMul ๐•œ E] {x : E} {r : โ„} {p : Seminorm ๐•œ E} {q : Seminorm ๐•œ E} (h : q โ‰ค p) :
                    theorem Seminorm.closedBall_antitone {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [SMul ๐•œ E] {x : E} {r : โ„} {p : Seminorm ๐•œ E} {q : Seminorm ๐•œ E} (h : q โ‰ค p) :
                    theorem Seminorm.ball_add_ball_subset {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [SMul ๐•œ E] (p : Seminorm ๐•œ E) (rโ‚ : โ„) (rโ‚‚ : โ„) (xโ‚ : E) (xโ‚‚ : E) :
                    Seminorm.ball p xโ‚ rโ‚ + Seminorm.ball p xโ‚‚ rโ‚‚ โŠ† Seminorm.ball p (xโ‚ + xโ‚‚) (rโ‚ + rโ‚‚)
                    theorem Seminorm.closedBall_add_closedBall_subset {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [SMul ๐•œ E] (p : Seminorm ๐•œ E) (rโ‚ : โ„) (rโ‚‚ : โ„) (xโ‚ : E) (xโ‚‚ : E) :
                    Seminorm.closedBall p xโ‚ rโ‚ + Seminorm.closedBall p xโ‚‚ rโ‚‚ โŠ† Seminorm.closedBall p (xโ‚ + xโ‚‚) (rโ‚ + rโ‚‚)
                    theorem Seminorm.sub_mem_ball {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [SMul ๐•œ E] (p : Seminorm ๐•œ E) (xโ‚ : E) (xโ‚‚ : E) (y : E) (r : โ„) :
                    xโ‚ - xโ‚‚ โˆˆ Seminorm.ball p y r โ†” xโ‚ โˆˆ Seminorm.ball p (xโ‚‚ + y) r
                    theorem Seminorm.vadd_ball {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [SMul ๐•œ E] {x : E} {y : E} {r : โ„} (p : Seminorm ๐•œ E) :

                    The image of a ball under addition with a singleton is another ball.

                    theorem Seminorm.vadd_closedBall {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [SMul ๐•œ E] {x : E} {y : E} {r : โ„} (p : Seminorm ๐•œ E) :

                    The image of a closed ball under addition with a singleton is another closed ball.

                    theorem Seminorm.ball_comp {๐•œ : Type u_3} {๐•œโ‚‚ : Type u_4} {E : Type u_7} {Eโ‚‚ : Type u_8} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] [SeminormedRing ๐•œโ‚‚] [AddCommGroup Eโ‚‚] [Module ๐•œโ‚‚ Eโ‚‚] {ฯƒโ‚โ‚‚ : ๐•œ โ†’+* ๐•œโ‚‚} [RingHomIsometric ฯƒโ‚โ‚‚] (p : Seminorm ๐•œโ‚‚ Eโ‚‚) (f : E โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Eโ‚‚) (x : E) (r : โ„) :
                    Seminorm.ball (Seminorm.comp p f) x r = โ†‘f โปยน' Seminorm.ball p (โ†‘f x) r
                    theorem Seminorm.closedBall_comp {๐•œ : Type u_3} {๐•œโ‚‚ : Type u_4} {E : Type u_7} {Eโ‚‚ : Type u_8} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] [SeminormedRing ๐•œโ‚‚] [AddCommGroup Eโ‚‚] [Module ๐•œโ‚‚ Eโ‚‚] {ฯƒโ‚โ‚‚ : ๐•œ โ†’+* ๐•œโ‚‚} [RingHomIsometric ฯƒโ‚โ‚‚] (p : Seminorm ๐•œโ‚‚ Eโ‚‚) (f : E โ†’โ‚›โ‚—[ฯƒโ‚โ‚‚] Eโ‚‚) (x : E) (r : โ„) :
                    theorem Seminorm.preimage_metric_ball {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : Seminorm ๐•œ E) {r : โ„} :
                    โ†‘p โปยน' Metric.ball 0 r = {x | โ†‘p x < r}
                    theorem Seminorm.preimage_metric_closedBall {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : Seminorm ๐•œ E) {r : โ„} :
                    โ†‘p โปยน' Metric.closedBall 0 r = {x | โ†‘p x โ‰ค r}
                    theorem Seminorm.ball_zero_eq_preimage_ball {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : Seminorm ๐•œ E) {r : โ„} :
                    theorem Seminorm.closedBall_zero_eq_preimage_closedBall {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : Seminorm ๐•œ E) {r : โ„} :
                    @[simp]
                    theorem Seminorm.ball_bot {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] {r : โ„} (x : E) (hr : 0 < r) :
                    Seminorm.ball โŠฅ x r = Set.univ
                    @[simp]
                    theorem Seminorm.closedBall_bot {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] {r : โ„} (x : E) (hr : 0 < r) :
                    theorem Seminorm.balanced_ball_zero {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : Seminorm ๐•œ E) (r : โ„) :
                    Balanced ๐•œ (Seminorm.ball p 0 r)

                    Seminorm-balls at the origin are balanced.

                    theorem Seminorm.balanced_closedBall_zero {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : Seminorm ๐•œ E) (r : โ„) :
                    Balanced ๐•œ (Seminorm.closedBall p 0 r)

                    Closed seminorm-balls at the origin are balanced.

                    theorem Seminorm.ball_finset_sup_eq_iInter {๐•œ : Type u_3} {E : Type u_7} {ฮน : Type u_12} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : ฮน โ†’ Seminorm ๐•œ E) (s : Finset ฮน) (x : E) {r : โ„} (hr : 0 < r) :
                    Seminorm.ball (Finset.sup s p) x r = โ‹‚ (i : ฮน) (_ : i โˆˆ s), Seminorm.ball (p i) x r
                    theorem Seminorm.closedBall_finset_sup_eq_iInter {๐•œ : Type u_3} {E : Type u_7} {ฮน : Type u_12} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : ฮน โ†’ Seminorm ๐•œ E) (s : Finset ฮน) (x : E) {r : โ„} (hr : 0 โ‰ค r) :
                    Seminorm.closedBall (Finset.sup s p) x r = โ‹‚ (i : ฮน) (_ : i โˆˆ s), Seminorm.closedBall (p i) x r
                    theorem Seminorm.ball_finset_sup {๐•œ : Type u_3} {E : Type u_7} {ฮน : Type u_12} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : ฮน โ†’ Seminorm ๐•œ E) (s : Finset ฮน) (x : E) {r : โ„} (hr : 0 < r) :
                    Seminorm.ball (Finset.sup s p) x r = Finset.inf s fun i => Seminorm.ball (p i) x r
                    theorem Seminorm.closedBall_finset_sup {๐•œ : Type u_3} {E : Type u_7} {ฮน : Type u_12} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : ฮน โ†’ Seminorm ๐•œ E) (s : Finset ฮน) (x : E) {r : โ„} (hr : 0 โ‰ค r) :
                    theorem Seminorm.ball_smul_ball {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : Seminorm ๐•œ E) (rโ‚ : โ„) (rโ‚‚ : โ„) :
                    Metric.ball 0 rโ‚ โ€ข Seminorm.ball p 0 rโ‚‚ โŠ† Seminorm.ball p 0 (rโ‚ * rโ‚‚)
                    theorem Seminorm.closedBall_smul_closedBall {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : Seminorm ๐•œ E) (rโ‚ : โ„) (rโ‚‚ : โ„) :
                    Metric.closedBall 0 rโ‚ โ€ข Seminorm.closedBall p 0 rโ‚‚ โŠ† Seminorm.closedBall p 0 (rโ‚ * rโ‚‚)
                    @[simp]
                    theorem Seminorm.ball_eq_emptyset {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : Seminorm ๐•œ E) {x : E} {r : โ„} (hr : r โ‰ค 0) :
                    @[simp]
                    theorem Seminorm.closedBall_eq_emptyset {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : Seminorm ๐•œ E) {x : E} {r : โ„} (hr : r < 0) :
                    theorem Seminorm.neg_mem_ball_zero {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : Seminorm ๐•œ E) {x : E} (r : โ„) (hx : x โˆˆ Seminorm.ball p 0 r) :
                    @[simp]
                    theorem Seminorm.neg_ball {๐•œ : Type u_3} {E : Type u_7} [SeminormedRing ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : Seminorm ๐•œ E) (r : โ„) (x : E) :
                    theorem Seminorm.closedBall_iSup {๐•œ : Type u_3} {E : Type u_7} {ฮน : Type u_12} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] {p : ฮน โ†’ Seminorm ๐•œ E} (hp : BddAbove (Set.range p)) (e : E) {r : โ„} (hr : 0 < r) :
                    Seminorm.closedBall (โจ† (i : ฮน), p i) e r = โ‹‚ (i : ฮน), Seminorm.closedBall (p i) e r
                    theorem Seminorm.ball_norm_mul_subset {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] {p : Seminorm ๐•œ E} {k : ๐•œ} {r : โ„} :
                    theorem Seminorm.smul_ball_zero {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] {p : Seminorm ๐•œ E} {k : ๐•œ} {r : โ„} (hk : k โ‰  0) :
                    theorem Seminorm.smul_closedBall_subset {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] {p : Seminorm ๐•œ E} {k : ๐•œ} {r : โ„} :
                    theorem Seminorm.smul_closedBall_zero {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] {p : Seminorm ๐•œ E} {k : ๐•œ} {r : โ„} (hk : 0 < โ€–kโ€–) :
                    theorem Seminorm.ball_zero_absorbs_ball_zero {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : Seminorm ๐•œ E) {rโ‚ : โ„} {rโ‚‚ : โ„} (hrโ‚ : 0 < rโ‚) :
                    Absorbs ๐•œ (Seminorm.ball p 0 rโ‚) (Seminorm.ball p 0 rโ‚‚)
                    theorem Seminorm.absorbent_ball_zero {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : Seminorm ๐•œ E) {r : โ„} (hr : 0 < r) :
                    Absorbent ๐•œ (Seminorm.ball p 0 r)

                    Seminorm-balls at the origin are absorbent.

                    theorem Seminorm.absorbent_closedBall_zero {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : Seminorm ๐•œ E) {r : โ„} (hr : 0 < r) :
                    Absorbent ๐•œ (Seminorm.closedBall p 0 r)

                    Closed seminorm-balls at the origin are absorbent.

                    theorem Seminorm.absorbent_ball {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : Seminorm ๐•œ E) {r : โ„} {x : E} (hpr : โ†‘p x < r) :
                    Absorbent ๐•œ (Seminorm.ball p x r)

                    Seminorm-balls containing the origin are absorbent.

                    theorem Seminorm.absorbent_closedBall {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : Seminorm ๐•œ E) {r : โ„} {x : E} (hpr : โ†‘p x < r) :
                    Absorbent ๐•œ (Seminorm.closedBall p x r)

                    Seminorm-balls containing the origin are absorbent.

                    @[simp]
                    theorem Seminorm.smul_ball_preimage {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : Seminorm ๐•œ E) (y : E) (r : โ„) (a : ๐•œ) (ha : a โ‰  0) :
                    theorem Seminorm.convexOn {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [NormedSpace โ„ ๐•œ] [Module ๐•œ E] [SMul โ„ E] [IsScalarTower โ„ ๐•œ E] (p : Seminorm ๐•œ E) :
                    ConvexOn โ„ Set.univ โ†‘p

                    A seminorm is convex. Also see convexOn_norm.

                    theorem Seminorm.convex_ball {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [NormedSpace โ„ ๐•œ] [Module ๐•œ E] [Module โ„ E] [IsScalarTower โ„ ๐•œ E] (p : Seminorm ๐•œ E) (x : E) (r : โ„) :

                    Seminorm-balls are convex.

                    theorem Seminorm.convex_closedBall {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [NormedSpace โ„ ๐•œ] [Module ๐•œ E] [Module โ„ E] [IsScalarTower โ„ ๐•œ E] (p : Seminorm ๐•œ E) (x : E) (r : โ„) :

                    Closed seminorm-balls are convex.

                    def Seminorm.restrictScalars (๐•œ : Type u_3) {E : Type u_7} {๐•œ' : Type u_13} [NormedField ๐•œ] [SeminormedRing ๐•œ'] [NormedAlgebra ๐•œ ๐•œ'] [NormOneClass ๐•œ'] [AddCommGroup E] [Module ๐•œ' E] [SMul ๐•œ E] [IsScalarTower ๐•œ ๐•œ' E] (p : Seminorm ๐•œ' E) :
                    Seminorm ๐•œ E

                    Reinterpret a seminorm over a field ๐•œ' as a seminorm over a smaller field ๐•œ. This will typically be used with IsROrC ๐•œ' and ๐•œ = โ„.

                    Instances For
                      @[simp]
                      theorem Seminorm.coe_restrictScalars (๐•œ : Type u_3) {E : Type u_7} {๐•œ' : Type u_13} [NormedField ๐•œ] [SeminormedRing ๐•œ'] [NormedAlgebra ๐•œ ๐•œ'] [NormOneClass ๐•œ'] [AddCommGroup E] [Module ๐•œ' E] [SMul ๐•œ E] [IsScalarTower ๐•œ ๐•œ' E] (p : Seminorm ๐•œ' E) :
                      โ†‘(Seminorm.restrictScalars ๐•œ p) = โ†‘p
                      @[simp]
                      theorem Seminorm.restrictScalars_ball (๐•œ : Type u_3) {E : Type u_7} {๐•œ' : Type u_13} [NormedField ๐•œ] [SeminormedRing ๐•œ'] [NormedAlgebra ๐•œ ๐•œ'] [NormOneClass ๐•œ'] [AddCommGroup E] [Module ๐•œ' E] [SMul ๐•œ E] [IsScalarTower ๐•œ ๐•œ' E] (p : Seminorm ๐•œ' E) :
                      @[simp]
                      theorem Seminorm.restrictScalars_closedBall (๐•œ : Type u_3) {E : Type u_7} {๐•œ' : Type u_13} [NormedField ๐•œ] [SeminormedRing ๐•œ'] [NormedAlgebra ๐•œ ๐•œ'] [NormOneClass ๐•œ'] [AddCommGroup E] [Module ๐•œ' E] [SMul ๐•œ E] [IsScalarTower ๐•œ ๐•œ' E] (p : Seminorm ๐•œ' E) :

                      Continuity criterions for seminorms #

                      theorem Seminorm.continuousAt_zero_of_forall' {๐• : Type u_6} {E : Type u_7} [SeminormedRing ๐•] [AddCommGroup E] [Module ๐• E] [TopologicalSpace E] {p : Seminorm ๐• E} (hp : โˆ€ (r : โ„), r > 0 โ†’ Seminorm.closedBall p 0 r โˆˆ nhds 0) :
                      ContinuousAt (โ†‘p) 0

                      A seminorm is continuous at 0 if p.closedBall 0 r โˆˆ ๐“ 0 for all r > 0. Over a NontriviallyNormedField it is actually enough to check that this is true for some r, see Seminorm.continuousAt_zero'.

                      theorem Seminorm.continuousAt_zero' {๐•œ : Type u_3} {E : Type u_7} [NontriviallyNormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] [TopologicalSpace E] [ContinuousConstSMul ๐•œ E] {p : Seminorm ๐•œ E} {r : โ„} (hp : Seminorm.closedBall p 0 r โˆˆ nhds 0) :
                      ContinuousAt (โ†‘p) 0
                      theorem Seminorm.continuousAt_zero_of_forall {๐• : Type u_6} {E : Type u_7} [SeminormedRing ๐•] [AddCommGroup E] [Module ๐• E] [TopologicalSpace E] {p : Seminorm ๐• E} (hp : โˆ€ (r : โ„), r > 0 โ†’ Seminorm.ball p 0 r โˆˆ nhds 0) :
                      ContinuousAt (โ†‘p) 0

                      A seminorm is continuous at 0 if p.ball 0 r โˆˆ ๐“ 0 for all r > 0. Over a NontriviallyNormedField it is actually enough to check that this is true for some r, see Seminorm.continuousAt_zero'.

                      theorem Seminorm.continuousAt_zero {๐•œ : Type u_3} {E : Type u_7} [NontriviallyNormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] [TopologicalSpace E] [ContinuousConstSMul ๐•œ E] {p : Seminorm ๐•œ E} {r : โ„} (hp : Seminorm.ball p 0 r โˆˆ nhds 0) :
                      ContinuousAt (โ†‘p) 0
                      theorem Seminorm.uniformContinuous_of_continuousAt_zero {๐• : Type u_6} {E : Type u_7} [SeminormedRing ๐•] [AddCommGroup E] [Module ๐• E] [UniformSpace E] [UniformAddGroup E] {p : Seminorm ๐• E} (hp : ContinuousAt (โ†‘p) 0) :
                      theorem Seminorm.continuous_of_continuousAt_zero {๐• : Type u_6} {E : Type u_7} [SeminormedRing ๐•] [AddCommGroup E] [Module ๐• E] [TopologicalSpace E] [TopologicalAddGroup E] {p : Seminorm ๐• E} (hp : ContinuousAt (โ†‘p) 0) :
                      Continuous โ†‘p
                      theorem Seminorm.uniformContinuous_of_forall {๐• : Type u_6} {E : Type u_7} [SeminormedRing ๐•] [AddCommGroup E] [Module ๐• E] [UniformSpace E] [UniformAddGroup E] {p : Seminorm ๐• E} (hp : โˆ€ (r : โ„), r > 0 โ†’ Seminorm.ball p 0 r โˆˆ nhds 0) :

                      A seminorm is uniformly continuous if p.ball 0 r โˆˆ ๐“ 0 for all r > 0. Over a NontriviallyNormedField it is actually enough to check that this is true for some r, see Seminorm.uniformContinuous.

                      theorem Seminorm.uniformContinuous {๐•œ : Type u_3} {E : Type u_7} [NontriviallyNormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] [UniformSpace E] [UniformAddGroup E] [ContinuousConstSMul ๐•œ E] {p : Seminorm ๐•œ E} {r : โ„} (hp : Seminorm.ball p 0 r โˆˆ nhds 0) :
                      theorem Seminorm.uniformContinuous_of_forall' {๐• : Type u_6} {E : Type u_7} [SeminormedRing ๐•] [AddCommGroup E] [Module ๐• E] [UniformSpace E] [UniformAddGroup E] {p : Seminorm ๐• E} (hp : โˆ€ (r : โ„), r > 0 โ†’ Seminorm.closedBall p 0 r โˆˆ nhds 0) :

                      A seminorm is uniformly continuous if p.closedBall 0 r โˆˆ ๐“ 0 for all r > 0. Over a NontriviallyNormedField it is actually enough to check that this is true for some r, see Seminorm.uniformContinuous'.

                      theorem Seminorm.uniformContinuous' {๐•œ : Type u_3} {E : Type u_7} [NontriviallyNormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] [UniformSpace E] [UniformAddGroup E] [ContinuousConstSMul ๐•œ E] {p : Seminorm ๐•œ E} {r : โ„} (hp : Seminorm.closedBall p 0 r โˆˆ nhds 0) :
                      theorem Seminorm.continuous_of_forall {๐• : Type u_6} {E : Type u_7} [SeminormedRing ๐•] [AddCommGroup E] [Module ๐• E] [TopologicalSpace E] [TopologicalAddGroup E] {p : Seminorm ๐• E} (hp : โˆ€ (r : โ„), r > 0 โ†’ Seminorm.ball p 0 r โˆˆ nhds 0) :
                      Continuous โ†‘p

                      A seminorm is continuous if p.ball 0 r โˆˆ ๐“ 0 for all r > 0. Over a NontriviallyNormedField it is actually enough to check that this is true for some r, see Seminorm.continuous.

                      theorem Seminorm.continuous {๐•œ : Type u_3} {E : Type u_7} [NontriviallyNormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] [TopologicalSpace E] [TopologicalAddGroup E] [ContinuousConstSMul ๐•œ E] {p : Seminorm ๐•œ E} {r : โ„} (hp : Seminorm.ball p 0 r โˆˆ nhds 0) :
                      Continuous โ†‘p
                      theorem Seminorm.continuous_of_forall' {๐• : Type u_6} {E : Type u_7} [SeminormedRing ๐•] [AddCommGroup E] [Module ๐• E] [TopologicalSpace E] [TopologicalAddGroup E] {p : Seminorm ๐• E} (hp : โˆ€ (r : โ„), r > 0 โ†’ Seminorm.closedBall p 0 r โˆˆ nhds 0) :
                      Continuous โ†‘p

                      A seminorm is continuous if p.closedBall 0 r โˆˆ ๐“ 0 for all r > 0. Over a NontriviallyNormedField it is actually enough to check that this is true for some r, see Seminorm.continuous'.

                      theorem Seminorm.continuous' {๐•œ : Type u_3} {E : Type u_7} [NontriviallyNormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] [TopologicalSpace E] [TopologicalAddGroup E] [ContinuousConstSMul ๐•œ E] {p : Seminorm ๐•œ E} {r : โ„} (hp : Seminorm.closedBall p 0 r โˆˆ nhds 0) :
                      Continuous โ†‘p
                      theorem Seminorm.continuous_of_le {๐• : Type u_6} {E : Type u_7} [SeminormedRing ๐•] [AddCommGroup E] [Module ๐• E] [TopologicalSpace E] [TopologicalAddGroup E] {p : Seminorm ๐• E} {q : Seminorm ๐• E} (hq : Continuous โ†‘q) (hpq : p โ‰ค q) :
                      Continuous โ†‘p
                      theorem Seminorm.ball_mem_nhds {๐• : Type u_6} {E : Type u_7} [SeminormedRing ๐•] [AddCommGroup E] [Module ๐• E] [TopologicalSpace E] {p : Seminorm ๐• E} (hp : Continuous โ†‘p) {r : โ„} (hr : 0 < r) :
                      theorem Seminorm.rescale_to_shell_zpow {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : Seminorm ๐•œ E) {c : ๐•œ} (hc : 1 < โ€–cโ€–) {ฮต : โ„} (ฮตpos : 0 < ฮต) {x : E} (hx : โ†‘p x โ‰  0) :
                      โˆƒ n, c ^ n โ‰  0 โˆง โ†‘p (c ^ n โ€ข x) < ฮต โˆง ฮต / โ€–cโ€– โ‰ค โ†‘p (c ^ n โ€ข x) โˆง โ€–c ^ nโ€–โปยน โ‰ค ฮตโปยน * โ€–cโ€– * โ†‘p x

                      Let p be a seminorm on a vector space over a NormedField. If there is a scalar c with โ€–cโ€–>1, then any x such that p x โ‰  0 can be moved by scalar multiplication to any p-shell of width โ€–cโ€–. Also recap information on the value of p on the rescaling element that shows up in applications.

                      theorem Seminorm.rescale_to_shell {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : Seminorm ๐•œ E) {c : ๐•œ} (hc : 1 < โ€–cโ€–) {ฮต : โ„} (ฮตpos : 0 < ฮต) {x : E} (hx : โ†‘p x โ‰  0) :
                      โˆƒ d, d โ‰  0 โˆง โ†‘p (d โ€ข x) < ฮต โˆง ฮต / โ€–cโ€– โ‰ค โ†‘p (d โ€ข x) โˆง โ€–dโ€–โปยน โ‰ค ฮตโปยน * โ€–cโ€– * โ†‘p x

                      Let p be a seminorm on a vector space over a NormedField. If there is a scalar c with โ€–cโ€–>1, then any x such that p x โ‰  0 can be moved by scalar multiplication to any p-shell of width โ€–cโ€–. Also recap information on the value of p on the rescaling element that shows up in applications.

                      theorem Seminorm.bound_of_shell {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : Seminorm ๐•œ E) (q : Seminorm ๐•œ E) {ฮต : โ„} {C : โ„} (ฮต_pos : 0 < ฮต) {c : ๐•œ} (hc : 1 < โ€–cโ€–) (hf : โˆ€ (x : E), ฮต / โ€–cโ€– โ‰ค โ†‘p x โ†’ โ†‘p x < ฮต โ†’ โ†‘q x โ‰ค C * โ†‘p x) {x : E} (hx : โ†‘p x โ‰  0) :
                      โ†‘q x โ‰ค C * โ†‘p x

                      Let p and q be two seminorms on a vector space over a nontrivially_normed_field. If we have q x โ‰ค C * p x on some shell of the form {x | ฮต/โ€–cโ€– โ‰ค p x < ฮต} (where ฮต > 0 and โ€–cโ€– > 1), then we also have q x โ‰ค C * p x for all x such that p x โ‰  0.

                      theorem Seminorm.bound_of_shell_smul {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : Seminorm ๐•œ E) (q : Seminorm ๐•œ E) {ฮต : โ„} {C : NNReal} (ฮต_pos : 0 < ฮต) {c : ๐•œ} (hc : 1 < โ€–cโ€–) (hf : โˆ€ (x : E), ฮต / โ€–cโ€– โ‰ค โ†‘p x โ†’ โ†‘p x < ฮต โ†’ โ†‘q x โ‰ค โ†‘(C โ€ข p) x) {x : E} (hx : โ†‘p x โ‰  0) :
                      โ†‘q x โ‰ค โ†‘(C โ€ข p) x

                      A version of Seminorm.bound_of_shell expressed using pointwise scalar multiplication of seminorms.

                      theorem Seminorm.bound_of_shell_sup {๐•œ : Type u_3} {E : Type u_7} {ฮน : Type u_12} [NormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] (p : ฮน โ†’ Seminorm ๐•œ E) (s : Finset ฮน) (q : Seminorm ๐•œ E) {ฮต : โ„} {C : NNReal} (ฮต_pos : 0 < ฮต) {c : ๐•œ} (hc : 1 < โ€–cโ€–) (hf : โˆ€ (x : E), (โˆ€ (i : ฮน), i โˆˆ s โ†’ โ†‘(p i) x < ฮต) โ†’ โˆ€ (j : ฮน), j โˆˆ s โ†’ ฮต / โ€–cโ€– โ‰ค โ†‘(p j) x โ†’ โ†‘q x โ‰ค โ†‘(C โ€ข p j) x) {x : E} (hx : โˆƒ j, j โˆˆ s โˆง โ†‘(p j) x โ‰  0) :
                      โ†‘q x โ‰ค โ†‘(C โ€ข Finset.sup s p) x
                      theorem Seminorm.bddAbove_of_absorbent {๐•œ : Type u_3} {E : Type u_7} {ฮน : Type u_12} [NontriviallyNormedField ๐•œ] [AddCommGroup E] [Module ๐•œ E] {p : ฮน โ†’ Seminorm ๐•œ E} {s : Set E} (hs : Absorbent ๐•œ s) (h : โˆ€ (x : E), x โˆˆ s โ†’ BddAbove (Set.range fun i => โ†‘(p i) x)) :

                      The norm as a seminorm #

                      def normSeminorm (๐•œ : Type u_3) (E : Type u_7) [NormedField ๐•œ] [SeminormedAddCommGroup E] [NormedSpace ๐•œ E] :
                      Seminorm ๐•œ E

                      The norm of a seminormed group as a seminorm.

                      Instances For
                        @[simp]
                        theorem coe_normSeminorm (๐•œ : Type u_3) (E : Type u_7) [NormedField ๐•œ] [SeminormedAddCommGroup E] [NormedSpace ๐•œ E] :
                        โ†‘(normSeminorm ๐•œ E) = norm
                        @[simp]
                        theorem ball_normSeminorm (๐•œ : Type u_3) (E : Type u_7) [NormedField ๐•œ] [SeminormedAddCommGroup E] [NormedSpace ๐•œ E] :
                        Seminorm.ball (normSeminorm ๐•œ E) = Metric.ball
                        theorem absorbent_ball_zero {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [SeminormedAddCommGroup E] [NormedSpace ๐•œ E] {r : โ„} (hr : 0 < r) :
                        Absorbent ๐•œ (Metric.ball 0 r)

                        Balls at the origin are absorbent.

                        theorem absorbent_ball {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [SeminormedAddCommGroup E] [NormedSpace ๐•œ E] {r : โ„} {x : E} (hx : โ€–xโ€– < r) :
                        Absorbent ๐•œ (Metric.ball x r)

                        Balls containing the origin are absorbent.

                        theorem balanced_ball_zero {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [SeminormedAddCommGroup E] [NormedSpace ๐•œ E] {r : โ„} :
                        Balanced ๐•œ (Metric.ball 0 r)

                        Balls at the origin are balanced.

                        theorem rescale_to_shell_semi_normed_zpow {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [SeminormedAddCommGroup E] [NormedSpace ๐•œ E] {c : ๐•œ} (hc : 1 < โ€–cโ€–) {ฮต : โ„} (ฮตpos : 0 < ฮต) {x : E} (hx : โ€–xโ€– โ‰  0) :

                        If there is a scalar c with โ€–cโ€–>1, then any element with nonzero norm can be moved by scalar multiplication to any shell of width โ€–cโ€–. Also recap information on the norm of the rescaling element that shows up in applications.

                        theorem rescale_to_shell_semi_normed {๐•œ : Type u_3} {E : Type u_7} [NormedField ๐•œ] [SeminormedAddCommGroup E] [NormedSpace ๐•œ E] {c : ๐•œ} (hc : 1 < โ€–cโ€–) {ฮต : โ„} (ฮตpos : 0 < ฮต) {x : E} (hx : โ€–xโ€– โ‰  0) :

                        If there is a scalar c with โ€–cโ€–>1, then any element with nonzero norm can be moved by scalar multiplication to any shell of width โ€–cโ€–. Also recap information on the norm of the rescaling element that shows up in applications.

                        theorem rescale_to_shell_zpow {๐•œ : Type u_3} {F : Type u_10} [NormedField ๐•œ] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {c : ๐•œ} (hc : 1 < โ€–cโ€–) {ฮต : โ„} (ฮตpos : 0 < ฮต) {x : F} (hx : x โ‰  0) :
                        theorem rescale_to_shell {๐•œ : Type u_3} {F : Type u_10} [NormedField ๐•œ] [NormedAddCommGroup F] [NormedSpace ๐•œ F] {c : ๐•œ} (hc : 1 < โ€–cโ€–) {ฮต : โ„} (ฮตpos : 0 < ฮต) {x : F} (hx : x โ‰  0) :

                        If there is a scalar c with โ€–cโ€–>1, then any element can be moved by scalar multiplication to any shell of width โ€–cโ€–. Also recap information on the norm of the rescaling element that shows up in applications.