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}
[CancelCommMonoidWithZero M]
{p : M}
(hp : Prime p)
{a b : M}
:
@[deprecated Prime.not_isSquare (since := "2025-04-17")]
Alias of Prime.not_isSquare
.
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_unit_dvdNotUnit
{M : Type u_1}
[CommMonoidWithZero M]
{p q : M}
(hp : ¬IsUnit p)
(h : DvdNotUnit p q)
:
theorem
pow_injective_of_not_isUnit
{M : Type u_1}
[CancelCommMonoidWithZero M]
{q : M}
(hq : ¬IsUnit q)
(hq' : q ≠ 0)
:
Function.Injective fun (n : ℕ) => q ^ n