# Additional lemmas about elements of a ring satisfying IsCoprime#

and elements of a monoid satisfying IsRelPrime

These lemmas are in a separate file to the definition of IsCoprime or IsRelPrime as they require more imports.

Notably, this includes lemmas about Finset.prod as this requires importing BigOperators, and lemmas about Pow since these are easiest to prove via Finset.prod.

theorem Nat.isCoprime_iff_coprime {m : } {n : } :
IsCoprime m n
theorem IsCoprime.nat_coprime {m : } {n : } :
IsCoprime m n

Alias of the forward direction of Nat.isCoprime_iff_coprime.

theorem Nat.Coprime.isCoprime {m : } {n : } :
IsCoprime m n

Alias of the reverse direction of Nat.isCoprime_iff_coprime.

theorem Nat.Coprime.cast {R : Type u_1} [] {a : } {b : } (h : ) :
IsCoprime a b
theorem ne_zero_or_ne_zero_of_nat_coprime {A : Type u} [] [] {a : } {b : } (h : ) :
a 0 b 0
theorem IsCoprime.prod_left {R : Type u} {I : Type v} [] {x : R} {s : IR} {t : } :
(it, IsCoprime (s i) x)IsCoprime (Finset.prod t fun (i : I) => s i) x
theorem IsCoprime.prod_right {R : Type u} {I : Type v} [] {x : R} {s : IR} {t : } :
(it, IsCoprime x (s i))IsCoprime x (Finset.prod t fun (i : I) => s i)
theorem IsCoprime.prod_left_iff {R : Type u} {I : Type v} [] {x : R} {s : IR} {t : } :
IsCoprime (Finset.prod t fun (i : I) => s i) x it, IsCoprime (s i) x
theorem IsCoprime.prod_right_iff {R : Type u} {I : Type v} [] {x : R} {s : IR} {t : } :
IsCoprime x (Finset.prod t fun (i : I) => s i) it, IsCoprime x (s i)
theorem IsCoprime.of_prod_left {R : Type u} {I : Type v} [] {x : R} {s : IR} {t : } (H1 : IsCoprime (Finset.prod t fun (i : I) => s i) x) (i : I) (hit : i t) :
IsCoprime (s i) x
theorem IsCoprime.of_prod_right {R : Type u} {I : Type v} [] {x : R} {s : IR} {t : } (H1 : IsCoprime x (Finset.prod t fun (i : I) => s i)) (i : I) (hit : i t) :
IsCoprime x (s i)
theorem Finset.prod_dvd_of_coprime {R : Type u} {I : Type v} [] {z : R} {s : IR} {t : } :
Set.Pairwise (t) (IsCoprime on s)(it, s i z)(Finset.prod t fun (x : I) => s x) z
theorem Fintype.prod_dvd_of_coprime {R : Type u} {I : Type v} [] {z : R} {s : IR} [] (Hs : Pairwise (IsCoprime on s)) (Hs1 : ∀ (i : I), s i z) :
(Finset.prod Finset.univ fun (x : I) => s x) z
theorem exists_sum_eq_one_iff_pairwise_coprime {R : Type u} {I : Type v} [] {s : IR} {t : } [] (h : t.Nonempty) :
(∃ (μ : IR), (Finset.sum t fun (i : I) => μ i * Finset.prod (t \ {i}) fun (j : I) => s j) = 1) Pairwise (IsCoprime on fun (i : { x : I // x t }) => s i)
theorem exists_sum_eq_one_iff_pairwise_coprime' {R : Type u} {I : Type v} [] {s : IR} [] [] [] :
(∃ (μ : IR), (Finset.sum Finset.univ fun (i : I) => μ i * Finset.prod {i} fun (j : I) => s j) = 1) Pairwise (IsCoprime on s)
theorem pairwise_coprime_iff_coprime_prod {R : Type u} {I : Type v} [] {s : IR} {t : } [] :
Pairwise (IsCoprime on fun (i : { x : I // x t }) => s i) it, IsCoprime (s i) (Finset.prod (t \ {i}) fun (j : I) => s j)
theorem IsCoprime.pow_left {R : Type u} [] {x : R} {y : R} {m : } (H : ) :
IsCoprime (x ^ m) y
theorem IsCoprime.pow_right {R : Type u} [] {x : R} {y : R} {n : } (H : ) :
IsCoprime x (y ^ n)
theorem IsCoprime.pow {R : Type u} [] {x : R} {y : R} {m : } {n : } (H : ) :
IsCoprime (x ^ m) (y ^ n)
theorem IsCoprime.pow_left_iff {R : Type u} [] {x : R} {y : R} {m : } (hm : 0 < m) :
IsCoprime (x ^ m) y
theorem IsCoprime.pow_right_iff {R : Type u} [] {x : R} {y : R} {m : } (hm : 0 < m) :
IsCoprime x (y ^ m)
theorem IsCoprime.pow_iff {R : Type u} [] {x : R} {y : R} {m : } {n : } (hm : 0 < m) (hn : 0 < n) :
IsCoprime (x ^ m) (y ^ n)
theorem IsRelPrime.prod_left {α : Type u_2} {I : Type u_1} [] {x : α} {s : Iα} {t : } :
(it, IsRelPrime (s i) x)IsRelPrime (Finset.prod t fun (i : I) => s i) x
theorem IsRelPrime.prod_right {α : Type u_2} {I : Type u_1} [] {x : α} {s : Iα} {t : } :
(it, IsRelPrime x (s i))IsRelPrime x (Finset.prod t fun (i : I) => s i)
theorem IsRelPrime.prod_left_iff {α : Type u_1} {I : Type u_2} [] {x : α} {s : Iα} {t : } :
IsRelPrime (Finset.prod t fun (i : I) => s i) x it, IsRelPrime (s i) x
theorem IsRelPrime.prod_right_iff {α : Type u_1} {I : Type u_2} [] {x : α} {s : Iα} {t : } :
IsRelPrime x (Finset.prod t fun (i : I) => s i) it, IsRelPrime x (s i)
theorem IsRelPrime.of_prod_left {α : Type u_1} {I : Type u_2} [] {x : α} {s : Iα} {t : } (H1 : IsRelPrime (Finset.prod t fun (i : I) => s i) x) (i : I) (hit : i t) :
IsRelPrime (s i) x
theorem IsRelPrime.of_prod_right {α : Type u_1} {I : Type u_2} [] {x : α} {s : Iα} {t : } (H1 : IsRelPrime x (Finset.prod t fun (i : I) => s i)) (i : I) (hit : i t) :
IsRelPrime x (s i)
theorem Finset.prod_dvd_of_isRelPrime {α : Type u_2} {I : Type u_1} [] {z : α} {s : Iα} {t : } :
Set.Pairwise (t) (IsRelPrime on s)(it, s i z)(Finset.prod t fun (x : I) => s x) z
theorem Fintype.prod_dvd_of_isRelPrime {α : Type u_2} {I : Type u_1} [] {z : α} {s : Iα} [] (Hs : Pairwise (IsRelPrime on s)) (Hs1 : ∀ (i : I), s i z) :
(Finset.prod Finset.univ fun (x : I) => s x) z
theorem pairwise_isRelPrime_iff_isRelPrime_prod {α : Type u_2} {I : Type u_1} [] {s : Iα} {t : } [] :
Pairwise (IsRelPrime on fun (i : { x : I // x t }) => s i) it, IsRelPrime (s i) (Finset.prod (t \ {i}) fun (j : I) => s j)
theorem IsRelPrime.pow_left {α : Type u_1} [] {x : α} {y : α} {m : } (H : ) :
IsRelPrime (x ^ m) y
theorem IsRelPrime.pow_right {α : Type u_1} [] {x : α} {y : α} {n : } (H : ) :
IsRelPrime x (y ^ n)
theorem IsRelPrime.pow {α : Type u_1} [] {x : α} {y : α} {m : } {n : } (H : ) :
IsRelPrime (x ^ m) (y ^ n)
theorem IsRelPrime.pow_left_iff {α : Type u_1} [] {x : α} {y : α} {m : } (hm : 0 < m) :
IsRelPrime (x ^ m) y
theorem IsRelPrime.pow_right_iff {α : Type u_1} [] {x : α} {y : α} {m : } (hm : 0 < m) :
IsRelPrime x (y ^ m)
theorem IsRelPrime.pow_iff {α : Type u_1} [] {x : α} {y : α} {m : } {n : } (hm : 0 < m) (hn : 0 < n) :
IsRelPrime (x ^ m) (y ^ n)