Group seminorms #
This file defines norms and seminorms in a group. A group seminorm is a function to the reals which is positive-semidefinite and subadditive. A norm further only maps zero to zero.
Main declarations #
AddGroupSeminorm
: A functionf
from an additive groupG
to the reals that preserves zero, takes nonnegative values, is subadditive and such thatf (-x) = f x
for allx
.NonarchAddGroupSeminorm
: A functionf
from an additive groupG
to the reals that preserves zero, takes nonnegative values, is nonarchimedean and such thatf (-x) = f x
for allx
.GroupSeminorm
: A functionf
from a groupG
to the reals that sends one to zero, takes nonnegative values, is submultiplicative and such thatf x⁻¹ = f x
for allx
.AddGroupNorm
: A seminormf
such thatf x = 0 → x = 0
for allx
.NonarchAddGroupNorm
: A nonarchimedean seminormf
such thatf x = 0 → x = 0
for allx
.GroupNorm
: A seminormf
such thatf x = 0 → x = 1
for allx
.
Notes #
The corresponding hom classes are defined in Analysis.Order.Hom.Basic
to be used by absolute
values.
We do not define NonarchAddGroupSeminorm
as an extension of AddGroupSeminorm
to avoid
having a superfluous add_le'
field in the resulting structure. The same applies to
NonarchAddGroupNorm
.
References #
Tags #
norm, seminorm
A seminorm on an additive group G
is a function f : G → ℝ
that preserves zero, is
subadditive and such that f (-x) = f x
for all x
.
- toFun : G → ℝ
The bare function of an
AddGroupSeminorm
. - map_zero' : self.toFun 0 = 0
The image of zero is zero.
The seminorm is subadditive.
The seminorm is invariant under negation.
Instances For
A seminorm on a group G
is a function f : G → ℝ
that sends one to zero, is submultiplicative
and such that f x⁻¹ = f x
for all x
.
- toFun : G → ℝ
The bare function of a
GroupSeminorm
. - map_one' : self.toFun 1 = 0
The image of one is zero.
The seminorm applied to a product is dominated by the sum of the seminorm applied to the factors.
The seminorm is invariant under inversion.
Instances For
A nonarchimedean seminorm on an additive group G
is a function f : G → ℝ
that preserves
zero, is nonarchimedean and such that f (-x) = f x
for all x
.
The seminorm applied to a sum is dominated by the maximum of the function applied to the addends.
The seminorm is invariant under negation.
Instances For
NOTE: We do not define NonarchAddGroupSeminorm
as an extension of AddGroupSeminorm
to avoid having a superfluous add_le'
field in the resulting structure. The same applies to
NonarchAddGroupNorm
below.
A norm on an additive group G
is a function f : G → ℝ
that preserves zero, is subadditive
and such that f (-x) = f x
and f x = 0 → x = 0
for all x
.
If the image under the seminorm is zero, then the argument is zero.
Instances For
A seminorm on a group G
is a function f : G → ℝ
that sends one to zero, is submultiplicative
and such that f x⁻¹ = f x
and f x = 0 → x = 1
for all x
.
If the image under the norm is zero, then the argument is one.
Instances For
A nonarchimedean norm on an additive group G
is a function f : G → ℝ
that preserves zero, is
nonarchimedean and such that f (-x) = f x
and f x = 0 → x = 0
for all x
.
- add_le_max' : ∀ (r s : G), self.toFun (r + s) ≤ self.toFun r ⊔ self.toFun s
If the image under the norm is zero, then the argument is zero.
Instances For
NonarchAddGroupSeminormClass F α
states that F
is a type of nonarchimedean seminorms on
the additive group α
.
You should extend this class when you extend NonarchAddGroupSeminorm
.
- map_add_le_max : ∀ (f : F) (a b : α), f (a + b) ≤ f a ⊔ f b
- map_zero : ∀ (f : F), f 0 = 0
The image of zero is zero.
The seminorm is invariant under negation.
Instances
NonarchAddGroupNormClass F α
states that F
is a type of nonarchimedean norms on the
additive group α
.
You should extend this class when you extend NonarchAddGroupNorm
.
- map_add_le_max : ∀ (f : F) (a b : α), f (a + b) ≤ f a ⊔ f b
- map_neg_eq_map' : ∀ (f : F) (a : α), f (-a) = f a
If the image under the norm is zero, then the argument is zero.
Instances
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Seminorms #
Equations
- GroupSeminorm.funLike = { coe := fun (f : GroupSeminorm E) => f.toFun, coe_injective' := ⋯ }
Equations
- AddGroupSeminorm.funLike = { coe := fun (f : AddGroupSeminorm E) => f.toFun, coe_injective' := ⋯ }
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- GroupSeminorm.instPartialOrder = PartialOrder.lift (fun (f : GroupSeminorm E) => ⇑f) ⋯
Equations
- AddGroupSeminorm.instPartialOrder = PartialOrder.lift (fun (f : AddGroupSeminorm E) => ⇑f) ⋯
Equations
- GroupSeminorm.instZeroGroupSeminorm = { zero := { toFun := 0, map_one' := ⋯, mul_le' := ⋯, inv' := ⋯ } }
Equations
- AddGroupSeminorm.instZeroAddGroupSeminorm = { zero := { toFun := 0, map_zero' := ⋯, add_le' := ⋯, neg' := ⋯ } }
Equations
- GroupSeminorm.instInhabited = { default := 0 }
Equations
- AddGroupSeminorm.instInhabited = { default := 0 }
Equations
- GroupSeminorm.instAdd = { add := fun (p q : GroupSeminorm E) => { toFun := fun (x : E) => p x + q x, map_one' := ⋯, mul_le' := ⋯, inv' := ⋯ } }
Equations
- AddGroupSeminorm.instAdd = { add := fun (p q : AddGroupSeminorm E) => { toFun := fun (x : E) => p x + q x, map_zero' := ⋯, add_le' := ⋯, neg' := ⋯ } }
Equations
- GroupSeminorm.instMax = { max := fun (p q : GroupSeminorm E) => { toFun := ⇑p ⊔ ⇑q, map_one' := ⋯, mul_le' := ⋯, inv' := ⋯ } }
Equations
- AddGroupSeminorm.instMax = { max := fun (p q : AddGroupSeminorm E) => { toFun := ⇑p ⊔ ⇑q, map_zero' := ⋯, add_le' := ⋯, neg' := ⋯ } }
Equations
- GroupSeminorm.semilatticeSup = Function.Injective.semilatticeSup (fun (f : GroupSeminorm E) => ⇑f) ⋯ ⋯
Equations
- AddGroupSeminorm.semilatticeSup = Function.Injective.semilatticeSup (fun (f : AddGroupSeminorm E) => ⇑f) ⋯ ⋯
Composition of a group seminorm with a monoid homomorphism as a group seminorm.
Equations
- p.comp f = { toFun := fun (x : F) => p (f x), map_one' := ⋯, mul_le' := ⋯, inv' := ⋯ }
Instances For
Composition of an additive group seminorm with an additive monoid homomorphism as an additive group seminorm.
Equations
- p.comp f = { toFun := fun (x : F) => p (f x), map_zero' := ⋯, add_le' := ⋯, neg' := ⋯ }
Instances For
Equations
- GroupSeminorm.instMin = { min := fun (p q : GroupSeminorm E) => { toFun := fun (x : E) => ⨅ (y : E), p y + q (x / y), map_one' := ⋯, mul_le' := ⋯, inv' := ⋯ } }
Equations
- AddGroupSeminorm.instMin = { min := fun (p q : AddGroupSeminorm E) => { toFun := fun (x : E) => ⨅ (y : E), p y + q (x - y), map_zero' := ⋯, add_le' := ⋯, neg' := ⋯ } }
Equations
- GroupSeminorm.instLattice = Lattice.mk (fun (x1 x2 : GroupSeminorm E) => x1 ⊓ x2) ⋯ ⋯ ⋯
Equations
- AddGroupSeminorm.instLattice = Lattice.mk (fun (x1 x2 : AddGroupSeminorm E) => x1 ⊓ x2) ⋯ ⋯ ⋯
Any action on ℝ
which factors through ℝ≥0
applies to an AddGroupSeminorm
.
Equations
- AddGroupSeminorm.toSMul = { smul := fun (r : R) (p : AddGroupSeminorm E) => { toFun := fun (x : E) => r • p x, map_zero' := ⋯, add_le' := ⋯, neg' := ⋯ } }
Equations
- ⋯ = ⋯
Equations
- NonarchAddGroupSeminorm.funLike = { coe := fun (f : NonarchAddGroupSeminorm E) => f.toFun, coe_injective' := ⋯ }
Equations
- ⋯ = ⋯
Equations
- NonarchAddGroupSeminorm.instPartialOrder = PartialOrder.lift (fun (f : NonarchAddGroupSeminorm E) => ⇑f) ⋯
Equations
- NonarchAddGroupSeminorm.instZero = { zero := { toFun := 0, map_zero' := ⋯, add_le_max' := ⋯, neg' := ⋯ } }
Equations
- NonarchAddGroupSeminorm.instInhabited = { default := 0 }
Equations
- NonarchAddGroupSeminorm.instMax = { max := fun (p q : NonarchAddGroupSeminorm E) => { toFun := ⇑p ⊔ ⇑q, map_zero' := ⋯, add_le_max' := ⋯, neg' := ⋯ } }
Equations
- NonarchAddGroupSeminorm.instSemilatticeSup = Function.Injective.semilatticeSup (fun (f : NonarchAddGroupSeminorm E) => ⇑f) ⋯ ⋯
Any action on ℝ
which factors through ℝ≥0
applies to an AddGroupSeminorm
.
Equations
- GroupSeminorm.instSMul = { smul := fun (r : R) (p : GroupSeminorm E) => { toFun := fun (x : E) => r • p x, map_one' := ⋯, mul_le' := ⋯, inv' := ⋯ } }
Equations
- ⋯ = ⋯
Any action on ℝ
which factors through ℝ≥0
applies to a NonarchAddGroupSeminorm
.
Equations
- NonarchAddGroupSeminorm.instSMul = { smul := fun (r : R) (p : NonarchAddGroupSeminorm E) => { toFun := fun (x : E) => r • p x, map_zero' := ⋯, add_le_max' := ⋯, neg' := ⋯ } }
Equations
- ⋯ = ⋯
Norms #
Equations
- AddGroupNorm.funLike = { coe := fun (f : AddGroupNorm E) => f.toFun, coe_injective' := ⋯ }
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- GroupNorm.instPartialOrder = PartialOrder.lift (fun (f : GroupNorm E) => ⇑f) ⋯
Equations
- AddGroupNorm.instPartialOrder = PartialOrder.lift (fun (f : AddGroupNorm E) => ⇑f) ⋯
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- GroupNorm.instSemilatticeSup = Function.Injective.semilatticeSup (fun (f : GroupNorm E) => ⇑f) ⋯ ⋯
Equations
- AddGroupNorm.instSemilatticeSup = Function.Injective.semilatticeSup (fun (f : AddGroupNorm E) => ⇑f) ⋯ ⋯
Equations
- AddGroupNorm.instOne = { one := let __src := 1; { toAddGroupSeminorm := __src, eq_zero_of_map_eq_zero' := ⋯ } }
Equations
- AddGroupNorm.instInhabited = { default := 1 }
Equations
- AddGroupNorm.toOne = { one := let __src := 1; { toAddGroupSeminorm := __src, eq_zero_of_map_eq_zero' := ⋯ } }
Equations
- GroupNorm.toOne = { one := let __src := 1; { toGroupSeminorm := __src, eq_one_of_map_eq_zero' := ⋯ } }
Equations
- GroupNorm.instInhabited = { default := 1 }
Equations
- NonarchAddGroupNorm.funLike = { coe := fun (f : NonarchAddGroupNorm E) => f.toFun, coe_injective' := ⋯ }
Equations
- ⋯ = ⋯
Equations
- NonarchAddGroupNorm.instPartialOrder = PartialOrder.lift (fun (f : NonarchAddGroupNorm E) => ⇑f) ⋯
Equations
- One or more equations did not get rendered due to their size.
Equations
- NonarchAddGroupNorm.instSemilatticeSup = Function.Injective.semilatticeSup (fun (f : NonarchAddGroupNorm E) => ⇑f) ⋯ ⋯
Equations
- NonarchAddGroupNorm.instOneOfDecidableEq = { one := let __src := 1; { toNonarchAddGroupSeminorm := __src, eq_zero_of_map_eq_zero' := ⋯ } }
Equations
- NonarchAddGroupNorm.instInhabitedOfDecidableEq = { default := 1 }