@@ -101,6 +101,24 @@ instance (priority := 100) NormedRing.toNonUnitalNormedRing [β : NormedRing α]
101
101
{ β with }
102
102
#align normed_ring.to_non_unital_normed_ring NormedRing.toNonUnitalNormedRing
103
103
104
+ /-- A non-unital seminormed commutative ring is a non-unital commutative ring endowed with a
105
+ seminorm which satisfies the inequality `‖x y‖ ≤ ‖x‖ ‖y‖`. -/
106
+ class NonUnitalSeminormedCommRing (α : Type *) extends NonUnitalSeminormedRing α where
107
+ /-- Multiplication is commutative. -/
108
+ mul_comm : ∀ x y : α, x * y = y * x
109
+
110
+ /-- A non-unital normed commutative ring is a non-unital commutative ring endowed with a
111
+ norm which satisfies the inequality `‖x y‖ ≤ ‖x‖ ‖y‖`. -/
112
+ class NonUnitalNormedCommRing (α : Type *) extends NonUnitalNormedRing α where
113
+ /-- Multiplication is commutative. -/
114
+ mul_comm : ∀ x y : α, x * y = y * x
115
+
116
+ -- see Note [lower instance priority]
117
+ /-- A non-unital normed commutative ring is a non-unital seminormed commutative ring. -/
118
+ instance (priority := 100 ) NonUnitalNormedCommRing.toNonUnitalSeminormedCommRing
119
+ [β : NonUnitalNormedCommRing α] : NonUnitalSeminormedCommRing α :=
120
+ { β with }
121
+
104
122
/-- A seminormed commutative ring is a commutative ring endowed with a seminorm which satisfies
105
123
the inequality `‖x y‖ ≤ ‖x‖ ‖y‖`. -/
106
124
class SeminormedCommRing (α : Type *) extends SeminormedRing α where
@@ -115,6 +133,18 @@ class NormedCommRing (α : Type*) extends NormedRing α where
115
133
mul_comm : ∀ x y : α, x * y = y * x
116
134
#align normed_comm_ring NormedCommRing
117
135
136
+ -- see Note [lower instance priority]
137
+ /-- A seminormed commutative ring is a non-unital seminormed commutative ring. -/
138
+ instance (priority := 100 ) SeminormedCommRing.toNonUnitalSeminormedCommRing
139
+ [β : SeminormedCommRing α] : NonUnitalSeminormedCommRing α :=
140
+ { β with }
141
+
142
+ -- see Note [lower instance priority]
143
+ /-- A normed commutative ring is a non-unital normed commutative ring. -/
144
+ instance (priority := 100 ) NormedCommRing.toNonUnitalNormedCommRing
145
+ [β : NormedCommRing α] : NonUnitalNormedCommRing α :=
146
+ { β with }
147
+
118
148
-- see Note [lower instance priority]
119
149
/-- A normed commutative ring is a seminormed commutative ring. -/
120
150
instance (priority := 100 ) NormedCommRing.toSeminormedCommRing [β : NormedCommRing α] :
@@ -147,6 +177,11 @@ theorem NormOneClass.nontrivial (α : Type*) [SeminormedAddCommGroup α] [One α
147
177
nontrivial_of_ne 0 1 <| ne_of_apply_ne norm <| by simp
148
178
#align norm_one_class.nontrivial NormOneClass.nontrivial
149
179
180
+ -- see Note [lower instance priority]
181
+ instance (priority := 100 ) NonUnitalSeminormedCommRing.toNonUnitalCommRing
182
+ [β : NonUnitalSeminormedCommRing α] : NonUnitalCommRing α :=
183
+ { β with }
184
+
150
185
-- see Note [lower instance priority]
151
186
instance (priority := 100 ) SeminormedCommRing.toCommRing [β : SeminormedCommRing α] : CommRing α :=
152
187
{ β with }
@@ -463,6 +498,53 @@ instance MulOpposite.normedRing : NormedRing αᵐᵒᵖ :=
463
498
464
499
end NormedRing
465
500
501
+ section NonUnitalSeminormedCommRing
502
+
503
+ variable [NonUnitalSeminormedCommRing α]
504
+
505
+ instance ULift.nonUnitalSeminormedCommRing : NonUnitalSeminormedCommRing (ULift α) :=
506
+ { ULift.nonUnitalSeminormedRing, ULift.nonUnitalCommRing with }
507
+
508
+ /-- Non-unital seminormed commutative ring structure on the product of two non-unital seminormed
509
+ commutative rings, using the sup norm. -/
510
+ instance Prod.nonUnitalSeminormedCommRing [NonUnitalSeminormedCommRing β] :
511
+ NonUnitalSeminormedCommRing (α × β) :=
512
+ { nonUnitalSeminormedRing, instNonUnitalCommRing with }
513
+
514
+ /-- Non-unital seminormed commutative ring structure on the product of finitely many non-unital
515
+ seminormed commutative rings, using the sup norm. -/
516
+ instance Pi.nonUnitalSeminormedCommRing {π : ι → Type *} [Fintype ι]
517
+ [∀ i, NonUnitalSeminormedCommRing (π i)] : NonUnitalSeminormedCommRing (∀ i, π i) :=
518
+ { Pi.nonUnitalSeminormedRing, Pi.nonUnitalCommRing with }
519
+
520
+ instance MulOpposite.nonUnitalSeminormedCommRing : NonUnitalSeminormedCommRing αᵐᵒᵖ :=
521
+ { MulOpposite.nonUnitalSeminormedRing, MulOpposite.nonUnitalCommRing α with }
522
+
523
+ end NonUnitalSeminormedCommRing
524
+ section NonUnitalNormedCommRing
525
+
526
+ variable [NonUnitalNormedCommRing α]
527
+
528
+ instance ULift.nonUnitalNormedCommRing : NonUnitalNormedCommRing (ULift α) :=
529
+ { ULift.nonUnitalSeminormedCommRing, ULift.normedAddCommGroup with }
530
+
531
+ /-- Non-unital normed commutative ring structure on the product of two non-unital normed
532
+ commutative rings, using the sup norm. -/
533
+ instance Prod.nonUnitalNormedCommRing [NonUnitalNormedCommRing β] :
534
+ NonUnitalNormedCommRing (α × β) :=
535
+ { Prod.nonUnitalSeminormedCommRing, Prod.normedAddCommGroup with }
536
+
537
+ /-- Normed commutative ring structure on the product of finitely many non-unital normed
538
+ commutative rings, using the sup norm. -/
539
+ instance Pi.nonUnitalNormedCommRing {π : ι → Type *} [Fintype ι]
540
+ [∀ i, NonUnitalNormedCommRing (π i)] : NonUnitalNormedCommRing (∀ i, π i) :=
541
+ { Pi.nonUnitalSeminormedCommRing, Pi.normedAddCommGroup with }
542
+
543
+ instance MulOpposite.nonUnitalNormedCommRing : NonUnitalNormedCommRing αᵐᵒᵖ :=
544
+ { MulOpposite.nonUnitalSeminormedCommRing, MulOpposite.normedAddCommGroup with }
545
+
546
+ end NonUnitalNormedCommRing
547
+
466
548
-- see Note [lower instance priority]
467
549
instance (priority := 100 ) semi_normed_ring_top_monoid [NonUnitalSeminormedRing α] :
468
550
ContinuousMul α :=
@@ -1021,6 +1103,23 @@ def NormedRing.induced [Ring R] [NormedRing S] [NonUnitalRingHomClass F R S] (f
1021
1103
{ NonUnitalSeminormedRing.induced R S f, NormedAddCommGroup.induced R S f hf, ‹Ring R› with }
1022
1104
#align normed_ring.induced NormedRing.induced
1023
1105
1106
+ /-- A non-unital ring homomorphism from a `NonUnitalCommRing` to a `NonUnitalSeminormedCommRing`
1107
+ induces a `NonUnitalSeminormedCommRing` structure on the domain.
1108
+
1109
+ See note [reducible non-instances] -/
1110
+ @[reducible]
1111
+ def NonUnitalSeminormedCommRing.induced [NonUnitalCommRing R] [NonUnitalSeminormedCommRing S]
1112
+ [NonUnitalRingHomClass F R S] (f : F) : NonUnitalSeminormedCommRing R :=
1113
+ { NonUnitalSeminormedRing.induced R S f, ‹NonUnitalCommRing R› with }
1114
+
1115
+ /-- An injective non-unital ring homomorphism from a `NonUnitalCommRing` to a
1116
+ `NonUnitalNormedCommRing` induces a `NonUnitalNormedCommRing` structure on the domain.
1117
+
1118
+ See note [reducible non-instances] -/
1119
+ @[reducible]
1120
+ def NonUnitalNormedCommRing.induced [NonUnitalCommRing R] [NonUnitalNormedCommRing S]
1121
+ [NonUnitalRingHomClass F R S] (f : F) (hf : Function.Injective f) : NonUnitalNormedCommRing R :=
1122
+ { NonUnitalNormedRing.induced R S f hf, ‹NonUnitalCommRing R› with }
1024
1123
/-- A non-unital ring homomorphism from a `CommRing` to a `SeminormedRing` induces a
1025
1124
`SeminormedCommRing` structure on the domain.
1026
1125
0 commit comments