Skip to content

Commit b864ec4

Browse files
committed
Add simp lemmas for restricted product operations (#25462)
Co-authored-by: matthewjasper <20113453+matthewjasper@users.noreply.github.com>
1 parent abbdd12 commit b864ec4

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

Mathlib/Topology/Algebra/RestrictedProduct.lean

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,28 +220,57 @@ variable {B : Π i, S i}
220220
instance [Π i, One (R i)] [∀ i, OneMemClass (S i) (R i)] : One (Πʳ i, [R i, B i]_[𝓕]) where
221221
one := ⟨fun _ ↦ 1, .of_forall fun _ ↦ one_mem _⟩
222222

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+
223228
@[to_additive]
224229
instance [Π i, Inv (R i)] [∀ i, InvMemClass (S i) (R i)] : Inv (Πʳ i, [R i, B i]_[𝓕]) where
225230
inv x := ⟨fun i ↦ (x i)⁻¹, x.2.mono fun _ ↦ inv_mem⟩
226231

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+
227237
@[to_additive]
228238
instance [Π i, Mul (R i)] [∀ i, MulMemClass (S i) (R i)] : Mul (Πʳ i, [R i, B i]_[𝓕]) where
229239
mul x y := ⟨fun i ↦ x i * y i, y.2.mp (x.2.mono fun _ ↦ mul_mem)⟩
230240

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+
231246
@[to_additive]
232247
instance {G : Type*} [Π i, SMul G (R i)] [∀ i, SMulMemClass (S i) G (R i)] :
233248
SMul G (Πʳ i, [R i, B i]_[𝓕]) where
234249
smul g x := ⟨fun i ↦ g • (x i), x.2.mono fun _ ↦ SMulMemClass.smul_mem g⟩
235250

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+
236256
@[to_additive]
237257
instance [Π i, DivInvMonoid (R i)] [∀ i, SubgroupClass (S i) (R i)] :
238258
Div (Πʳ i, [R i, B i]_[𝓕]) where
239259
div x y := ⟨fun i ↦ x i / y i, y.2.mp (x.2.mono fun _ ↦ div_mem)⟩
240260

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+
241266
instance [Π i, Monoid (R i)] [∀ i, SubmonoidClass (S i) (R i)] :
242267
Pow (Πʳ i, [R i, B i]_[𝓕]) ℕ where
243268
pow x n := ⟨fun i ↦ x i ^ n, x.2.mono fun _ hi ↦ pow_mem hi n⟩
244269

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+
245274
instance [Π i, AddMonoid (R i)] [∀ i, AddSubmonoidClass (S i) (R i)] :
246275
AddMonoid (Πʳ i, [R i, B i]_[𝓕]) :=
247276
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)] :
256285
Pow (Πʳ i, [R i, B i]_[𝓕]) ℤ where
257286
pow x n := ⟨fun i ↦ x i ^ n, x.2.mono fun _ hi ↦ zpow_mem hi n⟩
258287

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+
259292
instance [Π i, AddMonoidWithOne (R i)] [∀ i, AddSubmonoidWithOneClass (S i) (R i)] :
260293
NatCast (Πʳ i, [R i, B i]_[𝓕]) where
261294
natCast n := ⟨fun _ ↦ n, .of_forall fun _ ↦ natCast_mem _ n⟩

0 commit comments

Comments
 (0)