Units (i.e., invertible elements) of a monoid #
An element of a Monoid is a unit if it has a two-sided inverse.
Main declarations #
Units M: the group of units (i.e., invertible elements) of a monoid.IsUnit x: a predicate asserting thatxis a unit (i.e., invertible element) of a monoid.
For both declarations, there is an additive counterpart: AddUnits and IsAddUnit.
See also Prime, Associated, and Irreducible in Mathlib/Algebra/Associated.lean.
Notation #
We provide Mˣ as notation for Units M,
resembling the notation $R^{\times}$ for the units of a ring, which is common in mathematics.
TODO #
The results here should be used to golf the basic Group lemmas.
Units of a Monoid, bundled version. Notation: αˣ.
An element of a Monoid is a unit if it has a two-sided inverse.
This version bundles the inverse element so that it can be computed.
For a predicate see IsUnit.
Equations
- «term_ˣ» = Lean.ParserDescr.trailingNode `«term_ˣ» 1024 1024 (Lean.ParserDescr.symbol "ˣ")
Instances For
An additive unit can be interpreted as a term in the base AddMonoid.
Equations
- AddUnits.instCoeHead = { coe := AddUnits.val }
Alias of Units.val_inj.
Units have decidable equality if the base Monoid has decidable equality.
Equations
- x✝¹.instDecidableEq x✝ = decidable_of_iff' (↑x✝¹ = ↑x✝) ⋯
Additive units have decidable equality
if the base AddMonoid has decidable equality.
Equations
- x✝¹.instDecidableEq x✝ = decidable_of_iff' (↑x✝¹ = ↑x✝) ⋯
Units of a monoid have a multiplication and multiplicative identity.
Equations
- Units.instMulOneClass = { toOne := Units.instOne, toMul := Units.instMul, one_mul := ⋯, mul_one := ⋯ }
Additive units of an additive monoid have an addition and an additive identity.
Equations
- AddUnits.instAddZeroClass = { toZero := AddUnits.instZero, toAdd := AddUnits.instAdd, zero_add := ⋯, add_zero := ⋯ }
Units of a monoid are inhabited because 1 is a unit.
Equations
- Units.instInhabited = { default := 1 }
Additive units of an additive monoid are inhabited because 0 is an additive unit.
Equations
- AddUnits.instInhabited = { default := 0 }
Additive units of an additive monoid have a representation of the base value in
the AddMonoid.
Equations
- AddUnits.instRepr = { reprPrec := reprPrec ∘ AddUnits.val }
Units of a monoid form a DivInvMonoid.
Equations
- One or more equations did not get rendered due to their size.
Additive units of an additive monoid form a SubNegMonoid.
Equations
- One or more equations did not get rendered due to their size.
Units of a monoid form a group.
Equations
- Units.instGroup = { toDivInvMonoid := Units.instDivInvMonoid, inv_mul_cancel := ⋯ }
Additive units of an additive monoid form an additive group.
Equations
- AddUnits.instAddGroup = { toSubNegMonoid := AddUnits.instSubNegAddMonoid, neg_add_cancel := ⋯ }
Units of a commutative monoid form a commutative group.
Equations
- Units.instCommGroupUnits = { toGroup := Units.instGroup, mul_comm := ⋯ }
Additive units of an additive commutative monoid form an additive commutative group.
Equations
- AddUnits.instAddCommGroupAddUnits = { toAddGroup := AddUnits.instAddGroup, add_comm := ⋯ }
For a, b in a CommMonoid such that a * b = 1, makes a unit out of a.
Equations
- Units.mkOfMulEqOne a b hab = { val := a, inv := b, val_inv := hab, inv_val := ⋯ }
Instances For
For a, b in an AddCommMonoid such that a + b = 0, makes an addUnit out of a.
Equations
- AddUnits.mkOfAddEqZero a b hab = { val := a, neg := b, val_neg := hab, neg_val := ⋯ }
Instances For
Partial division, denoted a /ₚ u. It is defined when the
second argument is invertible, and unlike the division operator
in DivisionRing it is not totalized at zero.
Equations
- «term_/ₚ_» = Lean.ParserDescr.trailingNode `«term_/ₚ_» 70 70 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " /ₚ ") (Lean.ParserDescr.cat `term 71))
Instances For
The element of the group of units, corresponding to an element of a monoid which is a unit. When
α is a DivisionMonoid, use IsUnit.unit' instead.
Equations
- h.unit = (Classical.choose h).copy a ⋯ ↑(Classical.choose h)⁻¹ ⋯
Instances For
The element of the additive group of additive units, corresponding to an element
of an additive monoid which is an additive unit. When α is a SubtractionMonoid, use
IsAddUnit.addUnit' instead.
Equations
- h.addUnit = (Classical.choose h).copy a ⋯ ↑(-Classical.choose h) ⋯
Instances For
The element of the group of units, corresponding to an element of a monoid which is a unit. As
opposed to IsUnit.unit, the inverse is computable and comes from the inversion on α. This is
useful to transfer properties of inversion in Units α to α. See also toUnits.
Instances For
The element of the additive group of additive units, corresponding to an element of
an additive monoid which is an additive unit. As opposed to IsAddUnit.addUnit, the negation is
computable and comes from the negation on α. This is useful to transfer properties of negation
in AddUnits α to α. See also toAddUnits.
Instances For
Constructs a CommGroup structure on a CommMonoid consisting only of units.
Equations
- One or more equations did not get rendered due to their size.