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.
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
Equations
- ⋯ = ⋯
Instances For
Additive units have decidable equality
if the base AddMonoid has deciable equality.
Equations
- x✝.instDecidableEq x = decidable_of_iff' (↑x✝ = ↑x) ⋯
Units have decidable equality if the base Monoid has decidable equality.
Equations
- x✝.instDecidableEq x = decidable_of_iff' (↑x✝ = ↑x) ⋯
Additive units of an additive monoid have an addition and an additive identity.
Equations
- AddUnits.instAddZeroClass = AddZeroClass.mk ⋯ ⋯
Units of a monoid have a multiplication and multiplicative identity.
Equations
- Units.instMulOneClass = MulOneClass.mk ⋯ ⋯
Additive units of an additive monoid form a SubNegMonoid.
Equations
- One or more equations did not get rendered due to their size.
Equations
- AddUnits.instSubNegAddMonoid.match_1 motive n a h_1 h_2 = Int.casesOn n (fun (a_1 : ℕ) => h_1 a_1 a) fun (a_1 : ℕ) => h_2 a_1 a
Instances For
Units of a monoid form a DivInvMonoid.
Equations
- Units.instDivInvMonoid = DivInvMonoid.mk ⋯ (fun (n : ℤ) (a : αˣ) => match n, a with | Int.ofNat n, a => a ^ n | Int.negSucc n, a => (a ^ n.succ)⁻¹) ⋯ ⋯ ⋯
Additive units of an additive monoid form an additive group.
Equations
- AddUnits.instAddGroup = AddGroup.mk ⋯
Additive units of an additive commutative monoid form an additive commutative group.
Equations
- AddUnits.instAddCommGroupAddUnits = AddCommGroup.mk ⋯
Units of a commutative monoid form a commutative group.
Equations
- Units.instCommGroupUnits = CommGroup.mk ⋯
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
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
Partial division. 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
Used for field_simp to deal with inverses of units. This form of the lemma
is essential since field_simp likes to use inv_eq_one_div to rewrite
↑u⁻¹ = ↑(1 / u).
A subsingleton AddMonoid has a unique additive unit.
Equations
- instUniqueAddUnitsOfSubsingleton = { toInhabited := AddUnits.instInhabited, uniq := ⋯ }
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 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
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
Constructs an inv operation for a Monoid consisting only of units.
Equations
- invOfIsUnit h = { inv := fun (a : M) => ↑⋯.unit⁻¹ }
Instances For
Constructs a CommGroup structure on a CommMonoid consisting only of units.
Equations
Instances For
Alias of IsUnit.mul_div_cancel.
Alias of IsAddUnit.add_sub_cancel.