Group seminorms #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
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 #
add_group_seminorm
: 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
.nonarch_add_group_seminorm
: 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
.group_seminorm
: 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
.add_group_norm
: A seminormf
such thatf x = 0 → x = 0
for allx
.nonarch_add_group_norm
: A nonarchimedean seminormf
such thatf x = 0 → x = 0
for allx
.group_norm
: 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 nonarch_add_group_seminorm
as an extension of add_group_seminorm
to avoid
having a superfluous add_le'
field in the resulting structure. The same applies to
nonarch_add_group_norm
.
References #
Tags #
norm, seminorm
- to_fun : G → ℝ
- map_zero' : self.to_fun 0 = 0
- add_le' : ∀ (r s : G), self.to_fun (r + s) ≤ self.to_fun r + self.to_fun s
- neg' : ∀ (r : G), self.to_fun (-r) = self.to_fun r
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
.
Instances for add_group_seminorm
- add_group_seminorm.has_sizeof_inst
- add_group_seminorm.add_group_seminorm_class
- add_group_seminorm.has_coe_to_fun
- add_group_seminorm.partial_order
- add_group_seminorm.has_zero
- add_group_seminorm.inhabited
- add_group_seminorm.has_add
- add_group_seminorm.has_sup
- add_group_seminorm.semilattice_sup
- add_group_seminorm.has_inf
- add_group_seminorm.lattice
- add_group_seminorm.has_one
- add_group_seminorm.has_smul
- add_group_seminorm.is_scalar_tower
- to_fun : G → ℝ
- map_one' : self.to_fun 1 = 0
- mul_le' : ∀ (x y : G), self.to_fun (x * y) ≤ self.to_fun x + self.to_fun y
- inv' : ∀ (x : G), self.to_fun x⁻¹ = self.to_fun x
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
.
Instances for group_seminorm
- group_seminorm.has_sizeof_inst
- group_seminorm.group_seminorm_class
- group_seminorm.has_coe_to_fun
- group_seminorm.partial_order
- group_seminorm.has_zero
- group_seminorm.inhabited
- group_seminorm.has_add
- group_seminorm.has_sup
- group_seminorm.semilattice_sup
- group_seminorm.has_inf
- group_seminorm.lattice
- group_seminorm.has_one
- group_seminorm.has_smul
- group_seminorm.is_scalar_tower
- to_fun : G → ℝ
- map_zero' : self.to_fun 0 = 0
- add_le_max' : ∀ (r s : G), self.to_fun (r + s) ≤ linear_order.max (self.to_fun r) (self.to_fun s)
- neg' : ∀ (r : G), self.to_fun (-r) = self.to_fun r
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
.
Instances for nonarch_add_group_seminorm
- nonarch_add_group_seminorm.has_sizeof_inst
- nonarch_add_group_seminorm.nonarch_add_group_seminorm_class
- nonarch_add_group_seminorm.has_coe_to_fun
- nonarch_add_group_seminorm.partial_order
- nonarch_add_group_seminorm.has_zero
- nonarch_add_group_seminorm.inhabited
- nonarch_add_group_seminorm.has_sup
- nonarch_add_group_seminorm.semilattice_sup
- nonarch_add_group_seminorm.has_one
- nonarch_add_group_seminorm.has_smul
- nonarch_add_group_seminorm.is_scalar_tower
NOTE: We do not define nonarch_add_group_seminorm
as an extension of add_group_seminorm
to avoid having a superfluous add_le'
field in the resulting structure. The same applies to
nonarch_add_group_norm
below.
- to_fun : G → ℝ
- map_zero' : self.to_fun 0 = 0
- add_le' : ∀ (r s : G), self.to_fun (r + s) ≤ self.to_fun r + self.to_fun s
- neg' : ∀ (r : G), self.to_fun (-r) = self.to_fun r
- eq_zero_of_map_eq_zero' : ∀ (x : G), self.to_fun x = 0 → x = 0
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
.
Instances for add_group_norm
- to_fun : G → ℝ
- map_one' : self.to_fun 1 = 0
- mul_le' : ∀ (x y : G), self.to_fun (x * y) ≤ self.to_fun x + self.to_fun y
- inv' : ∀ (x : G), self.to_fun x⁻¹ = self.to_fun x
- eq_one_of_map_eq_zero' : ∀ (x : G), self.to_fun x = 0 → x = 1
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
.
Instances for group_norm
- to_fun : G → ℝ
- map_zero' : self.to_fun 0 = 0
- add_le_max' : ∀ (r s : G), self.to_fun (r + s) ≤ linear_order.max (self.to_fun r) (self.to_fun s)
- neg' : ∀ (r : G), self.to_fun (-r) = self.to_fun r
- eq_zero_of_map_eq_zero' : ∀ (x : G), self.to_fun x = 0 → x = 0
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
.
Instances for nonarch_add_group_norm
- coe : F → Π (a : α), (λ (_x : α), ℝ) a
- coe_injective' : function.injective nonarch_add_group_seminorm_class.coe
- map_add_le_max : ∀ (f : F) (a b : α), ⇑f (a + b) ≤ linear_order.max (⇑f a) (⇑f b)
- map_zero : ∀ (f : F), ⇑f 0 = 0
- map_neg_eq_map' : ∀ (f : F) (a : α), ⇑f (-a) = ⇑f a
nonarch_add_group_seminorm_class F α
states that F
is a type of nonarchimedean seminorms on
the additive group α
.
You should extend this class when you extend nonarch_add_group_seminorm
.
Instances of this typeclass
Instances of other typeclasses for nonarch_add_group_seminorm_class
- nonarch_add_group_seminorm_class.has_sizeof_inst
- coe : F → Π (a : α), (λ (_x : α), ℝ) a
- coe_injective' : function.injective nonarch_add_group_norm_class.coe
- map_add_le_max : ∀ (f : F) (a b : α), ⇑f (a + b) ≤ linear_order.max (⇑f a) (⇑f b)
- map_zero : ∀ (f : F), ⇑f 0 = 0
- map_neg_eq_map' : ∀ (f : F) (a : α), ⇑f (-a) = ⇑f a
- eq_zero_of_map_eq_zero : ∀ (f : F) {a : α}, ⇑f a = 0 → a = 0
nonarch_add_group_norm_class F α
states that F
is a type of nonarchimedean norms on the
additive group α
.
You should extend this class when you extend nonarch_add_group_norm
.
Instances of this typeclass
Instances of other typeclasses for nonarch_add_group_norm_class
- nonarch_add_group_norm_class.has_sizeof_inst
Equations
- nonarch_add_group_seminorm_class.to_add_group_seminorm_class = {coe := nonarch_add_group_seminorm_class.coe _inst_2, coe_injective' := _, map_add_le_add := _, map_zero := _, map_neg_eq_map := _}
Equations
- nonarch_add_group_norm_class.to_add_group_norm_class = {coe := nonarch_add_group_norm_class.coe _inst_2, coe_injective' := _, map_add_le_add := _, map_zero := _, map_neg_eq_map := _, eq_zero_of_map_eq_zero := _}
Seminorms #
Equations
- group_seminorm.group_seminorm_class = {coe := λ (f : group_seminorm E), f.to_fun, coe_injective' := _, map_mul_le_add := _, map_one_eq_zero := _, map_inv_eq_map := _}
Equations
- add_group_seminorm.add_group_seminorm_class = {coe := λ (f : add_group_seminorm E), f.to_fun, coe_injective' := _, map_add_le_add := _, map_zero := _, map_neg_eq_map := _}
Helper instance for when there's too many metavariables to apply
fun_like.has_coe_to_fun
.
Equations
Helper instance for when there's too many metavariables to apply fun_like.has_coe_to_fun
.
Equations
- group_seminorm.has_coe_to_fun = {coe := group_seminorm.to_fun _inst_1}
Equations
- add_group_seminorm.partial_order = partial_order.lift coe_fn add_group_seminorm.partial_order._proof_1
Equations
- group_seminorm.partial_order = partial_order.lift coe_fn group_seminorm.partial_order._proof_1
Equations
Equations
Equations
- group_seminorm.semilattice_sup = function.injective.semilattice_sup coe_fn group_seminorm.semilattice_sup._proof_1 group_seminorm.coe_sup
Equations
- add_group_seminorm.semilattice_sup = function.injective.semilattice_sup coe_fn add_group_seminorm.semilattice_sup._proof_1 add_group_seminorm.coe_sup
Composition of an additive group seminorm with an additive monoid homomorphism as an additive group seminorm.
Composition of a group seminorm with a monoid homomorphism as a group seminorm.
Equations
- group_seminorm.lattice = {sup := semilattice_sup.sup group_seminorm.semilattice_sup, le := semilattice_sup.le group_seminorm.semilattice_sup, lt := semilattice_sup.lt group_seminorm.semilattice_sup, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_sup_left := _, le_sup_right := _, sup_le := _, inf := has_inf.inf group_seminorm.has_inf, inf_le_left := _, inf_le_right := _, le_inf := _}
Equations
- add_group_seminorm.lattice = {sup := semilattice_sup.sup add_group_seminorm.semilattice_sup, le := semilattice_sup.le add_group_seminorm.semilattice_sup, lt := semilattice_sup.lt add_group_seminorm.semilattice_sup, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_sup_left := _, le_sup_right := _, sup_le := _, inf := has_inf.inf add_group_seminorm.has_inf, inf_le_left := _, inf_le_right := _, le_inf := _}
Any action on ℝ
which factors through ℝ≥0
applies to an add_group_seminorm
.
Equations
- nonarch_add_group_seminorm.nonarch_add_group_seminorm_class = {coe := λ (f : nonarch_add_group_seminorm E), f.to_fun, coe_injective' := _, map_add_le_max := _, map_zero := _, map_neg_eq_map' := _}
Helper instance for when there's too many metavariables to apply fun_like.has_coe_to_fun
.
Equations
Equations
- nonarch_add_group_seminorm.partial_order = partial_order.lift coe_fn nonarch_add_group_seminorm.partial_order._proof_1
Equations
- nonarch_add_group_seminorm.has_zero = {zero := {to_fun := 0, map_zero' := _, add_le_max' := _, neg' := _}}
Equations
Equations
- nonarch_add_group_seminorm.has_sup = {sup := λ (p q : nonarch_add_group_seminorm E), {to_fun := ⇑p ⊔ ⇑q, map_zero' := _, add_le_max' := _, neg' := _}}
Equations
- nonarch_add_group_seminorm.semilattice_sup = function.injective.semilattice_sup coe_fn nonarch_add_group_seminorm.semilattice_sup._proof_1 nonarch_add_group_seminorm.coe_sup
Any action on ℝ
which factors through ℝ≥0
applies to an add_group_seminorm
.
Any action on ℝ
which factors through ℝ≥0
applies to a nonarch_add_group_seminorm
.
Equations
- nonarch_add_group_seminorm.has_smul = {smul := λ (r : R) (p : nonarch_add_group_seminorm E), {to_fun := λ (x : E), r • ⇑p x, map_zero' := _, add_le_max' := _, neg' := _}}
Norms #
Equations
- group_norm.group_norm_class = {coe := λ (f : group_norm E), f.to_fun, coe_injective' := _, map_mul_le_add := _, map_one_eq_zero := _, map_inv_eq_map := _, eq_one_of_map_eq_zero := _}
Equations
- add_group_norm.add_group_norm_class = {coe := λ (f : add_group_norm E), f.to_fun, coe_injective' := _, map_add_le_add := _, map_zero := _, map_neg_eq_map := _, eq_zero_of_map_eq_zero := _}
Helper instance for when there's too many metavariables to apply fun_like.has_coe_to_fun
directly.
Helper instance for when there's too many metavariables to apply
fun_like.has_coe_to_fun
directly.
Equations
- add_group_norm.partial_order = partial_order.lift coe_fn add_group_norm.partial_order._proof_1
Equations
- group_norm.partial_order = partial_order.lift coe_fn group_norm.partial_order._proof_1
Equations
- group_norm.has_add = {add := λ (p q : group_norm E), {to_fun := (p.to_group_seminorm + q.to_group_seminorm).to_fun, map_one' := _, mul_le' := _, inv' := _, eq_one_of_map_eq_zero' := _}}
Equations
- add_group_norm.has_add = {add := λ (p q : add_group_norm E), {to_fun := (p.to_add_group_seminorm + q.to_add_group_seminorm).to_fun, map_zero' := _, add_le' := _, neg' := _, eq_zero_of_map_eq_zero' := _}}
Equations
- add_group_norm.has_sup = {sup := λ (p q : add_group_norm E), {to_fun := (p.to_add_group_seminorm ⊔ q.to_add_group_seminorm).to_fun, map_zero' := _, add_le' := _, neg' := _, eq_zero_of_map_eq_zero' := _}}
Equations
- group_norm.has_sup = {sup := λ (p q : group_norm E), {to_fun := (p.to_group_seminorm ⊔ q.to_group_seminorm).to_fun, map_one' := _, mul_le' := _, inv' := _, eq_one_of_map_eq_zero' := _}}
Equations
- add_group_norm.semilattice_sup = function.injective.semilattice_sup coe_fn add_group_norm.semilattice_sup._proof_1 add_group_norm.coe_sup
Equations
- group_norm.semilattice_sup = function.injective.semilattice_sup coe_fn group_norm.semilattice_sup._proof_1 group_norm.coe_sup
Equations
Equations
- group_norm.inhabited = {default := 1}
Equations
- nonarch_add_group_norm.nonarch_add_group_norm_class = {coe := λ (f : nonarch_add_group_norm E), f.to_fun, coe_injective' := _, map_add_le_max := _, map_zero := _, map_neg_eq_map' := _, eq_zero_of_map_eq_zero := _}
Helper instance for when there's too many metavariables to apply fun_like.has_coe_to_fun
.
Equations
- nonarch_add_group_norm.partial_order = partial_order.lift coe_fn nonarch_add_group_norm.partial_order._proof_1
Equations
- nonarch_add_group_norm.has_sup = {sup := λ (p q : nonarch_add_group_norm E), {to_fun := (p.to_nonarch_add_group_seminorm ⊔ q.to_nonarch_add_group_seminorm).to_fun, map_zero' := _, add_le_max' := _, neg' := _, eq_zero_of_map_eq_zero' := _}}
Equations
- nonarch_add_group_norm.semilattice_sup = function.injective.semilattice_sup coe_fn nonarch_add_group_norm.semilattice_sup._proof_1 nonarch_add_group_norm.coe_sup
Equations
- nonarch_add_group_norm.has_one = {one := {to_fun := 1.to_fun, map_zero' := _, add_le_max' := _, neg' := _, eq_zero_of_map_eq_zero' := _}}