Skip to content

Commit a93cf15

Browse files
committed
feat(Nat/GCD): Add dvd_gcd_mul_gcd_of_dvd_mul (#12246)
1 parent cba2f37 commit a93cf15

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

Mathlib/Data/Nat/GCD/Basic.lean

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,4 +345,23 @@ theorem Coprime.mul_add_mul_ne_mul {m n a b : ℕ} (cop : Coprime m n) (ha : a
345345
rw [← mul_assoc, ← h, add_mul, add_mul, mul_comm _ n, ← mul_assoc, mul_comm y]
346346
#align nat.coprime.mul_add_mul_ne_mul Nat.Coprime.mul_add_mul_ne_mul
347347

348+
variable {x n m : ℕ}
349+
350+
theorem dvd_gcd_mul_iff_dvd_mul : x ∣ gcd x n * m ↔ x ∣ n * m := by
351+
refine ⟨(·.trans <| mul_dvd_mul_right (x.gcd_dvd_right n) m), fun ⟨y, hy⟩ ↦ ?_⟩
352+
rw [← gcd_mul_right, hy, gcd_mul_left]
353+
exact dvd_mul_right x (gcd m y)
354+
355+
theorem dvd_mul_gcd_iff_dvd_mul : x ∣ n * gcd x m ↔ x ∣ n * m := by
356+
rw [mul_comm, dvd_gcd_mul_iff_dvd_mul, mul_comm]
357+
358+
theorem dvd_gcd_mul_gcd_iff_dvd_mul : x ∣ gcd x n * gcd x m ↔ x ∣ n * m := by
359+
rw [dvd_gcd_mul_iff_dvd_mul, dvd_mul_gcd_iff_dvd_mul]
360+
361+
theorem gcd_mul_gcd_eq_iff_dvd_mul_of_coprime (hcop : Coprime n m) :
362+
gcd x n * gcd x m = x ↔ x ∣ n * m := by
363+
refine ⟨fun h ↦ ?_, (dvd_antisymm ?_ <| dvd_gcd_mul_gcd_iff_dvd_mul.mpr ·)⟩
364+
refine h ▸ Nat.mul_dvd_mul ?_ ?_ <;> exact x.gcd_dvd_right _
365+
refine (hcop.gcd_both x x).mul_dvd_of_dvd_of_dvd ?_ ?_ <;> exact x.gcd_dvd_left _
366+
348367
end Nat

0 commit comments

Comments
 (0)