|
| 1 | += Buchholz-style Collapsing Layer: Plan and First Proof |
| 2 | +:toc: macro |
| 3 | +:toclevels: 2 |
| 4 | +:sectnums: |
| 5 | +:sectnumlevels: 2 |
| 6 | + |
| 7 | +[.lead] |
| 8 | +This document scopes the ordinal-notation / collapsing-function workstream |
| 9 | +(Workstream E in `roadmap.adoc`). It is a spec, not a theorem file. |
| 10 | +Its purpose is to pin down *what we are building*, in what order, and |
| 11 | +what counts as the first success before any ψ-value is even mentioned. |
| 12 | + |
| 13 | +toc::[] |
| 14 | + |
| 15 | +== Mission |
| 16 | + |
| 17 | +Formalize, in `--safe --without-K` Agda, a staged Buchholz-style |
| 18 | +collapsing notation system sufficient to eventually state a target |
| 19 | +such as `ψ₀(Ω_ω)` (Bachmann–Howard) and, beyond that, a compact |
| 20 | +reading of `ψ(Ω_Ω)`. |
| 21 | + |
| 22 | +Only when that syntactic engine exists do we add `EchoOrdinal.agda` |
| 23 | +to bridge collapsing steps with the existing echo/residue machinery. |
| 24 | + |
| 25 | +== Target selection |
| 26 | + |
| 27 | +`ψ(Ω_Ω)` is an ambiguous phrase without further qualification. |
| 28 | +We fix the following staged convention. Each stage is a gate: the |
| 29 | +next stage is not attempted until the current stage compiles and |
| 30 | +its headline lemma is established. |
| 31 | + |
| 32 | +[cols="1,3,3", options="header"] |
| 33 | +|=== |
| 34 | +| Stage | Target language | Intended witness term |
| 35 | + |
| 36 | +| S0 | single-cardinal pedagogical ψ, ℕ-indexed closure stages | `ψ 0`, `ψ (ψ 0)` |
| 37 | +| S1 | finite-index Buchholz fragment ψ_n over Ω_n | `ψ₀(Ω₁)` |
| 38 | +| S2 | Buchholz ψ_ν for ν ≤ ω | `ψ₀(Ω_ω)` (Bachmann–Howard) |
| 39 | +| S3 | extended fragment sufficient to denote the intended `ψ(Ω_Ω)` | see S3 note |
| 40 | +|=== |
| 41 | + |
| 42 | +S3 note: "ψ(Ω_Ω)" is formalised in this repo as `ψ₀(Ω_{Ω_ω})`, |
| 43 | +i.e. Ω at the position of the Ω_ω marker in the Ω-scale. Other |
| 44 | +readings are possible (diagonalization fixpoint, Rathjen-style |
| 45 | +extensions); those are *not* what this plan targets. |
| 46 | + |
| 47 | +== Layering |
| 48 | + |
| 49 | +The workstream separates into three layers that must not be conflated. |
| 50 | + |
| 51 | +. Notation infrastructure: term syntax, normal forms, comparison. |
| 52 | +. Buchholz collapsing machinery: closure sets, ψ as least-gap. |
| 53 | +. Echo bridge: collapsing step read as non-injective map, echoes |
| 54 | + retaining pre-collapse provenance. |
| 55 | + |
| 56 | +Echo-types’ existing identity claim (structured loss under |
| 57 | +non-injective computation) only plugs in at layer 3. Layers 1 and 2 |
| 58 | +must stand as ordinary proof-theoretic development first. |
| 59 | + |
| 60 | +== Module layout (planned) |
| 61 | + |
| 62 | +---- |
| 63 | +proofs/agda/Ordinal/Base.agda -- toy OT syntax (S0) |
| 64 | +proofs/agda/Ordinal/CNF.agda -- CNF fragment below ε₀ |
| 65 | +proofs/agda/Ordinal/OmegaMarkers.agda -- formal Ω_n symbols (no semantics yet) |
| 66 | +proofs/agda/Ordinal/Closure.agda -- ℕ-staged closure family, headline: C-monotone |
| 67 | +proofs/agda/Ordinal/PsiSimple.agda -- pedagogical ψ: least-gap shape |
| 68 | +proofs/agda/Ordinal/Buchholz/Syntax.agda -- Buchholz terms |
| 69 | +proofs/agda/Ordinal/Buchholz/Closure.agda -- C_ν(α) |
| 70 | +proofs/agda/Ordinal/Buchholz/Psi.agda -- ψ_ν |
| 71 | +proofs/agda/Ordinal/Buchholz/Examples.agda -- first ten witness terms in order |
| 72 | +proofs/agda/Ordinal/Buchholz/Smoke.agda -- pin load-bearing names |
| 73 | +proofs/agda/EchoOrdinal.agda -- bridge to echo / residue layers |
| 74 | +---- |
| 75 | + |
| 76 | +Modules are added to `All.agda` only as each stage compiles cleanly. |
| 77 | + |
| 78 | +== Milestone matrix |
| 79 | + |
| 80 | +[cols="1,2,4,2", options="header"] |
| 81 | +|=== |
| 82 | +| ID | Layer | Goal | Headline lemma |
| 83 | + |
| 84 | +| E1 | notation | OT syntax, structural induction | — |
| 85 | +| E2 | notation | CNF fragment below ε₀ | `cnf-trichotomy` |
| 86 | +| E3 | closure | ℕ-staged closure family | *`C-monotone`* |
| 87 | +| E4 | closure | pedagogical ψ as least gap | `psi-notin-C`, `psi-least` |
| 88 | +| E5 | Buchholz | Ω_ν scale + C_ν + ψ_ν | `Cν-monotone`, `psiν-notin-Cν` |
| 89 | +| E6 | Buchholz | target terms well-formed | `BH-wf`, `psi-OmegaOmega-wf` |
| 90 | +| E7 | echo | collapse as non-injective map | `ordinal-collapse-non-injective` |
| 91 | +|=== |
| 92 | + |
| 93 | +== The very first Agda proof: `C-monotone` |
| 94 | + |
| 95 | +Before any ψ-value is defined, we must know the closure stages form a |
| 96 | +coherent staged system: *increasing the stage index never removes |
| 97 | +previously generable terms*. This is the structural theorem every |
| 98 | +least-gap proof later leans on. |
| 99 | + |
| 100 | +=== Why this is first |
| 101 | + |
| 102 | +* `ψ(α)` is defined as the least ordinal *not already in `C(α)`*. |
| 103 | + Without a stable closure, that definition has no ground. |
| 104 | +* Before attempting `psi-notin-C`, we need: closure is well-defined, |
| 105 | + closure inclusion between stages is monotone, closure references |
| 106 | + to earlier stages are admissible. |
| 107 | +* Monotonicity is provable by a clean structural induction on the |
| 108 | + closure derivation, with no ordinal comparisons in sight. |
| 109 | + |
| 110 | +=== Why ℕ stages, not OT stages |
| 111 | + |
| 112 | +The first pass deliberately indexes closure stages by `ℕ`, not by |
| 113 | +ordinal terms. This lets the induction be direct, teaches us the |
| 114 | +closure-proof pattern, and avoids blocking on an OT ordering we have |
| 115 | +not yet formalised. Generalisation to ordinal-indexed stages is the |
| 116 | +point of E5. |
| 117 | + |
| 118 | +=== Statement |
| 119 | + |
| 120 | +---- |
| 121 | +C-monotone : ∀ {m n t} → m ≤ n → C m t → C n t |
| 122 | +---- |
| 123 | + |
| 124 | +Proof by induction on the closure derivation: |
| 125 | + |
| 126 | +* `c-zero`, `c-omega`: reconstruct at the larger stage. |
| 127 | +* `c-plus`: recurse on the two subderivations. |
| 128 | +* `c-psi k<m ck`: use `≤-trans k<m m≤n` to push the side condition |
| 129 | + up. This case is the real point — it forces the closure to be |
| 130 | + set up so the induction goes through. |
| 131 | + |
| 132 | +=== Acceptance criteria |
| 133 | + |
| 134 | +* `proofs/agda/Ordinal/Base.agda` compiles under `--safe --without-K`. |
| 135 | +* `proofs/agda/Ordinal/Closure.agda` compiles and defines `C` and |
| 136 | + proves `C-monotone` *without postulates*. |
| 137 | +* `C-monotone` is pinned by name in `Smoke.agda`. |
| 138 | +* CI's full-suite and smoke jobs both pass. |
| 139 | + |
| 140 | +== What is *not* yet claimed |
| 141 | + |
| 142 | +* No ordinal semantics is asserted by these modules. `C`, `ψ`, and |
| 143 | + the Ω markers are pure syntax with evidence-bearing relations. |
| 144 | +* Well-foundedness of the resulting notation system is a downstream |
| 145 | + milestone (part of E5 / E6), not a consequence of E1–E3. |
| 146 | +* No connection to echo types is claimed until `EchoOrdinal.agda` |
| 147 | + lands. Do not rename load-bearing echo modules in anticipation. |
| 148 | + |
| 149 | +== Operating rules (inherited) |
| 150 | + |
| 151 | +* No postulates unless explicitly isolated and justified in-line. |
| 152 | +* Keep universe levels explicit where needed. |
| 153 | +* Every edit ends with an Agda compile step; CI enforces full-suite |
| 154 | + and smoke checks. |
| 155 | +* Claims in README / Zenodo metadata stay gated on |
| 156 | + `roadmap-gates.adoc` regardless of progress on this workstream. |
0 commit comments