Documentation

Mathlib.Analysis.Normed.Group.Seminorm

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 #

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

structure AddGroupSeminorm (G : Type u_7) [AddGroup G] :
Type u_7

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
    structure GroupSeminorm (G : Type u_7) [Group G] :
    Type u_7

    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
      structure NonarchAddGroupSeminorm (G : Type u_7) [AddGroup G] extends ZeroHom :
      Type u_7

      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

        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.

        structure AddGroupNorm (G : Type u_7) [AddGroup G] extends AddGroupSeminorm :
        Type u_7

        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
          structure GroupNorm (G : Type u_7) [Group G] extends GroupSeminorm :
          Type u_7

          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
            structure NonarchAddGroupNorm (G : Type u_7) [AddGroup G] extends NonarchAddGroupSeminorm :
            Type u_7

            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
              class NonarchAddGroupSeminormClass (F : Type u_7) (α : outParam (Type u_8)) [AddGroup α] extends NonarchimedeanHomClass :
              Type (max u_7 u_8)
              • coe : Fα
              • coe_injective' : Function.Injective FunLike.coe
              • map_add_le_max : ∀ (f : F) (a b : α), f (a + b) max (f a) (f b)
              • map_zero : ∀ (f : F), f 0 = 0

                The image of zero is zero.

              • map_neg_eq_map' : ∀ (f : F) (a : α), f (-a) = f a

                The seminorm is invariant under negation.

              NonarchAddGroupSeminormClass F α states that F is a type of nonarchimedean seminorms on the additive group α.

              You should extend this class when you extend NonarchAddGroupSeminorm.

              Instances
                class NonarchAddGroupNormClass (F : Type u_7) (α : outParam (Type u_8)) [AddGroup α] extends NonarchAddGroupSeminormClass :
                Type (max u_7 u_8)
                • coe : Fα
                • coe_injective' : Function.Injective FunLike.coe
                • map_add_le_max : ∀ (f : F) (a b : α), f (a + b) 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 = 0a = 0

                  If the image under the norm is zero, then the argument is zero.

                NonarchAddGroupNormClass F α states that F is a type of nonarchimedean norms on the additive group α.

                You should extend this class when you extend NonarchAddGroupNorm.

                Instances
                  theorem map_sub_le_max {E : Type u_4} {F : Type u_5} [AddGroup E] [NonarchAddGroupSeminormClass F E] (f : F) (x : E) (y : E) :
                  f (x - y) max (f x) (f y)
                  Equations
                  • NonarchAddGroupSeminormClass.toAddGroupSeminormClass = let src := inst; AddGroupSeminormClass.mk (_ : ∀ (f : F), f 0 = 0) (_ : ∀ (f : F) (a : E), f (-a) = f a)
                  Equations
                  • NonarchAddGroupNormClass.toAddGroupNormClass = let src := inst; AddGroupNormClass.mk (_ : ∀ (f : F) {a : E}, f a = 0a = 0)

                  Seminorms #

                  Equations
                  • One or more equations did not get rendered due to their size.
                  theorem AddGroupSeminorm.addGroupSeminormClass.proof_1 {E : Type u_1} [AddGroup E] (f : AddGroupSeminorm E) (g : AddGroupSeminorm E) (h : (fun f => f.toFun) f = (fun f => f.toFun) g) :
                  f = g
                  Equations
                  • One or more equations did not get rendered due to their size.

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

                  Equations
                  • AddGroupSeminorm.instCoeFunAddGroupSeminormForAllReal = { coe := FunLike.coe }

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

                  Equations
                  • GroupSeminorm.instCoeFunGroupSeminormForAllReal = { coe := FunLike.coe }
                  @[simp]
                  theorem AddGroupSeminorm.toFun_eq_coe {E : Type u_4} [AddGroup E] {p : AddGroupSeminorm E} :
                  p.toFun = p
                  @[simp]
                  theorem GroupSeminorm.toFun_eq_coe {E : Type u_4} [Group E] {p : GroupSeminorm E} :
                  p.toFun = p
                  theorem AddGroupSeminorm.ext {E : Type u_4} [AddGroup E] {p : AddGroupSeminorm E} {q : AddGroupSeminorm E} :
                  (∀ (x : E), p x = q x) → p = q
                  theorem GroupSeminorm.ext {E : Type u_4} [Group E] {p : GroupSeminorm E} {q : GroupSeminorm E} :
                  (∀ (x : E), p x = q x) → p = q
                  Equations
                  Equations
                  theorem AddGroupSeminorm.le_def {E : Type u_4} [AddGroup E] {p : AddGroupSeminorm E} {q : AddGroupSeminorm E} :
                  p q p q
                  theorem GroupSeminorm.le_def {E : Type u_4} [Group E] {p : GroupSeminorm E} {q : GroupSeminorm E} :
                  p q p q
                  theorem AddGroupSeminorm.lt_def {E : Type u_4} [AddGroup E] {p : AddGroupSeminorm E} {q : AddGroupSeminorm E} :
                  p < q p < q
                  theorem GroupSeminorm.lt_def {E : Type u_4} [Group E] {p : GroupSeminorm E} {q : GroupSeminorm E} :
                  p < q p < q
                  @[simp]
                  theorem AddGroupSeminorm.coe_le_coe {E : Type u_4} [AddGroup E] {p : AddGroupSeminorm E} {q : AddGroupSeminorm E} :
                  p q p q
                  @[simp]
                  theorem GroupSeminorm.coe_le_coe {E : Type u_4} [Group E] {p : GroupSeminorm E} {q : GroupSeminorm E} :
                  p q p q
                  @[simp]
                  theorem AddGroupSeminorm.coe_lt_coe {E : Type u_4} [AddGroup E] {p : AddGroupSeminorm E} {q : AddGroupSeminorm E} :
                  p < q p < q
                  @[simp]
                  theorem GroupSeminorm.coe_lt_coe {E : Type u_4} [Group E] {p : GroupSeminorm E} {q : GroupSeminorm E} :
                  p < q p < q
                  theorem AddGroupSeminorm.instZeroAddGroupSeminorm.proof_2 {E : Type u_1} [AddGroup E] :
                  ∀ (x x_1 : E), OfNat.ofNat 0 (x + x_1) 0 + OfNat.ofNat 0 (x + x_1)
                  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.
                  @[simp]
                  theorem AddGroupSeminorm.coe_zero {E : Type u_4} [AddGroup E] :
                  0 = 0
                  @[simp]
                  theorem GroupSeminorm.coe_zero {E : Type u_4} [Group E] :
                  0 = 0
                  @[simp]
                  theorem AddGroupSeminorm.zero_apply {E : Type u_4} [AddGroup E] (x : E) :
                  0 x = 0
                  @[simp]
                  theorem GroupSeminorm.zero_apply {E : Type u_4} [Group E] (x : E) :
                  0 x = 0
                  Equations
                  • AddGroupSeminorm.instInhabitedAddGroupSeminorm = { default := 0 }
                  Equations
                  • GroupSeminorm.instInhabitedGroupSeminorm = { default := 0 }
                  theorem AddGroupSeminorm.instAddAddGroupSeminorm.proof_1 {E : Type u_1} [AddGroup E] (p : AddGroupSeminorm E) (q : AddGroupSeminorm E) :
                  (fun x => p x + q x) 0 = 0
                  theorem AddGroupSeminorm.instAddAddGroupSeminorm.proof_3 {E : Type u_1} [AddGroup E] (p : AddGroupSeminorm E) (q : AddGroupSeminorm E) (x : E) :
                  (fun x => p x + q x) (-x) = (fun x => p x + q x) x
                  theorem AddGroupSeminorm.instAddAddGroupSeminorm.proof_2 {E : Type u_1} [AddGroup E] (p : AddGroupSeminorm E) (q : AddGroupSeminorm E) :
                  ∀ (x x_1 : E), p (x + x_1) + q (x + x_1) (fun x => p x + q x) x + (fun x => p x + q x) x_1
                  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.
                  @[simp]
                  theorem AddGroupSeminorm.coe_add {E : Type u_4} [AddGroup E] (p : AddGroupSeminorm E) (q : AddGroupSeminorm E) :
                  ↑(p + q) = p + q
                  @[simp]
                  theorem GroupSeminorm.coe_add {E : Type u_4} [Group E] (p : GroupSeminorm E) (q : GroupSeminorm E) :
                  ↑(p + q) = p + q
                  @[simp]
                  theorem AddGroupSeminorm.add_apply {E : Type u_4} [AddGroup E] (p : AddGroupSeminorm E) (q : AddGroupSeminorm E) (x : E) :
                  ↑(p + q) x = p x + q x
                  @[simp]
                  theorem GroupSeminorm.add_apply {E : Type u_4} [Group E] (p : GroupSeminorm E) (q : GroupSeminorm E) (x : E) :
                  ↑(p + q) x = p x + q x
                  Equations
                  • One or more equations did not get rendered due to their size.
                  theorem AddGroupSeminorm.instSupAddGroupSeminorm.proof_2 {E : Type u_1} [AddGroup E] (p : AddGroupSeminorm E) (q : AddGroupSeminorm E) (x : E) (y : E) :
                  p (x + y) q (x + y) (p q) x + (p q) y
                  Equations
                  • One or more equations did not get rendered due to their size.
                  @[simp]
                  theorem AddGroupSeminorm.coe_sup {E : Type u_4} [AddGroup E] (p : AddGroupSeminorm E) (q : AddGroupSeminorm E) :
                  ↑(p q) = p q
                  @[simp]
                  theorem GroupSeminorm.coe_sup {E : Type u_4} [Group E] (p : GroupSeminorm E) (q : GroupSeminorm E) :
                  ↑(p q) = p q
                  @[simp]
                  theorem AddGroupSeminorm.sup_apply {E : Type u_4} [AddGroup E] (p : AddGroupSeminorm E) (q : AddGroupSeminorm E) (x : E) :
                  ↑(p q) x = p x q x
                  @[simp]
                  theorem GroupSeminorm.sup_apply {E : Type u_4} [Group E] (p : GroupSeminorm E) (q : GroupSeminorm E) (x : E) :
                  ↑(p q) x = p x q x
                  Equations
                  Equations
                  theorem AddGroupSeminorm.comp.proof_3 {E : Type u_1} {F : Type u_2} [AddGroup E] [AddGroup F] (p : AddGroupSeminorm E) (f : F →+ E) (x : F) :
                  (fun x => p (f x)) (-x) = (fun x => p (f x)) x
                  theorem AddGroupSeminorm.comp.proof_1 {E : Type u_1} {F : Type u_2} [AddGroup E] [AddGroup F] (p : AddGroupSeminorm E) (f : F →+ E) :
                  (fun x => p (f x)) 0 = 0
                  def AddGroupSeminorm.comp {E : Type u_4} {F : Type u_5} [AddGroup E] [AddGroup F] (p : AddGroupSeminorm E) (f : F →+ E) :

                  Composition of an additive group seminorm with an additive monoid homomorphism as an additive group seminorm.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    theorem AddGroupSeminorm.comp.proof_2 {E : Type u_1} {F : Type u_2} [AddGroup E] [AddGroup F] (p : AddGroupSeminorm E) (f : F →+ E) :
                    ∀ (x x_1 : F), p (f (x + x_1)) (fun x => p (f x)) x + (fun x => p (f x)) x_1
                    def GroupSeminorm.comp {E : Type u_4} {F : Type u_5} [Group E] [Group F] (p : GroupSeminorm E) (f : F →* E) :

                    Composition of a group seminorm with a monoid homomorphism as a group seminorm.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      @[simp]
                      theorem AddGroupSeminorm.coe_comp {E : Type u_4} {F : Type u_5} [AddGroup E] [AddGroup F] (p : AddGroupSeminorm E) (f : F →+ E) :
                      ↑(AddGroupSeminorm.comp p f) = p f
                      @[simp]
                      theorem GroupSeminorm.coe_comp {E : Type u_4} {F : Type u_5} [Group E] [Group F] (p : GroupSeminorm E) (f : F →* E) :
                      ↑(GroupSeminorm.comp p f) = p f
                      @[simp]
                      theorem AddGroupSeminorm.comp_apply {E : Type u_4} {F : Type u_5} [AddGroup E] [AddGroup F] (p : AddGroupSeminorm E) (f : F →+ E) (x : F) :
                      ↑(AddGroupSeminorm.comp p f) x = p (f x)
                      @[simp]
                      theorem GroupSeminorm.comp_apply {E : Type u_4} {F : Type u_5} [Group E] [Group F] (p : GroupSeminorm E) (f : F →* E) (x : F) :
                      ↑(GroupSeminorm.comp p f) x = p (f x)
                      @[simp]
                      @[simp]
                      theorem GroupSeminorm.comp_zero {E : Type u_4} {F : Type u_5} [Group E] [Group F] (p : GroupSeminorm E) :
                      @[simp]
                      theorem AddGroupSeminorm.zero_comp {E : Type u_4} {F : Type u_5} [AddGroup E] [AddGroup F] (f : F →+ E) :
                      @[simp]
                      theorem GroupSeminorm.zero_comp {E : Type u_4} {F : Type u_5} [Group E] [Group F] (f : F →* E) :
                      theorem GroupSeminorm.comp_assoc {E : Type u_4} {F : Type u_5} {G : Type u_6} [Group E] [Group F] [Group G] (p : GroupSeminorm E) (g : F →* E) (f : G →* F) :
                      theorem GroupSeminorm.add_comp {E : Type u_4} {F : Type u_5} [Group E] [Group F] (p : GroupSeminorm E) (q : GroupSeminorm E) (f : F →* E) :
                      theorem GroupSeminorm.comp_mono {E : Type u_4} {F : Type u_5} [Group E] [Group F] {p : GroupSeminorm E} {q : GroupSeminorm E} (f : F →* E) (hp : p q) :
                      theorem GroupSeminorm.comp_mul_le {E : Type u_4} {F : Type u_5} [CommGroup E] [CommGroup F] (p : GroupSeminorm E) (f : F →* E) (g : F →* E) :
                      theorem AddGroupSeminorm.add_bddBelow_range_add {E : Type u_4} [AddCommGroup E] {p : AddGroupSeminorm E} {q : AddGroupSeminorm E} {x : E} :
                      BddBelow (Set.range fun y => p y + q (x - y))
                      theorem GroupSeminorm.mul_bddBelow_range_add {E : Type u_4} [CommGroup E] {p : GroupSeminorm E} {q : GroupSeminorm E} {x : E} :
                      BddBelow (Set.range fun y => p y + q (x / y))
                      theorem AddGroupSeminorm.instInfAddGroupSeminormToAddGroup.proof_3 {E : Type u_1} [AddCommGroup E] (p : AddGroupSeminorm E) (q : AddGroupSeminorm E) (x : E) :
                      ⨅ (y : E), p y + q (-x - y) = (fun x => ⨅ (y : E), p y + q (x - y)) x
                      theorem AddGroupSeminorm.instInfAddGroupSeminormToAddGroup.proof_2 {E : Type u_1} [AddCommGroup E] (p : AddGroupSeminorm E) (q : AddGroupSeminorm E) (x : E) (y : E) :
                      (fun x => ⨅ (y : E), p y + q (x - y)) (x + y) (⨅ (y : E), p y + q (x - y)) + ⨅ (y : E), p y + q (y - y)
                      theorem AddGroupSeminorm.instInfAddGroupSeminormToAddGroup.proof_1 {E : Type u_1} [AddCommGroup E] (p : AddGroupSeminorm E) (q : AddGroupSeminorm E) :
                      ⨅ (i : E), p i + q (0 - i) = 0
                      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.
                      @[simp]
                      theorem AddGroupSeminorm.inf_apply {E : Type u_4} [AddCommGroup E] (p : AddGroupSeminorm E) (q : AddGroupSeminorm E) (x : E) :
                      ↑(p q) x = ⨅ (y : E), p y + q (x - y)
                      @[simp]
                      theorem GroupSeminorm.inf_apply {E : Type u_4} [CommGroup E] (p : GroupSeminorm E) (q : GroupSeminorm E) (x : E) :
                      ↑(p q) x = ⨅ (y : E), p y + q (x / y)
                      theorem AddGroupSeminorm.instLatticeAddGroupSeminormToAddGroup.proof_4 {E : Type u_1} [AddCommGroup E] (p : AddGroupSeminorm E) (q : AddGroupSeminorm E) (x : E) :
                      ⨅ (y : E), p y + q (x - y) (fun f => f) p x
                      theorem AddGroupSeminorm.instLatticeAddGroupSeminormToAddGroup.proof_5 {E : Type u_1} [AddCommGroup E] (p : AddGroupSeminorm E) (q : AddGroupSeminorm E) (x : E) :
                      ⨅ (y : E), p y + q (x - y) (fun f => f) q x
                      theorem AddGroupSeminorm.instLatticeAddGroupSeminormToAddGroup.proof_6 {E : Type u_1} [AddCommGroup E] (a : AddGroupSeminorm E) (b : AddGroupSeminorm E) (c : AddGroupSeminorm E) (hb : a b) (hc : a c) (x : E) :
                      (fun f => f) a x ⨅ (y : E), b y + c (x - y)
                      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
                      • One or more equations did not get rendered due to their size.
                      @[simp]
                      theorem AddGroupSeminorm.apply_one {E : Type u_4} [AddGroup E] [DecidableEq E] (x : E) :
                      1 x = if x = 0 then 0 else 1

                      Any action on which factors through ℝ≥0 applies to an AddGroupSeminorm.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      @[simp]
                      theorem AddGroupSeminorm.coe_smul {R : Type u_2} {E : Type u_4} [AddGroup E] [SMul R ] [SMul R NNReal] [IsScalarTower R NNReal ] (r : R) (p : AddGroupSeminorm E) :
                      ↑(r p) = r p
                      @[simp]
                      theorem AddGroupSeminorm.smul_apply {R : Type u_2} {E : Type u_4} [AddGroup E] [SMul R ] [SMul R NNReal] [IsScalarTower R NNReal ] (r : R) (p : AddGroupSeminorm E) (x : E) :
                      ↑(r p) x = r p x
                      theorem AddGroupSeminorm.smul_sup {R : Type u_2} {E : Type u_4} [AddGroup E] [SMul R ] [SMul R NNReal] [IsScalarTower R NNReal ] (r : R) (p : AddGroupSeminorm E) (q : AddGroupSeminorm E) :
                      r (p q) = r p r q
                      Equations
                      • One or more equations did not get rendered due to their size.

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

                      Equations
                      • NonarchAddGroupSeminorm.instCoeFunNonarchAddGroupSeminormForAllReal = { coe := FunLike.coe }
                      @[simp]
                      theorem NonarchAddGroupSeminorm.toZeroHom_eq_coe {E : Type u_4} [AddGroup E] {p : NonarchAddGroupSeminorm E} :
                      p.toZeroHom = p
                      theorem NonarchAddGroupSeminorm.ext {E : Type u_4} [AddGroup E] {p : NonarchAddGroupSeminorm E} {q : NonarchAddGroupSeminorm E} :
                      (∀ (x : E), p x = q x) → p = q
                      Equations
                      Equations
                      • One or more equations did not get rendered due to their size.
                      @[simp]
                      theorem NonarchAddGroupSeminorm.coe_zero {E : Type u_4} [AddGroup E] :
                      0 = 0
                      @[simp]
                      theorem NonarchAddGroupSeminorm.zero_apply {E : Type u_4} [AddGroup E] (x : E) :
                      0 x = 0
                      Equations
                      • NonarchAddGroupSeminorm.instInhabitedNonarchAddGroupSeminorm = { default := 0 }
                      Equations
                      • One or more equations did not get rendered due to their size.
                      @[simp]
                      theorem NonarchAddGroupSeminorm.coe_sup {E : Type u_4} [AddGroup E] (p : NonarchAddGroupSeminorm E) (q : NonarchAddGroupSeminorm E) :
                      ↑(p q) = p q
                      @[simp]
                      theorem NonarchAddGroupSeminorm.sup_apply {E : Type u_4} [AddGroup E] (p : NonarchAddGroupSeminorm E) (q : NonarchAddGroupSeminorm E) (x : E) :
                      ↑(p q) x = p x q x
                      Equations
                      • One or more equations did not get rendered due to their size.
                      instance GroupSeminorm.toOne {E : Type u_4} [Group E] [DecidableEq E] :
                      Equations
                      • One or more equations did not get rendered due to their size.
                      @[simp]
                      theorem GroupSeminorm.apply_one {E : Type u_4} [Group E] [DecidableEq E] (x : E) :
                      1 x = if x = 1 then 0 else 1

                      Any action on which factors through ℝ≥0 applies to an AddGroupSeminorm.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      @[simp]
                      theorem GroupSeminorm.coe_smul {R : Type u_2} {E : Type u_4} [Group E] [SMul R ] [SMul R NNReal] [IsScalarTower R NNReal ] (r : R) (p : GroupSeminorm E) :
                      ↑(r p) = r p
                      @[simp]
                      theorem GroupSeminorm.smul_apply {R : Type u_2} {E : Type u_4} [Group E] [SMul R ] [SMul R NNReal] [IsScalarTower R NNReal ] (r : R) (p : GroupSeminorm E) (x : E) :
                      ↑(r p) x = r p x
                      theorem GroupSeminorm.smul_sup {R : Type u_2} {E : Type u_4} [Group E] [SMul R ] [SMul R NNReal] [IsScalarTower R NNReal ] (r : R) (p : GroupSeminorm E) (q : GroupSeminorm E) :
                      r (p q) = r p r q
                      Equations
                      • One or more equations did not get rendered due to their size.
                      @[simp]
                      theorem NonarchAddGroupSeminorm.apply_one {E : Type u_4} [AddGroup E] [DecidableEq E] (x : E) :
                      1 x = if x = 0 then 0 else 1

                      Any action on which factors through ℝ≥0 applies to a NonarchAddGroupSeminorm.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      @[simp]
                      theorem NonarchAddGroupSeminorm.coe_smul {R : Type u_2} {E : Type u_4} [AddGroup E] [SMul R ] [SMul R NNReal] [IsScalarTower R NNReal ] (r : R) (p : NonarchAddGroupSeminorm E) :
                      ↑(r p) = r p
                      @[simp]
                      theorem NonarchAddGroupSeminorm.smul_apply {R : Type u_2} {E : Type u_4} [AddGroup E] [SMul R ] [SMul R NNReal] [IsScalarTower R NNReal ] (r : R) (p : NonarchAddGroupSeminorm E) (x : E) :
                      ↑(r p) x = r p x

                      Norms #

                      Equations
                      theorem AddGroupNorm.addGroupNormClass.proof_3 {E : Type u_1} [AddGroup E] (f : AddGroupNorm E) :
                      AddGroupSeminorm.toFun f.toAddGroupSeminorm 0 = 0
                      theorem AddGroupNorm.addGroupNormClass.proof_2 {E : Type u_1} [AddGroup E] (f : AddGroupNorm E) (x : E) (y : E) :
                      AddGroupSeminorm.toFun f.toAddGroupSeminorm (x + y) AddGroupSeminorm.toFun f.toAddGroupSeminorm x + AddGroupSeminorm.toFun f.toAddGroupSeminorm y
                      theorem AddGroupNorm.addGroupNormClass.proof_4 {E : Type u_1} [AddGroup E] (f : AddGroupNorm E) (x : E) :
                      AddGroupSeminorm.toFun f.toAddGroupSeminorm (-x) = AddGroupSeminorm.toFun f.toAddGroupSeminorm x
                      theorem AddGroupNorm.addGroupNormClass.proof_1 {E : Type u_1} [AddGroup E] (f : AddGroupNorm E) (g : AddGroupNorm E) (h : (fun f => f.toFun) f = (fun f => f.toFun) g) :
                      f = g
                      Equations

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

                      Equations
                      • AddGroupNorm.instCoeFunAddGroupNormForAllReal = FunLike.hasCoeToFun
                      instance GroupNorm.instCoeFunGroupNormForAllReal {E : Type u_4} [Group E] :
                      CoeFun (GroupNorm E) fun x => E

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

                      Equations
                      • GroupNorm.instCoeFunGroupNormForAllReal = FunLike.hasCoeToFun
                      @[simp]
                      theorem AddGroupNorm.toAddGroupSeminorm_eq_coe {E : Type u_4} [AddGroup E] {p : AddGroupNorm E} :
                      p.toAddGroupSeminorm = p
                      @[simp]
                      theorem GroupNorm.toGroupSeminorm_eq_coe {E : Type u_4} [Group E] {p : GroupNorm E} :
                      p.toGroupSeminorm = p
                      theorem AddGroupNorm.ext {E : Type u_4} [AddGroup E] {p : AddGroupNorm E} {q : AddGroupNorm E} :
                      (∀ (x : E), p x = q x) → p = q
                      theorem GroupNorm.ext {E : Type u_4} [Group E] {p : GroupNorm E} {q : GroupNorm E} :
                      (∀ (x : E), p x = q x) → p = q
                      Equations
                      Equations
                      theorem AddGroupNorm.le_def {E : Type u_4} [AddGroup E] {p : AddGroupNorm E} {q : AddGroupNorm E} :
                      p q p q
                      theorem GroupNorm.le_def {E : Type u_4} [Group E] {p : GroupNorm E} {q : GroupNorm E} :
                      p q p q
                      theorem AddGroupNorm.lt_def {E : Type u_4} [AddGroup E] {p : AddGroupNorm E} {q : AddGroupNorm E} :
                      p < q p < q
                      theorem GroupNorm.lt_def {E : Type u_4} [Group E] {p : GroupNorm E} {q : GroupNorm E} :
                      p < q p < q
                      @[simp]
                      theorem AddGroupNorm.coe_le_coe {E : Type u_4} [AddGroup E] {p : AddGroupNorm E} {q : AddGroupNorm E} :
                      p q p q
                      @[simp]
                      theorem GroupNorm.coe_le_coe {E : Type u_4} [Group E] {p : GroupNorm E} {q : GroupNorm E} :
                      p q p q
                      @[simp]
                      theorem AddGroupNorm.coe_lt_coe {E : Type u_4} [AddGroup E] {p : AddGroupNorm E} {q : AddGroupNorm E} :
                      p < q p < q
                      @[simp]
                      theorem GroupNorm.coe_lt_coe {E : Type u_4} [Group E] {p : GroupNorm E} {q : GroupNorm E} :
                      p < q p < q
                      Equations
                      • One or more equations did not get rendered due to their size.
                      theorem AddGroupNorm.instAddAddGroupNorm.proof_1 {E : Type u_1} [AddGroup E] (p : AddGroupNorm E) (q : AddGroupNorm E) (_x : E) (hx : AddGroupSeminorm.toFun { toFun := (p.toAddGroupSeminorm + q.toAddGroupSeminorm).toFun, map_zero' := (_ : AddGroupSeminorm.toFun (p.toAddGroupSeminorm + q.toAddGroupSeminorm) 0 = 0), add_le' := (_ : ∀ (r s : E), AddGroupSeminorm.toFun (p.toAddGroupSeminorm + q.toAddGroupSeminorm) (r + s) AddGroupSeminorm.toFun (p.toAddGroupSeminorm + q.toAddGroupSeminorm) r + AddGroupSeminorm.toFun (p.toAddGroupSeminorm + q.toAddGroupSeminorm) s), neg' := (_ : ∀ (r : E), AddGroupSeminorm.toFun (p.toAddGroupSeminorm + q.toAddGroupSeminorm) (-r) = AddGroupSeminorm.toFun (p.toAddGroupSeminorm + q.toAddGroupSeminorm) r) } _x = 0) :
                      _x = 0
                      instance GroupNorm.instAddGroupNorm {E : Type u_4} [Group E] :
                      Equations
                      • One or more equations did not get rendered due to their size.
                      @[simp]
                      theorem AddGroupNorm.coe_add {E : Type u_4} [AddGroup E] (p : AddGroupNorm E) (q : AddGroupNorm E) :
                      ↑(p + q) = p + q
                      @[simp]
                      theorem GroupNorm.coe_add {E : Type u_4} [Group E] (p : GroupNorm E) (q : GroupNorm E) :
                      ↑(p + q) = p + q
                      @[simp]
                      theorem AddGroupNorm.add_apply {E : Type u_4} [AddGroup E] (p : AddGroupNorm E) (q : AddGroupNorm E) (x : E) :
                      ↑(p + q) x = p x + q x
                      @[simp]
                      theorem GroupNorm.add_apply {E : Type u_4} [Group E] (p : GroupNorm E) (q : GroupNorm E) (x : E) :
                      ↑(p + q) x = p x + q x
                      Equations
                      • One or more equations did not get rendered due to their size.
                      theorem AddGroupNorm.instSupAddGroupNorm.proof_1 {E : Type u_1} [AddGroup E] (p : AddGroupNorm E) (q : AddGroupNorm E) (_x : E) (hx : AddGroupSeminorm.toFun { toFun := (p.toAddGroupSeminorm q.toAddGroupSeminorm).toFun, map_zero' := (_ : AddGroupSeminorm.toFun (p.toAddGroupSeminorm q.toAddGroupSeminorm) 0 = 0), add_le' := (_ : ∀ (r s : E), AddGroupSeminorm.toFun (p.toAddGroupSeminorm q.toAddGroupSeminorm) (r + s) AddGroupSeminorm.toFun (p.toAddGroupSeminorm q.toAddGroupSeminorm) r + AddGroupSeminorm.toFun (p.toAddGroupSeminorm q.toAddGroupSeminorm) s), neg' := (_ : ∀ (r : E), AddGroupSeminorm.toFun (p.toAddGroupSeminorm q.toAddGroupSeminorm) (-r) = AddGroupSeminorm.toFun (p.toAddGroupSeminorm q.toAddGroupSeminorm) r) } _x = 0) :
                      _x = 0
                      instance GroupNorm.instSupGroupNorm {E : Type u_4} [Group E] :
                      Equations
                      • One or more equations did not get rendered due to their size.
                      @[simp]
                      theorem AddGroupNorm.coe_sup {E : Type u_4} [AddGroup E] (p : AddGroupNorm E) (q : AddGroupNorm E) :
                      ↑(p q) = p q
                      @[simp]
                      theorem GroupNorm.coe_sup {E : Type u_4} [Group E] (p : GroupNorm E) (q : GroupNorm E) :
                      ↑(p q) = p q
                      @[simp]
                      theorem AddGroupNorm.sup_apply {E : Type u_4} [AddGroup E] (p : AddGroupNorm E) (q : AddGroupNorm E) (x : E) :
                      ↑(p q) x = p x q x
                      @[simp]
                      theorem GroupNorm.sup_apply {E : Type u_4} [Group E] (p : GroupNorm E) (q : GroupNorm E) (x : E) :
                      ↑(p q) x = p x q x
                      Equations
                      Equations
                      Equations
                      • One or more equations did not get rendered due to their size.
                      @[simp]
                      theorem AddGroupNorm.apply_one {E : Type u_4} [AddGroup E] [DecidableEq E] (x : E) :
                      1 x = if x = 0 then 0 else 1
                      Equations
                      • AddGroupNorm.instInhabitedAddGroupNorm = { default := 1 }
                      Equations
                      • One or more equations did not get rendered due to their size.
                      instance GroupNorm.toOne {E : Type u_4} [Group E] [DecidableEq E] :
                      Equations
                      • One or more equations did not get rendered due to their size.
                      @[simp]
                      theorem GroupNorm.apply_one {E : Type u_4} [Group E] [DecidableEq E] (x : E) :
                      1 x = if x = 1 then 0 else 1
                      Equations
                      • GroupNorm.instInhabitedGroupNorm = { default := 1 }
                      Equations

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

                      Equations
                      • NonarchAddGroupNorm.instCoeFunNonarchAddGroupNormForAllReal = FunLike.hasCoeToFun
                      @[simp]
                      theorem NonarchAddGroupNorm.toNonarchAddGroupSeminorm_eq_coe {E : Type u_4} [AddGroup E] {p : NonarchAddGroupNorm E} :
                      p.toNonarchAddGroupSeminorm = p
                      theorem NonarchAddGroupNorm.ext {E : Type u_4} [AddGroup E] {p : NonarchAddGroupNorm E} {q : NonarchAddGroupNorm E} :
                      (∀ (x : E), p x = q x) → p = q
                      Equations
                      theorem NonarchAddGroupNorm.lt_def {E : Type u_4} [AddGroup E] {p : NonarchAddGroupNorm E} {q : NonarchAddGroupNorm E} :
                      p < q p < q
                      @[simp]
                      theorem NonarchAddGroupNorm.coe_le_coe {E : Type u_4} [AddGroup E] {p : NonarchAddGroupNorm E} {q : NonarchAddGroupNorm E} :
                      p q p q
                      @[simp]
                      theorem NonarchAddGroupNorm.coe_lt_coe {E : Type u_4} [AddGroup E] {p : NonarchAddGroupNorm E} {q : NonarchAddGroupNorm E} :
                      p < q p < q
                      Equations
                      • One or more equations did not get rendered due to their size.
                      @[simp]
                      theorem NonarchAddGroupNorm.coe_sup {E : Type u_4} [AddGroup E] (p : NonarchAddGroupNorm E) (q : NonarchAddGroupNorm E) :
                      ↑(p q) = p q
                      @[simp]
                      theorem NonarchAddGroupNorm.sup_apply {E : Type u_4} [AddGroup E] (p : NonarchAddGroupNorm E) (q : NonarchAddGroupNorm E) (x : E) :
                      ↑(p q) x = p x q x
                      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.
                      @[simp]
                      theorem NonarchAddGroupNorm.apply_one {E : Type u_4} [AddGroup E] [DecidableEq E] (x : E) :
                      1 x = if x = 0 then 0 else 1
                      Equations
                      • NonarchAddGroupNorm.instInhabitedNonarchAddGroupNorm = { default := 1 }