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

• Seminorm: A function to the reals that is positive-semidefinite, absolutely homogeneous, and subadditive.
• normSeminorm ๐ E: The norm on E as a seminorm.

## Tags #

seminorm, locally convex, LCTVS

structure Seminorm (๐ : Type u_13) (E : Type u_14) [SeminormedRing ๐] [] [SMul ๐ E] extends :
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.

• toFun : E โ โ
• map_zero' : self.toFun 0 = 0
• add_le' : โ (r s : E), self.toFun (r + s) โค self.toFun r + self.toFun s
• neg' : โ (r : E), self.toFun (-r) = self.toFun r
• smul' : โ (a : ๐) (x : E), self.toFun (a โข x) = * self.toFun x

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

Instances For
theorem Seminorm.smul' {๐ : Type u_13} {E : Type u_14} [SeminormedRing ๐] [] [SMul ๐ E] (self : Seminorm ๐ E) (a : ๐) (x : E) :
self.toFun (a โข x) = * self.toFun x

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

class SeminormClass (F : Type u_13) (๐ : outParam (Type u_14)) (E : outParam (Type u_15)) [SeminormedRing ๐] [] [SMul ๐ E] [] extends :

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

You should extend this class when you extend Seminorm.

• 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) = * f x

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

Instances
theorem SeminormClass.map_smul_eq_mul {F : Type u_13} {๐ : outParam (Type u_14)} {E : outParam (Type u_15)} [SeminormedRing ๐] [] [SMul ๐ E] [] [self : SeminormClass F ๐ E] (f : F) (a : ๐) (x : E) :
f (a โข x) = * f x

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

def Seminorm.of {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [Module ๐ E] (f : E โ โ) (add_le : โ (x y : E), f (x + y) โค f x + f y) (smul : โ (a : ๐) (x : E), f (a โข x) = * f x) :
Seminorm ๐ E

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

Equations
• Seminorm.of f add_le smul = { toFun := f, map_zero' := โฏ, add_le' := add_le, neg' := โฏ, smul' := smul }
Instances For
def Seminorm.ofSMulLE {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [] [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) โค * 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.

Equations
Instances For
instance Seminorm.instFunLike {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] :
FunLike (Seminorm ๐ E) E โ
Equations
• Seminorm.instFunLike = { coe := fun (f : Seminorm ๐ E) => f.toFun, coe_injective' := โฏ }
instance Seminorm.instSeminormClass {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] :
SeminormClass (Seminorm ๐ E) ๐ E
Equations
• โฏ = โฏ
theorem Seminorm.ext {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [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 ๐] [] [SMul ๐ E] :
Zero (Seminorm ๐ E)
Equations
• Seminorm.instZero = { zero := let __src := Zero.zero; { toAddGroupSeminorm := __src, smul' := โฏ } }
@[simp]
theorem Seminorm.coe_zero {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] :
โ0 = 0
@[simp]
theorem Seminorm.zero_apply {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] (x : E) :
0 x = 0
instance Seminorm.instInhabited {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] :
Inhabited (Seminorm ๐ E)
Equations
• Seminorm.instInhabited = { default := 0 }
instance Seminorm.instSMul {R : Type u_1} {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] [] [] [] :
SMul R (Seminorm ๐ E)

Any action on โ which factors through โโฅ0 applies to a seminorm.

Equations
• One or more equations did not get rendered due to their size.
instance Seminorm.instIsScalarTowerOfReal {R : Type u_1} {R' : Type u_2} {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] [] [] [] [SMul R' โ] [] [] [SMul R R'] [] :
IsScalarTower R R' (Seminorm ๐ E)
Equations
• โฏ = โฏ
theorem Seminorm.coe_smul {R : Type u_1} {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] [] [] [] (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 ๐] [] [SMul ๐ E] [] [] [] (r : R) (p : Seminorm ๐ E) (x : E) :
(r โข p) x = r โข p x
instance Seminorm.instAdd {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] :
Equations
• One or more equations did not get rendered due to their size.
theorem Seminorm.coe_add {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [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 ๐] [] [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 ๐] [] [SMul ๐ E] :
Equations
instance Seminorm.instOrderedCancelAddCommMonoid {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] :
Equations
instance Seminorm.instMulAction {R : Type u_1} {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] [] [] [] [] :
MulAction R (Seminorm ๐ E)
Equations
@[simp]
theorem Seminorm.coeFnAddMonoidHom_apply (๐ : Type u_3) (E : Type u_7) [SeminormedRing ๐] [] [SMul ๐ E] :
โ (a : Seminorm ๐ E) (a_1 : E), () a a_1 = a a_1
def Seminorm.coeFnAddMonoidHom (๐ : Type u_3) (E : Type u_7) [SeminormedRing ๐] [] [SMul ๐ E] :
Seminorm ๐ E โ+ E โ โ

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

Equations
• = { toFun := DFunLike.coe, map_zero' := โฏ, map_add' := โฏ }
Instances For
theorem Seminorm.coeFnAddMonoidHom_injective (๐ : Type u_3) (E : Type u_7) [SeminormedRing ๐] [] [SMul ๐ E] :
instance Seminorm.instDistribMulAction {R : Type u_1} {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] [] [] [] [] :
DistribMulAction R (Seminorm ๐ E)
Equations
• Seminorm.instDistribMulAction =
instance Seminorm.instModule {R : Type u_1} {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] [] [] [] [] :
Module R (Seminorm ๐ E)
Equations
instance Seminorm.instSup {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] :
Sup (Seminorm ๐ E)
Equations
• One or more equations did not get rendered due to their size.
@[simp]
theorem Seminorm.coe_sup {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] (p : Seminorm ๐ E) (q : Seminorm ๐ E) :
โ(p โ q) = โp โ โq
theorem Seminorm.sup_apply {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [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 ๐] [] [SMul ๐ E] [] [] [] (r : R) (p : Seminorm ๐ E) (q : Seminorm ๐ E) :
instance Seminorm.instPartialOrder {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] :
PartialOrder (Seminorm ๐ E)
Equations
@[simp]
theorem Seminorm.coe_le_coe {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [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 ๐] [] [SMul ๐ E] {p : Seminorm ๐ E} {q : Seminorm ๐ E} :
โp < โq โ p < q
theorem Seminorm.le_def {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [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 ๐] [] [SMul ๐ E] {p : Seminorm ๐ E} {q : Seminorm ๐ E} :
p < q โ p โค q โง โ (x : E), p x < q x
instance Seminorm.instSemilatticeSup {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] :
SemilatticeSup (Seminorm ๐ E)
Equations
noncomputable instance Seminorm.smul_nnreal_real :
Equations
def Seminorm.comp {๐ : Type u_3} {๐โ : Type u_4} {E : Type u_7} {Eโ : Type u_8} [SeminormedRing ๐] [SeminormedRing ๐โ] {ฯโโ : ๐ โ+* ๐โ} [RingHomIsometric ฯโโ] [] [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.

Equations
• p.comp f = let __src := p.comp f.toAddMonoidHom; { toFun := fun (x : E) => p (f x), map_zero' := โฏ, add_le' := โฏ, neg' := โฏ, smul' := โฏ }
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โ] [Module ๐ E] [Module ๐โ Eโ] (p : Seminorm ๐โ Eโ) (f : E โโโ[ฯโโ] Eโ) :
โ(p.comp 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โ] [Module ๐ E] [Module ๐โ Eโ] (p : Seminorm ๐โ Eโ) (f : E โโโ[ฯโโ] Eโ) (x : E) :
(p.comp f) x = p (f x)
@[simp]
theorem Seminorm.comp_id {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [Module ๐ E] (p : Seminorm ๐ E) :
p.comp 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โ] [Module ๐ E] [Module ๐โ Eโ] (p : Seminorm ๐โ Eโ) :
p.comp 0 = 0
@[simp]
theorem Seminorm.zero_comp {๐ : Type u_3} {๐โ : Type u_4} {E : Type u_7} {Eโ : Type u_8} [SeminormedRing ๐] [SeminormedRing ๐โ] {ฯโโ : ๐ โ+* ๐โ} [RingHomIsometric ฯโโ] [] [AddCommGroup Eโ] [Module ๐ E] [Module ๐โ Eโ] (f : E โโโ[ฯโโ] Eโ) :
= 0
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โ] [Module ๐ E] [Module ๐โ Eโ] [Module ๐โ Eโ] [RingHomCompTriple ฯโโ ฯโโ ฯโโ] (p : Seminorm ๐โ Eโ) (g : Eโ โโโ[ฯโโ] Eโ) (f : E โโโ[ฯโโ] Eโ) :
p.comp (g.comp f) = (p.comp g).comp f
theorem Seminorm.add_comp {๐ : Type u_3} {๐โ : Type u_4} {E : Type u_7} {Eโ : Type u_8} [SeminormedRing ๐] [SeminormedRing ๐โ] {ฯโโ : ๐ โ+* ๐โ} [RingHomIsometric ฯโโ] [] [AddCommGroup Eโ] [Module ๐ E] [Module ๐โ Eโ] (p : Seminorm ๐โ Eโ) (q : Seminorm ๐โ Eโ) (f : E โโโ[ฯโโ] Eโ) :
(p + q).comp f = p.comp f + q.comp f
theorem Seminorm.comp_add_le {๐ : Type u_3} {๐โ : Type u_4} {E : Type u_7} {Eโ : Type u_8} [SeminormedRing ๐] [SeminormedRing ๐โ] {ฯโโ : ๐ โ+* ๐โ} [RingHomIsometric ฯโโ] [] [AddCommGroup Eโ] [Module ๐ E] [Module ๐โ Eโ] (p : Seminorm ๐โ Eโ) (f : E โโโ[ฯโโ] Eโ) (g : E โโโ[ฯโโ] Eโ) :
p.comp (f + g) โค p.comp f + p.comp g
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โ] [Module ๐ E] [Module ๐โ Eโ] [] [] [] (p : Seminorm ๐โ Eโ) (f : E โโโ[ฯโโ] Eโ) (c : R) :
(c โข p).comp f = c โข p.comp f
theorem Seminorm.comp_mono {๐ : Type u_3} {๐โ : Type u_4} {E : Type u_7} {Eโ : Type u_8} [SeminormedRing ๐] [SeminormedRing ๐โ] {ฯโโ : ๐ โ+* ๐โ} [RingHomIsometric ฯโโ] [] [AddCommGroup Eโ] [Module ๐ E] [Module ๐โ Eโ] {p : Seminorm ๐โ Eโ} {q : Seminorm ๐โ Eโ} (f : E โโโ[ฯโโ] Eโ) (hp : p โค q) :
p.comp f โค q.comp f
@[simp]
theorem Seminorm.pullback_apply {๐ : Type u_3} {๐โ : Type u_4} {E : Type u_7} {Eโ : Type u_8} [SeminormedRing ๐] [SeminormedRing ๐โ] {ฯโโ : ๐ โ+* ๐โ} [RingHomIsometric ฯโโ] [] [AddCommGroup Eโ] [Module ๐ E] [Module ๐โ Eโ] (f : E โโโ[ฯโโ] Eโ) (p : Seminorm ๐โ Eโ) :
p = p.comp f
def Seminorm.pullback {๐ : Type u_3} {๐โ : Type u_4} {E : Type u_7} {Eโ : Type u_8} [SeminormedRing ๐] [SeminormedRing ๐โ] {ฯโโ : ๐ โ+* ๐โ} [RingHomIsometric ฯโโ] [] [AddCommGroup Eโ] [Module ๐ E] [Module ๐โ Eโ] (f : E โโโ[ฯโโ] Eโ) :
Seminorm ๐โ Eโ โ+ Seminorm ๐ E

The composition as an AddMonoidHom.

Equations
• = { toFun := fun (p : Seminorm ๐โ Eโ) => p.comp f, map_zero' := โฏ, map_add' := โฏ }
Instances For
instance Seminorm.instOrderBot {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [Module ๐ E] :
OrderBot (Seminorm ๐ E)
Equations
@[simp]
theorem Seminorm.coe_bot {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [Module ๐ E] :
โโฅ = 0
theorem Seminorm.bot_eq_zero {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [Module ๐ E] :
theorem Seminorm.smul_le_smul {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [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 ๐] [] [Module ๐ E] (p : ฮน โ Seminorm ๐ E) (s : Finset ฮน) (x : E) :
(s.sup p) x = โ(s.sup fun (i : ฮน) => โจ(p i) x, โฏโฉ)
theorem Seminorm.exists_apply_eq_finset_sup {๐ : Type u_3} {E : Type u_7} {ฮน : Type u_12} [SeminormedRing ๐] [] [Module ๐ E] (p : ฮน โ Seminorm ๐ E) {s : Finset ฮน} (hs : s.Nonempty) (x : E) :
โ i โ s, (s.sup 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 ๐] [] [Module ๐ E] (p : ฮน โ Seminorm ๐ E) (s : Finset ฮน) (x : E) :
(s.sup p) x = 0 โจ โ i โ s, (s.sup p) x = (p i) x
theorem Seminorm.finset_sup_smul {๐ : Type u_3} {E : Type u_7} {ฮน : Type u_12} [SeminormedRing ๐] [] [Module ๐ E] (p : ฮน โ Seminorm ๐ E) (s : Finset ฮน) (C : NNReal) :
s.sup (C โข p) = C โข s.sup p
theorem Seminorm.finset_sup_le_sum {๐ : Type u_3} {E : Type u_7} {ฮน : Type u_12} [SeminormedRing ๐] [] [Module ๐ E] (p : ฮน โ Seminorm ๐ E) (s : Finset ฮน) :
s.sup p โค โ i โ s, p i
theorem Seminorm.finset_sup_apply_le {๐ : Type u_3} {E : Type u_7} {ฮน : Type u_12} [SeminormedRing ๐] [] [Module ๐ E] {p : ฮน โ Seminorm ๐ E} {s : Finset ฮน} {x : E} {a : โ} (ha : 0 โค a) (h : โ i โ s, (p i) x โค a) :
(s.sup p) x โค a
theorem Seminorm.le_finset_sup_apply {๐ : Type u_3} {E : Type u_7} {ฮน : Type u_12} [SeminormedRing ๐] [] [Module ๐ E] {p : ฮน โ Seminorm ๐ E} {s : Finset ฮน} {x : E} {i : ฮน} (hi : i โ s) :
(p i) x โค (s.sup p) x
theorem Seminorm.finset_sup_apply_lt {๐ : Type u_3} {E : Type u_7} {ฮน : Type u_12} [SeminormedRing ๐] [] [Module ๐ E] {p : ฮน โ Seminorm ๐ E} {s : Finset ฮน} {x : E} {a : โ} (ha : 0 < a) (h : โ i โ s, (p i) x < a) :
(s.sup p) x < a
theorem Seminorm.norm_sub_map_le_sub {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [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โ] [Module ๐ E] [Module ๐โ Eโ] (p : Seminorm ๐โ Eโ) (f : E โโโ[ฯโโ] Eโ) (c : ๐โ) :
p.comp (c โข f) = โข p.comp f
theorem Seminorm.comp_smul_apply {๐ : Type u_3} {๐โ : Type u_4} {E : Type u_7} {Eโ : Type u_8} [SeminormedRing ๐] [SeminormedCommRing ๐โ] {ฯโโ : ๐ โ+* ๐โ} [RingHomIsometric ฯโโ] [] [AddCommGroup Eโ] [Module ๐ E] [Module ๐โ Eโ] (p : Seminorm ๐โ Eโ) (f : E โโโ[ฯโโ] Eโ) (c : ๐โ) (x : E) :
(p.comp (c โข f)) x = * p (f x)
theorem Seminorm.bddBelow_range_add {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [] [Module ๐ E] {p : Seminorm ๐ E} {q : Seminorm ๐ E} {x : E} :
BddBelow (Set.range fun (u : E) => 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 ๐] [] [Module ๐ E] :
Inf (Seminorm ๐ E)
Equations
• One or more equations did not get rendered due to their size.
@[simp]
theorem Seminorm.inf_apply {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [] [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 ๐] [] [Module ๐ E] :
Lattice (Seminorm ๐ E)
Equations
• Seminorm.instLattice = let __src := Seminorm.instSemilatticeSup; Lattice.mk โฏ โฏ โฏ
theorem Seminorm.smul_inf {R : Type u_1} {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [] [Module ๐ E] [] [] [] (r : R) (p : Seminorm ๐ E) (q : Seminorm ๐ E) :
noncomputable instance Seminorm.instSupSet {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [] [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).
Equations
• One or more equations did not get rendered due to their size.
theorem Seminorm.coe_sSup_eq' {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [] [Module ๐ E] {s : Set (Seminorm ๐ E)} (hs : BddAbove (DFunLike.coe '' s)) :
โ(sSup s) = โจ (p : โs), โโp
theorem Seminorm.bddAbove_iff {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [] [Module ๐ E] {s : Set (Seminorm ๐ E)} :
โ BddAbove (DFunLike.coe '' s)
theorem Seminorm.bddAbove_range_iff {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [] [Module ๐ E] {ฮน : Sort u_13} {p : ฮน โ Seminorm ๐ E} :
โ โ (x : E), BddAbove (Set.range fun (i : ฮน) => (p i) x)
theorem Seminorm.coe_sSup_eq {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [] [Module ๐ E] {s : Set (Seminorm ๐ E)} (hs : ) :
โ(sSup s) = โจ (p : โs), โโp
theorem Seminorm.coe_iSup_eq {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [] [Module ๐ E] {ฮน : Sort u_13} {p : ฮน โ Seminorm ๐ E} (hp : ) :
โ(โจ (i : ฮน), p i) = โจ (i : ฮน), โ(p i)
theorem Seminorm.sSup_apply {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [] [Module ๐ E] {s : Set (Seminorm ๐ E)} (hp : ) {x : E} :
(sSup s) x = โจ (p : โs), โp x
theorem Seminorm.iSup_apply {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [] [Module ๐ E] {ฮน : Sort u_13} {p : ฮน โ Seminorm ๐ E} (hp : ) {x : E} :
(โจ (i : ฮน), p i) x = โจ (i : ฮน), (p i) x
theorem Seminorm.sSup_empty {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [] [Module ๐ E] :
noncomputable instance Seminorm.instConditionallyCompleteLattice {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [] [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.

Equations
• Seminorm.instConditionallyCompleteLattice =

### Seminorm ball #

def Seminorm.ball {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [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.

Equations
• p.ball x r = {y : E | p (y - x) < r}
Instances For
def Seminorm.closedBall {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [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.

Equations
Instances For
@[simp]
theorem Seminorm.mem_ball {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] (p : Seminorm ๐ E) {x : E} {y : E} {r : โ} :
y โ p.ball x r โ p (y - x) < r
@[simp]
theorem Seminorm.mem_closedBall {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] (p : Seminorm ๐ E) {x : E} {y : E} {r : โ} :
y โ p.closedBall x r โ p (y - x) โค r
theorem Seminorm.mem_ball_self {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] (p : Seminorm ๐ E) {x : E} {r : โ} (hr : 0 < r) :
x โ p.ball x r
theorem Seminorm.mem_closedBall_self {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] (p : Seminorm ๐ E) {x : E} {r : โ} (hr : 0 โค r) :
x โ p.closedBall x r
theorem Seminorm.mem_ball_zero {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] (p : Seminorm ๐ E) {y : E} {r : โ} :
y โ p.ball 0 r โ p y < r
theorem Seminorm.mem_closedBall_zero {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] (p : Seminorm ๐ E) {y : E} {r : โ} :
y โ p.closedBall 0 r โ p y โค r
theorem Seminorm.ball_zero_eq {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] (p : Seminorm ๐ E) {r : โ} :
p.ball 0 r = {y : E | p y < r}
theorem Seminorm.closedBall_zero_eq {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] (p : Seminorm ๐ E) {r : โ} :
p.closedBall 0 r = {y : E | p y โค r}
theorem Seminorm.ball_subset_closedBall {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] (p : Seminorm ๐ E) (x : E) (r : โ) :
p.ball x r โ p.closedBall x r
theorem Seminorm.closedBall_eq_biInter_ball {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] (p : Seminorm ๐ E) (x : E) (r : โ) :
p.closedBall x r = โ (ฯ : โ), โ (_ : ฯ > r), p.ball x ฯ
@[simp]
theorem Seminorm.ball_zero' {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] {r : โ} (x : E) (hr : 0 < r) :
= Set.univ
@[simp]
theorem Seminorm.closedBall_zero' {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] {r : โ} (x : E) (hr : 0 < r) :
= Set.univ
theorem Seminorm.ball_smul {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] (p : Seminorm ๐ E) {c : NNReal} (hc : 0 < c) (r : โ) (x : E) :
(c โข p).ball x r = p.ball x (r / โc)
theorem Seminorm.closedBall_smul {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] (p : Seminorm ๐ E) {c : NNReal} (hc : 0 < c) (r : โ) (x : E) :
(c โข p).closedBall x r = p.closedBall x (r / โc)
theorem Seminorm.ball_sup {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] (p : Seminorm ๐ E) (q : Seminorm ๐ E) (e : E) (r : โ) :
(p โ q).ball e r = p.ball e r โฉ q.ball e r
theorem Seminorm.closedBall_sup {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] (p : Seminorm ๐ E) (q : Seminorm ๐ E) (e : E) (r : โ) :
(p โ q).closedBall e r = p.closedBall e r โฉ q.closedBall e r
theorem Seminorm.ball_finset_sup' {๐ : Type u_3} {E : Type u_7} {ฮน : Type u_12} [SeminormedRing ๐] [] [SMul ๐ E] (p : ฮน โ Seminorm ๐ E) (s : Finset ฮน) (H : s.Nonempty) (e : E) (r : โ) :
(s.sup' H p).ball e r = s.inf' H fun (i : ฮน) => (p i).ball e r
theorem Seminorm.closedBall_finset_sup' {๐ : Type u_3} {E : Type u_7} {ฮน : Type u_12} [SeminormedRing ๐] [] [SMul ๐ E] (p : ฮน โ Seminorm ๐ E) (s : Finset ฮน) (H : s.Nonempty) (e : E) (r : โ) :
(s.sup' H p).closedBall e r = s.inf' H fun (i : ฮน) => (p i).closedBall e r
theorem Seminorm.ball_mono {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] {x : E} {p : Seminorm ๐ E} {rโ : โ} {rโ : โ} (h : rโ โค rโ) :
p.ball x rโ โ p.ball x rโ
theorem Seminorm.closedBall_mono {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] {x : E} {p : Seminorm ๐ E} {rโ : โ} {rโ : โ} (h : rโ โค rโ) :
p.closedBall x rโ โ p.closedBall x rโ
theorem Seminorm.ball_antitone {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] {x : E} {r : โ} {p : Seminorm ๐ E} {q : Seminorm ๐ E} (h : q โค p) :
p.ball x r โ q.ball x r
theorem Seminorm.closedBall_antitone {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] {x : E} {r : โ} {p : Seminorm ๐ E} {q : Seminorm ๐ E} (h : q โค p) :
p.closedBall x r โ q.closedBall x r
theorem Seminorm.ball_add_ball_subset {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] (p : Seminorm ๐ E) (rโ : โ) (rโ : โ) (xโ : E) (xโ : E) :
p.ball xโ rโ + p.ball xโ rโ โ p.ball (xโ + xโ) (rโ + rโ)
theorem Seminorm.closedBall_add_closedBall_subset {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] (p : Seminorm ๐ E) (rโ : โ) (rโ : โ) (xโ : E) (xโ : E) :
p.closedBall xโ rโ + p.closedBall xโ rโ โ p.closedBall (xโ + xโ) (rโ + rโ)
theorem Seminorm.sub_mem_ball {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] (p : Seminorm ๐ E) (xโ : E) (xโ : E) (y : E) (r : โ) :
xโ - xโ โ p.ball y r โ xโ โ p.ball (xโ + y) r
theorem Seminorm.vadd_ball {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [SMul ๐ E] {x : E} {y : E} {r : โ} (p : Seminorm ๐ E) :
x +แตฅ p.ball y r = p.ball (x +แตฅ y) r

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 ๐] [] [SMul ๐ E] {x : E} {y : E} {r : โ} (p : Seminorm ๐ E) :
x +แตฅ p.closedBall y r = p.closedBall (x +แตฅ y) r

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 ๐] [] [Module ๐ E] [SeminormedRing ๐โ] [AddCommGroup Eโ] [Module ๐โ Eโ] {ฯโโ : ๐ โ+* ๐โ} [RingHomIsometric ฯโโ] (p : Seminorm ๐โ Eโ) (f : E โโโ[ฯโโ] Eโ) (x : E) (r : โ) :
(p.comp f).ball x r = โf โปยน' p.ball (f x) r
theorem Seminorm.closedBall_comp {๐ : Type u_3} {๐โ : Type u_4} {E : Type u_7} {Eโ : Type u_8} [SeminormedRing ๐] [] [Module ๐ E] [SeminormedRing ๐โ] [AddCommGroup Eโ] [Module ๐โ Eโ] {ฯโโ : ๐ โ+* ๐โ} [RingHomIsometric ฯโโ] (p : Seminorm ๐โ Eโ) (f : E โโโ[ฯโโ] Eโ) (x : E) (r : โ) :
(p.comp f).closedBall x r = โf โปยน' p.closedBall (f x) r
theorem Seminorm.preimage_metric_ball {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [Module ๐ E] (p : Seminorm ๐ E) {r : โ} :
โp โปยน' = {x : E | p x < r}
theorem Seminorm.preimage_metric_closedBall {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [Module ๐ E] (p : Seminorm ๐ E) {r : โ} :
โp โปยน' = {x : E | p x โค r}
theorem Seminorm.ball_zero_eq_preimage_ball {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [Module ๐ E] (p : Seminorm ๐ E) {r : โ} :
p.ball 0 r = โp โปยน'
theorem Seminorm.closedBall_zero_eq_preimage_closedBall {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [Module ๐ E] (p : Seminorm ๐ E) {r : โ} :
p.closedBall 0 r = โp โปยน'
@[simp]
theorem Seminorm.ball_bot {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [Module ๐ E] {r : โ} (x : E) (hr : 0 < r) :
โฅ.ball x r = Set.univ
@[simp]
theorem Seminorm.closedBall_bot {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [Module ๐ E] {r : โ} (x : E) (hr : 0 < r) :
โฅ.closedBall x r = Set.univ
theorem Seminorm.balanced_ball_zero {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [Module ๐ E] (p : Seminorm ๐ E) (r : โ) :
Balanced ๐ (p.ball 0 r)

Seminorm-balls at the origin are balanced.

theorem Seminorm.balanced_closedBall_zero {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [Module ๐ E] (p : Seminorm ๐ E) (r : โ) :
Balanced ๐ (p.closedBall 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 ๐] [] [Module ๐ E] (p : ฮน โ Seminorm ๐ E) (s : Finset ฮน) (x : E) {r : โ} (hr : 0 < r) :
(s.sup p).ball x r = โ i โ s, (p i).ball x r
theorem Seminorm.closedBall_finset_sup_eq_iInter {๐ : Type u_3} {E : Type u_7} {ฮน : Type u_12} [SeminormedRing ๐] [] [Module ๐ E] (p : ฮน โ Seminorm ๐ E) (s : Finset ฮน) (x : E) {r : โ} (hr : 0 โค r) :
(s.sup p).closedBall x r = โ i โ s, (p i).closedBall x r
theorem Seminorm.ball_finset_sup {๐ : Type u_3} {E : Type u_7} {ฮน : Type u_12} [SeminormedRing ๐] [] [Module ๐ E] (p : ฮน โ Seminorm ๐ E) (s : Finset ฮน) (x : E) {r : โ} (hr : 0 < r) :
(s.sup p).ball x r = s.inf fun (i : ฮน) => (p i).ball x r
theorem Seminorm.closedBall_finset_sup {๐ : Type u_3} {E : Type u_7} {ฮน : Type u_12} [SeminormedRing ๐] [] [Module ๐ E] (p : ฮน โ Seminorm ๐ E) (s : Finset ฮน) (x : E) {r : โ} (hr : 0 โค r) :
(s.sup p).closedBall x r = s.inf fun (i : ฮน) => (p i).closedBall x r
@[simp]
theorem Seminorm.ball_eq_emptyset {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [Module ๐ E] (p : Seminorm ๐ E) {x : E} {r : โ} (hr : r โค 0) :
p.ball x r = โ
@[simp]
theorem Seminorm.closedBall_eq_emptyset {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [Module ๐ E] (p : Seminorm ๐ E) {x : E} {r : โ} (hr : r < 0) :
p.closedBall x r = โ
theorem Seminorm.closedBall_smul_ball {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [Module ๐ E] (p : Seminorm ๐ E) {rโ : โ} (hrโ : rโ โ  0) (rโ : โ) :
Metric.closedBall 0 rโ โข p.ball 0 rโ โ p.ball 0 (rโ * rโ)
theorem Seminorm.ball_smul_closedBall {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [Module ๐ E] (p : Seminorm ๐ E) (rโ : โ) {rโ : โ} (hrโ : rโ โ  0) :
Metric.ball 0 rโ โข p.closedBall 0 rโ โ p.ball 0 (rโ * rโ)
theorem Seminorm.ball_smul_ball {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [Module ๐ E] (p : Seminorm ๐ E) (rโ : โ) (rโ : โ) :
Metric.ball 0 rโ โข p.ball 0 rโ โ p.ball 0 (rโ * rโ)
theorem Seminorm.closedBall_smul_closedBall {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [Module ๐ E] (p : Seminorm ๐ E) (rโ : โ) (rโ : โ) :
Metric.closedBall 0 rโ โข p.closedBall 0 rโ โ p.closedBall 0 (rโ * rโ)
theorem Seminorm.neg_mem_ball_zero {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [Module ๐ E] (p : Seminorm ๐ E) {r : โ} {x : E} :
-x โ p.ball 0 r โ x โ p.ball 0 r
@[simp]
theorem Seminorm.neg_ball {๐ : Type u_3} {E : Type u_7} [SeminormedRing ๐] [] [Module ๐ E] (p : Seminorm ๐ E) (r : โ) (x : E) :
-p.ball x r = p.ball (-x) r
theorem Seminorm.closedBall_iSup {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [] [Module ๐ E] {ฮน : Sort u_13} {p : ฮน โ Seminorm ๐ E} (hp : ) (e : E) {r : โ} (hr : 0 < r) :
(โจ (i : ฮน), p i).closedBall e r = โ (i : ฮน), (p i).closedBall e r
theorem Seminorm.ball_norm_mul_subset {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [] [Module ๐ E] {p : Seminorm ๐ E} {k : ๐} {r : โ} :
p.ball 0 ( * r) โ k โข p.ball 0 r
theorem Seminorm.smul_ball_zero {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [] [Module ๐ E] {p : Seminorm ๐ E} {k : ๐} {r : โ} (hk : k โ  0) :
k โข p.ball 0 r = p.ball 0 ( * r)
theorem Seminorm.smul_closedBall_subset {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [] [Module ๐ E] {p : Seminorm ๐ E} {k : ๐} {r : โ} :
k โข p.closedBall 0 r โ p.closedBall 0 ( * r)
theorem Seminorm.smul_closedBall_zero {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [] [Module ๐ E] {p : Seminorm ๐ E} {k : ๐} {r : โ} (hk : 0 < ) :
k โข p.closedBall 0 r = p.closedBall 0 ( * r)
theorem Seminorm.ball_zero_absorbs_ball_zero {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [] [Module ๐ E] (p : Seminorm ๐ E) {rโ : โ} {rโ : โ} (hrโ : 0 < rโ) :
Absorbs ๐ (p.ball 0 rโ) (p.ball 0 rโ)
theorem Seminorm.absorbent_ball_zero {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [] [Module ๐ E] (p : Seminorm ๐ E) {r : โ} (hr : 0 < r) :
Absorbent ๐ (p.ball 0 r)

Seminorm-balls at the origin are absorbent.

theorem Seminorm.absorbent_closedBall_zero {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [] [Module ๐ E] (p : Seminorm ๐ E) {r : โ} (hr : 0 < r) :
Absorbent ๐ (p.closedBall 0 r)

Closed seminorm-balls at the origin are absorbent.

theorem Seminorm.absorbent_ball {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [] [Module ๐ E] (p : Seminorm ๐ E) {r : โ} {x : E} (hpr : p x < r) :
Absorbent ๐ (p.ball x r)

Seminorm-balls containing the origin are absorbent.

theorem Seminorm.absorbent_closedBall {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [] [Module ๐ E] (p : Seminorm ๐ E) {r : โ} {x : E} (hpr : p x < r) :
Absorbent ๐ (p.closedBall x r)

Seminorm-balls containing the origin are absorbent.

@[simp]
theorem Seminorm.smul_ball_preimage {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [] [Module ๐ E] (p : Seminorm ๐ E) (y : E) (r : โ) (a : ๐) (ha : a โ  0) :
(fun (x : E) => a โข x) โปยน' p.ball y r = p.ball ( โข y) (r / )
theorem Seminorm.convexOn {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [] [NormedSpace โ ๐] [Module ๐ 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 ๐] [] [NormedSpace โ ๐] [Module ๐ E] [] [IsScalarTower โ ๐ E] (p : Seminorm ๐ E) (x : E) (r : โ) :
Convex โ (p.ball x r)

Seminorm-balls are convex.

theorem Seminorm.convex_closedBall {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [] [NormedSpace โ ๐] [Module ๐ E] [] [IsScalarTower โ ๐ E] (p : Seminorm ๐ E) (x : E) (r : โ) :
Convex โ (p.closedBall x r)

Closed seminorm-balls are convex.

def Seminorm.restrictScalars (๐ : Type u_3) {E : Type u_7} {๐' : Type u_13} [NormedField ๐] [SeminormedRing ๐'] [NormedAlgebra ๐ ๐'] [NormOneClass ๐'] [] [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 RCLike ๐' and ๐ = โ.

Equations
Instances For
@[simp]
theorem Seminorm.coe_restrictScalars (๐ : Type u_3) {E : Type u_7} {๐' : Type u_13} [NormedField ๐] [SeminormedRing ๐'] [NormedAlgebra ๐ ๐'] [NormOneClass ๐'] [] [Module ๐' E] [SMul ๐ E] [IsScalarTower ๐ ๐' E] (p : Seminorm ๐' E) :
โ() = โp
@[simp]
theorem Seminorm.restrictScalars_ball (๐ : Type u_3) {E : Type u_7} {๐' : Type u_13} [NormedField ๐] [SeminormedRing ๐'] [NormedAlgebra ๐ ๐'] [NormOneClass ๐'] [] [Module ๐' E] [SMul ๐ E] [IsScalarTower ๐ ๐' E] (p : Seminorm ๐' E) :
().ball = p.ball
@[simp]
theorem Seminorm.restrictScalars_closedBall (๐ : Type u_3) {E : Type u_7} {๐' : Type u_13} [NormedField ๐] [SeminormedRing ๐'] [NormedAlgebra ๐ ๐'] [NormOneClass ๐'] [] [Module ๐' E] [SMul ๐ E] [IsScalarTower ๐ ๐' E] (p : Seminorm ๐' E) :
().closedBall = p.closedBall

### Continuity criterions for seminorms #

theorem Seminorm.continuousAt_zero_of_forall' {๐ : Type u_6} {E : Type u_7} [SeminormedRing ๐] [] [Module ๐ E] [] {p : Seminorm ๐ E} (hp : โ r > 0, p.closedBall 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} [] [] [Module ๐ E] [] [ContinuousConstSMul ๐ E] {p : Seminorm ๐ E} {r : โ} (hp : p.closedBall 0 r โ nhds 0) :
ContinuousAt (โp) 0
theorem Seminorm.continuousAt_zero_of_forall {๐ : Type u_6} {E : Type u_7} [SeminormedRing ๐] [] [Module ๐ E] [] {p : Seminorm ๐ E} (hp : โ r > 0, p.ball 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} [] [] [Module ๐ E] [] [ContinuousConstSMul ๐ E] {p : Seminorm ๐ E} {r : โ} (hp : p.ball 0 r โ nhds 0) :
ContinuousAt (โp) 0
theorem Seminorm.uniformContinuous_of_continuousAt_zero {๐ : Type u_6} {E : Type u_7} [SeminormedRing ๐] [] [Module ๐ E] [] [] {p : Seminorm ๐ E} (hp : ContinuousAt (โp) 0) :
theorem Seminorm.continuous_of_continuousAt_zero {๐ : Type u_6} {E : Type u_7} [SeminormedRing ๐] [] [Module ๐ E] [] {p : Seminorm ๐ E} (hp : ContinuousAt (โp) 0) :
Continuous โp
theorem Seminorm.uniformContinuous_of_forall {๐ : Type u_6} {E : Type u_7} [SeminormedRing ๐] [] [Module ๐ E] [] [] {p : Seminorm ๐ E} (hp : โ r > 0, p.ball 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} [] [] [Module ๐ E] [] [] [ContinuousConstSMul ๐ E] {p : Seminorm ๐ E} {r : โ} (hp : p.ball 0 r โ nhds 0) :
theorem Seminorm.uniformContinuous_of_forall' {๐ : Type u_6} {E : Type u_7} [SeminormedRing ๐] [] [Module ๐ E] [] [] {p : Seminorm ๐ E} (hp : โ r > 0, p.closedBall 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} [] [] [Module ๐ E] [] [] [ContinuousConstSMul ๐ E] {p : Seminorm ๐ E} {r : โ} (hp : p.closedBall 0 r โ nhds 0) :
theorem Seminorm.continuous_of_forall {๐ : Type u_6} {E : Type u_7} [SeminormedRing ๐] [] [Module ๐ E] [] {p : Seminorm ๐ E} (hp : โ r > 0, p.ball 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} [] [] [Module ๐ E] [] [ContinuousConstSMul ๐ E] {p : Seminorm ๐ E} {r : โ} (hp : p.ball 0 r โ nhds 0) :
Continuous โp
theorem Seminorm.continuous_of_forall' {๐ : Type u_6} {E : Type u_7} [SeminormedRing ๐] [] [Module ๐ E] [] {p : Seminorm ๐ E} (hp : โ r > 0, p.closedBall 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} [] [] [Module ๐ E] [] [ContinuousConstSMul ๐ E] {p : Seminorm ๐ E} {r : โ} (hp : p.closedBall 0 r โ nhds 0) :
Continuous โp
theorem Seminorm.continuous_of_le {๐ : Type u_6} {E : Type u_7} [SeminormedRing ๐] [] [Module ๐ 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 ๐] [] [Module ๐ E] [] {p : Seminorm ๐ E} (hp : Continuous โp) {r : โ} (hr : 0 < r) :
p.ball 0 r โ nhds 0
theorem Seminorm.uniformSpace_eq_of_hasBasis {๐ : Type u_3} {E : Type u_7} [] [] [Module ๐ E] {ฮน : Sort u_13} [] [] [ContinuousConstSMul ๐ E] {p' : ฮน โ Prop} {s : ฮน โ Set E} (p : Seminorm ๐ E) (hb : (nhds 0).HasBasis p' s) (hโ : โ (r : โ), p.closedBall 0 r โ nhds 0) (hโ : โ (i : ฮน), p' i โ โ r > 0, p.ball 0 r โ s i) :
instโยฒ = PseudoMetricSpace.toUniformSpace
theorem Seminorm.uniformity_eq_of_hasBasis {๐ : Type u_3} {E : Type u_7} [] [] [Module ๐ E] {ฮน : Sort u_13} [] [] [ContinuousConstSMul ๐ E] {p' : ฮน โ Prop} {s : ฮน โ Set E} (p : Seminorm ๐ E) (hb : (nhds 0).HasBasis p' s) (hโ : โ (r : โ), p.closedBall 0 r โ nhds 0) (hโ : โ (i : ฮน), p' i โ โ r > 0, p.ball 0 r โ s i) :
= โจ (r : โ), โจ (_ : r > 0), Filter.principal {x : E ร E | p (x.1 - x.2) < r}
theorem Seminorm.rescale_to_shell_zpow {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [] [Module ๐ E] (p : Seminorm ๐ E) {c : ๐} (hc : 1 < ) {ฮต : โ} (ฮตpos : 0 < ฮต) {x : E} (hx : p x โ  0) :
โ (n : โค), c ^ n โ  0 โง p (c ^ n โข x) < ฮต โง ฮต / โค p (c ^ n โข x) โง โc ^ nโโปยน โค ฮตโปยน * * 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 ๐] [] [Module ๐ E] (p : Seminorm ๐ E) {c : ๐} (hc : 1 < ) {ฮต : โ} (ฮตpos : 0 < ฮต) {x : E} (hx : p x โ  0) :
โ (d : ๐), d โ  0 โง p (d โข x) < ฮต โง ฮต / โค p (d โข x) โง โค ฮตโปยน * * 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 ๐] [] [Module ๐ E] (p : Seminorm ๐ E) (q : Seminorm ๐ E) {ฮต : โ} {C : โ} (ฮต_pos : 0 < ฮต) {c : ๐} (hc : 1 < ) (hf : โ (x : E), ฮต / โค 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 NontriviallyNormedField. 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 ๐] [] [Module ๐ E] (p : Seminorm ๐ E) (q : Seminorm ๐ E) {ฮต : โ} {C : NNReal} (ฮต_pos : 0 < ฮต) {c : ๐} (hc : 1 < ) (hf : โ (x : E), ฮต / โค 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 ๐] [] [Module ๐ E] (p : ฮน โ Seminorm ๐ E) (s : Finset ฮน) (q : Seminorm ๐ E) {ฮต : โ} {C : NNReal} (ฮต_pos : 0 < ฮต) {c : ๐} (hc : 1 < ) (hf : โ (x : E), (โ i โ s, (p i) x < ฮต) โ โ j โ s, ฮต / โค (p j) x โ q x โค (C โข p j) x) {x : E} (hx : โ j โ s, (p j) x โ  0) :
q x โค (C โข s.sup p) x
theorem Seminorm.bddAbove_of_absorbent {๐ : Type u_3} {E : Type u_7} [] [] [Module ๐ E] {ฮน : Sort u_13} {p : ฮน โ Seminorm ๐ E} {s : Set E} (hs : Absorbent ๐ s) (h : โ x โ s, BddAbove (Set.range fun (x_1 : ฮน) => (p x_1) x)) :

Let p i be a family of seminorms on E. Let s be an absorbent set in ๐. If all seminorms are uniformly bounded at every point of s, then they are bounded in the space of seminorms.

### The norm as a seminorm #

def normSeminorm (๐ : Type u_3) (E : Type u_7) [NormedField ๐] [NormedSpace ๐ E] :
Seminorm ๐ E

The norm of a seminormed group as a seminorm.

Equations
• normSeminorm ๐ E = let __src := ; { toAddGroupSeminorm := __src, smul' := โฏ }
Instances For
@[simp]
theorem coe_normSeminorm (๐ : Type u_3) (E : Type u_7) [NormedField ๐] [NormedSpace ๐ E] :
โ(normSeminorm ๐ E) = norm
@[simp]
theorem ball_normSeminorm (๐ : Type u_3) (E : Type u_7) [NormedField ๐] [NormedSpace ๐ E] :
(normSeminorm ๐ E).ball = Metric.ball
theorem absorbent_ball_zero {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [NormedSpace ๐ E] {r : โ} (hr : 0 < r) :
Absorbent ๐ ()

Balls at the origin are absorbent.

theorem absorbent_ball {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [NormedSpace ๐ E] {r : โ} {x : E} (hx : < r) :
Absorbent ๐ ()

Balls containing the origin are absorbent.

theorem balanced_ball_zero {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [NormedSpace ๐ E] {r : โ} :
Balanced ๐ ()

Balls at the origin are balanced.

theorem rescale_to_shell_semi_normed_zpow {๐ : Type u_3} {E : Type u_7} [NormedField ๐] [NormedSpace ๐ E] {c : ๐} (hc : 1 < ) {ฮต : โ} (ฮตpos : 0 < ฮต) {x : E} (hx : โ  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 ๐] [NormedSpace ๐ E] {c : ๐} (hc : 1 < ) {ฮต : โ} (ฮตpos : 0 < ฮต) {x : E} (hx : โ  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 ๐] [NormedSpace ๐ F] {c : ๐} (hc : 1 < ) {ฮต : โ} (ฮตpos : 0 < ฮต) {x : F} (hx : x โ  0) :
theorem rescale_to_shell {๐ : Type u_3} {F : Type u_10} [NormedField ๐] [NormedSpace ๐ F] {c : ๐} (hc : 1 < ) {ฮต : โ} (ฮต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.