From 4ee86b679c1359063fd8fcf5df65eb0511484dae Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Wed, 22 Apr 2026 13:39:07 +0100 Subject: [PATCH] =?UTF-8?q?Scaffold=20E5=20Buchholz=20modules=20with=20?= =?UTF-8?q?=CE=BD-indexed=20closure?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- proofs/agda/All.agda | 4 +++ proofs/agda/Ordinal/Buchholz/Closure.agda | 30 ++++++++++++++++++++++ proofs/agda/Ordinal/Buchholz/Psi.agda | 25 ++++++++++++++++++ proofs/agda/Ordinal/Buchholz/Syntax.agda | 22 ++++++++++++++++ proofs/agda/Ordinal/OmegaMarkers.agda | 24 ++++++++++++++++++ proofs/agda/Smoke.agda | 31 +++++++++++++++++++++++ 6 files changed, 136 insertions(+) create mode 100644 proofs/agda/Ordinal/Buchholz/Closure.agda create mode 100644 proofs/agda/Ordinal/Buchholz/Psi.agda create mode 100644 proofs/agda/Ordinal/Buchholz/Syntax.agda create mode 100644 proofs/agda/Ordinal/OmegaMarkers.agda diff --git a/proofs/agda/All.agda b/proofs/agda/All.agda index 251ff94..9f12024 100644 --- a/proofs/agda/All.agda +++ b/proofs/agda/All.agda @@ -24,5 +24,9 @@ open import Ordinal.Base open import Ordinal.Closure open import Ordinal.CNF open import Ordinal.PsiSimple +open import Ordinal.OmegaMarkers +open import Ordinal.Buchholz.Syntax +open import Ordinal.Buchholz.Closure +open import Ordinal.Buchholz.Psi open import Smoke diff --git a/proofs/agda/Ordinal/Buchholz/Closure.agda b/proofs/agda/Ordinal/Buchholz/Closure.agda new file mode 100644 index 0000000..60d4574 --- /dev/null +++ b/proofs/agda/Ordinal/Buchholz/Closure.agda @@ -0,0 +1,30 @@ +{-# OPTIONS --safe --without-K #-} + +-- Stage S1/S2 scaffolding for docs/buchholz-plan.adoc. +-- +-- `Cν ν m t` is the ν-indexed closure family at stage `m` for term +-- `t`. This is the Buchholz-shaped generalisation of Ordinal.Closure: +-- closure is still staged by ℕ while carrying an explicit Ω-index +-- parameter `ν` for future side conditions. + +module Ordinal.Buchholz.Closure where + +open import Data.Nat.Base using (ℕ; _≤_; _<_) +open import Data.Nat.Properties using (≤-trans) + +open import Ordinal.OmegaMarkers using (OmegaIndex) +open import Ordinal.Buchholz.Syntax using (BT; bzero; bOmega; bplus; bpsi) + +data Cν (ν : OmegaIndex) : ℕ → BT → Set where + cν-zero : ∀ {m} → Cν ν m bzero + cν-omega : ∀ {m μ} → Cν ν m (bOmega μ) + cν-plus : ∀ {m x y} → Cν ν m x → Cν ν m y → Cν ν m (bplus x y) + cν-psi : ∀ {m k μ β} → k < m → Cν ν k β → Cν ν m (bpsi μ β) + +-- Headline E5 structural lemma: raising the stage keeps derivability. + +Cν-monotone : ∀ {ν m n t} → m ≤ n → Cν ν m t → Cν ν n t +Cν-monotone _ cν-zero = cν-zero +Cν-monotone _ cν-omega = cν-omega +Cν-monotone m≤n (cν-plus cx cy) = cν-plus (Cν-monotone m≤n cx) (Cν-monotone m≤n cy) +Cν-monotone m≤n (cν-psi k