Documentation

Mathlib.Algebra.Group.Opposite

Group structures on the multiplicative and additive opposites #

Additive structures on αᵐᵒᵖ #

Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
  • MulOpposite.instAddGroupWithOne = AddGroupWithOne.mk SubNegMonoid.zsmul
Equations

Multiplicative structures on αᵐᵒᵖ #

We also generate additive structures on αᵃᵒᵖ using to_additive

Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
instance MulOpposite.instMonoid {α : Type u_1} [Monoid α] :
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
instance MulOpposite.instGroup {α : Type u_1} [Group α] :
Equations
Equations
Equations
@[simp]
theorem MulOpposite.op_pow {α : Type u_1} [Monoid α] (x : α) (n : ) :
@[simp]
theorem MulOpposite.unop_pow {α : Type u_1} [Monoid α] (x : αᵐᵒᵖ) (n : ) :
@[simp]
theorem MulOpposite.op_zpow {α : Type u_1} [DivInvMonoid α] (x : α) (z : ) :
@[simp]
theorem MulOpposite.unop_zpow {α : Type u_1} [DivInvMonoid α] (x : αᵐᵒᵖ) (z : ) :
@[simp]
theorem AddOpposite.op_natCast {α : Type u_1} [NatCast α] (n : ) :
AddOpposite.op n = n
@[simp]
theorem MulOpposite.op_natCast {α : Type u_1} [NatCast α] (n : ) :
MulOpposite.op n = n
@[simp]
theorem AddOpposite.op_ofNat {α : Type u_1} [NatCast α] (n : ) [n.AtLeastTwo] :
@[simp]
theorem MulOpposite.op_ofNat {α : Type u_1} [NatCast α] (n : ) [n.AtLeastTwo] :
@[simp]
theorem AddOpposite.op_intCast {α : Type u_1} [IntCast α] (n : ) :
AddOpposite.op n = n
@[simp]
theorem MulOpposite.op_intCast {α : Type u_1} [IntCast α] (n : ) :
MulOpposite.op n = n
@[simp]
theorem AddOpposite.unop_natCast {α : Type u_1} [NatCast α] (n : ) :
@[simp]
theorem MulOpposite.unop_natCast {α : Type u_1} [NatCast α] (n : ) :
@[simp]
theorem AddOpposite.unop_ofNat {α : Type u_1} [NatCast α] (n : ) [n.AtLeastTwo] :
@[simp]
theorem MulOpposite.unop_ofNat {α : Type u_1} [NatCast α] (n : ) [n.AtLeastTwo] :
@[simp]
theorem AddOpposite.unop_intCast {α : Type u_1} [IntCast α] (n : ) :
@[simp]
theorem MulOpposite.unop_intCast {α : Type u_1} [IntCast α] (n : ) :
@[simp]
theorem AddOpposite.op_sub {α : Type u_1} [SubNegMonoid α] (x : α) (y : α) :
@[simp]
theorem MulOpposite.op_div {α : Type u_1} [DivInvMonoid α] (x : α) (y : α) :
@[simp]
theorem AddOpposite.addSemiconjBy_op {α : Type u_1} [Add α] {a : α} {x : α} {y : α} :
@[simp]
theorem MulOpposite.semiconjBy_op {α : Type u_1} [Mul α] {a : α} {x : α} {y : α} :
theorem AddSemiconjBy.op {α : Type u_1} [Add α] {a : α} {x : α} {y : α} (h : AddSemiconjBy a x y) :
theorem SemiconjBy.op {α : Type u_1} [Mul α] {a : α} {x : α} {y : α} (h : SemiconjBy a x y) :
theorem SemiconjBy.unop {α : Type u_1} [Mul α] {a : αᵐᵒᵖ} {x : αᵐᵒᵖ} {y : αᵐᵒᵖ} (h : SemiconjBy a x y) :
theorem AddCommute.op {α : Type u_1} [Add α] {x : α} {y : α} (h : AddCommute x y) :
theorem Commute.op {α : Type u_1} [Mul α] {x : α} {y : α} (h : Commute x y) :
theorem AddCommute.unop {α : Type u_1} [Add α] {x : αᵃᵒᵖ} {y : αᵃᵒᵖ} (h : AddCommute x y) :
theorem Commute.unop {α : Type u_1} [Mul α] {x : αᵐᵒᵖ} {y : αᵐᵒᵖ} (h : Commute x y) :
@[simp]
theorem AddOpposite.addCommute_op {α : Type u_1} [Add α] {x : α} {y : α} :
@[simp]
theorem MulOpposite.commute_op {α : Type u_1} [Mul α] {x : α} {y : α} :
@[simp]
@[simp]
theorem MulOpposite.opAddEquiv_symm_apply {α : Type u_1} [Add α] :
MulOpposite.opAddEquiv.symm = MulOpposite.unop
@[simp]
theorem MulOpposite.opAddEquiv_apply {α : Type u_1} [Add α] :
MulOpposite.opAddEquiv = MulOpposite.op
def MulOpposite.opAddEquiv {α : Type u_1} [Add α] :

The function MulOpposite.op is an additive equivalence.

Equations
  • MulOpposite.opAddEquiv = { toEquiv := MulOpposite.opEquiv, map_add' := }
@[simp]
theorem MulOpposite.opAddEquiv_toEquiv {α : Type u_1} [Add α] :
MulOpposite.opAddEquiv = MulOpposite.opEquiv

Multiplicative structures on αᵃᵒᵖ #

Equations
Equations
Equations
Equations
Equations
instance AddOpposite.pow {α : Type u_1} {β : Type u_2} [Pow α β] :
Equations
@[simp]
theorem AddOpposite.op_pow {α : Type u_1} {β : Type u_2} [Pow α β] (a : α) (b : β) :
@[simp]
theorem AddOpposite.unop_pow {α : Type u_1} {β : Type u_2} [Pow α β] (a : αᵃᵒᵖ) (b : β) :
instance AddOpposite.instMonoid {α : Type u_1} [Monoid α] :
Equations
Equations
Equations
instance AddOpposite.instGroup {α : Type u_1} [Group α] :
Equations
Equations
Equations
Equations
@[simp]
theorem AddOpposite.opMulEquiv_apply {α : Type u_1} [Mul α] :
AddOpposite.opMulEquiv = AddOpposite.op
@[simp]
theorem AddOpposite.opMulEquiv_symm_apply {α : Type u_1} [Mul α] :
AddOpposite.opMulEquiv.symm = AddOpposite.unop
def AddOpposite.opMulEquiv {α : Type u_1} [Mul α] :

The function AddOpposite.op is a multiplicative equivalence.

Equations
  • AddOpposite.opMulEquiv = { toEquiv := AddOpposite.opEquiv, map_mul' := }
@[simp]
theorem AddOpposite.opMulEquiv_toEquiv {α : Type u_1} [Mul α] :
AddOpposite.opMulEquiv = AddOpposite.opEquiv

Negation on an additive group is an AddEquiv to the opposite group. When G is commutative, there is AddEquiv.inv.

Equations
@[simp]
theorem AddEquiv.neg'_apply (G : Type u_2) [SubtractionMonoid G] :
(AddEquiv.neg' G) = AddOpposite.op Neg.neg
@[simp]
theorem AddEquiv.neg'_symm_apply (G : Type u_2) [SubtractionMonoid G] :
(AddEquiv.neg' G).symm = Neg.neg AddOpposite.unop
@[simp]
theorem MulEquiv.inv'_symm_apply (G : Type u_2) [DivisionMonoid G] :
(MulEquiv.inv' G).symm = Inv.inv MulOpposite.unop
@[simp]
theorem MulEquiv.inv'_apply (G : Type u_2) [DivisionMonoid G] :
(MulEquiv.inv' G) = MulOpposite.op Inv.inv

Inversion on a group is a MulEquiv to the opposite group. When G is commutative, there is MulEquiv.inv.

Equations
def AddHom.toOpposite {M : Type u_2} {N : Type u_3} [Add M] [Add N] (f : AddHom M N) (hf : ∀ (x y : M), AddCommute (f x) (f y)) :

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
  • f.toOpposite hf = { toFun := AddOpposite.op f, map_add' := }
@[simp]
theorem MulHom.toOpposite_apply {M : Type u_2} {N : Type u_3} [Mul M] [Mul N] (f : M →ₙ* N) (hf : ∀ (x y : M), Commute (f x) (f y)) :
(f.toOpposite hf) = MulOpposite.op f
@[simp]
theorem AddHom.toOpposite_apply {M : Type u_2} {N : Type u_3} [Add M] [Add N] (f : AddHom M N) (hf : ∀ (x y : M), AddCommute (f x) (f y)) :
(f.toOpposite hf) = AddOpposite.op f
def MulHom.toOpposite {M : Type u_2} {N : Type u_3} [Mul M] [Mul N] (f : M →ₙ* N) (hf : ∀ (x y : M), Commute (f x) (f y)) :

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
  • f.toOpposite hf = { toFun := MulOpposite.op f, map_mul' := }
def AddHom.fromOpposite {M : Type u_2} {N : Type u_3} [Add M] [Add N] (f : AddHom M N) (hf : ∀ (x y : M), AddCommute (f x) (f y)) :

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
  • f.fromOpposite hf = { toFun := f AddOpposite.unop, map_add' := }
@[simp]
theorem AddHom.fromOpposite_apply {M : Type u_2} {N : Type u_3} [Add M] [Add N] (f : AddHom M N) (hf : ∀ (x y : M), AddCommute (f x) (f y)) :
(f.fromOpposite hf) = f AddOpposite.unop
@[simp]
theorem MulHom.fromOpposite_apply {M : Type u_2} {N : Type u_3} [Mul M] [Mul N] (f : M →ₙ* N) (hf : ∀ (x y : M), Commute (f x) (f y)) :
(f.fromOpposite hf) = f MulOpposite.unop
def MulHom.fromOpposite {M : Type u_2} {N : Type u_3} [Mul M] [Mul N] (f : M →ₙ* N) (hf : ∀ (x y : M), Commute (f x) (f y)) :

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
  • f.fromOpposite hf = { toFun := f MulOpposite.unop, map_mul' := }
def AddMonoidHom.toOpposite {M : Type u_2} {N : Type u_3} [AddZeroClass M] [AddZeroClass N] (f : M →+ N) (hf : ∀ (x y : M), AddCommute (f x) (f y)) :

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.toOpposite hf = { toFun := AddOpposite.op f, map_zero' := , map_add' := }
@[simp]
theorem AddMonoidHom.toOpposite_apply {M : Type u_2} {N : Type u_3} [AddZeroClass M] [AddZeroClass N] (f : M →+ N) (hf : ∀ (x y : M), AddCommute (f x) (f y)) :
(f.toOpposite hf) = AddOpposite.op f
@[simp]
theorem MonoidHom.toOpposite_apply {M : Type u_2} {N : Type u_3} [MulOneClass M] [MulOneClass N] (f : M →* N) (hf : ∀ (x y : M), Commute (f x) (f y)) :
(f.toOpposite hf) = MulOpposite.op f
def MonoidHom.toOpposite {M : Type u_2} {N : Type u_3} [MulOneClass M] [MulOneClass N] (f : M →* N) (hf : ∀ (x y : M), Commute (f x) (f y)) :

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.toOpposite hf = { toFun := MulOpposite.op f, map_one' := , map_mul' := }
def AddMonoidHom.fromOpposite {M : Type u_2} {N : Type u_3} [AddZeroClass M] [AddZeroClass N] (f : M →+ N) (hf : ∀ (x y : M), AddCommute (f x) (f y)) :

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.fromOpposite hf = { toFun := f AddOpposite.unop, map_zero' := , map_add' := }
@[simp]
theorem MonoidHom.fromOpposite_apply {M : Type u_2} {N : Type u_3} [MulOneClass M] [MulOneClass N] (f : M →* N) (hf : ∀ (x y : M), Commute (f x) (f y)) :
(f.fromOpposite hf) = f MulOpposite.unop
@[simp]
theorem AddMonoidHom.fromOpposite_apply {M : Type u_2} {N : Type u_3} [AddZeroClass M] [AddZeroClass N] (f : M →+ N) (hf : ∀ (x y : M), AddCommute (f x) (f y)) :
(f.fromOpposite hf) = f AddOpposite.unop
def MonoidHom.fromOpposite {M : Type u_2} {N : Type u_3} [MulOneClass M] [MulOneClass N] (f : M →* N) (hf : ∀ (x y : M), Commute (f x) (f y)) :

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.fromOpposite hf = { toFun := f MulOpposite.unop, map_one' := , map_mul' := }

The additive units of the additive opposites are equivalent to the additive opposites of the additive units.

Equations
  • One or more equations did not get rendered due to their size.

The units of the opposites are equivalent to the opposites of the units.

Equations
  • One or more equations did not get rendered due to their size.
@[simp]
theorem AddUnits.coe_unop_opEquiv {M : Type u_2} [AddMonoid M] (u : AddUnits Mᵃᵒᵖ) :
(AddOpposite.unop (AddUnits.opEquiv u)) = AddOpposite.unop u
@[simp]
theorem Units.coe_unop_opEquiv {M : Type u_2} [Monoid M] (u : Mᵐᵒᵖˣ) :
(MulOpposite.unop (Units.opEquiv u)) = MulOpposite.unop u
@[simp]
theorem AddUnits.coe_opEquiv_symm {M : Type u_2} [AddMonoid M] (u : (AddUnits M)ᵃᵒᵖ) :
(AddUnits.opEquiv.symm u) = AddOpposite.op (AddOpposite.unop u)
@[simp]
theorem Units.coe_opEquiv_symm {M : Type u_2} [Monoid M] (u : Mˣᵐᵒᵖ) :
(Units.opEquiv.symm u) = MulOpposite.op (MulOpposite.unop u)
theorem IsAddUnit.op {M : Type u_2} [AddMonoid M] {m : M} (h : IsAddUnit m) :
theorem IsUnit.op {M : Type u_2} [Monoid M] {m : M} (h : IsUnit m) :
theorem IsUnit.unop {M : Type u_2} [Monoid M] {m : Mᵐᵒᵖ} (h : IsUnit m) :
@[simp]
theorem isAddUnit_op {M : Type u_2} [AddMonoid M] {m : M} :
@[simp]
theorem isUnit_op {M : Type u_2} [Monoid M] {m : M} :
@[simp]
theorem isUnit_unop {M : Type u_2} [Monoid M] {m : Mᵐᵒᵖ} :
def AddHom.op {M : Type u_2} {N : Type u_3} [Add M] [Add N] :

An additive semigroup homomorphism AddHom M N can equivalently be viewed as an additive semigroup homomorphism AddHom 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.
@[simp]
theorem AddHom.op_apply_apply {M : Type u_2} {N : Type u_3} [Add M] [Add N] (f : AddHom M N) :
∀ (a : Mᵃᵒᵖ), (AddHom.op f) a = (AddOpposite.op f AddOpposite.unop) a
@[simp]
theorem MulHom.op_symm_apply_apply {M : Type u_2} {N : Type u_3} [Mul M] [Mul N] (f : Mᵐᵒᵖ →ₙ* Nᵐᵒᵖ) :
∀ (a : M), (MulHom.op.symm f) a = (MulOpposite.unop f MulOpposite.op) a
@[simp]
theorem MulHom.op_apply_apply {M : Type u_2} {N : Type u_3} [Mul M] [Mul N] (f : M →ₙ* N) :
∀ (a : Mᵐᵒᵖ), (MulHom.op f) a = (MulOpposite.op f MulOpposite.unop) a
@[simp]
theorem AddHom.op_symm_apply_apply {M : Type u_2} {N : Type u_3} [Add M] [Add N] (f : AddHom Mᵃᵒᵖ Nᵃᵒᵖ) :
∀ (a : M), (AddHom.op.symm f) a = (AddOpposite.unop f AddOpposite.op) a
def MulHom.op {M : Type u_2} {N : Type u_3} [Mul M] [Mul N] :

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.
def AddHom.unop {M : Type u_2} {N : Type u_3} [Add M] [Add N] :

The 'unopposite' of an additive semigroup homomorphism Mᵃᵒᵖ →ₙ+ Nᵃᵒᵖ. Inverse to AddHom.op.

Equations
  • AddHom.unop = AddHom.op.symm
def MulHom.unop {M : Type u_2} {N : Type u_3} [Mul M] [Mul N] :

The 'unopposite' of a semigroup homomorphism Mᵐᵒᵖ →ₙ* Nᵐᵒᵖ. Inverse to MulHom.op.

Equations
  • MulHom.unop = MulHom.op.symm
@[simp]
theorem AddHom.mulOp_apply_apply {M : Type u_2} {N : Type u_3} [Add M] [Add N] (f : AddHom M N) :
∀ (a : Mᵐᵒᵖ), (AddHom.mulOp f) a = (MulOpposite.op f MulOpposite.unop) a
@[simp]
theorem AddHom.mulOp_symm_apply_apply {M : Type u_2} {N : Type u_3} [Add M] [Add N] (f : AddHom Mᵐᵒᵖ Nᵐᵒᵖ) :
∀ (a : M), (AddHom.mulOp.symm f) a = (MulOpposite.unop f MulOpposite.op) a
def AddHom.mulOp {M : Type u_2} {N : Type u_3} [Add M] [Add N] :

An additive semigroup homomorphism AddHom M N can equivalently be viewed as an additive homomorphism AddHom 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.
def AddHom.mulUnop {α : Type u_2} {β : Type u_3} [Add α] [Add β] :

The 'unopposite' of an additive semigroup hom αᵐᵒᵖ →+ βᵐᵒᵖ. Inverse to AddHom.mul_op.

Equations
  • AddHom.mulUnop = AddHom.mulOp.symm
def AddMonoidHom.op {M : Type u_2} {N : Type u_3} [AddZeroClass M] [AddZeroClass N] :

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.
@[simp]
theorem AddMonoidHom.op_symm_apply_apply {M : Type u_2} {N : Type u_3} [AddZeroClass M] [AddZeroClass N] (f : Mᵃᵒᵖ →+ Nᵃᵒᵖ) :
∀ (a : M), (AddMonoidHom.op.symm f) a = (AddOpposite.unop f AddOpposite.op) a
@[simp]
theorem MonoidHom.op_apply_apply {M : Type u_2} {N : Type u_3} [MulOneClass M] [MulOneClass N] (f : M →* N) :
∀ (a : Mᵐᵒᵖ), (MonoidHom.op f) a = (MulOpposite.op f MulOpposite.unop) a
@[simp]
theorem AddMonoidHom.op_apply_apply {M : Type u_2} {N : Type u_3} [AddZeroClass M] [AddZeroClass N] (f : M →+ N) :
∀ (a : Mᵃᵒᵖ), (AddMonoidHom.op f) a = (AddOpposite.op f AddOpposite.unop) a
@[simp]
theorem MonoidHom.op_symm_apply_apply {M : Type u_2} {N : Type u_3} [MulOneClass M] [MulOneClass N] (f : Mᵐᵒᵖ →* Nᵐᵒᵖ) :
∀ (a : M), (MonoidHom.op.symm f) a = (MulOpposite.unop f MulOpposite.op) a
def MonoidHom.op {M : Type u_2} {N : Type u_3} [MulOneClass M] [MulOneClass N] :

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.
def AddMonoidHom.unop {M : Type u_2} {N : Type u_3} [AddZeroClass M] [AddZeroClass N] :

The 'unopposite' of an additive monoid homomorphism Mᵃᵒᵖ →+ Nᵃᵒᵖ. Inverse to AddMonoidHom.op.

Equations
  • AddMonoidHom.unop = AddMonoidHom.op.symm
def MonoidHom.unop {M : Type u_2} {N : Type u_3} [MulOneClass M] [MulOneClass N] :

The 'unopposite' of a monoid homomorphism Mᵐᵒᵖ →* Nᵐᵒᵖ. Inverse to MonoidHom.op.

Equations
  • MonoidHom.unop = MonoidHom.op.symm

A additive monoid is isomorphic to the opposite of its opposite.

Equations
  • AddEquiv.opOp M = { toEquiv := AddOpposite.opEquiv.trans AddOpposite.opEquiv, map_add' := }
@[simp]
theorem MulEquiv.opOp_apply (M : Type u_2) [Mul M] :
@[simp]
theorem AddEquiv.opOp_apply (M : Type u_2) [Add M] :

A monoid is isomorphic to the opposite of its opposite.

Equations
  • MulEquiv.opOp M = { toEquiv := MulOpposite.opEquiv.trans MulOpposite.opEquiv, map_mul' := }
@[simp]
theorem AddMonoidHom.mulOp_symm_apply_apply {M : Type u_2} {N : Type u_3} [AddZeroClass M] [AddZeroClass N] (f : Mᵐᵒᵖ →+ Nᵐᵒᵖ) :
∀ (a : M), (AddMonoidHom.mulOp.symm f) a = (MulOpposite.unop f MulOpposite.op) a
@[simp]
theorem AddMonoidHom.mulOp_apply_apply {M : Type u_2} {N : Type u_3} [AddZeroClass M] [AddZeroClass N] (f : M →+ N) :
∀ (a : Mᵐᵒᵖ), (AddMonoidHom.mulOp f) a = (MulOpposite.op f MulOpposite.unop) a

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.
def AddMonoidHom.mulUnop {α : Type u_2} {β : Type u_3} [AddZeroClass α] [AddZeroClass β] :

The 'unopposite' of an additive monoid hom αᵐᵒᵖ →+ βᵐᵒᵖ. Inverse to AddMonoidHom.mul_op.

Equations
  • AddMonoidHom.mulUnop = AddMonoidHom.mulOp.symm
@[simp]
theorem AddEquiv.mulOp_apply {α : Type u_2} {β : Type u_3} [Add α] [Add β] (f : α ≃+ β) :
AddEquiv.mulOp f = MulOpposite.opAddEquiv.symm.trans (f.trans MulOpposite.opAddEquiv)
@[simp]
theorem AddEquiv.mulOp_symm_apply {α : Type u_2} {β : Type u_3} [Add α] [Add β] (f : αᵐᵒᵖ ≃+ βᵐᵒᵖ) :
AddEquiv.mulOp.symm f = MulOpposite.opAddEquiv.trans (f.trans MulOpposite.opAddEquiv.symm)
def AddEquiv.mulOp {α : Type u_2} {β : Type u_3} [Add α] [Add β] :

An iso α ≃+ β can equivalently be viewed as an iso αᵐᵒᵖ ≃+ βᵐᵒᵖ.

Equations
  • One or more equations did not get rendered due to their size.
def AddEquiv.mulUnop {α : Type u_2} {β : Type u_3} [Add α] [Add β] :

The 'unopposite' of an iso αᵐᵒᵖ ≃+ βᵐᵒᵖ. Inverse to AddEquiv.mul_op.

Equations
  • AddEquiv.mulUnop = AddEquiv.mulOp.symm
def AddEquiv.op {α : Type u_2} {β : Type u_3} [Add α] [Add β] :

An iso α ≃+ β can equivalently be viewed as an iso αᵃᵒᵖ ≃+ βᵃᵒᵖ.

Equations
  • One or more equations did not get rendered due to their size.
@[simp]
theorem MulEquiv.op_symm_apply_symm_apply {α : Type u_2} {β : Type u_3} [Mul α] [Mul β] (f : αᵐᵒᵖ ≃* βᵐᵒᵖ) :
∀ (a : β), (MulEquiv.op.symm f).symm a = (MulOpposite.unop f.symm MulOpposite.op) a
@[simp]
theorem AddEquiv.op_apply_apply {α : Type u_2} {β : Type u_3} [Add α] [Add β] (f : α ≃+ β) :
∀ (a : αᵃᵒᵖ), (AddEquiv.op f) a = (AddOpposite.op f AddOpposite.unop) a
@[simp]
theorem MulEquiv.op_apply_symm_apply {α : Type u_2} {β : Type u_3} [Mul α] [Mul β] (f : α ≃* β) :
∀ (a : βᵐᵒᵖ), (MulEquiv.op f).symm a = (MulOpposite.op f.symm MulOpposite.unop) a
@[simp]
theorem AddEquiv.op_symm_apply_symm_apply {α : Type u_2} {β : Type u_3} [Add α] [Add β] (f : αᵃᵒᵖ ≃+ βᵃᵒᵖ) :
∀ (a : β), (AddEquiv.op.symm f).symm a = (AddOpposite.unop f.symm AddOpposite.op) a
@[simp]
theorem AddEquiv.op_apply_symm_apply {α : Type u_2} {β : Type u_3} [Add α] [Add β] (f : α ≃+ β) :
∀ (a : βᵃᵒᵖ), (AddEquiv.op f).symm a = (AddOpposite.op f.symm AddOpposite.unop) a
@[simp]
theorem MulEquiv.op_symm_apply_apply {α : Type u_2} {β : Type u_3} [Mul α] [Mul β] (f : αᵐᵒᵖ ≃* βᵐᵒᵖ) :
∀ (a : α), (MulEquiv.op.symm f) a = (MulOpposite.unop f MulOpposite.op) a
@[simp]
theorem MulEquiv.op_apply_apply {α : Type u_2} {β : Type u_3} [Mul α] [Mul β] (f : α ≃* β) :
∀ (a : αᵐᵒᵖ), (MulEquiv.op f) a = (MulOpposite.op f MulOpposite.unop) a
@[simp]
theorem AddEquiv.op_symm_apply_apply {α : Type u_2} {β : Type u_3} [Add α] [Add β] (f : αᵃᵒᵖ ≃+ βᵃᵒᵖ) :
∀ (a : α), (AddEquiv.op.symm f) a = (AddOpposite.unop f AddOpposite.op) a
def MulEquiv.op {α : Type u_2} {β : Type u_3} [Mul α] [Mul β] :

An iso α ≃* β can equivalently be viewed as an iso αᵐᵒᵖ ≃* βᵐᵒᵖ.

Equations
  • One or more equations did not get rendered due to their size.
def AddEquiv.unop {α : Type u_2} {β : Type u_3} [Add α] [Add β] :

The 'unopposite' of an iso αᵃᵒᵖ ≃+ βᵃᵒᵖ. Inverse to AddEquiv.op.

Equations
  • AddEquiv.unop = AddEquiv.op.symm
def MulEquiv.unop {α : Type u_2} {β : Type u_3} [Mul α] [Mul β] :

The 'unopposite' of an iso αᵐᵒᵖ ≃* βᵐᵒᵖ. Inverse to MulEquiv.op.

Equations
  • MulEquiv.unop = MulEquiv.op.symm
theorem AddMonoidHom.mul_op_ext_iff {α : Type u_2} {β : Type u_3} [AddZeroClass α] [AddZeroClass β] {f : αᵐᵒᵖ →+ β} {g : αᵐᵒᵖ →+ β} :
f = g f.comp MulOpposite.opAddEquiv.toAddMonoidHom = g.comp MulOpposite.opAddEquiv.toAddMonoidHom
theorem AddMonoidHom.mul_op_ext {α : Type u_2} {β : Type u_3} [AddZeroClass α] [AddZeroClass β] (f : αᵐᵒᵖ →+ β) (g : αᵐᵒᵖ →+ β) (h : f.comp MulOpposite.opAddEquiv.toAddMonoidHom = g.comp MulOpposite.opAddEquiv.toAddMonoidHom) :
f = g

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'.