Erdős Problem #376 — first Lean target (the Kummer digit bridge, NOT the open infinitude claim).
Recon: ~/Knowledge/Construct/recon/erdos_376.md
Builds on the proven Kummer infra in
ConstructProofs/ConcreteMath/KummerBridge.lean
(sub_one_mul_padicValNat_centralBinom: (p-1)·ν_p(C(2n,n)) = 2·S_p(n) − S_p(2n)).
GOAL (proved here, zero sorry):
Nat.Coprime (Nat.centralBinom n) 105 ↔ LowDoubleDigits 3 n ∧ LowDoubleDigits 5 n ∧ LowDoubleDigits 7 n
where LowDoubleDigits p n := ∀ d ∈ Nat.digits p n, 2*d < p
(every base-3 digit ≤ 1, every base-5 digit ≤ 2, every base-7 digit ≤ 3).
105 = 3·5·7, so coprimality to 105 splits into the three prime conditions,
and for each prime Kummer says: p ∤ C(2n,n) iff doubling n in base p has no
carry iff every base-p digit d of n satisfies 2d < p.
This is the finite, exact bridge (recon §7 "Concrete first Lean target").
It does NOT touch the open statement {n | …}.Infinite.
The carry machinery below is the general-base-p analogue of the base-3
doubling transducer already proven in ConcreteMath/CarryTransducerCorrectness.lean.
The digit predicate (matches recon §7) #
LowDoubleDigits p n: doubling n in base p produces no carry, i.e.
every base-p digit d of n satisfies 2*d < p. For p = 3 this is
"all digits ≤ 1", for p = 5 "≤ 2", for p = 7 "≤ 3".
Equations
- Egrs75.Erdos376.LowDoubleDigits p n = ∀ d ∈ p.digits n, 2 * d < p
Instances For
General-base doubling carry transducer #
We double a little-endian base-b digit list, carrying as needed. This
mirrors the base-3 ternaryDouble* transducer in
ConcreteMath/CarryTransducerCorrectness.lean, generalized to any base.
The little-endian digit list produced by doubling ds (base b) with an
incoming carry.
Equations
- Egrs75.Erdos376.doubleDigitsAux b [] x✝ = [x✝]
- Egrs75.Erdos376.doubleDigitsAux b (d :: ds) x✝ = (2 * d + x✝) % b :: Egrs75.Erdos376.doubleDigitsAux b ds (Egrs75.Erdos376.doubleCarryStep b x✝ d)
Instances For
Number of outgoing carries when doubling ds (base b) with an incoming
carry.
Equations
- Egrs75.Erdos376.doubleCarryCountAux b [] x✝ = 0
- Egrs75.Erdos376.doubleCarryCountAux b (d :: ds) x✝ = Egrs75.Erdos376.doubleCarryStep b x✝ d + Egrs75.Erdos376.doubleCarryCountAux b ds (Egrs75.Erdos376.doubleCarryStep b x✝ d)
Instances For
Carries when doubling n in base b, given the little-endian digit list.
Equations
Instances For
Step facts #
Aux-list facts #
ofDigits of the doubled list equals 2 · ofDigits ds + carry.
From the aux list to the genuine base-b digits of 2n #
The no-carry ⇔ small-digits characterisation #
Per-prime Kummer coprimality characterisation #
For a prime p, C(2n,n) is coprime to p iff every base-p digit of
n doubles without carry, i.e. LowDoubleDigits p n.
Main bridge for 105 = 3·5·7 #
Erdős #376 Kummer bridge. C(2n,n) is coprime to 105 exactly when
all its base-3 digits are ≤ 1, all its base-5 digits are ≤ 2, and all its
base-7 digits are ≤ 3. (This is the finite digit characterisation — OEIS
A030979 — not the open infinitude claim.)