Перейти к содержанию

22. Снятие плотности и чётности в existential форме

← 21. Регенерация · Оглавление · 23. Clean-граф →

Источник: step00_residuals_formal_proofs_ru_2026-06-30-1.md. Lean: Engine/Residuals.lean (namespace EuclidsPath.Residuals, стандартные аксиомы, без sorry).

Где мы

Дихотомия 21 классифицировала каждый quotient-центр t в один из элементарных классов — twin, old-peel edge или составная old-free сторона — и локализовала нетривиальный остаток в структурной регенерации, а не в счёте.

Но у самой дихотомии осталось два входа (вход — именованное недостающее утверждение, см. словарь), которые в прежней прозе выглядели «распределительными»: (i) откуда взять clean-центр сколь угодно высоко (плотность носителя) и (ii) почему clean-сток в самом деле состоит из двух простых (чётность/распределение простых на сторонах).

В этой главе мы показываем, что оба входа снимаются в существовательной форме — конструкцией и элементарной делимостью, без единой оценки плотности или счёта простых.

Рабочие определения

Мы работаем со сторонами центра m, то есть с парой \(6m-1,\ 6m+1\). Всюду A — граница «старых» простых (старый примориал строится по 5 ≤ p ≤ A), N — масштаб, выше которого мы хотим найти центр.

Определение 22.1 (clean-центр). Центр \(m\) называем чистым относительно \(A\), если ни один простой \(q \le A\) не делит ни одну из сторон: $\(\mathrm{CleanZ}\,A\,m \ :\equiv\ \forall q\ \text{prime},\ q \le A \ \Rightarrow\ \neg\big(q \mid 6m-1\ \lor\ q \mid 6m+1\big). \tag{22.1}\)$ В Lean это CleanZ A m (стороны берутся в , чтобы вычитание \(6m-1\) было безопасным).

Определение 22.2 (twin-центр). Центр \(m \ge 1\)twin, если обе стороны простые: $\(\mathrm{TwinCenterZ}\,m \ :\equiv\ (6m-1)\ \text{prime}\ \wedge\ (6m+1)\ \text{prime}. \tag{22.2}\)$ В Lean это TwinCenterZ m (стороны в ).

Различие двух свойств — ключ ко всей главе. Clean — это отрицание делимости на малые простые; оно доступно конструктивно. Twin — положительное утверждение о простоте; наивно оно требует знать распределение простых. Мы соединим их так, что второе будет следовать из первого плюс граница на масштаб.

Остаток ② — конструктивный clean-старт выше любого N (без плотности)

Естественно предположить, что чистые центры «редки» и потому их существование выше N требует плотностной оценки. Наблюдение, снимающее этот вход, обратное: чистый центр можно выписать формулой.

Определение 22.3 (старый примориал). Полагаем $\(P_A \ :=\ \prod_{\substack{5 \le p \le A\\ p\ \text{prime}}} p, \tag{22.3}\)$ в Lean — oldPrimorial A := (Finset.range (A+1)).prod (fun p => if p.Prime ∧ 5 ≤ p then p else 1). Каждый множитель либо простое \(5 \le p \le A\), либо \(1\); поэтому oldPrimorial_pos даёт \(P_A \ge 1\), а prime_dvd_oldPrimorial — что всякое простое \(5 \le q \le A\) делит \(P_A\) (оно буквально один из сомножителей произведения).

Центральная лемма — что любое кратное этого примориала уже чисто.

Лемма 22.4 (primorial_multiple_clean). Для всех \(A\) и \(k \ge 1\) центр \(m = k \cdot P_A\) чист: \(\mathrm{CleanZ}\,A\,((k \cdot \mathrm{oldPrimorial}\,A : \mathbb{N}) : \mathbb{Z})\). Разбор идёт по величине \(q\):

  • \(q \ge 5\). Тогда \(q \mid P_A \mid m\), значит \(q \mid 6m\). Если бы \(q\) делило \(6m-1\), то из \(q \mid 6m\) и \(q \mid 6m-1\) следовало бы \(q \mid 1\) (разность), то есть \(q \le 1\) — противоречие; симметрично для \(6m+1\). Формально: \(6m \equiv 0 \pmod{q} \Rightarrow 6m \pm 1 \equiv \pm 1 \not\equiv 0\).
  • \(q = 2\). Обе стороны нечётны (\(6m\) чётно, \(6m\pm1\) нечётно), делимости нет.
  • \(q = 3\). \(6m \equiv 0 \pmod{3} \Rightarrow 6m\pm1 \equiv \pm 1 \pmod{3} \not\equiv 0\).

Случаи \(q < 5\) в Lean закрываются interval_cases q (значения \(2,3\) разбираются omega, значения \(0,1,4\) отсеиваются как непростые).

Примечание. Именно потому старый примориал берётся с нижней границей 5: множители 2 и 3 исключать не нужно — их непопадание на стороны обеспечено не делимостью m, а самой формой \(6m\pm1\). Это делает конструкцию минимальной: \(P_A\) несёт ровно те простые, которые иначе могли бы задеть стороны.

Из леммы получаем существование чистого центра выше произвольного масштаба.

Следствие 22.5 (carrier_nonempty_above). Для любых \(A, N\) существует \(m > N\) с \(\mathrm{CleanZ}\,A\,m\). Свидетель (конкретный объект, удостоверяющий утверждение, — см. словарь) — \(m = (N+1)\cdot P_A\): он чист по Лемме 22.4 (primorial_multiple_clean) (с \(k = N+1 \ge 1\)), а неравенство \(N < m\) следует из \(P_A \ge 1\) цепочкой \(N < N+1 = (N+1)\cdot 1 \le (N+1)\cdot P_A\).

Примечание. Это и есть снятие входа «плотность носителя» в существовательной форме. Мы не утверждаем, сколько чистых центров лежит в отрезке — мы предъявляем один конкретный, выше любой заданной границы. Для программы, которая работает через спуск (нужен хоть один высокий чистый старт на каждом масштабе), этого достаточно; асимптотика носителя не привлекается вовсе.

Остаток ③ — clean-сток есть twin (чётность элементарна)

Второй входной вопрос: почему корректный сток движка — действительно пара близнецов, а не просто чистый центр с составной стороной. Здесь снимается «чётность/распределение»: положительная простота выводится из отрицательной чистоты плюс границы масштаба.

Начнём с наблюдения о том, что вообще может «спрятаться» в чистой составной стороне.

Лемма 22.6 (clean_side_composite_big_divisor, ядро). Если сторона \(\mathit{side} \ge 2\) не простая и ни один простой \(q \le A\) её не делит, то её минимальный простой делитель больше \(A\): $\(\exists b\ \text{prime},\ A < b\ \wedge\ b \mid \mathit{side}.\)$ Свидетель — side.minFac. Он простой (Nat.minFac_prime, ибо \(\mathit{side} \ge 2\)) и делит \(\mathit{side}\); а если бы он был \(\le A\), это противоречило бы чистоте. Такой большой делитель — и есть active edge дихотомии 21: составная чистая сторона обязана нести новое простое \(> A\).

Отсюда — граница, которая превращает чистоту в простоту.

Лемма 22.7 (oldfree_below_sq_prime). Если \(n \ge 2\), \(n < A^2\) и ни один простой \(q \le A\) не делит \(n\) (число old-free), то \(n\) простое. Доказательство от противного: пусть \(n\) составное. Тогда \(p := n\text{.minFac}\) простой, \(p \mid n\) и по чистоте \(p > A\). Для составного \(n\) минимальность простого делителя даёт \(p \le n/p\) (Nat.minFac_le_div), откуда $\(p^2 \ \le\ p \cdot (n/p) \ =\ n. \tag{22.4}\)$ Но тогда \(A^2 < p^2 \le n < A^2\) — противоречие (nlinarith). Значит \(n\) простое.

Примечание. Порог A^2 — не эвристика, а точная граница «решета Эратосфена»: число без простых делителей \(\le A\) и меньшее A^2 не может быть составным, ибо у составного всегда есть простой делитель \(\le \sqrt{n} < A\). Это делает вывод простоты элементарным: не нужно ни знать распределение простых, ни считать их — достаточно, что стороны чисты и лежат ниже A^2.

Соединяя чистоту обеих сторон с порогом, получаем главный вывод остатка ③.

Теорема 22.8 (sink_is_twin). Если обе стороны удовлетворяют \(2 \le 6m\pm1 < A^2\) и центр чист (ни один \(q \le A\) не делит ни одну сторону), то \(m\) — twin: \(\mathrm{TwinCenterZ}\,m\). Доказательство — две копии Леммы 22.7 (oldfree_below_sq_prime), по одной на каждую сторону; old-free каждой стороны извлекается из общей чистоты (Or.inl / Or.inr).

Примечание. Так снимается вход «чётность/распределение» в существовательной форме: мы не оцениваем плотность twin-центров, а показываем, что всякий чистый сток ниже A^2 автоматически twin. Природа делает работу: чистота исключает малые делители, порог A^2 исключает большие. Между ними места для составной стороны не остаётся.

Привязка стока к центру выше N

Остаётся замкнуть петлю с остатком ②: убедиться, что найденный twin-сток действительно лежит выше масштаба N, а не проваливается вниз.

Теорема 22.9 (clean_twin_above). Если \(6N+1 < A\), центр \(m \ge 1\) чист и является twin, то \(m > N\). Аргумент: сторона \(6m-1\) простая (из \(\mathrm{TwinCenterZ}\)), и она \(> A\) — иначе она была бы старым простым \(\le A\), делящим свою же сторону, что нарушает чистоту (hcl с делимостью \((6m-1) \mid (6m-1)\)). Тогда из \(A > 6N+1\) и \(6m-1 > A\) следует \(6m-1 > 6N+1\), то есть \(m > N\) (omega). В Lean здесь аккуратно приводится \(((6m-1 : \mathbb{N}) : \mathbb{Z}) = 6 \cdot m - 1\) (Nat.cast_sub, push_cast), чтобы чистота, живущая в \(\mathbb{Z}\), применилась к натуральной стороне.

Примечание. Условие \(6N+1 < A\) — это требование «старая граница \(A\) перекрывает масштаб \(N\)». Оно совместно с Следствием 22.5 автоматически: там мы вольны брать \(A\) сколь угодно большим относительно \(N\), и сток, будучи простым, вынужден лежать выше \(A\), а значит выше \(N\). Вывод. Связка Следствия 22.5 + Теоремы 22.8 даёт twin-центр выше любого \(N\) без ссылки на распределение.

Остаток ① — active descent строго уменьшает высоту

Наконец, чтобы дихотомия была настоящим двигателем (в смысле метода спуска — см. словарь), а не просто классификацией, исходящее ребро в active-случае обязано вести вниз по высоте. Это чисто алгебраический факт евклидова спуска.

Теорема 22.10 (active_descent_height). Пусть \(6m+\sigma = a\,(6n+\varepsilon)\), где \(a > A \ge 5\), \(\sigma,\varepsilon \in \{\pm1\}\), а центры \(m, n \ge 1\). Тогда \(n < m\).

Разбор: сторона \(6n+\varepsilon > 0\) (при обоих знаках \(\varepsilon\), ибо \(n \ge 1\)), и из \(a \ge 5\) следует $\(5\,(6n+\varepsilon)\ \le\ a\,(6n+\varepsilon)\ =\ 6m+\sigma. \tag{22.5}\)$ Отсюда \(6n+\varepsilon \le (6m+\sigma)/5\), и при \(m \ge 1\) дробь строго меньше \(6m-1\), что после разбора четырёх комбинаций знаков закрывается nlinarith. Содержательно: делимость активной стороны на большое \(a > A\) не может не «сжать» центр — новый \(n\) строго ниже.

Примечание. Множитель 5 здесь не случаен: он — наименьшее старое простое, а \(a > A \ge 5\) лишь усиливает сжатие. Это тот же коэффициент 1/5, что в height-drop old-peel 19 (old_peel_height_drop, t < n/5); здесь он появляется на active-ребре дихотомии и делает спуск строгим. Именно строгое убывание высоты — то, что запрещает бесконечную цепь и замыкает поток на невозможность двигателя 20.

Что доказано и что это значит

Все семь звеньев проверены компилятором на стандартных аксиомах, без sorry:

Звено Lean (номер) Что снято
clean-старт выше \(N\) carrier_nonempty_above (Следствие 22.5, через Лемму 22.4) плотность носителя — заменена конструкцией \(m=(N+1)P_A\)
old-free \(< A^2\) ⟹ простое oldfree_below_sq_prime (Лемма 22.7) порог решета, элементарно
clean-сток ⟹ twin sink_is_twin (Теорема 22.8) чётность/распределение — заменены чистотой + порогом
active edge clean_side_composite_big_divisor (Лемма 22.6) большой делитель \(> A\) у чистой составной стороны
twin-сток выше \(N\) clean_twin_above (Теорема 22.9) привязка стока к масштабу
строгий спуск active_descent_height (Теорема 22.10) \(n < m\) на active-ребре

Смысл главы — не в новом «доказательстве близнецов», а в точной локализации входов. Два узла, которые вся прежняя проза несла как распределительные — «есть ли чистый старт наверху» и «чист ли сток на самом деле twin» — сняты существовательно: первый конструкцией примориала, второй элементарным решетом ниже A^2.

Вывод. Это не выдаётся за замыкание программы: структурный вход остаётся там же, где его оставила дихотомия 21 и NOPSL 20 — в регенерации (замкнутость ledger по old-peel quotients, regenerate; леджер — бухгалтерия потоков, см. словарь). Мы лишь показали, что вокруг этого входа ничего распределительного больше нет: старт, порог и спуск — конструктивны и проверены.

Гипотеза и план (что осталось открытым). Открытым остаётся regenerate — что quotient-центр t всегда классифицируется (clean-возврат / next-peel / fan-in/Hall / known-defect) без несclassifiable терминала. План закрытия — не через плотность, а через clean-boundary: показать, что граница чистой области ведёт себя жёстко (rigid), так что fan-in не создаёт скрытого терминала. Именно это — предмет следующей главы.

Мост к следующей главе

Итак, плотность и чётность сняты в существовательной форме: чистый старт выписывается формулой, а чистый сток ниже A^2 автоматически даёт близнецов. Остаётся единственный структурный вопрос — насколько жёстка граница чистой области, когда несколько родословных сходятся в один центр. К этой границе — clean-boundary — мы и переходим в 23.


← 21. Регенерация · Оглавление · 23. Clean-граф →