Skip to content

Commit

Permalink
feat(Nat/GCD): Add dvd_gcd_mul_gcd_of_dvd_mul (#12246)
Browse files Browse the repository at this point in the history
  • Loading branch information
Jun2M committed Apr 24, 2024
1 parent cba2f37 commit a93cf15
Showing 1 changed file with 19 additions and 0 deletions.
19 changes: 19 additions & 0 deletions Mathlib/Data/Nat/GCD/Basic.lean
Expand Up @@ -345,4 +345,23 @@ theorem Coprime.mul_add_mul_ne_mul {m n a b : ℕ} (cop : Coprime m n) (ha : a
rw [← mul_assoc, ← h, add_mul, add_mul, mul_comm _ n, ← mul_assoc, mul_comm y]
#align nat.coprime.mul_add_mul_ne_mul Nat.Coprime.mul_add_mul_ne_mul

variable {x n m : ℕ}

theorem dvd_gcd_mul_iff_dvd_mul : x ∣ gcd x n * m ↔ x ∣ n * m := by
refine ⟨(·.trans <| mul_dvd_mul_right (x.gcd_dvd_right n) m), fun ⟨y, hy⟩ ↦ ?_⟩
rw [← gcd_mul_right, hy, gcd_mul_left]
exact dvd_mul_right x (gcd m y)

theorem dvd_mul_gcd_iff_dvd_mul : x ∣ n * gcd x m ↔ x ∣ n * m := by
rw [mul_comm, dvd_gcd_mul_iff_dvd_mul, mul_comm]

theorem dvd_gcd_mul_gcd_iff_dvd_mul : x ∣ gcd x n * gcd x m ↔ x ∣ n * m := by
rw [dvd_gcd_mul_iff_dvd_mul, dvd_mul_gcd_iff_dvd_mul]

theorem gcd_mul_gcd_eq_iff_dvd_mul_of_coprime (hcop : Coprime n m) :
gcd x n * gcd x m = x ↔ x ∣ n * m := by
refine ⟨fun h ↦ ?_, (dvd_antisymm ?_ <| dvd_gcd_mul_gcd_iff_dvd_mul.mpr ·)⟩
refine h ▸ Nat.mul_dvd_mul ?_ ?_ <;> exact x.gcd_dvd_right _
refine (hcop.gcd_both x x).mul_dvd_of_dvd_of_dvd ?_ ?_ <;> exact x.gcd_dvd_left _

end Nat

0 comments on commit a93cf15

Please sign in to comment.