@@ -80,11 +80,12 @@ end Monoid
80
80
end MulAction
81
81
82
82
section Arrow
83
+ variable {G A B : Type *} [DivisionMonoid G] [MulAction G A]
83
84
84
85
/-- If `G` acts on `A`, then it acts also on `A → B`, by `(g • F) a = F (g⁻¹ • a)`. -/
85
86
@[to_additive (attr := simps) arrowAddAction
86
- "If `G` acts on `A`, then it acts also on `A → B`, by `(g +ᵥ F) a = F (g⁻¹ +ᵥ a)`" ]
87
- def arrowAction {G A B : Type *} [DivisionMonoid G] [MulAction G A] : MulAction G (A → B) where
87
+ "If `G` acts on `A`, then it acts also on `A → B`, by `(g +ᵥ F) a = F (g⁻¹ +ᵥ a)`" ]
88
+ def arrowAction : MulAction G (A → B) where
88
89
smul g F a := F (g⁻¹ • a)
89
90
one_smul f := by
90
91
show (fun x => f ((1 : G)⁻¹ • x)) = f
@@ -93,6 +94,15 @@ def arrowAction {G A B : Type*} [DivisionMonoid G] [MulAction G A] : MulAction G
93
94
show (fun a => f ((x*y)⁻¹ • a)) = (fun a => f (y⁻¹ • x⁻¹ • a))
94
95
simp only [mul_smul, mul_inv_rev]
95
96
97
+ attribute [local instance] arrowAction
98
+
99
+ variable [Monoid M]
100
+
101
+ /-- When `M` is a monoid, `ArrowAction` is additionally a `MulDistribMulAction`. -/
102
+ def arrowMulDistribMulAction : MulDistribMulAction G (A → M) where
103
+ smul_one _ := rfl
104
+ smul_mul _ _ _ := rfl
105
+
96
106
end Arrow
97
107
98
108
namespace IsUnit
@@ -179,15 +189,3 @@ lemma smul_div' (r : M) (x y : A) : r • (x / y) = r • x / r • y :=
179
189
map_div (MulDistribMulAction.toMonoidHom A r) x y
180
190
181
191
end MulDistribMulAction
182
-
183
- section Arrow
184
- variable [Group G] [MulAction G A] [Monoid M]
185
-
186
- attribute [local instance] arrowAction
187
-
188
- /-- When `M` is a monoid, `ArrowAction` is additionally a `MulDistribMulAction`. -/
189
- def arrowMulDistribMulAction : MulDistribMulAction G (A → M) where
190
- smul_one _ := rfl
191
- smul_mul _ _ _ := rfl
192
-
193
- end Arrow
0 commit comments