From e19ae2dd640ee0df46421f275312bddb7bcb5cbc Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 19 Jun 2026 23:58:35 +0000 Subject: [PATCH] =?UTF-8?q?proof(ordinal):=20=CF=86=E2=82=81=20is=20a=20no?= =?UTF-8?q?rmal=20function;=20next-=CE=B5=20=CE=B2=20is=20the=20LEAST=20?= =?UTF-8?q?=CE=B5-number=20above=20=CE=B2=20(BH=20climb=20rung=203,=20slic?= =?UTF-8?q?e=203)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Target-side climb toward ψ₀(Ω_ω) (BH order-type fidelity, open problem D-2026-06-14). Slice 2 (VeblenPhi) proved every value of φ₁ IS an ε-number and that next-ε β is AN ε-number above β. This slice upgrades that to the two defining properties of an ε-number enumeration. New module proofs/agda/Ordinal/Brouwer/VeblenPhiNormal.agda (--safe --without-K, zero postulates, structural recursion — no TERMINATING): * ω^^-mono-≤′ — ω-exponentiation is monotone (α ≤′ β → ω^^ α ≤′ ω^^ β). The one missing prerequisite; structural recursion on the _≤′_ shape, using only ω^^-pos, ·ℕ-mono-≤-left, and the olim LUB ≤′-lim. * next-ε-least — THE headline: next-ε β is the LEAST ω^^-closed ordinal strictly above β (for any γ with osuc β ≤′ γ and ω^^ γ ≤′ γ, next-ε β ≤′ γ). Definitional, because olim f ≤′ γ reduces to ∀ n → f n ≤′ γ; proof is tower-index induction. * next-ε-mono — next-ε is monotone. * φ₁ is a NORMAL FUNCTION: - φ₁-mono (monotone) - φ₁-lt-succ (strictly increasing at successors) - φ₁-strict-mono (strictly monotone) - φ₁-continuous (continuous at limits; definitional refl) plus ε₀-least (ε₀ = φ₁ oz is the least φ₁ value), the oz base case. A normal function is precisely a strictly-monotone, continuous ordinal function; φ₁ is now mechanically one — the standard precondition for the next Veblen level / binary φ_α / Γ₀. Design note: every ≤′-lim / ω^^-mono-≤′ / ·ℕ-mono-≤-left call carries its implicit source explicitly — _≤′_ is a reducing relation, so the unifier cannot infer it from the goal (same lesson the φ₁ slice recorded). Honest scope: this does NOT reach Γ₀; ψ₀(Ω_ω) sits far above even Γ₀ and additionally needs the ordinal-collapsing layer. Order-type fidelity (ψ₀(Ω_ω)) REMAINS OPEN (D-2026-06-14); this slice neither reaches Γ₀ nor plugs Fidelity.AtHeight. No postulate is closed. Wiring: All.agda import; Smoke.agda pin block (8 headlines). agda proofs/agda/All.agda and proofs/agda/Smoke.agda exit 0 under --safe --without-K; kernel-guard.sh PASS; zero postulates. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Rw1RpYXU5Q7rzy2bVofVeB --- proofs/agda/All.agda | 1 + .../agda/Ordinal/Brouwer/VeblenPhiNormal.agda | 161 ++++++++++++++++++ proofs/agda/Smoke.agda | 20 +++ 3 files changed, 182 insertions(+) create mode 100644 proofs/agda/Ordinal/Brouwer/VeblenPhiNormal.agda diff --git a/proofs/agda/All.agda b/proofs/agda/All.agda index 683ebf0..9d0dacc 100644 --- a/proofs/agda/All.agda +++ b/proofs/agda/All.agda @@ -121,6 +121,7 @@ open import Ordinal.Brouwer.Phase13 open import Ordinal.Brouwer.OmegaPow open import Ordinal.Brouwer.OrdinalExp open import Ordinal.Brouwer.VeblenPhi +open import Ordinal.Brouwer.VeblenPhiNormal -- φ₁ a normal function; next-ε β LEAST ε-number above β open import Ordinal.Brouwer.StrictLeftMonoRefuted open import Ordinal.Brouwer.AdditivePrincipalGenericRefuted open import Ordinal.Buchholz.Syntax diff --git a/proofs/agda/Ordinal/Brouwer/VeblenPhiNormal.agda b/proofs/agda/Ordinal/Brouwer/VeblenPhiNormal.agda new file mode 100644 index 0000000..1c0705a --- /dev/null +++ b/proofs/agda/Ordinal/Brouwer/VeblenPhiNormal.agda @@ -0,0 +1,161 @@ +{-# OPTIONS --safe --without-K #-} +-- SPDX-License-Identifier: MPL-2.0 +-- SPDX-FileCopyrightText: 2025-2026 Jonathan D.A. Jewell + +-- Veblen φ-hierarchy over Brouwer ordinals — RUNG 3 (slice 3): φ₁ is a +-- NORMAL FUNCTION, and `next-ε β` is the LEAST ε-number above β. Target- +-- side climb toward ψ₀(Ω_ω) (BH order-type fidelity, open problem +-- D-2026-06-14). Builds directly on `VeblenPhi` (φ₁ / next-ε defined and +-- proved ε-valued) and `OrdinalExp` (ω^^). 2026-06-19. +-- +-- ## What this slice adds +-- +-- The previous slice (`VeblenPhi`) proved that every value of φ₁ IS an +-- ε-number (`φ₁-ε-number`) and that `next-ε β` is AN ε-number strictly +-- above β. This slice upgrades that to the two defining properties of an +-- ε-number ENUMERATION: +-- +-- * `next-ε-least` — `next-ε β` is the LEAST ω^^-closed ordinal strictly +-- above β. This is what makes `next-ε` the genuine "next ε-number" +-- operator (not merely *an* ε-number above β). Definitional, because +-- `olim f ≤′ γ` reduces to `∀ n → f n ≤′ γ` (olim is the least upper +-- bound), so the proof is induction on the ω^^-tower index using +-- ω^^-monotonicity + the ω^^-closure hypothesis on γ. +-- * `φ₁` is a NORMAL FUNCTION: +-- - `φ₁-mono` — monotone (α ≤′ β → φ₁ α ≤′ φ₁ β) +-- - `φ₁-strict-mono` — strictly monotone (α <′ β → φ₁ α <′ φ₁ β) +-- - `φ₁-continuous` — continuous at limits (definitional, `refl`) +-- A normal function is precisely a strictly-monotone, continuous +-- ordinal function; φ₁ is now mechanically one. +-- +-- The one prerequisite the previous slices left open is `ω^^-mono-≤′` +-- (monotonicity of ω-exponentiation), proved here by structural recursion +-- on the `_≤′_` shape; it is a pure ω^^ fact and a natural candidate to +-- migrate into `OrdinalExp` when the binary Veblen rung needs it. +-- +-- ## Honest scope (still rung 3 of a LONG climb — do not overclaim) +-- +-- φ₁ being a normal function is the standard precondition for taking its +-- fixed points (the next Veblen level) and ultimately the binary φ_α and +-- its diagonal → Γ₀. It does NOT reach Γ₀, and ψ₀(Ω_ω) sits far above +-- even Γ₀ and additionally needs the ordinal-collapsing layer. Order-type +-- fidelity (ψ₀(Ω_ω)) REMAINS OPEN (D-2026-06-14); this slice neither +-- reaches Γ₀ nor plugs `Fidelity.AtHeight`. bi-`≤′` (not `≡`) is used for +-- the fixed-point facts because Brouwer `olim`s of different ℕ-indexings of +-- one supremum are not definitionally equal; the monotonicity results are +-- single-`≤′` / single-`<′` and exact. + +module Ordinal.Brouwer.VeblenPhiNormal where + +open import Data.Nat.Base using (ℕ; zero; suc) +open import Data.Product.Base using (Σ; _,_) +open import Data.Empty using (⊥-elim) +open import Relation.Binary.PropositionalEquality using (_≡_; refl) + +open import Ordinal.Brouwer using (Ord; oz; osuc; olim) +open import Ordinal.Brouwer.Phase13 + using (_≤′_; _<′_; ≤′-refl; ≤′-trans; ≤′-lim; ≤′-self-osuc) +open import Ordinal.Brouwer.OmegaPow using (_·ℕ_; ·ℕ-mono-≤-left) +open import Ordinal.Brouwer.OrdinalExp using (ω^^_; ε₀; ω^^-pos) +open import Ordinal.Brouwer.VeblenPhi + using (tower-from; next-ε; φ₁; ω^^-next-ε-≤; β