Skip to content

Commit 92a6f8c

Browse files
committed
Merge branch 'SubgroupInstPerfCH' into mrb/subring_inj_inheritance
2 parents c4ec9a2 + 6043d31 commit 92a6f8c

2 files changed

Lines changed: 28 additions & 17 deletions

File tree

Mathlib/Algebra/Module/Submodule/Basic.lean

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -344,11 +344,11 @@ theorem coe_mem (x : p) : (x : M) ∈ p :=
344344
variable (p)
345345

346346
instance addCommMonoid : AddCommMonoid p :=
347-
{ p.toAddSubmonoid.toAddCommMonoid with }
347+
p.toAddSubmonoid.toAddCommMonoid
348348
#align submodule.add_comm_monoid Submodule.addCommMonoid
349349

350350
instance module' [Semiring S] [SMul S R] [Module S M] [IsScalarTower S R M] : Module S p :=
351-
{ (show MulAction S p from p.toSubMulAction.mulAction') with
351+
{ toMulAction := p.toSubMulAction.mulAction'
352352
smul_zero := fun a => by ext; simp
353353
zero_smul := fun a => by ext; simp
354354
add_smul := fun a b x => by ext; simp [add_smul]
@@ -587,7 +587,8 @@ theorem sub_mem_iff_right (hx : x ∈ p) : x - y ∈ p ↔ y ∈ p := by
587587
#align submodule.sub_mem_iff_right Submodule.sub_mem_iff_right
588588

589589
instance addCommGroup : AddCommGroup p :=
590-
{ p.toAddSubgroup.toAddCommGroup with }
590+
{ p.toAddSubgroup.toAddCommGroup with
591+
toAddMonoid := p.addCommMonoid.toAddMonoid }
591592
#align submodule.add_comm_group Submodule.addCommGroup
592593

593594
end AddCommGroup

Mathlib/GroupTheory/Subgroup/Basic.lean

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -247,8 +247,9 @@ instance (priority := 75) toGroup : Group H :=
247247
@[to_additive "An additive subgroup of an `AddCommGroup` is an `AddCommGroup`."]
248248
instance (priority := 75) toCommGroup {G : Type*} [CommGroup G] [SetLike S G] [SubgroupClass S G] :
249249
CommGroup H :=
250-
Subtype.coe_injective.commGroup _ rfl (fun _ _ => rfl) (fun _ => rfl) (fun _ _ => rfl)
251-
(fun _ _ => rfl) fun _ _ => rfl
250+
{ Subtype.coe_injective.commGroup (↑) rfl (fun _ _ => rfl) (fun _ => rfl) (fun _ _ => rfl)
251+
(fun _ _ => rfl) fun _ _ => rfl with
252+
toGroup := SubgroupClass.toGroup H }
252253
#align subgroup_class.to_comm_group SubgroupClass.toCommGroup
253254
#align add_subgroup_class.to_add_comm_group AddSubgroupClass.toAddCommGroup
254255

@@ -257,8 +258,10 @@ instance (priority := 75) toCommGroup {G : Type*} [CommGroup G] [SetLike S G] [S
257258
@[to_additive "An additive subgroup of an `AddOrderedCommGroup` is an `AddOrderedCommGroup`."]
258259
instance (priority := 75) toOrderedCommGroup {G : Type*} [OrderedCommGroup G] [SetLike S G]
259260
[SubgroupClass S G] : OrderedCommGroup H :=
260-
Subtype.coe_injective.orderedCommGroup _ rfl (fun _ _ => rfl) (fun _ => rfl) (fun _ _ => rfl)
261-
(fun _ _ => rfl) fun _ _ => rfl
261+
{ Subtype.coe_injective.orderedCommGroup ((↑) : H → G) rfl (fun _ _ => rfl) (fun _ => rfl)
262+
(fun _ _ => rfl) (fun _ _ => rfl) fun _ _ => rfl with
263+
toCommGroup := SubgroupClass.toCommGroup H
264+
toPartialOrder := PartialOrder.lift ((↑) : H → G) Subtype.coe_injective }
262265
#align subgroup_class.to_ordered_comm_group SubgroupClass.toOrderedCommGroup
263266
#align add_subgroup_class.to_ordered_add_comm_group AddSubgroupClass.toOrderedAddCommGroup
264267

@@ -269,8 +272,9 @@ instance (priority := 75) toOrderedCommGroup {G : Type*} [OrderedCommGroup G] [S
269272
`LinearOrderedAddCommGroup`."]
270273
instance (priority := 75) toLinearOrderedCommGroup {G : Type*} [LinearOrderedCommGroup G]
271274
[SetLike S G] [SubgroupClass S G] : LinearOrderedCommGroup H :=
272-
Subtype.coe_injective.linearOrderedCommGroup _ rfl (fun _ _ => rfl) (fun _ => rfl)
273-
(fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) fun _ _ => rfl
275+
{ Subtype.coe_injective.linearOrderedCommGroup ((↑) : H → G) rfl (fun _ _ => rfl) (fun _ => rfl)
276+
(fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) fun _ _ => rfl with
277+
toOrderedCommGroup := SubgroupClass.toOrderedCommGroup H }
274278
#align subgroup_class.to_linear_ordered_comm_group SubgroupClass.toLinearOrderedCommGroup
275279
#align add_subgroup_class.to_linear_ordered_add_comm_group AddSubgroupClass.toLinearOrderedAddCommGroup
276280

@@ -746,25 +750,30 @@ theorem mk_eq_one_iff {g : G} {h} : (⟨g, h⟩ : H) = 1 ↔ g = 1 :=
746750
/-- A subgroup of a group inherits a group structure. -/
747751
@[to_additive "An `AddSubgroup` of an `AddGroup` inherits an `AddGroup` structure."]
748752
instance toGroup {G : Type*} [Group G] (H : Subgroup G) : Group H :=
749-
Subtype.coe_injective.group _ rfl (fun _ _ => rfl) (fun _ => rfl) (fun _ _ => rfl)
750-
(fun _ _ => rfl) fun _ _ => rfl
753+
{ Subtype.coe_injective.group (↑) rfl (fun _ _ => rfl) (fun _ => rfl) (fun _ _ => rfl)
754+
(fun _ _ => rfl) fun _ _ => rfl with
755+
toMul := H.mul
756+
toOne := H.one }
751757
#align subgroup.to_group Subgroup.toGroup
752758
#align add_subgroup.to_add_group AddSubgroup.toAddGroup
753759

754760
/-- A subgroup of a `CommGroup` is a `CommGroup`. -/
755761
@[to_additive "An `AddSubgroup` of an `AddCommGroup` is an `AddCommGroup`."]
756762
instance toCommGroup {G : Type*} [CommGroup G] (H : Subgroup G) : CommGroup H :=
757-
Subtype.coe_injective.commGroup _ rfl (fun _ _ => rfl) (fun _ => rfl) (fun _ _ => rfl)
758-
(fun _ _ => rfl) fun _ _ => rfl
763+
{ Subtype.coe_injective.commGroup (↑) rfl (fun _ _ => rfl) (fun _ => rfl) (fun _ _ => rfl)
764+
(fun _ _ => rfl) fun _ _ => rfl with
765+
toGroup := H.toGroup }
759766
#align subgroup.to_comm_group Subgroup.toCommGroup
760767
#align add_subgroup.to_add_comm_group AddSubgroup.toAddCommGroup
761768

762769
/-- A subgroup of an `OrderedCommGroup` is an `OrderedCommGroup`. -/
763770
@[to_additive "An `AddSubgroup` of an `AddOrderedCommGroup` is an `AddOrderedCommGroup`."]
764771
instance toOrderedCommGroup {G : Type*} [OrderedCommGroup G] (H : Subgroup G) :
765772
OrderedCommGroup H :=
766-
Subtype.coe_injective.orderedCommGroup _ rfl (fun _ _ => rfl) (fun _ => rfl) (fun _ _ => rfl)
767-
(fun _ _ => rfl) fun _ _ => rfl
773+
{ Subtype.coe_injective.orderedCommGroup ((↑) : H → G) rfl (fun _ _ => rfl) (fun _ => rfl)
774+
(fun _ _ => rfl) (fun _ _ => rfl) fun _ _ => rfl with
775+
toCommGroup := H.toCommGroup
776+
toPartialOrder := PartialOrder.lift ((↑) : H → G) Subtype.coe_injective }
768777
#align subgroup.to_ordered_comm_group Subgroup.toOrderedCommGroup
769778
#align add_subgroup.to_ordered_add_comm_group AddSubgroup.toOrderedAddCommGroup
770779

@@ -774,8 +783,9 @@ instance toOrderedCommGroup {G : Type*} [OrderedCommGroup G] (H : Subgroup G) :
774783
`LinearOrderedAddCommGroup`."]
775784
instance toLinearOrderedCommGroup {G : Type*} [LinearOrderedCommGroup G] (H : Subgroup G) :
776785
LinearOrderedCommGroup H :=
777-
Subtype.coe_injective.linearOrderedCommGroup _ rfl (fun _ _ => rfl) (fun _ => rfl)
778-
(fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) fun _ _ => rfl
786+
{ Subtype.coe_injective.linearOrderedCommGroup ((↑) : H → G) rfl (fun _ _ => rfl) (fun _ => rfl)
787+
(fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) (fun _ _ => rfl) fun _ _ => rfl with
788+
toOrderedCommGroup := H.toOrderedCommGroup }
779789
#align subgroup.to_linear_ordered_comm_group Subgroup.toLinearOrderedCommGroup
780790
#align add_subgroup.to_linear_ordered_add_comm_group AddSubgroup.toLinearOrderedAddCommGroup
781791

0 commit comments

Comments
 (0)