← 返回总览 · 详解页 · 数论输入

证明到底压在什么上?
两条公理,零个可达 sorry

形式化证明的信任边界只有两处需要人肉核对:(a) Lean 定理是否表达了原问题;(b) 它依赖哪些公理、这些公理是否忠实转写自文献。本页把 Tang 证明的全部外部输入摊开来,逐条给出 Lean 原文与 Rosser–Schoenfeld 1962 出处。

一句话结论
整棵证明树只含 2 条 axiom 声明(都在 RSPrimeSums.lean),外加 Lean 标准三公理 propextClassical.choiceQuot.sound0 个可达 sorry。因此 #print axioms erdos_306 精确输出 5 条公理、无 sorry。

1. 两条 Rosser–Schoenfeld 公理(逐字)

两条公理都是把 J. B. Rosser 与 L. Schoenfeld 1962 年的经典结果原样写进 Lean。出处:Approximate formulas for some functions of prime numbers, Illinois J. Math. 6(1) (1962), 64–94,DOI 10.1215/ijm/1255631807

公理一 · dyadic 区间的素数密度 axiom

RS Corollary 3, 式 (3.8), p. 69。对 $x\ge 20\tfrac12$,区间 $(x,2x]$ 中的素数个数满足 $$\pi(2x)-\pi(x)\ >\ \frac{3x}{5\log x}.$$ 这是 dyadic 区间里素数密度的下界(PNT 级别)。

axiom rosser_schoenfeld_cor3 (x : ℝ) (hx : (41 : ℝ) / 2 ≤ x) :
    3 * x / (5 * Real.log x) <
      (Nat.primeCounting ⌊2 * x⌋₊ : ℝ) - (Nat.primeCounting ⌊x⌋₊ : ℝ)

RSPrimeSums.lean:41 · $\pi=$ Nat.primeCounting,$\lfloor\cdot\rfloor$ 为向下取整。

公理二 · Mertens 和的双侧界 axiom

RS Theorem 5, 式 (3.17)/(3.18), p. 70。存在 Mertens 常数 $B$(RS 式 (2.10),$B=0.26149721284764\ldots$),使 $$\log\log x+B-\frac{1}{2\log^2 x}<\sum_{p\le x}\frac1p\quad(x>1),\qquad \sum_{p\le x}\frac1p<\log\log x+B+\frac{1}{2\log^2 x}\quad(x\ge286).$$ 常数 $B$ 以存在量词给出(不钉死小数),正是 Theorem 5 的原样。历史源头:Mertens 1874。

axiom rosser_schoenfeld_thm5 :
    ∃ B : ℝ, ∀ x : ℝ,
      (1 < x →
          Real.log (Real.log x) + B - 1 / (2 * (Real.log x) ^ 2)
            < ∑ p ∈ (Finset.Icc 2 ⌊x⌋₊).filter Nat.Prime, (1 : ℝ) / (p : ℝ)) ∧
      (286 ≤ x →
          ∑ p ∈ (Finset.Icc 2 ⌊x⌋₊).filter Nat.Prime, (1 : ℝ) / (p : ℝ)
            < Real.log (Real.log x) + B + 1 / (2 * (Real.log x) ^ 2))

RSPrimeSums.lean:59 · 求和号即 $\sum_{p\le x}1/p$。

2. 项目里用到的数论事实,都是从这两条推出的定理

作者早期快照里曾把三条“dyadic 特化”当作局部公理;本快照已经全部降级为定理——这也解释了 README(说 2 条公理)与 Erdos306Final.lean 旧注释(说 3 条)的表面矛盾:README 正确,那条注释过时了

项目事实状态来源
dyadic_prime_density
每块素数个数 $\ge \dfrac{2^k}{2\log 2^k}$($k\ge5$)
定理由公理一(Cor 3)推出:块基数 $=\pi(2^{k+1})-\pi(2^k)$,端点为合数、代入 $x=2^k$、把 $3/5$ 弱化到 $1/2$。
RSPrimeSums.lean:118
dyadic_mertens_cumulative
大 $k_0$ 时 $\sum_{p\in[2^{k_0},2^{3k_0+1})}1/p\ge \tfrac{21}{20}$
定理由公理二(Thm 5)推出:块和 telescope 成 $S(2^{3k_0+1})-S(2^{k_0})$,常数 $B$ 抵消,$\log\log$ 差 $\ge\log 3>1.06$,误差项 $<0.003$。(真值极限 $\log 3\approx1.0986$。)
RSPrimeSums.lean:234
dyadic_control_recipLoad_eventually_small
控制边负载可任意小
定理 · 无数论公理纯初等:控制边负载被 $\sum 1/k^2$ 尾部界住($\le 512/(k_0-1)$),再取 $k_0$ 足够大。不用任何 RS 公理
R2BaseLoadUpper.lean:230
这两条数论输入各自喂给谁

3. 完整 audit:每一条公理、每一个 sorry

3.1 全树的 axiom 声明

grep -rn "axiom" *.lean 的真声明只有两条(其余是注释里的“axiom”一词):

file:line标识符
RSPrimeSums.lean:41rosser_schoenfeld_cor3
RSPrimeSums.lean:59rosser_schoenfeld_thm5

3.2 全树的 sorry

严格 grep 只命中一处,且不可达

file:line可达?
GlobalControl.lean:778 —— 位于块注释 /- … -/ 内(第 766 行开,790 行闭)。这是被划掉的、原先错误mismatch_penalty 旧陈述;真正的 mismatch_penalty 在第 792 行、已证。

其它所有含“sorry”字样都是 docstring 散文(“fully proved, no sorry”“was a sorry”之类)。若干过时的 docstring(SBEEDispersion.lean:267SBEEForcing.lean:780GlobalControlG7.lean:120 等)写着“Status: sorry”,但其后引理体经逐文件 grep 确认不含任何 sorry/admit/sorryAx

另外确认全树不含其它逃逸手段:admitsorryAxnative_decideLean.ofReduceBool@[implemented_by]unsafe

3.3 审核入口

lake env lean RequestProject/Audit.lean 会打印:#check @erdos_306(陈述)、#print axioms erdos_306(依赖)、以及两条公理原文。CI 每次 push 重跑并 gate(若 erdos_306 可达任何 sorry 或超出许可公理集,构建失败)。

手工追踪的预期输出:

'erdos_306' depends on axioms:
  [propext, Classical.choice, Quot.sound,
   RosserSchoenfeld.rosser_schoenfeld_cor3,
   RosserSchoenfeld.rosser_schoenfeld_thm5]

即 Lean 标准三公理 + 两条 RS 公理 = 5,sorry-free。

4. 依赖链一图流

公理一 · Cor 3 rosser_schoenfeld_cor3 公理二 · Thm 5 rosser_schoenfeld_thm5 (无公理) ∑1/k² 尾部估计 dyadic 素数密度 dyadic_prime_density Mertens 累积 $S\ge21/20$ dyadic_mertens_cumulative 控制负载可任意小 R2 弧构造 → 圆法链 → erdos_306 块密度 hdensity 乘积负载 ≥ 1/2
图 · 两条 RS 公理(黄)分别经 dyadic 密度与 Mertens 累积(绿,均为已证定理)进入 R2 构造;第三条辅助事实无需任何公理。可达的非标准公理恰为 $\{$cor3, thm5$\}$。