Type tags that turn additive structures into multiplicative, and vice versa
We define two type tags:
additive α
: turns any multiplicative structure onα
into the corresponding additive structure onadditive α
;multiplicative α
: turns any additive structure onα
into the corresponding multiplicative structure onmultiplicative α
.
We also define instances additive.*
and multiplicative.*
that actually transfer the structures.
If α
carries some additive structure, then multiplicative α
carries the corresponding
multiplicative structure.
Equations
- multiplicative α = α
Reinterpret x : α
as an element of additive α
.
Equations
- additive.of_mul x = x
Reinterpret x : α
as an element of multiplicative α
.
Equations
Reinterpret x : multiplicative α
as an element of α
.
@[simp]
@[instance]
Equations
@[instance]
Equations
@[instance]
Equations
- additive.has_add = {add := λ (x y : additive α), additive.of_mul (x.to_mul * y.to_mul)}
@[instance]
Equations
- multiplicative.has_mul = {mul := λ (x y : multiplicative α), multiplicative.of_add (x.to_add + y.to_add)}
@[simp]
@[simp]
@[simp]
theorem
of_mul_mul
{α : Type u}
[has_mul α]
(x y : α) :
additive.of_mul (x * y) = additive.of_mul x + additive.of_mul y
@[instance]
Equations
@[instance]
Equations
@[instance]
Equations
- additive.add_comm_semigroup = {add := add_semigroup.add additive.add_semigroup, add_assoc := _, add_comm := _}
@[instance]
Equations
- multiplicative.comm_semigroup = {mul := semigroup.mul multiplicative.semigroup, mul_assoc := _, mul_comm := _}
@[instance]
Equations
@[instance]
Equations
@[instance]
Equations
@[instance]
Equations
@[instance]
Equations
@[instance]
Equations
@[instance]
Equations
- additive.add_monoid = {add := add_semigroup.add additive.add_semigroup, add_assoc := _, zero := 0, zero_add := _, add_zero := _}
@[instance]
Equations
- multiplicative.monoid = {mul := semigroup.mul multiplicative.semigroup, mul_assoc := _, one := 1, one_mul := _, mul_one := _}
@[instance]
Equations
- additive.add_comm_monoid = {add := add_monoid.add additive.add_monoid, add_assoc := _, zero := add_monoid.zero additive.add_monoid, zero_add := _, add_zero := _, add_comm := _}
@[instance]
Equations
- multiplicative.comm_monoid = {mul := monoid.mul multiplicative.monoid, mul_assoc := _, one := monoid.one multiplicative.monoid, one_mul := _, mul_one := _, mul_comm := _}
@[instance]
Equations
- additive.has_neg = {neg := λ (x : additive α), multiplicative.of_add (x.to_mul)⁻¹}
@[simp]
@[instance]
Equations
- multiplicative.has_inv = {inv := λ (x : multiplicative α), additive.of_mul (-x.to_add)}
@[simp]
@[simp]
@[instance]
Equations
- additive.add_group = {add := add_monoid.add additive.add_monoid, add_assoc := _, zero := add_monoid.zero additive.add_monoid, zero_add := _, add_zero := _, neg := has_neg.neg additive.has_neg, add_left_neg := _}
@[instance]
Equations
- multiplicative.group = {mul := monoid.mul multiplicative.monoid, mul_assoc := _, one := monoid.one multiplicative.monoid, one_mul := _, mul_one := _, inv := has_inv.inv multiplicative.has_inv, mul_left_inv := _}
@[instance]
Equations
- additive.add_comm_group = {add := add_group.add additive.add_group, add_assoc := _, zero := add_group.zero additive.add_group, zero_add := _, add_zero := _, neg := add_group.neg additive.add_group, add_left_neg := _, add_comm := _}
@[instance]
Equations
- multiplicative.comm_group = {mul := group.mul multiplicative.group, mul_assoc := _, one := group.one multiplicative.group, one_mul := _, mul_one := _, inv := group.inv multiplicative.group, mul_left_inv := _, mul_comm := _}
def
add_monoid_hom.to_multiplicative
{α : Type u}
{β : Type v}
[add_monoid α]
[add_monoid β] :
(α →+ β) → multiplicative α →* multiplicative β
Reinterpret f : α →+ β
as multiplicative α →* multiplicative β
.
def
add_monoid_hom.to_multiplicative'
{α : Type u}
{β : Type v}
[monoid α]
[add_monoid β] :
(additive α →+ β) → α →* multiplicative β
Reinterpret f : additive α →+ β
as α →* multiplicative β
.
def
monoid_hom.to_additive'
{α : Type u}
{β : Type v}
[monoid α]
[add_monoid β] :
(α →* multiplicative β) → additive α →+ β
Reinterpret f : α →* multiplicative β
as additive α →+ β
.