Group structures on the multiplicative and additive opposites #
Additive structures on αᵐᵒᵖ
#
Equations
- AddOpposite.natCast α = { natCast := fun (n : ℕ) => AddOpposite.op ↑n }
Equations
- MulOpposite.natCast α = { natCast := fun (n : ℕ) => MulOpposite.op ↑n }
Equations
- AddOpposite.intCast α = { intCast := fun (n : ℤ) => AddOpposite.op ↑n }
Equations
- MulOpposite.intCast α = { intCast := fun (n : ℤ) => MulOpposite.op ↑n }
Equations
- MulOpposite.addSemigroup α = Function.Injective.addSemigroup MulOpposite.unop ⋯ ⋯
Equations
- MulOpposite.addLeftCancelSemigroup α = Function.Injective.addLeftCancelSemigroup MulOpposite.unop ⋯ ⋯
Equations
- MulOpposite.addRightCancelSemigroup α = Function.Injective.addRightCancelSemigroup MulOpposite.unop ⋯ ⋯
Equations
- MulOpposite.addCommSemigroup α = Function.Injective.addCommSemigroup MulOpposite.unop ⋯ ⋯
Equations
- MulOpposite.addZeroClass α = Function.Injective.addZeroClass MulOpposite.unop ⋯ ⋯ ⋯
Equations
- MulOpposite.addMonoid α = Function.Injective.addMonoid MulOpposite.unop ⋯ ⋯ ⋯ ⋯
Equations
- MulOpposite.addCommMonoid α = Function.Injective.addCommMonoid MulOpposite.unop ⋯ ⋯ ⋯ ⋯
Equations
- MulOpposite.addMonoidWithOne α = let __src := MulOpposite.addMonoid α; let __src_1 := MulOpposite.one α; let __src_2 := MulOpposite.natCast α; AddMonoidWithOne.mk ⋯ ⋯
Equations
- MulOpposite.addCommMonoidWithOne α = let __src := MulOpposite.addMonoidWithOne α; let __src_1 := MulOpposite.addCommMonoid α; AddCommMonoidWithOne.mk ⋯
Equations
- MulOpposite.subNegMonoid α = Function.Injective.subNegMonoid MulOpposite.unop ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- MulOpposite.addGroup α = Function.Injective.addGroup MulOpposite.unop ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- MulOpposite.addCommGroup α = Function.Injective.addCommGroup MulOpposite.unop ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- MulOpposite.addGroupWithOne α = let __src := MulOpposite.addMonoidWithOne α; let __src_1 := MulOpposite.addGroup α; AddGroupWithOne.mk ⋯ SubNegMonoid.zsmul ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- MulOpposite.addCommGroupWithOne α = let __src := MulOpposite.addGroupWithOne α; let __src_1 := MulOpposite.addCommGroup α; AddCommGroupWithOne.mk ⋯ ⋯ ⋯ ⋯
Multiplicative structures on αᵐᵒᵖ
#
We also generate additive structures on αᵃᵒᵖ
using to_additive
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
- AddOpposite.addZeroClass α = let __src := AddOpposite.add α; let __src_1 := AddOpposite.zero α; AddZeroClass.mk ⋯ ⋯
Equations
- MulOpposite.mulOneClass α = let __src := MulOpposite.mul α; let __src_1 := MulOpposite.one α; MulOneClass.mk ⋯ ⋯
Equations
- MulOpposite.monoid α = let __src := MulOpposite.semigroup α; let __src_1 := MulOpposite.mulOneClass α; Monoid.mk ⋯ ⋯ (fun (n : ℕ) (x : αᵐᵒᵖ) => MulOpposite.op (MulOpposite.unop x ^ n)) ⋯ ⋯
Equations
- AddOpposite.addLeftCancelMonoid α = let __src := AddOpposite.addLeftCancelSemigroup α; let __src_1 := AddOpposite.addMonoid α; AddLeftCancelMonoid.mk ⋯ ⋯ AddMonoid.nsmul ⋯ ⋯
Equations
- MulOpposite.leftCancelMonoid α = let __src := MulOpposite.leftCancelSemigroup α; let __src_1 := MulOpposite.monoid α; LeftCancelMonoid.mk ⋯ ⋯ Monoid.npow ⋯ ⋯
Equations
- AddOpposite.addRightCancelMonoid α = let __src := AddOpposite.addRightCancelSemigroup α; let __src_1 := AddOpposite.addMonoid α; AddRightCancelMonoid.mk ⋯ ⋯ AddMonoid.nsmul ⋯ ⋯
Equations
- MulOpposite.rightCancelMonoid α = let __src := MulOpposite.rightCancelSemigroup α; let __src_1 := MulOpposite.monoid α; RightCancelMonoid.mk ⋯ ⋯ Monoid.npow ⋯ ⋯
Equations
- AddOpposite.addCancelMonoid α = let __src := AddOpposite.addRightCancelMonoid α; let __src_1 := AddOpposite.addLeftCancelMonoid α; AddCancelMonoid.mk ⋯
Equations
- MulOpposite.cancelMonoid α = let __src := MulOpposite.rightCancelMonoid α; let __src_1 := MulOpposite.leftCancelMonoid α; CancelMonoid.mk ⋯
Equations
- AddOpposite.addCommMonoid α = let __src := AddOpposite.addMonoid α; let __src_1 := AddOpposite.addCommSemigroup α; AddCommMonoid.mk ⋯
Equations
- MulOpposite.commMonoid α = let __src := MulOpposite.monoid α; let __src_1 := MulOpposite.commSemigroup α; CommMonoid.mk ⋯
Equations
- AddOpposite.addCancelCommMonoid α = let __src := AddOpposite.addCancelMonoid α; let __src_1 := AddOpposite.addCommMonoid α; AddCancelCommMonoid.mk ⋯
Equations
- MulOpposite.cancelCommMonoid α = let __src := MulOpposite.cancelMonoid α; let __src_1 := MulOpposite.commMonoid α; CancelCommMonoid.mk ⋯
Equations
- One or more equations did not get rendered due to their size.
Equations
- MulOpposite.divInvMonoid α = let __src := MulOpposite.monoid α; let __src_1 := MulOpposite.inv α; DivInvMonoid.mk ⋯ (fun (n : ℤ) (x : αᵐᵒᵖ) => MulOpposite.op (MulOpposite.unop x ^ n)) ⋯ ⋯ ⋯
Equations
- AddOpposite.subtractionMonoid α = let __src := AddOpposite.subNegMonoid α; let __src_1 := AddOpposite.involutiveNeg α; SubtractionMonoid.mk ⋯ ⋯ ⋯
Equations
- MulOpposite.divisionMonoid α = let __src := MulOpposite.divInvMonoid α; let __src_1 := MulOpposite.involutiveInv α; DivisionMonoid.mk ⋯ ⋯ ⋯
Equations
- AddOpposite.subtractionCommMonoid α = let __src := AddOpposite.subtractionMonoid α; let __src_1 := AddOpposite.addCommSemigroup α; SubtractionCommMonoid.mk ⋯
Equations
- MulOpposite.divisionCommMonoid α = let __src := MulOpposite.divisionMonoid α; let __src_1 := MulOpposite.commSemigroup α; DivisionCommMonoid.mk ⋯
Equations
- AddOpposite.addGroup α = let __src := AddOpposite.subNegMonoid α; AddGroup.mk ⋯
Equations
- MulOpposite.group α = let __src := MulOpposite.divInvMonoid α; Group.mk ⋯
Equations
- AddOpposite.addCommGroup α = let __src := AddOpposite.addGroup α; let __src_1 := AddOpposite.addCommMonoid α; AddCommGroup.mk ⋯
Equations
- MulOpposite.commGroup α = let __src := MulOpposite.group α; let __src_1 := MulOpposite.commMonoid α; CommGroup.mk ⋯
The function MulOpposite.op
is an additive equivalence.
Equations
- MulOpposite.opAddEquiv = let __src := MulOpposite.opEquiv; { toEquiv := __src, map_add' := ⋯ }
Instances For
Multiplicative structures on αᵃᵒᵖ
#
Equations
- AddOpposite.semigroup α = Function.Injective.semigroup AddOpposite.unop ⋯ ⋯
Equations
- AddOpposite.leftCancelSemigroup α = Function.Injective.leftCancelSemigroup AddOpposite.unop ⋯ ⋯
Equations
- AddOpposite.rightCancelSemigroup α = Function.Injective.rightCancelSemigroup AddOpposite.unop ⋯ ⋯
Equations
- AddOpposite.commSemigroup α = Function.Injective.commSemigroup AddOpposite.unop ⋯ ⋯
Equations
- AddOpposite.mulOneClass α = Function.Injective.mulOneClass AddOpposite.unop ⋯ ⋯ ⋯
Equations
- AddOpposite.pow α = { pow := fun (a : αᵃᵒᵖ) (b : β) => AddOpposite.op (AddOpposite.unop a ^ b) }
Equations
- AddOpposite.monoid α = Function.Injective.monoid AddOpposite.unop ⋯ ⋯ ⋯ ⋯
Equations
- AddOpposite.commMonoid α = Function.Injective.commMonoid AddOpposite.unop ⋯ ⋯ ⋯ ⋯
Equations
- AddOpposite.divInvMonoid α = Function.Injective.divInvMonoid AddOpposite.unop ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- AddOpposite.group α = Function.Injective.group AddOpposite.unop ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- AddOpposite.commGroup α = Function.Injective.commGroup AddOpposite.unop ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- AddOpposite.addCommMonoidWithOne α = let __src := AddOpposite.addCommMonoid α; let __src_1 := AddOpposite.one; let __src_2 := AddOpposite.natCast α; AddCommMonoidWithOne.mk ⋯
Equations
- One or more equations did not get rendered due to their size.
The function AddOpposite.op
is a multiplicative equivalence.
Equations
- AddOpposite.opMulEquiv = let __src := AddOpposite.opEquiv; { toEquiv := __src, map_mul' := ⋯ }
Instances For
Negation on an additive group is an AddEquiv
to the opposite group. When G
is commutative, there is AddEquiv.inv
.
Equations
- AddEquiv.neg' G = let __src := (Equiv.neg G).trans AddOpposite.opEquiv; { toEquiv := __src, map_add' := ⋯ }
Instances For
Inversion on a group is a MulEquiv
to the opposite group. When G
is commutative, there is
MulEquiv.inv
.
Equations
- MulEquiv.inv' G = let __src := (Equiv.inv G).trans MulOpposite.opEquiv; { toEquiv := __src, map_mul' := ⋯ }
Instances For
An additive semigroup homomorphism f : AddHom M N
such that f x
additively
commutes with f y
for all x, y
defines an additive semigroup homomorphism to Sᵃᵒᵖ
.
Equations
- AddHom.toOpposite f hf = { toFun := AddOpposite.op ∘ ⇑f, map_add' := ⋯ }
Instances For
A semigroup homomorphism f : M →ₙ* N
such that f x
commutes with f y
for all x, y
defines a semigroup homomorphism to Nᵐᵒᵖ
.
Equations
- MulHom.toOpposite f hf = { toFun := MulOpposite.op ∘ ⇑f, map_mul' := ⋯ }
Instances For
An additive semigroup homomorphism f : AddHom M N
such that f x
additively
commutes with f y
for all x
, y
defines an additive semigroup homomorphism from Mᵃᵒᵖ
.
Equations
- AddHom.fromOpposite f hf = { toFun := ⇑f ∘ AddOpposite.unop, map_add' := ⋯ }
Instances For
A semigroup homomorphism f : M →ₙ* N
such that f x
commutes with f y
for all x, y
defines a semigroup homomorphism from Mᵐᵒᵖ
.
Equations
- MulHom.fromOpposite f hf = { toFun := ⇑f ∘ MulOpposite.unop, map_mul' := ⋯ }
Instances For
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
- AddMonoidHom.toOpposite f hf = { toZeroHom := { toFun := AddOpposite.op ∘ ⇑f, map_zero' := ⋯ }, map_add' := ⋯ }
Instances For
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
- MonoidHom.toOpposite f hf = { toOneHom := { toFun := MulOpposite.op ∘ ⇑f, map_one' := ⋯ }, map_mul' := ⋯ }
Instances For
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
- AddMonoidHom.fromOpposite f hf = { toZeroHom := { toFun := ⇑f ∘ AddOpposite.unop, map_zero' := ⋯ }, map_add' := ⋯ }
Instances For
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
- MonoidHom.fromOpposite f hf = { toOneHom := { toFun := ⇑f ∘ MulOpposite.unop, map_one' := ⋯ }, map_mul' := ⋯ }
Instances For
A semigroup homomorphism M →ₙ* N
can equivalently be viewed as a semigroup homomorphism
Mᵐᵒᵖ →ₙ* Nᵐᵒᵖ
. This is the action of the (fully faithful) ᵐᵒᵖ
-functor on morphisms.
Equations
- One or more equations did not get rendered due to their size.
Instances For
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.
Equations
- One or more equations did not get rendered due to their size.
Instances For
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.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The 'unopposite' of an additive monoid homomorphism Mᵃᵒᵖ →+ Nᵃᵒᵖ
. Inverse to
AddMonoidHom.op
.
Equations
- AddMonoidHom.unop = AddMonoidHom.op.symm
Instances For
The 'unopposite' of a monoid homomorphism Mᵐᵒᵖ →* Nᵐᵒᵖ
. Inverse to MonoidHom.op
.
Equations
- MonoidHom.unop = MonoidHom.op.symm
Instances For
A additive monoid is isomorphic to the opposite of its opposite.
Equations
- AddEquiv.opOp M = let __spread.0 := AddOpposite.opEquiv.trans AddOpposite.opEquiv; { toEquiv := __spread.0, map_add' := ⋯ }
Instances For
A monoid is isomorphic to the opposite of its opposite.
Equations
- MulEquiv.opOp M = let __spread.0 := MulOpposite.opEquiv.trans MulOpposite.opEquiv; { toEquiv := __spread.0, map_mul' := ⋯ }
Instances For
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.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The 'unopposite' of an additive monoid hom αᵐᵒᵖ →+ βᵐᵒᵖ
. Inverse to
AddMonoidHom.mul_op
.
Equations
- AddMonoidHom.mulUnop = AddMonoidHom.mulOp.symm
Instances For
This ext lemma changes 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.addHom_ext'
.