@@ -220,28 +220,57 @@ variable {B : Π i, S i}
220
220
instance [Π i, One (R i)] [∀ i, OneMemClass (S i) (R i)] : One (Πʳ i, [R i, B i]_[𝓕]) where
221
221
one := ⟨fun _ ↦ 1 , .of_forall fun _ ↦ one_mem _⟩
222
222
223
+ @[to_additive (attr := simp)]
224
+ lemma one_apply [Π i, One (R i)] [∀ i, OneMemClass (S i) (R i)] (i : ι) :
225
+ (1 : Πʳ i, [R i, B i]_[𝓕]) i = 1 :=
226
+ rfl
227
+
223
228
@[to_additive]
224
229
instance [Π i, Inv (R i)] [∀ i, InvMemClass (S i) (R i)] : Inv (Πʳ i, [R i, B i]_[𝓕]) where
225
230
inv x := ⟨fun i ↦ (x i)⁻¹, x.2 .mono fun _ ↦ inv_mem⟩
226
231
232
+ @[to_additive (attr := simp)]
233
+ lemma inv_apply [Π i, Inv (R i)] [∀ i, InvMemClass (S i) (R i)]
234
+ (x : Πʳ i, [R i, B i]_[𝓕]) (i : ι) : (x⁻¹) i = (x i)⁻¹ :=
235
+ rfl
236
+
227
237
@[to_additive]
228
238
instance [Π i, Mul (R i)] [∀ i, MulMemClass (S i) (R i)] : Mul (Πʳ i, [R i, B i]_[𝓕]) where
229
239
mul x y := ⟨fun i ↦ x i * y i, y.2 .mp (x.2 .mono fun _ ↦ mul_mem)⟩
230
240
241
+ @[to_additive (attr := simp)]
242
+ lemma mul_apply [Π i, Mul (R i)] [∀ i, MulMemClass (S i) (R i)]
243
+ (x y : Πʳ i, [R i, B i]_[𝓕]) (i : ι) : (x * y) i = x i * y i :=
244
+ rfl
245
+
231
246
@[to_additive]
232
247
instance {G : Type*} [Π i, SMul G (R i)] [∀ i, SMulMemClass (S i) G (R i)] :
233
248
SMul G (Πʳ i, [R i, B i]_[𝓕]) where
234
249
smul g x := ⟨fun i ↦ g • (x i), x.2 .mono fun _ ↦ SMulMemClass.smul_mem g⟩
235
250
251
+ @[to_additive (attr := simp)]
252
+ lemma smul_apply {G : Type *} [Π i, SMul G (R i)] [∀ i, SMulMemClass (S i) G (R i)] (g : G)
253
+ (x : Πʳ i, [R i, B i]_[𝓕]) (i : ι) : (g • x) i = g • x i :=
254
+ rfl
255
+
236
256
@[to_additive]
237
257
instance [Π i, DivInvMonoid (R i)] [∀ i, SubgroupClass (S i) (R i)] :
238
258
Div (Πʳ i, [R i, B i]_[𝓕]) where
239
259
div x y := ⟨fun i ↦ x i / y i, y.2 .mp (x.2 .mono fun _ ↦ div_mem)⟩
240
260
261
+ @[to_additive (attr := simp)]
262
+ lemma div_apply [Π i, DivInvMonoid (R i)] [∀ i, SubgroupClass (S i) (R i)]
263
+ (x y : Πʳ i, [R i, B i]_[𝓕]) (i : ι) : (x / y) i = x i / y i :=
264
+ rfl
265
+
241
266
instance [Π i, Monoid (R i)] [∀ i, SubmonoidClass (S i) (R i)] :
242
267
Pow (Πʳ i, [R i, B i]_[𝓕]) ℕ where
243
268
pow x n := ⟨fun i ↦ x i ^ n, x.2 .mono fun _ hi ↦ pow_mem hi n⟩
244
269
270
+ lemma pow_apply [Π i, Monoid (R i)] [∀ i, SubmonoidClass (S i) (R i)]
271
+ (x : Πʳ i, [R i, B i]_[𝓕]) (n : ℕ) (i : ι) : (x ^ n) i = x i ^ n :=
272
+ rfl
273
+
245
274
instance [Π i, AddMonoid (R i)] [∀ i, AddSubmonoidClass (S i) (R i)] :
246
275
AddMonoid (Πʳ i, [R i, B i]_[𝓕]) :=
247
276
haveI : ∀ i, SMulMemClass (S i) ℕ (R i) := fun _ ↦ AddSubmonoidClass.nsmulMemClass
@@ -256,6 +285,10 @@ instance [Π i, DivInvMonoid (R i)] [∀ i, SubgroupClass (S i) (R i)] :
256
285
Pow (Πʳ i, [R i, B i]_[𝓕]) ℤ where
257
286
pow x n := ⟨fun i ↦ x i ^ n, x.2 .mono fun _ hi ↦ zpow_mem hi n⟩
258
287
288
+ lemma zpow_apply [Π i, DivInvMonoid (R i)] [∀ i, SubgroupClass (S i) (R i)]
289
+ (x : Πʳ i, [R i, B i]_[𝓕]) (n : ℤ) (i : ι) : (x ^ n) i = x i ^ n :=
290
+ rfl
291
+
259
292
instance [Π i, AddMonoidWithOne (R i)] [∀ i, AddSubmonoidWithOneClass (S i) (R i)] :
260
293
NatCast (Πʳ i, [R i, B i]_[𝓕]) where
261
294
natCast n := ⟨fun _ ↦ n, .of_forall fun _ ↦ natCast_mem _ n⟩
0 commit comments