Module docstring
{"# Units in multiplicative and additive opposites "}
{"# Units in multiplicative and additive opposites "}
Units.opEquiv
definition
{M} [Monoid M] : Mᵐᵒᵖˣ ≃* Mˣᵐᵒᵖ
/-- The units of the opposites are equivalent to the opposites of the units. -/
@[to_additive
"The additive units of the additive opposites are equivalent to the additive opposites
of the additive units."]
def Units.opEquiv {M} [Monoid M] : MᵐᵒᵖMᵐᵒᵖˣMᵐᵒᵖˣ ≃* Mˣᵐᵒᵖ where
toFun u := op ⟨unop u, unop ↑u⁻¹, op_injective u.4, op_injective u.3⟩
invFun := MulOpposite.rec' fun u => ⟨op ↑u, op ↑u⁻¹, unop_injective <| u.4, unop_injective u.3⟩
map_mul' _ _ := unop_injective <| Units.ext <| rfl
left_inv x := Units.ext <| by simp
right_inv x := unop_injective <| Units.ext <| by rfl
Units.coe_unop_opEquiv
theorem
{M} [Monoid M] (u : Mᵐᵒᵖˣ) : ((Units.opEquiv u).unop : M) = unop (u : Mᵐᵒᵖ)
@[to_additive (attr := simp)]
theorem Units.coe_unop_opEquiv {M} [Monoid M] (u : MᵐᵒᵖMᵐᵒᵖˣ) :
((Units.opEquiv u).unop : M) = unop (u : Mᵐᵒᵖ) :=
rfl
Units.coe_opEquiv_symm
theorem
{M} [Monoid M] (u : Mˣᵐᵒᵖ) : (Units.opEquiv.symm u : Mᵐᵒᵖ) = op (u.unop : M)
@[to_additive (attr := simp)]
theorem Units.coe_opEquiv_symm {M} [Monoid M] (u : MˣMˣᵐᵒᵖ) :
(Units.opEquiv.symm u : Mᵐᵒᵖ) = op (u.unop : M) :=
rfl
IsUnit.op
theorem
{M} [Monoid M] {m : M} (h : IsUnit m) : IsUnit (op m)
@[to_additive]
nonrec theorem IsUnit.op {M} [Monoid M] {m : M} (h : IsUnit m) : IsUnit (op m) :=
let ⟨u, hu⟩ := h
hu ▸ ⟨Units.opEquiv.symm (op u), rfl⟩
IsUnit.unop
theorem
{M} [Monoid M] {m : Mᵐᵒᵖ} (h : IsUnit m) : IsUnit (unop m)
@[to_additive]
nonrec theorem IsUnit.unop {M} [Monoid M] {m : Mᵐᵒᵖ} (h : IsUnit m) : IsUnit (unop m) :=
let ⟨u, hu⟩ := h
hu ▸ ⟨unop (Units.opEquiv u), rfl⟩
isUnit_op
theorem
{M} [Monoid M] {m : M} : IsUnit (op m) ↔ IsUnit m
@[to_additive (attr := simp)]
theorem isUnit_op {M} [Monoid M] {m : M} : IsUnitIsUnit (op m) ↔ IsUnit m :=
⟨IsUnit.unop, IsUnit.op⟩
isUnit_unop
theorem
{M} [Monoid M] {m : Mᵐᵒᵖ} : IsUnit (unop m) ↔ IsUnit m
@[to_additive (attr := simp)]
theorem isUnit_unop {M} [Monoid M] {m : Mᵐᵒᵖ} : IsUnitIsUnit (unop m) ↔ IsUnit m :=
⟨IsUnit.op, IsUnit.unop⟩