Group structures on the multiplicative and additive opposites #
Additive structures on αᵐᵒᵖ
#
Equations
Equations
Equations
Multiplicative structures on αᵐᵒᵖ
#
We also generate additive structures on αᵃᵒᵖ
using to_additive
Equations
- add_opposite.add_semigroup α = {add := has_add.add (add_opposite.has_add α), add_assoc := _}
Equations
- mul_opposite.semigroup α = {mul := has_mul.mul (mul_opposite.has_mul α), mul_assoc := _}
Equations
- mul_opposite.left_cancel_semigroup α = {mul := semigroup.mul (mul_opposite.semigroup α), mul_assoc := _, mul_left_cancel := _}
Equations
- add_opposite.left_cancel_add_semigroup α = {add := add_semigroup.add (add_opposite.add_semigroup α), add_assoc := _, add_left_cancel := _}
Equations
- mul_opposite.right_cancel_semigroup α = {mul := semigroup.mul (mul_opposite.semigroup α), mul_assoc := _, mul_right_cancel := _}
Equations
- add_opposite.right_cancel_add_semigroup α = {add := add_semigroup.add (add_opposite.add_semigroup α), add_assoc := _, add_right_cancel := _}
Equations
- mul_opposite.comm_semigroup α = {mul := semigroup.mul (mul_opposite.semigroup α), mul_assoc := _, mul_comm := _}
Equations
- add_opposite.add_comm_semigroup α = {add := add_semigroup.add (add_opposite.add_semigroup α), add_assoc := _, add_comm := _}
Equations
- mul_opposite.mul_one_class α = {one := 1, mul := has_mul.mul (mul_opposite.has_mul α), one_mul := _, mul_one := _}
Equations
- add_opposite.add_zero_class α = {zero := 0, add := has_add.add (add_opposite.has_add α), zero_add := _, add_zero := _}
Equations
- mul_opposite.monoid α = {mul := semigroup.mul (mul_opposite.semigroup α), mul_assoc := _, one := mul_one_class.one (mul_opposite.mul_one_class α), one_mul := _, mul_one := _, npow := λ (n : ℕ) (x : αᵐᵒᵖ), mul_opposite.op (mul_opposite.unop x ^ n), npow_zero' := _, npow_succ' := _}
Equations
- add_opposite.add_monoid α = {add := add_semigroup.add (add_opposite.add_semigroup α), add_assoc := _, zero := add_zero_class.zero (add_opposite.add_zero_class α), zero_add := _, add_zero := _, nsmul := λ (n : ℕ) (x : αᵃᵒᵖ), add_opposite.op (n • add_opposite.unop x), nsmul_zero' := _, nsmul_succ' := _}
Equations
- mul_opposite.left_cancel_monoid α = {mul := left_cancel_semigroup.mul (mul_opposite.left_cancel_semigroup α), mul_assoc := _, mul_left_cancel := _, one := monoid.one (mul_opposite.monoid α), one_mul := _, mul_one := _, npow := monoid.npow (mul_opposite.monoid α), npow_zero' := _, npow_succ' := _}
Equations
- add_opposite.left_cancel_add_monoid α = {add := add_left_cancel_semigroup.add (add_opposite.left_cancel_add_semigroup α), add_assoc := _, add_left_cancel := _, zero := add_monoid.zero (add_opposite.add_monoid α), zero_add := _, add_zero := _, nsmul := add_monoid.nsmul (add_opposite.add_monoid α), nsmul_zero' := _, nsmul_succ' := _}
Equations
- add_opposite.right_cancel_add_monoid α = {add := add_right_cancel_semigroup.add (add_opposite.right_cancel_add_semigroup α), add_assoc := _, add_right_cancel := _, zero := add_monoid.zero (add_opposite.add_monoid α), zero_add := _, add_zero := _, nsmul := add_monoid.nsmul (add_opposite.add_monoid α), nsmul_zero' := _, nsmul_succ' := _}
Equations
- mul_opposite.right_cancel_monoid α = {mul := right_cancel_semigroup.mul (mul_opposite.right_cancel_semigroup α), mul_assoc := _, mul_right_cancel := _, one := monoid.one (mul_opposite.monoid α), one_mul := _, mul_one := _, npow := monoid.npow (mul_opposite.monoid α), npow_zero' := _, npow_succ' := _}
Equations
- add_opposite.cancel_add_monoid α = {add := add_right_cancel_monoid.add (add_opposite.right_cancel_add_monoid α), add_assoc := _, add_left_cancel := _, zero := add_right_cancel_monoid.zero (add_opposite.right_cancel_add_monoid α), zero_add := _, add_zero := _, nsmul := add_right_cancel_monoid.nsmul (add_opposite.right_cancel_add_monoid α), nsmul_zero' := _, nsmul_succ' := _, add_right_cancel := _}
Equations
- mul_opposite.cancel_monoid α = {mul := right_cancel_monoid.mul (mul_opposite.right_cancel_monoid α), mul_assoc := _, mul_left_cancel := _, one := right_cancel_monoid.one (mul_opposite.right_cancel_monoid α), one_mul := _, mul_one := _, npow := right_cancel_monoid.npow (mul_opposite.right_cancel_monoid α), npow_zero' := _, npow_succ' := _, mul_right_cancel := _}
Equations
- add_opposite.add_comm_monoid α = {add := add_monoid.add (add_opposite.add_monoid α), add_assoc := _, zero := add_monoid.zero (add_opposite.add_monoid α), zero_add := _, add_zero := _, nsmul := add_monoid.nsmul (add_opposite.add_monoid α), nsmul_zero' := _, nsmul_succ' := _, add_comm := _}
Equations
- mul_opposite.comm_monoid α = {mul := monoid.mul (mul_opposite.monoid α), mul_assoc := _, one := monoid.one (mul_opposite.monoid α), one_mul := _, mul_one := _, npow := monoid.npow (mul_opposite.monoid α), npow_zero' := _, npow_succ' := _, mul_comm := _}
Equations
- mul_opposite.cancel_comm_monoid α = {mul := cancel_monoid.mul (mul_opposite.cancel_monoid α), mul_assoc := _, mul_left_cancel := _, one := cancel_monoid.one (mul_opposite.cancel_monoid α), one_mul := _, mul_one := _, npow := cancel_monoid.npow (mul_opposite.cancel_monoid α), npow_zero' := _, npow_succ' := _, mul_comm := _}
Equations
- add_opposite.cancel_add_comm_monoid α = {add := add_cancel_monoid.add (add_opposite.cancel_add_monoid α), add_assoc := _, add_left_cancel := _, zero := add_cancel_monoid.zero (add_opposite.cancel_add_monoid α), zero_add := _, add_zero := _, nsmul := add_cancel_monoid.nsmul (add_opposite.cancel_add_monoid α), nsmul_zero' := _, nsmul_succ' := _, add_comm := _}
Equations
- add_opposite.sub_neg_add_monoid α = {add := add_monoid.add (add_opposite.add_monoid α), add_assoc := _, zero := add_monoid.zero (add_opposite.add_monoid α), zero_add := _, add_zero := _, nsmul := add_monoid.nsmul (add_opposite.add_monoid α), nsmul_zero' := _, nsmul_succ' := _, neg := has_neg.neg (add_opposite.has_neg α), sub := λ (a b : αᵃᵒᵖ), add_monoid.add a (-b), sub_eq_add_neg := _, zsmul := λ (n : ℤ) (x : αᵃᵒᵖ), add_opposite.op (n • add_opposite.unop x), zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _}
Equations
- mul_opposite.div_inv_monoid α = {mul := monoid.mul (mul_opposite.monoid α), mul_assoc := _, one := monoid.one (mul_opposite.monoid α), one_mul := _, mul_one := _, npow := monoid.npow (mul_opposite.monoid α), npow_zero' := _, npow_succ' := _, inv := has_inv.inv (mul_opposite.has_inv α), div := λ (a b : αᵐᵒᵖ), monoid.mul a b⁻¹, div_eq_mul_inv := _, zpow := λ (n : ℤ) (x : αᵐᵒᵖ), mul_opposite.op (mul_opposite.unop x ^ n), zpow_zero' := _, zpow_succ' := _, zpow_neg' := _}
Equations
- mul_opposite.group α = {mul := div_inv_monoid.mul (mul_opposite.div_inv_monoid α), mul_assoc := _, one := div_inv_monoid.one (mul_opposite.div_inv_monoid α), one_mul := _, mul_one := _, npow := div_inv_monoid.npow (mul_opposite.div_inv_monoid α), npow_zero' := _, npow_succ' := _, inv := div_inv_monoid.inv (mul_opposite.div_inv_monoid α), div := div_inv_monoid.div (mul_opposite.div_inv_monoid α), div_eq_mul_inv := _, zpow := div_inv_monoid.zpow (mul_opposite.div_inv_monoid α), zpow_zero' := _, zpow_succ' := _, zpow_neg' := _, mul_left_inv := _}
Equations
- add_opposite.add_group α = {add := sub_neg_monoid.add (add_opposite.sub_neg_add_monoid α), add_assoc := _, zero := sub_neg_monoid.zero (add_opposite.sub_neg_add_monoid α), zero_add := _, add_zero := _, nsmul := sub_neg_monoid.nsmul (add_opposite.sub_neg_add_monoid α), nsmul_zero' := _, nsmul_succ' := _, neg := sub_neg_monoid.neg (add_opposite.sub_neg_add_monoid α), sub := sub_neg_monoid.sub (add_opposite.sub_neg_add_monoid α), sub_eq_add_neg := _, zsmul := sub_neg_monoid.zsmul (add_opposite.sub_neg_add_monoid α), zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _}
Equations
- mul_opposite.comm_group α = {mul := group.mul (mul_opposite.group α), mul_assoc := _, one := group.one (mul_opposite.group α), one_mul := _, mul_one := _, npow := group.npow (mul_opposite.group α), npow_zero' := _, npow_succ' := _, inv := group.inv (mul_opposite.group α), div := group.div (mul_opposite.group α), div_eq_mul_inv := _, zpow := group.zpow (mul_opposite.group α), zpow_zero' := _, zpow_succ' := _, zpow_neg' := _, mul_left_inv := _, mul_comm := _}
Equations
- add_opposite.add_comm_group α = {add := add_group.add (add_opposite.add_group α), add_assoc := _, zero := add_group.zero (add_opposite.add_group α), zero_add := _, add_zero := _, nsmul := add_group.nsmul (add_opposite.add_group α), nsmul_zero' := _, nsmul_succ' := _, neg := add_group.neg (add_opposite.add_group α), sub := add_group.sub (add_opposite.add_group α), sub_eq_add_neg := _, zsmul := add_group.zsmul (add_opposite.add_group α), zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _, add_comm := _}
The function mul_opposite.op
is an additive equivalence.
Equations
- mul_opposite.op_add_equiv = {to_fun := mul_opposite.op_equiv.to_fun, inv_fun := mul_opposite.op_equiv.inv_fun, left_inv := _, right_inv := _, map_add' := _}
Multiplicative structures on αᵃᵒᵖ
#
Equations
- add_opposite.has_pow α = {pow := λ (a : αᵃᵒᵖ) (b : β), add_opposite.op (add_opposite.unop a ^ b)}
Equations
Equations
Equations
The function add_opposite.op
is a multiplicative equivalence.
Equations
- add_opposite.op_mul_equiv = {to_fun := add_opposite.op_equiv.to_fun, inv_fun := add_opposite.op_equiv.inv_fun, left_inv := _, right_inv := _, map_mul' := _}
Negation on an additive group is an add_equiv
to the opposite group. When G
is commutative, there is add_equiv.inv
.
Equations
- add_equiv.neg' G = {to_fun := (equiv.trans (equiv.neg G) add_opposite.op_equiv).to_fun, inv_fun := (equiv.trans (equiv.neg G) add_opposite.op_equiv).inv_fun, left_inv := _, right_inv := _, map_add' := _}
Inversion on a group is a mul_equiv
to the opposite group. When G
is commutative, there is
mul_equiv.inv
.
Equations
- mul_equiv.inv' G = {to_fun := (equiv.trans (equiv.inv G) mul_opposite.op_equiv).to_fun, inv_fun := (equiv.trans (equiv.inv G) mul_opposite.op_equiv).inv_fun, left_inv := _, right_inv := _, map_mul' := _}
An additive monoid homomorphism f : M →+ N
such that f x
additively commutes
with f y
for all x, y
defines an additive monoid homomorphism to Sᵃᵒᵖ
.
Equations
- f.to_opposite hf = {to_fun := add_opposite.op ∘ ⇑f, map_zero' := _, map_add' := _}
A monoid homomorphism f : M →* N
such that f x
commutes with f y
for all x, y
defines
a monoid homomorphism to Nᵐᵒᵖ
.
Equations
- f.to_opposite hf = {to_fun := mul_opposite.op ∘ ⇑f, map_one' := _, map_mul' := _}
An additive monoid homomorphism f : M →+ N
such that f x
additively commutes
with f y
for all x
, y
defines an additive monoid homomorphism from Mᵃᵒᵖ
.
Equations
- f.from_opposite hf = {to_fun := ⇑f ∘ add_opposite.unop, map_zero' := _, map_add' := _}
A monoid homomorphism f : M →* N
such that f x
commutes with f y
for all x, y
defines
a monoid homomorphism from Mᵐᵒᵖ
.
Equations
- f.from_opposite hf = {to_fun := ⇑f ∘ mul_opposite.unop, map_one' := _, map_mul' := _}
The additive units of the additive opposites are equivalent to the additive opposites of the additive units.
Equations
- add_units.op_equiv = {to_fun := λ (u : add_units Mᵃᵒᵖ), add_opposite.op {val := add_opposite.unop ↑u, neg := add_opposite.unop (↑-u), val_neg := _, neg_val := _}, inv_fun := add_opposite.rec (λ (u : add_units M), {val := add_opposite.op ↑u, neg := add_opposite.op (↑-u), val_neg := _, neg_val := _}), left_inv := _, right_inv := _, map_add' := _}
The units of the opposites are equivalent to the opposites of the units.
Equations
- units.op_equiv = {to_fun := λ (u : Mᵐᵒᵖˣ), mul_opposite.op {val := mul_opposite.unop ↑u, inv := mul_opposite.unop ↑u⁻¹, val_inv := _, inv_val := _}, inv_fun := mul_opposite.rec (λ (u : Mˣ), {val := mul_opposite.op ↑u, inv := mul_opposite.op ↑u⁻¹, val_inv := _, inv_val := _}), left_inv := _, right_inv := _, map_mul' := _}
An additive monoid homomorphism M →+ N
can equivalently be viewed as an
additive monoid homomorphism Mᵃᵒᵖ →+ Nᵃᵒᵖ
. This is the action of the (fully faithful)
ᵃᵒᵖ
-functor on morphisms.
A monoid homomorphism M →* N
can equivalently be viewed as a monoid homomorphism
Mᵐᵒᵖ →* Nᵐᵒᵖ
. This is the action of the (fully faithful) ᵐᵒᵖ
-functor on morphisms.
The 'unopposite' of an additive monoid homomorphism Mᵃᵒᵖ →+ Nᵃᵒᵖ
. Inverse to
add_monoid_hom.op
.
Equations
The 'unopposite' of a monoid homomorphism Mᵐᵒᵖ →* Nᵐᵒᵖ
. Inverse to monoid_hom.op
.
Equations
An additive homomorphism M →+ N
can equivalently be viewed as an additive homomorphism
Mᵐᵒᵖ →+ Nᵐᵒᵖ
. This is the action of the (fully faithful) ᵐᵒᵖ
-functor on morphisms.
The 'unopposite' of an additive monoid hom αᵐᵒᵖ →+ βᵐᵒᵖ
. Inverse to
add_monoid_hom.mul_op
.
Equations
A iso α ≃+ β
can equivalently be viewed as an iso αᵐᵒᵖ ≃+ βᵐᵒᵖ
.
Equations
- add_equiv.mul_op = {to_fun := λ (f : α ≃+ β), mul_opposite.op_add_equiv.symm.trans (f.trans mul_opposite.op_add_equiv), inv_fun := λ (f : αᵐᵒᵖ ≃+ βᵐᵒᵖ), mul_opposite.op_add_equiv.trans (f.trans mul_opposite.op_add_equiv.symm), left_inv := _, right_inv := _}
The 'unopposite' of an iso αᵐᵒᵖ ≃+ βᵐᵒᵖ
. Inverse to add_equiv.mul_op
.
Equations
A iso α ≃+ β
can equivalently be viewed as an iso αᵃᵒᵖ ≃+ βᵃᵒᵖ
.
Equations
- add_equiv.op = {to_fun := λ (f : α ≃+ β), {to_fun := add_opposite.op ∘ ⇑f ∘ add_opposite.unop, inv_fun := add_opposite.op ∘ ⇑(f.symm) ∘ add_opposite.unop, left_inv := _, right_inv := _, map_add' := _}, inv_fun := λ (f : αᵃᵒᵖ ≃+ βᵃᵒᵖ), {to_fun := add_opposite.unop ∘ ⇑f ∘ add_opposite.op, inv_fun := add_opposite.unop ∘ ⇑(f.symm) ∘ add_opposite.op, left_inv := _, right_inv := _, map_add' := _}, left_inv := _, right_inv := _}
A iso α ≃* β
can equivalently be viewed as an iso αᵐᵒᵖ ≃* βᵐᵒᵖ
.
Equations
- mul_equiv.op = {to_fun := λ (f : α ≃* β), {to_fun := mul_opposite.op ∘ ⇑f ∘ mul_opposite.unop, inv_fun := mul_opposite.op ∘ ⇑(f.symm) ∘ mul_opposite.unop, left_inv := _, right_inv := _, map_mul' := _}, inv_fun := λ (f : αᵐᵒᵖ ≃* βᵐᵒᵖ), {to_fun := mul_opposite.unop ∘ ⇑f ∘ mul_opposite.op, inv_fun := mul_opposite.unop ∘ ⇑(f.symm) ∘ mul_opposite.op, left_inv := _, right_inv := _, map_mul' := _}, left_inv := _, right_inv := _}
This ext lemma change equalities on αᵐᵒᵖ →+ β
to equalities on α →+ β
.
This is useful because there are often ext lemmas for specific α
s that will apply
to an equality of α →+ β
such as finsupp.add_hom_ext'
.