Associated, prime, and irreducible elements. #
In this file we define the predicate Prime p
saying that an element of a commutative monoid with zero is prime.
Namely, Prime p means that p isn't zero, it isn't a unit,
and p ∣ a * b → p ∣ a ∨ p ∣ b for all a, b;
In decomposition monoids (e.g., ℕ, ℤ), this predicate is equivalent to Irreducible,
however this is not true in general.
We also define an equivalence relation Associated
saying that two elements of a monoid differ by a multiplication by a unit.
Then we show that the quotient type Associates is a monoid
and prove basic properties of this quotient.
theorem comap_prime {M : Type u_1} {N : Type u_2} [CommMonoidWithZero M] [CommMonoidWithZero N] {F : Type u_3} {G : Type u_4} [FunLike F M N] [MonoidWithZeroHomClass F M N] [FunLike G N M] [MulHomClass G N M] (f : F) (g : G) {p : M} (hinv : ∀ (a : M), g (f a) = a) (hp : Prime (f p)) :
Prime p
theorem MulEquiv.prime_iff {M : Type u_1} {N : Type u_2} [CommMonoidWithZero M] [CommMonoidWithZero N] {p : M} {E : Type u_5} [EquivLike E M N] [MulEquivClass E M N] (e : E) :
theorem Prime.left_dvd_or_dvd_right_of_dvd_mul {M : Type u_1} [CommMonoidWithZero M] [IsCancelMulZero M] {p : M} (hp : Prime p) {a b : M} :
theorem Prime.pow_dvd_of_dvd_mul_left {M : Type u_1} [CommMonoidWithZero M] [IsCancelMulZero M] {p a b : M} (hp : Prime p) (n : ℕ) (h : ¬p ∣ a) (h' : p ^ n ∣ a * b) :
theorem Prime.pow_dvd_of_dvd_mul_right {M : Type u_1} [CommMonoidWithZero M] [IsCancelMulZero M] {p a b : M} (hp : Prime p) (n : ℕ) (h : ¬p ∣ b) (h' : p ^ n ∣ a * b) :
theorem Prime.not_isSquare {M : Type u_1} [CommMonoidWithZero M] [IsCancelMulZero M] {p : M} (hp : Prime p) :
theorem IsSquare.not_prime {M : Type u_1} [CommMonoidWithZero M] [IsCancelMulZero M] {a : M} (ha : IsSquare a) :
theorem not_prime_pow {M : Type u_1} [CommMonoidWithZero M] [IsCancelMulZero M] {a : M} {n : ℕ} (hn : n ≠ 1) :
theorem DvdNotUnit.isUnit_of_irreducible_right {M : Type u_1} [CommMonoidWithZero M] {p q : M} (h : DvdNotUnit p q) (hq : Irreducible q) :
IsUnit p
theorem not_irreducible_of_not_isUnit_of_dvdNotUnit {M : Type u_1} [CommMonoidWithZero M] {p q : M} (hp : ¬IsUnit p) (h : DvdNotUnit p q) :
@[deprecated not_irreducible_of_not_isUnit_of_dvdNotUnit (since := "2026-08-02")]
theorem not_irreducible_of_not_unit_dvdNotUnit {M : Type u_1} [CommMonoidWithZero M] {p q : M} (hp : ¬IsUnit p) (h : DvdNotUnit p q) :
theorem DvdNotUnit.not_isUnit {M : Type u_1} [CommMonoidWithZero M] {p q : M} (hp : DvdNotUnit p q) :
@[deprecated DvdNotUnit.not_isUnit (since := "2026-08-02")]
Alias of DvdNotUnit.not_isUnit.
theorem DvdNotUnit.ne {M : Type u_1} [CommMonoidWithZero M] [IsCancelMulZero M] {p q : M} (h : DvdNotUnit p q) :
theorem pow_injective_of_not_isUnit {M : Type u_1} [CommMonoidWithZero M] [IsCancelMulZero M] {q : M} (hq : ¬IsUnit q) (hq' : q ≠ 0) :
Function.Injective fun (n : ℕ) => q ^ n
theorem pow_inj_of_not_isUnit {M : Type u_1} [CommMonoidWithZero M] [IsCancelMulZero M] {q : M} (hq : ¬IsUnit q) (hq' : q ≠ 0) {m n : ℕ} :
theorem IsRelPrime.of_map {M : Type u_3} {N : Type u_4} {F : Type u_5} [Monoid M] [Monoid N] [FunLike F M N] [MulHomClass F M N] (f : F) [IsLocalHom f] {a b : M} (hab : IsRelPrime (f a) (f b)) :
IsRelPrime a b