Coprime elements of a ring or monoid #
Main definition #
IsCoprime x y
: thatx
andy
are coprime, defined to be the existence ofa
andb
such thata * x + b * y = 1
. Note that elements with no common divisors (IsRelPrime
) are not necessarily coprime, e.g., the multivariate polynomialsx₁
andx₂
are not coprime. The two notions are equivalent in Bézout rings, seeisRelPrime_iff_isCoprime
.
This file also contains lemmas about IsRelPrime
parallel to IsCoprime
.
See also RingTheory.Coprime.Lemmas
for further development of coprime elements.
The proposition that x
and y
are coprime, defined to be the existence of a
and b
such
that a * x + b * y = 1
. Note that elements with no common divisors are not necessarily coprime,
e.g., the multivariate polynomials x₁
and x₂
are not coprime.
Instances For
theorem
IsCoprime.ne_zero
{R : Type u}
[CommSemiring R]
[Nontrivial R]
{p : Fin 2 → R}
(h : IsCoprime (p 0) (p 1))
:
p ≠ 0
If a 2-vector p
satisfies IsCoprime (p 0) (p 1)
, then p ≠ 0
.
theorem
IsCoprime.ne_zero_or_ne_zero
{R : Type u}
[CommSemiring R]
{x y : R}
[Nontrivial R]
(h : IsCoprime x y)
:
theorem
IsCoprime.dvd_of_dvd_mul_right
{R : Type u}
[CommSemiring R]
{x y z : R}
(H1 : IsCoprime x z)
(H2 : x ∣ y * z)
:
x ∣ y
theorem
IsCoprime.dvd_of_dvd_mul_left
{R : Type u}
[CommSemiring R]
{x y z : R}
(H1 : IsCoprime x y)
(H2 : x ∣ y * z)
:
x ∣ z
theorem
IsCoprime.mul_left
{R : Type u}
[CommSemiring R]
{x y z : R}
(H1 : IsCoprime x z)
(H2 : IsCoprime y z)
:
theorem
IsCoprime.mul_right
{R : Type u}
[CommSemiring R]
{x y z : R}
(H1 : IsCoprime x y)
(H2 : IsCoprime x z)
:
theorem
IsCoprime.mul_dvd
{R : Type u}
[CommSemiring R]
{x y z : R}
(H : IsCoprime x y)
(H1 : x ∣ z)
(H2 : y ∣ z)
:
theorem
IsCoprime.of_mul_left_left
{R : Type u}
[CommSemiring R]
{x y z : R}
(H : IsCoprime (x * y) z)
:
IsCoprime x z
theorem
IsCoprime.of_mul_left_right
{R : Type u}
[CommSemiring R]
{x y z : R}
(H : IsCoprime (x * y) z)
:
IsCoprime y z
theorem
IsCoprime.of_mul_right_left
{R : Type u}
[CommSemiring R]
{x y z : R}
(H : IsCoprime x (y * z))
:
IsCoprime x y
theorem
IsCoprime.of_mul_right_right
{R : Type u}
[CommSemiring R]
{x y z : R}
(H : IsCoprime x (y * z))
:
IsCoprime x z
theorem
IsCoprime.of_isCoprime_of_dvd_left
{R : Type u}
[CommSemiring R]
{x y z : R}
(h : IsCoprime y z)
(hdvd : x ∣ y)
:
IsCoprime x z
theorem
IsCoprime.of_isCoprime_of_dvd_right
{R : Type u}
[CommSemiring R]
{x y z : R}
(h : IsCoprime z y)
(hdvd : x ∣ y)
:
IsCoprime z x
theorem
IsCoprime.isUnit_of_dvd
{R : Type u}
[CommSemiring R]
{x y : R}
(H : IsCoprime x y)
(d : x ∣ y)
:
IsUnit x
theorem
IsCoprime.isUnit_of_dvd'
{R : Type u}
[CommSemiring R]
{a b x : R}
(h : IsCoprime a b)
(ha : x ∣ a)
(hb : x ∣ b)
:
IsUnit x
theorem
IsCoprime.isRelPrime
{R : Type u}
[CommSemiring R]
{a b : R}
(h : IsCoprime a b)
:
IsRelPrime a b
theorem
IsCoprime.map
{R : Type u}
[CommSemiring R]
{x y : R}
(H : IsCoprime x y)
{S : Type v}
[CommSemiring S]
(f : R →+* S)
:
IsCoprime (f x) (f y)
theorem
IsCoprime.of_add_mul_left_left
{R : Type u}
[CommSemiring R]
{x y z : R}
(h : IsCoprime (x + y * z) y)
:
IsCoprime x y
theorem
IsCoprime.of_add_mul_right_left
{R : Type u}
[CommSemiring R]
{x y z : R}
(h : IsCoprime (x + z * y) y)
:
IsCoprime x y
theorem
IsCoprime.of_add_mul_left_right
{R : Type u}
[CommSemiring R]
{x y z : R}
(h : IsCoprime x (y + x * z))
:
IsCoprime x y
theorem
IsCoprime.of_add_mul_right_right
{R : Type u}
[CommSemiring R]
{x y z : R}
(h : IsCoprime x (y + z * x))
:
IsCoprime x y
theorem
IsCoprime.of_mul_add_left_left
{R : Type u}
[CommSemiring R]
{x y z : R}
(h : IsCoprime (y * z + x) y)
:
IsCoprime x y
theorem
IsCoprime.of_mul_add_right_left
{R : Type u}
[CommSemiring R]
{x y z : R}
(h : IsCoprime (z * y + x) y)
:
IsCoprime x y
theorem
IsCoprime.of_mul_add_left_right
{R : Type u}
[CommSemiring R]
{x y z : R}
(h : IsCoprime x (x * z + y))
:
IsCoprime x y
theorem
IsCoprime.of_mul_add_right_right
{R : Type u}
[CommSemiring R]
{x y z : R}
(h : IsCoprime x (z * x + y))
:
IsCoprime x y
theorem
IsRelPrime.of_add_mul_left_left
{R : Type u}
[CommSemiring R]
{x y z : R}
(h : IsRelPrime (x + y * z) y)
:
IsRelPrime x y
theorem
IsRelPrime.of_add_mul_right_left
{R : Type u}
[CommSemiring R]
{x y z : R}
(h : IsRelPrime (x + z * y) y)
:
IsRelPrime x y
theorem
IsRelPrime.of_add_mul_left_right
{R : Type u}
[CommSemiring R]
{x y z : R}
(h : IsRelPrime x (y + x * z))
:
IsRelPrime x y
theorem
IsRelPrime.of_add_mul_right_right
{R : Type u}
[CommSemiring R]
{x y z : R}
(h : IsRelPrime x (y + z * x))
:
IsRelPrime x y
theorem
IsRelPrime.of_mul_add_left_left
{R : Type u}
[CommSemiring R]
{x y z : R}
(h : IsRelPrime (y * z + x) y)
:
IsRelPrime x y
theorem
IsRelPrime.of_mul_add_right_left
{R : Type u}
[CommSemiring R]
{x y z : R}
(h : IsRelPrime (z * y + x) y)
:
IsRelPrime x y
theorem
IsRelPrime.of_mul_add_left_right
{R : Type u}
[CommSemiring R]
{x y z : R}
(h : IsRelPrime x (x * z + y))
:
IsRelPrime x y
theorem
IsRelPrime.of_mul_add_right_right
{R : Type u}
[CommSemiring R]
{x y z : R}
(h : IsRelPrime x (z * x + y))
:
IsRelPrime x y
theorem
isCoprime_group_smul_left
{R : Type u_1}
{G : Type u_2}
[CommSemiring R]
[Group G]
[MulAction G R]
[SMulCommClass G R R]
[IsScalarTower G R R]
(x : G)
(y z : R)
:
theorem
isCoprime_group_smul_right
{R : Type u_1}
{G : Type u_2}
[CommSemiring R]
[Group G]
[MulAction G R]
[SMulCommClass G R R]
[IsScalarTower G R R]
(x : G)
(y z : R)
:
theorem
isCoprime_group_smul
{R : Type u_1}
{G : Type u_2}
[CommSemiring R]
[Group G]
[MulAction G R]
[SMulCommClass G R R]
[IsScalarTower G R R]
(x : G)
(y z : R)
:
theorem
isCoprime_mul_unit_left_left
{R : Type u_1}
[CommSemiring R]
{x : R}
(hu : IsUnit x)
(y z : R)
:
theorem
isCoprime_mul_unit_left_right
{R : Type u_1}
[CommSemiring R]
{x : R}
(hu : IsUnit x)
(y z : R)
:
theorem
isCoprime_mul_unit_right_left
{R : Type u_1}
[CommSemiring R]
{x : R}
(hu : IsUnit x)
(y z : R)
:
theorem
isCoprime_mul_unit_right_right
{R : Type u_1}
[CommSemiring R]
{x : R}
(hu : IsUnit x)
(y z : R)
:
theorem
isCoprime_mul_unit_right
{R : Type u_1}
[CommSemiring R]
{x : R}
(hu : IsUnit x)
(y z : R)
:
theorem
IsCoprime.sq_add_sq_ne_zero
{R : Type u_1}
[LinearOrderedCommRing R]
{a b : R}
(h : IsCoprime a b)
:
theorem
IsRelPrime.add_mul_left_left
{R : Type u_1}
[CommRing R]
{x y : R}
(h : IsRelPrime x y)
(z : R)
:
IsRelPrime (x + y * z) y
theorem
IsRelPrime.add_mul_right_left
{R : Type u_1}
[CommRing R]
{x y : R}
(h : IsRelPrime x y)
(z : R)
:
IsRelPrime (x + z * y) y
theorem
IsRelPrime.add_mul_left_right
{R : Type u_1}
[CommRing R]
{x y : R}
(h : IsRelPrime x y)
(z : R)
:
IsRelPrime x (y + x * z)
theorem
IsRelPrime.add_mul_right_right
{R : Type u_1}
[CommRing R]
{x y : R}
(h : IsRelPrime x y)
(z : R)
:
IsRelPrime x (y + z * x)
theorem
IsRelPrime.mul_add_left_left
{R : Type u_1}
[CommRing R]
{x y : R}
(h : IsRelPrime x y)
(z : R)
:
IsRelPrime (y * z + x) y
theorem
IsRelPrime.mul_add_right_left
{R : Type u_1}
[CommRing R]
{x y : R}
(h : IsRelPrime x y)
(z : R)
:
IsRelPrime (z * y + x) y
theorem
IsRelPrime.mul_add_left_right
{R : Type u_1}
[CommRing R]
{x y : R}
(h : IsRelPrime x y)
(z : R)
:
IsRelPrime x (x * z + y)
theorem
IsRelPrime.mul_add_right_right
{R : Type u_1}
[CommRing R]
{x y : R}
(h : IsRelPrime x y)
(z : R)
:
IsRelPrime x (z * x + y)
theorem
IsRelPrime.add_mul_left_left_iff
{R : Type u_1}
[CommRing R]
{x y z : R}
:
IsRelPrime (x + y * z) y ↔ IsRelPrime x y
theorem
IsRelPrime.add_mul_right_left_iff
{R : Type u_1}
[CommRing R]
{x y z : R}
:
IsRelPrime (x + z * y) y ↔ IsRelPrime x y
theorem
IsRelPrime.add_mul_left_right_iff
{R : Type u_1}
[CommRing R]
{x y z : R}
:
IsRelPrime x (y + x * z) ↔ IsRelPrime x y
theorem
IsRelPrime.add_mul_right_right_iff
{R : Type u_1}
[CommRing R]
{x y z : R}
:
IsRelPrime x (y + z * x) ↔ IsRelPrime x y
theorem
IsRelPrime.mul_add_left_left_iff
{R : Type u_1}
[CommRing R]
{x y z : R}
:
IsRelPrime (y * z + x) y ↔ IsRelPrime x y
theorem
IsRelPrime.mul_add_right_left_iff
{R : Type u_1}
[CommRing R]
{x y z : R}
:
IsRelPrime (z * y + x) y ↔ IsRelPrime x y
theorem
IsRelPrime.mul_add_left_right_iff
{R : Type u_1}
[CommRing R]
{x y z : R}
:
IsRelPrime x (x * z + y) ↔ IsRelPrime x y
theorem
IsRelPrime.mul_add_right_right_iff
{R : Type u_1}
[CommRing R]
{x y z : R}
:
IsRelPrime x (z * x + y) ↔ IsRelPrime x y
theorem
IsRelPrime.neg_left
{R : Type u_1}
[CommRing R]
{x y : R}
(h : IsRelPrime x y)
:
IsRelPrime (-x) y
theorem
IsRelPrime.neg_right
{R : Type u_1}
[CommRing R]
{x y : R}
(h : IsRelPrime x y)
:
IsRelPrime x (-y)
theorem
IsRelPrime.neg_neg
{R : Type u_1}
[CommRing R]
{x y : R}
(h : IsRelPrime x y)
:
IsRelPrime (-x) (-y)
theorem
IsRelPrime.neg_left_iff
{R : Type u_1}
[CommRing R]
(x y : R)
:
IsRelPrime (-x) y ↔ IsRelPrime x y
theorem
IsRelPrime.neg_right_iff
{R : Type u_1}
[CommRing R]
(x y : R)
:
IsRelPrime x (-y) ↔ IsRelPrime x y
theorem
IsRelPrime.neg_neg_iff
{R : Type u_1}
[CommRing R]
(x y : R)
:
IsRelPrime (-x) (-y) ↔ IsRelPrime x y