Module docstring
{"# Monoids with normalization functions, gcd, and lcm
This file defines extra structures on CancelCommMonoidWithZeros, including IsDomains.
Main Definitions
NormalizationMonoidGCDMonoidNormalizedGCDMonoidgcdMonoidOfGCD,gcdMonoidOfExistsGCD,normalizedGCDMonoidOfGCD,normalizedGCDMonoidOfExistsGCDgcdMonoidOfLCM,gcdMonoidOfExistsLCM,normalizedGCDMonoidOfLCM,normalizedGCDMonoidOfExistsLCM
For the NormalizedGCDMonoid instances on ℕ and ℤ, see Mathlib.Algebra.GCDMonoid.Nat.
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.gcdMonoidOfGCDandnormalizedGCDMonoidOfGCDnoncomputably construct aGCDMonoid(resp.NormalizedGCDMonoid) structure just from thegcdand its properties.gcdMonoidOfExistsGCDandnormalizedGCDMonoidOfExistsGCDnoncomputably construct aGCDMonoid(resp.NormalizedGCDMonoid) structure just from a proof that any two elements have a (not necessarily normalized)gcd.gcdMonoidOfLCMandnormalizedGCDMonoidOfLCMnoncomputably construct aGCDMonoid(resp.NormalizedGCDMonoid) structure just from thelcmand its properties.gcdMonoidOfExistsLCMandnormalizedGCDMonoidOfExistsLCMnoncomputably 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 "}