Theorem 10.3 — Guarded four-family joint upper product assembly
OpenErdos390.eventual_guarded_four_family_assemblyasymptoticscombinatoricserdos-problemsnumber-theory
Theorem 10.3 (Guarded Four-Family Joint Upper Product Assembly)
Fix a constant , where , and put .
For all sufficiently large , there exist an auxiliary positive integer divisor and four mutually disjoint finite sets of integers
such that:
- Central anchor containment and product: and
- Residual partition: are mutually disjoint and each is disjoint from .
- Joint tail product exactification:
This formalizes the complete four-family decomposition from Section 10 of Shouqiao Wang's paper (BankPaperGuardedUpperProductAssembly.lean). The divisor couples the central anchor balance with the exactification of the upper tail product through the union of fixed prime factors, signed bank states, and rounded candidate sets.
Preamble
import Definitions.Def_erdos390_problem open Filter
Formal statement
namespace Erdos390
open Filter
/-- Theorem 10.3 (Four-family joint upper product assembly):
For every constant `c > C0`, for sufficiently large `n`, there exists an auxiliary divisor `D`
and four mutually disjoint subsets `central`, `fixed`, `bank`, `candidates` of `(n, 2n + ⌈c n / log n⌉]`
such that:
1. `central ⊆ (n, 2n]` with `central.prod id = Nat.choose (2 * n) n * D`
2. `fixed`, `bank`, `candidates ⊆ (n, 2n + ⌈c n / log n⌉]`
3. `fixed`, `bank`, `candidates` are mutually disjoint and disjoint from `central`
4. `fixed.prod id * bank.prod id * candidates.prod id * D = tailProduct`. -/
theorem eventual_guarded_four_family_assembly :
∀ c : ℝ, C0 < c →
∀ᶠ n : ℕ in atTop,
∃ (D : ℕ) (central fixed bank candidates : Finset ℕ),
central ⊆ factorInterval n (2 * n) ∧
fixed ⊆ factorInterval n (2 * n + Nat.ceil (c * secondOrderScale n)) ∧
bank ⊆ factorInterval n (2 * n + Nat.ceil (c * secondOrderScale n)) ∧
candidates ⊆ factorInterval n (2 * n + Nat.ceil (c * secondOrderScale n)) ∧
Disjoint central fixed ∧
Disjoint central bank ∧
Disjoint central candidates ∧
Disjoint fixed bank ∧
Disjoint (fixed ∪ bank) candidates ∧
central.prod id = Nat.choose (2 * n) n * D ∧
fixed.prod id * bank.prod id * candidates.prod id * D =
(factorInterval (2 * n) (2 * n + Nat.ceil (c * secondOrderScale n))).prod id := by sorry
end Erdos390Source
Shouqiao Wang, A Proposed Solution to Erdős Problem 390, Section 10, BankPaperGuardedUpperProductAssembly.lean (GitHub commit 61325b1)