Product divisibility from a Bézout identity
ProvedThreeSum.Arithmetic.mul_dvd_iff_of_bezout3sumalgorithmsfine-grained-complexitythree-sum-1962word-ram
Let . Suppose there are integers with . Then
The hypothesis is a concrete Bézout certificate; no positivity or primality assumption is required. The equivalence combines separate divisibility tests into one test for the product modulus.
Preamble
import Lean.Elab.Tactic.Omega import Mathlib.Algebra.Order.BigOperators.Group.Finset import Mathlib.Data.Fintype.BigOperators import Mathlib.Data.Int.ModEq import Mathlib.RingTheory.Coprime.Lemmas import Mathlib.Tactic.Linarith import Mathlib.Tactic.Push import Mathlib.Tactic.Ring set_option autoImplicit false set_option relaxedAutoImplicit false set_option Elab.async false
Formal statement
theorem ThreeSum.Arithmetic.mul_dvd_iff_of_bezout : ∀ {m l x : Int}
(hbez :
∃ (u : Int) (v : Int),
@Eq.{1} Int
(@HAdd.hAdd.{0, 0, 0} Int Int Int (@instHAdd.{0} Int Int.instAdd)
(@HMul.hMul.{0, 0, 0} Int Int Int (@instHMul.{0} Int Int.instMul) u m)
(@HMul.hMul.{0, 0, 0} Int Int Int (@instHMul.{0} Int Int.instMul) v l))
(@OfNat.ofNat.{0} Int (nat_lit 1) (@instOfNat (nat_lit 1)))),
Iff (@Dvd.dvd.{0} Int Int.instDvd (@HMul.hMul.{0, 0, 0} Int Int Int (@instHMul.{0} Int Int.instMul) m l) x)
(And (@Dvd.dvd.{0} Int Int.instDvd m x) (@Dvd.dvd.{0} Int Int.instDvd l x)) := by
sorry
Source