Unique factorization #
Main Definitions #
WfDvdMonoidholds forMonoids for which a strict divisibility relation is well-founded.UniqueFactorizationMonoidholds forWfDvdMonoids whereIrreducibleis equivalent toPrime
To do #
- set up the complete lattice structure on
FactorSet.
Well-foundedness of the strict version of |, which is equivalent to the descending chain condition on divisibility and to the ascending chain condition on principal ideals in an integral domain.
- wellFounded_dvdNotUnit : WellFounded DvdNotUnit
Instances
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
unique factorization monoids.
These are defined as CancelCommMonoidWithZeros with well-founded strict divisibility
relations, but this is equivalent to more familiar definitions:
Each element (except zero) is uniquely represented as a multiset of irreducible factors. Uniqueness is only up to associated elements.
Each element (except zero) is non-uniquely represented as a multiset of prime factors.
To define a UFD using the definition in terms of multisets
of irreducible factors, use the definition of_exists_unique_irreducible_factors
To define a UFD using the definition in terms of multisets
of prime factors, use the definition of_exists_prime_factors
- wellFounded_dvdNotUnit : WellFounded DvdNotUnit
- irreducible_iff_prime : ∀ {a : α}, Irreducible a ↔ Prime a
Instances
Can't be an instance because it would cause a loop ufm → WfDvdMonoid → ufm → ....
Alias of ufm_of_decomposition_of_wfDvdMonoid.
Can't be an instance because it would cause a loop ufm → WfDvdMonoid → ufm → ....
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
If an irreducible has a prime factorization, then it is an associate of one of its prime factors.
Noncomputably determines the multiset of prime factors.
Equations
- UniqueFactorizationMonoid.factors a = if h : a = 0 then 0 else Classical.choose ⋯
Instances For
Noncomputably determines the multiset of prime factors.
Equations
Instances For
An arbitrary choice of factors of x : M is exactly the (unique) normalized set of factors,
if M has a trivial group of units.
Noncomputably defines a normalizationMonoid structure on a UniqueFactorizationMonoid.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Euclid's lemma: if a ∣ b * c and a and c have no common prime factors, a ∣ b.
Compare IsCoprime.dvd_of_dvd_mul_left.
Euclid's lemma: if a ∣ b * c and a and b have no common prime factors, a ∣ c.
Compare IsCoprime.dvd_of_dvd_mul_right.
If a ≠ 0, b are elements of a unique factorization domain, then dividing
out their common factor c' gives a' and b' with no factors in common.
The multiplicity of an irreducible factor of a nonzero element is exactly the number of times
the normalized factor occurs in the normalizedFactors.
See also count_normalizedFactors_eq which expands the definition of multiplicity
to produce a specification for count (normalizedFactors _) _..
The number of times an irreducible factor p appears in normalizedFactors x is defined by
the number of times it divides x.
See also multiplicity_eq_count_normalizedFactors if n is given by multiplicity p x.
The number of times an irreducible factor p appears in normalizedFactors x is defined by
the number of times it divides x. This is a slightly more general version of
UniqueFactorizationMonoid.count_normalizedFactors_eq that allows p = 0.
See also multiplicity_eq_count_normalizedFactors if n is given by multiplicity p x.
Deprecated. Use WfDvdMonoid.max_power_factor instead.
If P holds for units and powers of primes,
and P x ∧ P y for coprime x, y implies P (x * y),
then P holds on a product of powers of distinct primes.
If P holds for 0, units and powers of primes,
and P x ∧ P y for coprime x, y implies P (x * y),
then P holds on all a : α.
If f maps p ^ i to (f p) ^ i for primes p, and f
is multiplicative on coprime elements, then f is multiplicative on all products of primes.
If f maps p ^ i to (f p) ^ i for primes p, and f
is multiplicative on coprime elements, then f is multiplicative everywhere.
FactorSet α representation elements of unique factorization domain as multisets.
Multiset α produced by normalizedFactors are only unique up to associated elements, while the
multisets in FactorSet α are unique by equality and restricted to irreducible elements. This
gives us a representation of each element as a unique multisets (or the added ⊤ for 0), which has a
complete lattice structure. Infimum is the greatest common divisor and supremum is the least common
multiple.
Equations
- Associates.FactorSet α = WithTop (Multiset { a : Associates α // Irreducible a })
Instances For
Evaluates the product of a FactorSet to be the product of the corresponding multiset,
or 0 if there is none.
Equations
- x.prod = match x with | none => 0 | some s => (Multiset.map Subtype.val s).prod
Instances For
bcount p s is the multiplicity of p in the FactorSet s (with bundled p)
Equations
- Associates.bcount p x = match x with | none => 0 | some s => Multiset.count p s
Instances For
count p s is the multiplicity of the irreducible p in the FactorSet s.
If p is not irreducible, count p s is defined to be 0.
Equations
- p.count = if hp : Irreducible p then Associates.bcount ⟨p, hp⟩ else 0
Instances For
membership in a FactorSet (bundled version)
Equations
- Associates.BfactorSetMem x✝ x = match x✝, x with | x, none => True | p, some l => p ∈ l
Instances For
FactorSetMem p s is the predicate that the irreducible p is a member of
s : FactorSet α.
If p is not irreducible, p is not a member of any FactorSet.
Equations
- p.FactorSetMem s = if hp : Irreducible p then Associates.BfactorSetMem ⟨p, hp⟩ s else False
Instances For
Equations
- Associates.instMembershipFactorSet = { mem := Associates.FactorSetMem }
This returns the multiset of irreducible factors as a FactorSet,
a multiset of irreducible associates WithTop.
Equations
- Associates.factors' a = Multiset.pmap (fun (a : α) (ha : Irreducible a) => ⟨Associates.mk a, ⋯⟩) (UniqueFactorizationMonoid.factors a) ⋯
Instances For
This returns the multiset of irreducible factors of an associate as a FactorSet,
a multiset of irreducible associates WithTop.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Alias of Associates.factors_zero.
Alias of Associates.factors_eq_top_iff_zero.
Equations
- Associates.instSup = { sup := fun (a b : Associates α) => (a.factors ⊔ b.factors).prod }
Equations
- Associates.instInf = { inf := fun (a b : Associates α) => (a.factors ⊓ b.factors).prod }
Equations
- Associates.instLattice = let __src := Associates.instPartialOrder; Lattice.mk ⋯ ⋯ ⋯
The only divisors of prime powers are prime powers. See eq_pow_find_of_dvd_irreducible_pow
for an explicit expression as a p-power (without using count).
The only divisors of prime powers are prime powers.
toGCDMonoid constructs a GCD monoid out of a unique factorization domain.
Equations
- One or more equations did not get rendered due to their size.
Instances For
toNormalizedGCDMonoid constructs a GCD monoid out of a normalization on a
unique factorization domain.
Equations
- UniqueFactorizationMonoid.toNormalizedGCDMonoid α = let __src := inst; NormalizedGCDMonoid.mk ⋯ ⋯
Instances For
Equations
- ⋯ = ⋯
If y is a nonzero element of a unique factorization monoid with finitely
many units (e.g. ℤ, Ideal (ring_of_integers K)), it has finitely many divisors.
Equations
- One or more equations did not get rendered due to their size.
Instances For
This returns the multiset of irreducible factors as a Finsupp.
Equations
- factorization n = Multiset.toFinsupp (UniqueFactorizationMonoid.normalizedFactors n)
Instances For
The support of factorization n is exactly the Finset of normalized factors
For nonzero a and b, the power of p in a * b is the sum of the powers in a and b
For any p, the power of p in x^n is n times the power in x
Every non-zero prime ideal in a unique factorization domain contains a prime element.