Few large prime divisors of a nonzero integer
ProvedThreeSum.PrimeChain.prime_divisors_card_le_log3sumalgorithmsfine-grained-complexitythree-sum-1962word-ram
Let be a finite set of natural primes, let be a natural number, and assume for every . For any nonzero integer ,
The absolute value is interpreted as a natural number in the divisibility test. This bounds how many candidate primes can divide one nonzero difference, providing the divisor-count input to the deterministic modular-score argument.
Preamble
import Lean.Elab.Tactic.Omega import Mathlib.Algebra.GCDMonoid.Nat import Mathlib.Algebra.Order.BigOperators.Group.Finset import Mathlib.Data.Fintype.BigOperators import Mathlib.Data.Int.ModEq import Mathlib.Data.List.MinMax import Mathlib.Data.Nat.GCD.Basic import Mathlib.Data.Nat.Log import Mathlib.Data.Nat.Prime.Basic 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.PrimeChain.prime_divisors_card_le_log : ∀ (C : Finset.{0} Nat) (y : Nat)
(hy : @LT.lt.{0} Nat instLTNat (@OfNat.ofNat.{0} Nat (nat_lit 1) (instOfNatNat (nat_lit 1))) y)
(hprime :
∀ (p : Nat),
@Membership.mem.{0, 0} Nat (Finset.{0} Nat)
(@SetLike.instMembership.{0, 0} (Finset.{0} Nat) Nat (@Finset.instSetLike.{0} Nat)) C p →
Nat.Prime p)
(hmin :
∀ (p : Nat),
@Membership.mem.{0, 0} Nat (Finset.{0} Nat)
(@SetLike.instMembership.{0, 0} (Finset.{0} Nat) Nat (@Finset.instSetLike.{0} Nat)) C p →
@LE.le.{0} Nat instLENat y p)
(z : Int) (hz : @Ne.{1} Int z (@OfNat.ofNat.{0} Int (nat_lit 0) (@instOfNat (nat_lit 0)))),
@LE.le.{0} Nat instLENat (@Finset.card.{0} Nat ({p ∈ C | @Dvd.dvd.{0} Nat Nat.instDvd p z.natAbs}))
(Nat.log y z.natAbs) := by
sorry
Source