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-ε-≤; β