Primality and GCD on pnat #
This file extends the theory of ℕ+
with gcd
, lcm
and Prime
functions, analogous to those on
Nat
.
The canonical map from Nat.Primes
to ℕ+
Instances For
Equations
- Nat.Primes.coePNat = { coe := Nat.Primes.toPNat }
Prime numbers #
Primality predicate for ℕ+
, defined in terms of Nat.Prime
.
Equations
- PNat.Prime p = Nat.Prime ↑p
Instances For
Coprime numbers and gcd #
theorem
PNat.Coprime.mul
{k : ℕ+}
{m : ℕ+}
{n : ℕ+}
:
PNat.Coprime m k → PNat.Coprime n k → PNat.Coprime (m * n) k
theorem
PNat.Coprime.mul_right
{k : ℕ+}
{m : ℕ+}
{n : ℕ+}
:
PNat.Coprime k m → PNat.Coprime k n → PNat.Coprime k (m * n)
theorem
PNat.Coprime.gcd_mul_left_cancel
(m : ℕ+)
{n : ℕ+}
{k : ℕ+}
:
PNat.Coprime k n → PNat.gcd (k * m) n = PNat.gcd m n
theorem
PNat.Coprime.gcd_mul_right_cancel
(m : ℕ+)
{n : ℕ+}
{k : ℕ+}
:
PNat.Coprime k n → PNat.gcd (m * k) n = PNat.gcd m n
theorem
PNat.Coprime.gcd_mul_left_cancel_right
(m : ℕ+)
{n : ℕ+}
{k : ℕ+}
:
PNat.Coprime k m → PNat.gcd m (k * n) = PNat.gcd m n
theorem
PNat.Coprime.gcd_mul_right_cancel_right
(m : ℕ+)
{n : ℕ+}
{k : ℕ+}
:
PNat.Coprime k m → PNat.gcd m (n * k) = PNat.gcd m n
theorem
PNat.Coprime.coprime_dvd_left
{m : ℕ+}
{k : ℕ+}
{n : ℕ+}
:
m ∣ k → PNat.Coprime k n → PNat.Coprime m n
theorem
PNat.Coprime.pow
{m : ℕ+}
{n : ℕ+}
(k : ℕ)
(l : ℕ)
(h : PNat.Coprime m n)
:
Nat.Coprime (↑m ^ k) (↑n ^ l)