Module docstring
{"# Multiplicative opposite and algebraic operations on it
In this file we define MulOpposite α = αᵐᵒᵖ to be the multiplicative opposite of α. It inherits
all additive algebraic structures on α (in other files), and reverses the order of multipliers in
multiplicative structures, i.e., op (x * y) = op y * op x, where MulOpposite.op is the
canonical map from α to αᵐᵒᵖ.
We also define AddOpposite α = αᵃᵒᵖ to be the additive opposite of α. It inherits all
multiplicative algebraic structures on α (in other files), and reverses the order of summands in
additive structures, i.e. op (x + y) = op y + op x, where AddOpposite.op is the canonical map
from α to αᵃᵒᵖ.
Notation
αᵐᵒᵖ = MulOpposite ααᵃᵒᵖ = AddOpposite α
Implementation notes
In mathlib3 αᵐᵒᵖ was just a type synonym for α, marked irreducible after the API
was developed. In mathlib4 we use a structure with one field, because it is not possible
to change the reducibility of a declaration after its definition, and because Lean 4 has
definitional eta reduction for structures (Lean 3 does not).
Tags
multiplicative opposite, additive opposite "}