File: Mathlib/RingTheory/Coprime/Basic.lean

full_name: IsCoprime
code: /-- 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. -/
def IsCoprime : Prop 
goal: Prop

full_name: IsCoprime.symm
code: @[symm]
theorem IsCoprime.symm (H : IsCoprime x y) : IsCoprime y x 
goal: IsCoprime y x

full_name: isCoprime_comm
code: theorem isCoprime_comm : IsCoprime x y ↔ IsCoprime y x 
goal: IsCoprime x y ↔ IsCoprime y x

full_name: isCoprime_self
code: theorem isCoprime_self : IsCoprime x x ↔ IsUnit x 
goal: IsCoprime x x ↔ IsUnit x

full_name: isCoprime_zero_left
code: theorem isCoprime_zero_left : IsCoprime 0 x ↔ IsUnit x 
goal: IsCoprime 0 x ↔ IsUnit x

full_name: isCoprime_zero_right
code: theorem isCoprime_zero_right : IsCoprime x 0 ↔ IsUnit x 
goal: IsCoprime x 0 ↔ IsUnit x

full_name: not_isCoprime_zero_zero
code: theorem not_isCoprime_zero_zero [Nontrivial R] : ¬IsCoprime (0 : R) 0 
goal: ¬IsCoprime 0 0

full_name: IsCoprime.intCast
code: lemma IsCoprime.intCast {R : Type*} [CommRing R] {a b : ℤ} (h : IsCoprime a b) :
    IsCoprime (a : R) (b : R) 
goal: IsCoprime ↑a ↑b

full_name: IsCoprime.ne_zero
code: /-- If a 2-vector `p` satisfies `IsCoprime (p 0) (p 1)`, then `p ≠ 0`. -/
theorem IsCoprime.ne_zero [Nontrivial R] {p : Fin 2 → R} (h : IsCoprime (p 0) (p 1)) : p ≠ 0 
goal: p ≠ 0

full_name: IsCoprime.ne_zero_or_ne_zero
code: theorem IsCoprime.ne_zero_or_ne_zero [Nontrivial R] (h : IsCoprime x y) : x ≠ 0 ∨ y ≠ 0 
goal: x ≠ 0 ∨ y ≠ 0

full_name: isCoprime_one_left
code: theorem isCoprime_one_left : IsCoprime 1 x 
goal: IsCoprime 1 x

full_name: isCoprime_one_right
code: theorem isCoprime_one_right : IsCoprime x 1 
goal: IsCoprime x 1

full_name: IsCoprime.dvd_of_dvd_mul_right
code: theorem IsCoprime.dvd_of_dvd_mul_right (H1 : IsCoprime x z) (H2 : x ∣ y * z) : x ∣ y 
goal: x ∣ y

full_name: IsCoprime.dvd_of_dvd_mul_left
code: theorem IsCoprime.dvd_of_dvd_mul_left (H1 : IsCoprime x y) (H2 : x ∣ y * z) : x ∣ z 
goal: x ∣ z

full_name: IsCoprime.mul_left
code: theorem IsCoprime.mul_left (H1 : IsCoprime x z) (H2 : IsCoprime y z) : IsCoprime (x * y) z 
goal: IsCoprime (x * y) z

full_name: IsCoprime.mul_right
code: theorem IsCoprime.mul_right (H1 : IsCoprime x y) (H2 : IsCoprime x z) : IsCoprime x (y * z) 
goal: IsCoprime x (y * z)

full_name: IsCoprime.mul_dvd
code: theorem IsCoprime.mul_dvd (H : IsCoprime x y) (H1 : x ∣ z) (H2 : y ∣ z) : x * y ∣ z 
goal: x * y ∣ z

full_name: IsCoprime.of_mul_left_left
code: theorem IsCoprime.of_mul_left_left (H : IsCoprime (x * y) z) : IsCoprime x z 
goal: IsCoprime x z

full_name: IsCoprime.of_mul_left_right
code: theorem IsCoprime.of_mul_left_right (H : IsCoprime (x * y) z) : IsCoprime y z 
goal: IsCoprime y z

full_name: IsCoprime.of_mul_right_left
code: theorem IsCoprime.of_mul_right_left (H : IsCoprime x (y * z)) : IsCoprime x y 
goal: IsCoprime x y

full_name: IsCoprime.of_mul_right_right
code: theorem IsCoprime.of_mul_right_right (H : IsCoprime x (y * z)) : IsCoprime x z 
goal: IsCoprime x z

full_name: IsCoprime.mul_left_iff
code: theorem IsCoprime.mul_left_iff : IsCoprime (x * y) z ↔ IsCoprime x z ∧ IsCoprime y z 
goal: IsCoprime (x * y) z ↔ IsCoprime x z ∧ IsCoprime y z

full_name: IsCoprime.mul_right_iff
code: theorem IsCoprime.mul_right_iff : IsCoprime x (y * z) ↔ IsCoprime x y ∧ IsCoprime x z 
goal: IsCoprime x (y * z) ↔ IsCoprime x y ∧ IsCoprime x z

full_name: IsCoprime.of_isCoprime_of_dvd_left
code: theorem IsCoprime.of_isCoprime_of_dvd_left (h : IsCoprime y z) (hdvd : x ∣ y) : IsCoprime x z 
goal: IsCoprime x z

full_name: IsCoprime.of_isCoprime_of_dvd_right
code: theorem IsCoprime.of_isCoprime_of_dvd_right (h : IsCoprime z y) (hdvd : x ∣ y) : IsCoprime z x 
goal: IsCoprime z x

full_name: IsCoprime.isUnit_of_dvd
code: theorem IsCoprime.isUnit_of_dvd (H : IsCoprime x y) (d : x ∣ y) : IsUnit x 
goal: IsUnit x

full_name: IsCoprime.isUnit_of_dvd'
code: theorem IsCoprime.isUnit_of_dvd' {a b x : R} (h : IsCoprime a b) (ha : x ∣ a) (hb : x ∣ b) :
    IsUnit x 
goal: IsUnit x

full_name: IsCoprime.isRelPrime
code: theorem IsCoprime.isRelPrime {a b : R} (h : IsCoprime a b) : IsRelPrime a b 
goal: IsRelPrime a b

full_name: IsCoprime.map
code: theorem IsCoprime.map (H : IsCoprime x y) {S : Type v} [CommSemiring S] (f : R →+* S) :
    IsCoprime (f x) (f y) 
goal: IsCoprime (f x) (f y)

full_name: IsCoprime.of_add_mul_left_left
code: theorem IsCoprime.of_add_mul_left_left (h : IsCoprime (x + y * z) y) : IsCoprime x y 
goal: IsCoprime x y

full_name: IsCoprime.of_add_mul_right_left
code: theorem IsCoprime.of_add_mul_right_left (h : IsCoprime (x + z * y) y) : IsCoprime x y 
goal: IsCoprime x y

full_name: IsCoprime.of_add_mul_left_right
code: theorem IsCoprime.of_add_mul_left_right (h : IsCoprime x (y + x * z)) : IsCoprime x y 
goal: IsCoprime x y

full_name: IsCoprime.of_add_mul_right_right
code: theorem IsCoprime.of_add_mul_right_right (h : IsCoprime x (y + z * x)) : IsCoprime x y 
goal: IsCoprime x y

full_name: IsCoprime.of_mul_add_left_left
code: theorem IsCoprime.of_mul_add_left_left (h : IsCoprime (y * z + x) y) : IsCoprime x y 
goal: IsCoprime x y

full_name: IsCoprime.of_mul_add_right_left
code: theorem IsCoprime.of_mul_add_right_left (h : IsCoprime (z * y + x) y) : IsCoprime x y 
goal: IsCoprime x y

full_name: IsCoprime.of_mul_add_left_right
code: theorem IsCoprime.of_mul_add_left_right (h : IsCoprime x (x * z + y)) : IsCoprime x y 
goal: IsCoprime x y

full_name: IsCoprime.of_mul_add_right_right
code: theorem IsCoprime.of_mul_add_right_right (h : IsCoprime x (z * x + y)) : IsCoprime x y 
goal: IsCoprime x y

full_name: IsRelPrime.of_add_mul_left_left
code: theorem IsRelPrime.of_add_mul_left_left (h : IsRelPrime (x + y * z) y) : IsRelPrime x y 
goal: IsRelPrime x y

full_name: IsRelPrime.of_add_mul_right_left
code: theorem IsRelPrime.of_add_mul_right_left (h : IsRelPrime (x + z * y) y) : IsRelPrime x y 
goal: IsRelPrime x y

full_name: IsRelPrime.of_add_mul_left_right
code: theorem IsRelPrime.of_add_mul_left_right (h : IsRelPrime x (y + x * z)) : IsRelPrime x y 
goal: IsRelPrime x y

full_name: IsRelPrime.of_add_mul_right_right
code: theorem IsRelPrime.of_add_mul_right_right (h : IsRelPrime x (y + z * x)) : IsRelPrime x y 
goal: IsRelPrime x y

full_name: IsRelPrime.of_mul_add_left_left
code: theorem IsRelPrime.of_mul_add_left_left (h : IsRelPrime (y * z + x) y) : IsRelPrime x y 
goal: IsRelPrime x y

full_name: IsRelPrime.of_mul_add_right_left
code: theorem IsRelPrime.of_mul_add_right_left (h : IsRelPrime (z * y + x) y) : IsRelPrime x y 
goal: IsRelPrime x y

full_name: IsRelPrime.of_mul_add_left_right
code: theorem IsRelPrime.of_mul_add_left_right (h : IsRelPrime x (x * z + y)) : IsRelPrime x y 
goal: IsRelPrime x y

full_name: IsRelPrime.of_mul_add_right_right
code: theorem IsRelPrime.of_mul_add_right_right (h : IsRelPrime x (z * x + y)) : IsRelPrime x y 
goal: IsRelPrime x y

full_name: isCoprime_group_smul_left
code: theorem isCoprime_group_smul_left : IsCoprime (x • y) z ↔ IsCoprime y z 
goal: IsCoprime (x • y) z ↔ IsCoprime y z

full_name: isCoprime_group_smul_right
code: theorem isCoprime_group_smul_right : IsCoprime y (x • z) ↔ IsCoprime y z 
goal: IsCoprime y (x • z) ↔ IsCoprime y z

full_name: isCoprime_group_smul
code: theorem isCoprime_group_smul : IsCoprime (x • y) (x • z) ↔ IsCoprime y z 
goal: IsCoprime (x • y) (x • z) ↔ IsCoprime y z

full_name: isCoprime_mul_unit_left_left
code: theorem isCoprime_mul_unit_left_left : IsCoprime (x * y) z ↔ IsCoprime y z 
goal: IsCoprime (x * y) z ↔ IsCoprime y z

full_name: isCoprime_mul_unit_left_right
code: theorem isCoprime_mul_unit_left_right : IsCoprime y (x * z) ↔ IsCoprime y z 
goal: IsCoprime y (x * z) ↔ IsCoprime y z

full_name: isCoprime_mul_unit_left
code: theorem isCoprime_mul_unit_left : IsCoprime (x * y) (x * z) ↔ IsCoprime y z 
goal: IsCoprime (x * y) (x * z) ↔ IsCoprime y z

full_name: isCoprime_mul_unit_right_left
code: theorem isCoprime_mul_unit_right_left : IsCoprime (y * x) z ↔ IsCoprime y z 
goal: IsCoprime (y * x) z ↔ IsCoprime y z

full_name: isCoprime_mul_unit_right_right
code: theorem isCoprime_mul_unit_right_right : IsCoprime y (z * x) ↔ IsCoprime y z 
goal: IsCoprime y (z * x) ↔ IsCoprime y z

full_name: isCoprime_mul_unit_right
code: theorem isCoprime_mul_unit_right : IsCoprime (y * x) (z * x) ↔ IsCoprime y z 
goal: IsCoprime (y * x) (z * x) ↔ IsCoprime y z

full_name: IsCoprime.add_mul_left_left
code: theorem add_mul_left_left {x y : R} (h : IsCoprime x y) (z : R) : IsCoprime (x + y * z) y 
goal: IsCoprime (x + y * z) y

full_name: IsCoprime.add_mul_right_left
code: theorem add_mul_right_left {x y : R} (h : IsCoprime x y) (z : R) : IsCoprime (x + z * y) y 
goal: IsCoprime (x + z * y) y

full_name: IsCoprime.add_mul_left_right
code: theorem add_mul_left_right {x y : R} (h : IsCoprime x y) (z : R) : IsCoprime x (y + x * z) 
goal: IsCoprime x (y + x * z)

full_name: IsCoprime.add_mul_right_right
code: theorem add_mul_right_right {x y : R} (h : IsCoprime x y) (z : R) : IsCoprime x (y + z * x) 
goal: IsCoprime x (y + z * x)

full_name: IsCoprime.mul_add_left_left
code: theorem mul_add_left_left {x y : R} (h : IsCoprime x y) (z : R) : IsCoprime (y * z + x) y 
goal: IsCoprime (y * z + x) y

full_name: IsCoprime.mul_add_right_left
code: theorem mul_add_right_left {x y : R} (h : IsCoprime x y) (z : R) : IsCoprime (z * y + x) y 
goal: IsCoprime (z * y + x) y

full_name: IsCoprime.mul_add_left_right
code: theorem mul_add_left_right {x y : R} (h : IsCoprime x y) (z : R) : IsCoprime x (x * z + y) 
goal: IsCoprime x (x * z + y)

full_name: IsCoprime.mul_add_right_right
code: theorem mul_add_right_right {x y : R} (h : IsCoprime x y) (z : R) : IsCoprime x (z * x + y) 
goal: IsCoprime x (z * x + y)

full_name: IsCoprime.add_mul_left_left_iff
code: theorem add_mul_left_left_iff {x y z : R} : IsCoprime (x + y * z) y ↔ IsCoprime x y 
goal: IsCoprime (x + y * z) y ↔ IsCoprime x y

full_name: IsCoprime.add_mul_right_left_iff
code: theorem add_mul_right_left_iff {x y z : R} : IsCoprime (x + z * y) y ↔ IsCoprime x y 
goal: IsCoprime (x + z * y) y ↔ IsCoprime x y

full_name: IsCoprime.add_mul_left_right_iff
code: theorem add_mul_left_right_iff {x y z : R} : IsCoprime x (y + x * z) ↔ IsCoprime x y 
goal: IsCoprime x (y + x * z) ↔ IsCoprime x y

full_name: IsCoprime.add_mul_right_right_iff
code: theorem add_mul_right_right_iff {x y z : R} : IsCoprime x (y + z * x) ↔ IsCoprime x y 
goal: IsCoprime x (y + z * x) ↔ IsCoprime x y

full_name: IsCoprime.mul_add_left_left_iff
code: theorem mul_add_left_left_iff {x y z : R} : IsCoprime (y * z + x) y ↔ IsCoprime x y 
goal: IsCoprime (y * z + x) y ↔ IsCoprime x y

full_name: IsCoprime.mul_add_right_left_iff
code: theorem mul_add_right_left_iff {x y z : R} : IsCoprime (z * y + x) y ↔ IsCoprime x y 
goal: IsCoprime (z * y + x) y ↔ IsCoprime x y

full_name: IsCoprime.mul_add_left_right_iff
code: theorem mul_add_left_right_iff {x y z : R} : IsCoprime x (x * z + y) ↔ IsCoprime x y 
goal: IsCoprime x (x * z + y) ↔ IsCoprime x y

full_name: IsCoprime.mul_add_right_right_iff
code: theorem mul_add_right_right_iff {x y z : R} : IsCoprime x (z * x + y) ↔ IsCoprime x y 
goal: IsCoprime x (z * x + y) ↔ IsCoprime x y

full_name: IsCoprime.neg_left
code: theorem neg_left {x y : R} (h : IsCoprime x y) : IsCoprime (-x) y 
goal: IsCoprime (-x) y

full_name: IsCoprime.neg_left_iff
code: theorem neg_left_iff (x y : R) : IsCoprime (-x) y ↔ IsCoprime x y 
goal: IsCoprime (-x) y ↔ IsCoprime x y

full_name: IsCoprime.neg_right
code: theorem neg_right {x y : R} (h : IsCoprime x y) : IsCoprime x (-y) 
goal: IsCoprime x (-y)

full_name: IsCoprime.neg_right_iff
code: theorem neg_right_iff (x y : R) : IsCoprime x (-y) ↔ IsCoprime x y 
goal: IsCoprime x (-y) ↔ IsCoprime x y

full_name: IsCoprime.neg_neg
code: theorem neg_neg {x y : R} (h : IsCoprime x y) : IsCoprime (-x) (-y) 
goal: IsCoprime (-x) (-y)

full_name: IsCoprime.neg_neg_iff
code: theorem neg_neg_iff (x y : R) : IsCoprime (-x) (-y) ↔ IsCoprime x y 
goal: IsCoprime (-x) (-y) ↔ IsCoprime x y

full_name: IsCoprime.sq_add_sq_ne_zero
code: theorem sq_add_sq_ne_zero {R : Type*} [LinearOrderedCommRing R] {a b : R} (h : IsCoprime a b) :
    a ^ 2 + b ^ 2 ≠ 0 
goal: a ^ 2 + b ^ 2 ≠ 0

full_name: IsRelPrime.add_mul_left_left
code: theorem add_mul_left_left (h : IsRelPrime x y) : IsRelPrime (x + y * z) y 
goal: IsRelPrime (x + y * z) y

full_name: IsRelPrime.add_mul_right_left
code: theorem add_mul_right_left : IsRelPrime (x + z * y) y 
goal: IsRelPrime (x + z * y) y

full_name: IsRelPrime.add_mul_left_right
code: theorem add_mul_left_right : IsRelPrime x (y + x * z) 
goal: IsRelPrime x (y + x * z)

full_name: IsRelPrime.add_mul_right_right
code: theorem add_mul_right_right : IsRelPrime x (y + z * x) 
goal: IsRelPrime x (y + z * x)

full_name: IsRelPrime.mul_add_left_left
code: theorem mul_add_left_left : IsRelPrime (y * z + x) y 
goal: IsRelPrime (y * z + x) y

full_name: IsRelPrime.mul_add_right_left
code: theorem mul_add_right_left : IsRelPrime (z * y + x) y 
goal: IsRelPrime (z * y + x) y

full_name: IsRelPrime.mul_add_left_right
code: theorem mul_add_left_right : IsRelPrime x (x * z + y) 
goal: IsRelPrime x (x * z + y)

full_name: IsRelPrime.mul_add_right_right
code: theorem mul_add_right_right : IsRelPrime x (z * x + y) 
goal: IsRelPrime x (z * x + y)

full_name: IsRelPrime.add_mul_left_left_iff
code: theorem add_mul_left_left_iff : IsRelPrime (x + y * z) y ↔ IsRelPrime x y 
goal: IsRelPrime (x + y * z) y ↔ IsRelPrime x y

full_name: IsRelPrime.add_mul_right_left_iff
code: theorem add_mul_right_left_iff : IsRelPrime (x + z * y) y ↔ IsRelPrime x y 
goal: IsRelPrime (x + z * y) y ↔ IsRelPrime x y

full_name: IsRelPrime.add_mul_left_right_iff
code: theorem add_mul_left_right_iff : IsRelPrime x (y + x * z) ↔ IsRelPrime x y 
goal: IsRelPrime x (y + x * z) ↔ IsRelPrime x y

full_name: IsRelPrime.add_mul_right_right_iff
code: theorem add_mul_right_right_iff : IsRelPrime x (y + z * x) ↔ IsRelPrime x y 
goal: IsRelPrime x (y + z * x) ↔ IsRelPrime x y

full_name: IsRelPrime.mul_add_left_left_iff
code: theorem mul_add_left_left_iff {x y z : R} : IsRelPrime (y * z + x) y ↔ IsRelPrime x y 
goal: IsRelPrime (y * z + x) y ↔ IsRelPrime x y

full_name: IsRelPrime.mul_add_right_left_iff
code: theorem mul_add_right_left_iff {x y z : R} : IsRelPrime (z * y + x) y ↔ IsRelPrime x y 
goal: IsRelPrime (z * y + x) y ↔ IsRelPrime x y

full_name: IsRelPrime.mul_add_left_right_iff
code: theorem mul_add_left_right_iff {x y z : R} : IsRelPrime x (x * z + y) ↔ IsRelPrime x y 
goal: IsRelPrime x (x * z + y) ↔ IsRelPrime x y

full_name: IsRelPrime.mul_add_right_right_iff
code: theorem mul_add_right_right_iff {x y z : R} : IsRelPrime x (z * x + y) ↔ IsRelPrime x y 
goal: IsRelPrime x (z * x + y) ↔ IsRelPrime x y

full_name: IsRelPrime.neg_left
code: theorem neg_left : IsRelPrime (-x) y 
goal: IsRelPrime (-x) y

full_name: IsRelPrime.neg_right
code: theorem neg_right : IsRelPrime x (-y) 
goal: IsRelPrime x (-y)

full_name: IsRelPrime.neg_neg
code: protected theorem neg_neg : IsRelPrime (-x) (-y) 
goal: IsRelPrime (-x) (-y)

full_name: IsRelPrime.neg_left_iff
code: theorem neg_left_iff (x y : R) : IsRelPrime (-x) y ↔ IsRelPrime x y 
goal: IsRelPrime (-x) y ↔ IsRelPrime x y

full_name: IsRelPrime.neg_right_iff
code: theorem neg_right_iff (x y : R) : IsRelPrime x (-y) ↔ IsRelPrime x y 
goal: IsRelPrime x (-y) ↔ IsRelPrime x y

full_name: IsRelPrime.neg_neg_iff
code: theorem neg_neg_iff (x y : R) : IsRelPrime (-x) (-y) ↔ IsRelPrime x y 
goal: IsRelPrime (-x) (-y) ↔ IsRelPrime x y