Monoids with normalization functions, gcd, and lcm #
This file defines extra structures on CancelCommMonoidWithZeros, including IsDomains.
Main Definitions #
NormalizationMonoidGCDMonoidNormalizedGCDMonoidgcdMonoid_of_gcd,gcdMonoid_of_exists_gcd,normalizedGCDMonoid_of_gcd,normalizedGCDMonoid_of_exists_gcdgcdMonoid_of_lcm,gcdMonoid_of_exists_lcm,normalizedGCDMonoid_of_lcm,normalizedGCDMonoid_of_exists_lcm
For the NormalizedGCDMonoid instances on ℕ and ℤ, see RingTheory.Int.Basic.
Implementation Notes #
-
NormalizationMonoidis defined by assigning to each element anormUnitsuch that multiplying by that unit normalizes the monoid, andnormalizeis an idempotent monoid homomorphism. This definition as currently implemented does casework on0. -
GCDMonoidcontains the definitions ofgcdandlcmwith the usual properties. They are both determined up to a unit. -
NormalizedGCDMonoidextendsNormalizationMonoid, so thegcdandlcmare always normalized. This makesgcds of polynomials easier to work with, but excludes Euclidean domains, and monoids without zero. -
gcdMonoid_of_gcdandnormalizedGCDMonoid_of_gcdnoncomputably construct aGCDMonoid(resp.NormalizedGCDMonoid) structure just from thegcdand its properties. -
gcdMonoid_of_exists_gcdandnormalizedGCDMonoid_of_exists_gcdnoncomputably construct aGCDMonoid(resp.NormalizedGCDMonoid) structure just from a proof that any two elements have a (not necessarily normalized)gcd. -
gcdMonoid_of_lcmandnormalizedGCDMonoid_of_lcmnoncomputably construct aGCDMonoid(resp.NormalizedGCDMonoid) structure just from thelcmand its properties. -
gcdMonoid_of_exists_lcmandnormalizedGCDMonoid_of_exists_lcmnoncomputably construct aGCDMonoid(resp.NormalizedGCDMonoid) structure just from a proof that any two elements have a (not necessarily normalized)lcm.
TODO #
- Port GCD facts about nats, definition of coprime
- Generalize normalization monoids to commutative (cancellative) monoids with or without zero
Tags #
divisibility, gcd, lcm, normalize
- normUnit : α → αˣ
normUnitassigns to each element of the monoid a unit of the monoid. The proposition that
normUnitmaps0to the identity.The proposition that
normUnitrespects multiplication of non-zero elements.The proposition that
normUnitmaps units to their inverses.
Normalization monoid: multiplying with normUnit gives a normal form for associated
elements.
Instances
Chooses an element of each associate class, by multiplying by normUnit
Equations
- One or more equations did not get rendered due to their size.
Instances For
Maps an element of Associates back to the normalized element of its associate class
Equations
- Associates.out = Quotient.lift ↑normalize (_ : ∀ (a x : α), a ≈ x → ↑normalize a = ↑normalize x)
Instances For
- gcd : α → α → α
The greatest common divisor between two elements.
- lcm : α → α → α
The least common multiple between two elements.
The GCD is a divisor of the first element.
The GCD is a divisor of the second element.
Any common divisor of both elements is a divisor of the GCD.
- gcd_mul_lcm : ∀ (a b : α), Associated (gcd a b * lcm a b) (a * b)
The product of two elements is
Associatedwith the product of their GCD and LCM. 0is left-absorbing.0is right-absorbing.
GCD monoid: a CancelCommMonoidWithZero with gcd (greatest common divisor) and
lcm (least common multiple) operations, determined up to a unit. The type class focuses on gcd
and we derive the corresponding lcm facts from gcd.
Instances
- normUnit : α → αˣ
- gcd : α → α → α
- lcm : α → α → α
- gcd_mul_lcm : ∀ (a b : α), Associated (gcd a b * lcm a b) (a * b)
The GCD is normalized to itself.
The LCM is normalized to itself.
Normalized GCD monoid: a CancelCommMonoidWithZero with normalization and gcd
(greatest common divisor) and lcm (least common multiple) operations. In this setting gcd and
lcm form a bounded lattice on the associated elements where gcd is the infimum, lcm is the
supremum, 1 is bottom, and 0 is top. The type class focuses on gcd and we derive the
corresponding lcm facts from gcd.
Instances
Represent a divisor of m * n as a product of a divisor of m and a divisor of n.
In other words, the nonzero elements of a GCDMonoid form a decomposition monoid
(more widely known as a pre-Schreier domain in the context of rings).
Note: In general, this representation is highly non-unique.
See Nat.prodDvdAndDvdOfDvdProd for a constructive version on ℕ.
Equations
- One or more equations did not get rendered due to their size.
Equations
- uniqueNormalizationMonoidOfUniqueUnits = { toInhabited := { default := normalizationMonoidOfUniqueUnits }, uniq := (_ : ∀ (x : NormalizationMonoid α), x = default) }
If a monoid's only unit is 1, then it is isomorphic to its associates.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Define NormalizationMonoid on a structure from a MonoidHom inverse to Associates.mk.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Define GCDMonoid on a structure just from the gcd and its properties.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Define NormalizedGCDMonoid on a structure just from the gcd and its properties.
Equations
- normalizedGCDMonoidOfGCD gcd gcd_dvd_left gcd_dvd_right dvd_gcd normalize_gcd = let src := inferInstance; NormalizedGCDMonoid.mk normalize_gcd (_ : ∀ (a b : α), ↑normalize (lcm a b) = lcm a b)
Instances For
Define GCDMonoid on a structure just from the lcm and its properties.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Define NormalizedGCDMonoid on a structure just from the lcm and its properties.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Define a GCDMonoid structure on a monoid just from the existence of a gcd.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Define a NormalizedGCDMonoid structure on a monoid just from the existence of a gcd.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Define a GCDMonoid structure on a monoid just from the existence of an lcm.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Define a NormalizedGCDMonoid structure on a monoid just from the existence of an lcm.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.