Skip to content

Commit b52ea70

Browse files
committed
feat: MonoidHom.toAdditiveRight as a MulEquiv (#27047)
From Toric
1 parent afbe33c commit b52ea70

File tree

1 file changed

+46
-7
lines changed

1 file changed

+46
-7
lines changed

Mathlib/Algebra/Group/TypeTags/Hom.lean

Lines changed: 46 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,19 @@ Copyright (c) 2018 Mario Carneiro. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Mario Carneiro
55
-/
6-
import Mathlib.Algebra.Group.Hom.Defs
6+
import Mathlib.Algebra.Group.Equiv.Defs
7+
import Mathlib.Algebra.Group.Hom.Basic
78
import Mathlib.Algebra.Group.TypeTags.Basic
89

910
/-!
1011
# Transport algebra morphisms between additive and multiplicative types.
1112
-/
1213

13-
14-
universe u v
15-
16-
variable {α : Type u} {β : Type v}
17-
1814
open Additive (ofMul toMul)
1915
open Multiplicative (ofAdd toAdd)
2016

17+
variable {M N α β : Type*}
18+
2119
/-- Reinterpret `α →+ β` as `Multiplicative α →* Multiplicative β`. -/
2220
@[simps]
2321
def AddMonoidHom.toMultiplicative [AddZeroClass α] [AddZeroClass β] :
@@ -37,6 +35,9 @@ def AddMonoidHom.toMultiplicative [AddZeroClass α] [AddZeroClass β] :
3735
lemma AddMonoidHom.coe_toMultiplicative [AddZeroClass α] [AddZeroClass β] (f : α →+ β) :
3836
⇑(toMultiplicative f) = ofAdd ∘ f ∘ toAdd := rfl
3937

38+
@[simp]
39+
lemma AddMonoidHom.toMultiplicative_id [AddZeroClass α] : (id α).toMultiplicative = .id _ := rfl
40+
4041
/-- Reinterpret `α →* β` as `Additive α →+ Additive β`. -/
4142
@[simps]
4243
def MonoidHom.toAdditive [MulOneClass α] [MulOneClass β] :
@@ -53,9 +54,14 @@ def MonoidHom.toAdditive [MulOneClass α] [MulOneClass β] :
5354
}
5455

5556
@[simp, norm_cast]
56-
lemma MonoidHom.coe_toMultiplicative [MulOneClass α] [MulOneClass β] (f : α →* β) :
57+
lemma MonoidHom.coe_toAdditive [MulOneClass α] [MulOneClass β] (f : α →* β) :
5758
⇑(toAdditive f) = ofMul ∘ f ∘ toMul := rfl
5859

60+
@[deprecated (since := "2025-11-07")]
61+
alias MonoidHom.coe_toMultiplicative := MonoidHom.coe_toAdditive
62+
63+
@[simp] lemma MonoidHom.toAdditive_id [MulOneClass α] : (id α).toAdditive = .id _ := rfl
64+
5965
/-- Reinterpret `Additive α →+ β` as `α →* Multiplicative β`. -/
6066
@[simps]
6167
def AddMonoidHom.toMultiplicativeRight [MulOneClass α] [AddZeroClass β] :
@@ -153,3 +159,36 @@ lemma proving equality in `α →* Multiplicative β` from equality in `Additive
153159
lemma Additive.addMonoidHom_ext [MulOneClass α] [AddZeroClass β]
154160
(f g : Additive α →+ β) (h : f.toMultiplicativeRight = g.toMultiplicativeRight) : f = g :=
155161
AddMonoidHom.toMultiplicativeRight.injective h
162+
163+
section AddCommMonoid
164+
variable [AddMonoid M] [AddCommMonoid N]
165+
166+
@[simp]
167+
lemma AddMonoidHom.toMultiplicative_add (f g : M →+ N) :
168+
(f + g).toMultiplicative = f.toMultiplicative * g.toMultiplicative := rfl
169+
170+
end AddCommMonoid
171+
172+
/-- `AddMonoidHom.toMultiplicativeLeft` as an `AddEquiv`. -/
173+
def AddMonoidHom.toMultiplicativeLeftAddEquiv [AddMonoid M] [CommMonoid N] :
174+
(M →+ Additive N) ≃+ Additive (Multiplicative M →* N) where
175+
toEquiv := AddMonoidHom.toMultiplicativeLeft.trans Additive.ofMul
176+
map_add' _ _ := rfl
177+
178+
/-- `AddMonoidHom.toMultiplicativeRight` as an `AddEquiv`. -/
179+
def AddMonoidHom.toMultiplicativeRightAddEquiv [Monoid M] [AddCommMonoid N] :
180+
(Additive M →+ N) ≃+ Additive (M →* Multiplicative N) where
181+
toEquiv := AddMonoidHom.toMultiplicativeRight.trans Additive.ofMul
182+
map_add' _ _ := rfl
183+
184+
/-- `MonoidHom.toAdditiveLeft` as a `MulEquiv`. -/
185+
def MonoidHom.toAdditiveLeftMulEquiv [Monoid M] [AddCommMonoid N] :
186+
(M →* Multiplicative N) ≃* Multiplicative (Additive M →+ N) where
187+
toEquiv := MonoidHom.toAdditiveLeft.trans Multiplicative.ofAdd
188+
map_mul' _ _ := rfl
189+
190+
/-- `MonoidHom.toAdditiveRight` as a `MulEquiv`. -/
191+
def MonoidHom.toAdditiveRightMulEquiv [AddMonoid M] [CommMonoid N] :
192+
(Multiplicative M →* N) ≃* Multiplicative (M →+ Additive N) where
193+
toEquiv := MonoidHom.toAdditiveRight.trans Multiplicative.ofAdd
194+
map_mul' _ _ := rfl

0 commit comments

Comments
 (0)