@@ -8,6 +8,7 @@ import Mathlib.Algebra.Group.Action.Faithful
8
8
import Mathlib.Algebra.Group.Nat.Defs
9
9
import Mathlib.Algebra.Group.Prod
10
10
import Mathlib.Algebra.Group.Submonoid.Basic
11
+ import Mathlib.Algebra.Group.Submonoid.MulAction
11
12
import Mathlib.Algebra.Group.TypeTags.Basic
12
13
13
14
/-!
@@ -973,75 +974,10 @@ theorem Submonoid.equivMapOfInjective_coe_mulEquiv (e : M ≃* N) :
973
974
ext
974
975
rfl
975
976
976
- section Actions
977
-
978
- /-! ### Actions by `Submonoid`s
979
-
980
- These instances transfer the action by an element `m : M` of a monoid `M` written as `m • a` onto
981
- the action by an element `s : S` of a submonoid `S : Submonoid M` such that `s • a = (s : M) • a`.
982
-
983
- These instances work particularly well in conjunction with `Monoid.toMulAction`, enabling
984
- `s • m` as an alias for `↑s * m`.
985
- -/
986
-
987
-
988
- namespace Submonoid
989
-
990
- variable {M' : Type *} {α β : Type *}
991
-
992
- section MulOneClass
993
-
994
- variable [MulOneClass M']
995
-
996
- @[to_additive]
997
- instance smul [SMul M' α] (S : Submonoid M') : SMul S α :=
998
- SMul.comp _ S.subtype
999
-
1000
- @[to_additive]
1001
- instance smulCommClass_left [SMul M' β] [SMul α β] [SMulCommClass M' α β]
1002
- (S : Submonoid M') : SMulCommClass S α β :=
1003
- ⟨fun a _ _ => smul_comm (a : M') _ _⟩
1004
-
1005
- @[to_additive]
1006
- instance smulCommClass_right [SMul α β] [SMul M' β] [SMulCommClass α M' β]
1007
- (S : Submonoid M') : SMulCommClass α S β :=
1008
- ⟨fun a s => smul_comm a (s : M')⟩
1009
-
1010
- /-- Note that this provides `IsScalarTower S M' M'` which is needed by `SMulMulAssoc`. -/
1011
- instance isScalarTower [SMul α β] [SMul M' α] [SMul M' β] [IsScalarTower M' α β]
1012
- (S : Submonoid M') :
1013
- IsScalarTower S α β :=
1014
- ⟨fun a => smul_assoc (a : M')⟩
1015
-
1016
- section SMul
1017
- variable [SMul M' α] {S : Submonoid M'}
1018
-
1019
- @[to_additive] lemma smul_def (g : S) (a : α) : g • a = (g : M') • a := rfl
1020
-
1021
- @[to_additive (attr := simp)]
1022
- lemma mk_smul (g : M') (hg : g ∈ S) (a : α) : (⟨g, hg⟩ : S) • a = g • a := rfl
1023
-
1024
- instance faithfulSMul [FaithfulSMul M' α] : FaithfulSMul S α :=
977
+ instance Submonoid.faithfulSMul {M' α : Type *} [MulOneClass M'] [SMul M' α] {S : Submonoid M'}
978
+ [FaithfulSMul M' α] : FaithfulSMul S α :=
1025
979
⟨fun h => Subtype.ext <| eq_of_smul_eq_smul h⟩
1026
980
1027
- end SMul
1028
- end MulOneClass
1029
-
1030
- variable [Monoid M']
1031
-
1032
- /-- The action by a submonoid is the action by the underlying monoid. -/
1033
- @[to_additive
1034
- "The additive action by an `AddSubmonoid` is the action by the underlying `AddMonoid`. " ]
1035
- instance mulAction [MulAction M' α] (S : Submonoid M') : MulAction S α :=
1036
- MulAction.compHom _ S.subtype
1037
-
1038
- example {S : Submonoid M'} : IsScalarTower S M' M' := by infer_instance
1039
-
1040
-
1041
- end Submonoid
1042
-
1043
- end Actions
1044
-
1045
981
section Units
1046
982
1047
983
namespace Submonoid
0 commit comments