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
(see irreducible_iff_prime
), however this is not true in general.
Main definitions #
Prime
: a prime element of a commutative monoid with zeroIrreducible
: an irreducible element of a commutative monoid with zero
Main results #
irreducible_iff_prime
: the two definitions are equivalent in a decomposition monoid.
theorem
Prime.dvd_or_dvd
{M : Type u_1}
[CommMonoidWithZero M]
{p : M}
(hp : Prime p)
{a b : M}
(h : p ∣ a * b)
:
theorem
Prime.dvd_of_dvd_pow
{M : Type u_1}
[CommMonoidWithZero M]
{p : M}
(hp : Prime p)
{a : M}
{n : ℕ}
(h : p ∣ a ^ n)
:
Irreducible p
states that p
is non-unit and only factors into units.
We explicitly avoid stating that p
is non-zero, this would require a semiring. Assuming only a
monoid allows us to reuse irreducible for associated elements.
p
is not a unitif
p
factors then one factor is a unit
theorem
Irreducible.isUnit_or_isUnit
{M : Type u_1}
[Monoid M]
{p : M}
(hp : Irreducible p)
{a b : M}
(h : p = a * b)
:
theorem
of_irreducible_mul
{M : Type u_2}
[Monoid M]
{x y : M}
:
Irreducible (x * y) → IsUnit x ∨ IsUnit y
theorem
Irreducible.dvd_symm
{M : Type u_1}
[Monoid M]
{p q : M}
(hp : Irreducible p)
(hq : Irreducible q)
:
If p
and q
are irreducible, then p ∣ q
implies q ∣ p
.
theorem
Irreducible.dvd_comm
{M : Type u_1}
[Monoid M]
{p q : M}
(hp : Irreducible p)
(hq : Irreducible q)
:
theorem
Irreducible.prime_of_isPrimal
{M : Type u_1}
[CommMonoidWithZero M]
{a : M}
(irr : Irreducible a)
(primal : IsPrimal a)
:
Prime a
theorem
Irreducible.prime
{M : Type u_1}
[CommMonoidWithZero M]
[DecompositionMonoid M]
{a : M}
(irr : Irreducible a)
:
Prime a
theorem
irreducible_iff_prime
{M : Type u_1}
[CancelCommMonoidWithZero M]
[DecompositionMonoid M]
{a : M}
: