Zulip Chat Archive

Stream: Is there code for X?

Topic: p divided q iff p divides k * q for nonzero k (polynomials)


Ilmārs Cīrulis (May 04 2025 at 10:31):

How can one prove this? Is there something in Mathlib, maybe? (I didn't find yet.)

import Mathlib

open Polynomial

theorem thm (p q: ℤ[X]) (Hp: Monic p) (k: ℤ) (Hk: k ≠ 0):
    p ∣ C k * q ↔ p ∣ q := by
  sorry

Yaël Dillies (May 04 2025 at 10:36):

This is a direct consequence of docs#IsUnit.dvd_mul_left, docs#Polynomial.isUnit_C

Yaël Dillies (May 04 2025 at 10:37):

Hmm, it would be if ℤ was a field

Ruben Van de Velde (May 04 2025 at 11:52):

Is it true?

Junyan Xu (May 04 2025 at 12:16):

One possible proof:

import Mathlib.Algebra.GCDMonoid.Nat
import Mathlib.RingTheory.Polynomial.Content

open Polynomial in
theorem thm (p q : ℤ[X]) (hp : Monic p) (k : ℤ) (hk : k ≠ 0):
    p ∣ C k * q ↔ p ∣ q := by
  obtain rfl | hq := eq_or_ne q 0; · simp
  have := mul_ne_zero (C_ne_zero.mpr hk) hq
  rw [← hp.isPrimitive.dvd_primPart_iff_dvd this, ← hp.isPrimitive.dvd_primPart_iff_dvd hq,
    primPart_mul this, (isUnit_primPart_C _).dvd_mul_left]

Ilmārs Cīrulis (May 04 2025 at 13:06):

Thank you!


Last updated: Feb 28 2026 at 14:05 UTC