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.
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
- One or more equations did not get rendered due to their size.
Instances For
Additive units have decidable equality
if the base AddMonoid has deciable equality.
Equations
- AddUnits.instDecidableEqAddUnits x x = decidable_of_iff' (↑x = ↑x) (_ : x = x ↔ ↑x = ↑x)
Units have decidable equality if the base Monoid has decidable equality.
Equations
- Units.instDecidableEqUnits x x = decidable_of_iff' (↑x = ↑x) (_ : x = x ↔ ↑x = ↑x)
Additive units of an additive monoid have an addition and an additive identity.
Units of a monoid form have a multiplication and multiplicative identity.
Additive units of an additive commutative monoid form an additive commutative group.
Units of a commutative monoid form a commutative group.
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 := (_ : b + a = 0) }
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 := (_ : b * a = 1) }
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).
Equations
- isAddUnit_iff_exists_neg.match_1 motive x h_1 = Exists.casesOn x fun w h => h_1 w h
Instances For
Equations
- AddUnits.isAddUnit_add_addUnits.match_1 a u motive x h_1 = Exists.casesOn x fun w h => h_1 w h
Instances For
Equations
- AddUnits.isAddUnit_addUnits_add.match_1 u a motive x h_1 = Exists.casesOn x fun w h => h_1 w h
Instances For
Equations
- isAddUnit_of_add_isAddUnit_left.match_1 motive x h_1 = Exists.casesOn x fun w h => h_1 w h
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
- IsUnit.unit h = Units.copy (Classical.choose h) a (_ : a = ↑(Classical.choose h)) ↑(Classical.choose h)⁻¹ (_ : ↑(Classical.choose h)⁻¹ = ↑(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
- IsAddUnit.addUnit h = AddUnits.copy (Classical.choose h) a (_ : a = ↑(Classical.choose h)) ↑(-Classical.choose h) (_ : ↑(-Classical.choose h) = ↑(-Classical.choose h))
Instances For
Equations
- IsAddUnit.add_left_inj.match_1 motive h h_1 = Exists.casesOn h fun w h => h_1 w h
Instances For
Constructs a Group structure on a Monoid consisting only of units.
Equations
- groupOfIsUnit h = Group.mk (_ : ∀ (a : M), ↑(IsUnit.unit (h a))⁻¹ * a = 1)
Instances For
Constructs a CommGroup structure on a CommMonoid consisting only of units.
Equations
- commGroupOfIsUnit h = CommGroup.mk (_ : ∀ (a b : M), a * b = b * a)