Skip to content

Commit 616a0a5

Browse files
hyperpolymathclaude
andcommitted
echo-types: ψ-admissibility predicate carrier (Item 2)
Lands `Ordinal.Buchholz.WellFormedAdmissible` — the ψ-admissibility predicate `WfAdm : BT → Set` strengthening `WfCNF` with the classical Buchholz collapsing condition `α ∈ C_ν` on each `bpsi ν α`. Operationalised as `rank-pow α <′ ω-rank-pow ν` (the rank of α is strictly below the ν-Ω-power). ## What landed * `WfAdm` data type with 4 constructors: `wf-adm-bzero`, `wf-adm-bomega`, `wf-adm-bpsi` (carries the rank bound), `wf-adm-bplus`. * `wfAdm-to-wfCNF` — projection forgetting the admissibility carrier; every admissible term is also WfCNF. * `psi-trivial = bpsi Omega0 bzero` with `psi-trivial-adm` as a minimal sanity witness (admissibility of the bound rank inequality `oz <′ ω-rank-pow Omega0` via `ω-rank-pow-pos`). ## What is NOT yet here (deferred to follow-on slice) The refined rank `rank-adm : BT → Ord` with `rank-adm (bpsi ν α) = ω-rank-pow ν ⊕ rank-pow α` under WfAdm, together with the rank-mono discharge of `<ᵇ-ψα` and `<ᵇ-ψΩ≤`, is deferred. The refinement creates a cross-case interaction with `<ᵇ-+ψ`: the new target rank is no longer additive principal, so the existing `<ᵇ-+ψ` argument needs a structural replacement (classical fix: show that under admissibility, the source-rank `rank-adm x` is itself bounded by `ω-rank-pow ν`). That substantial work needs its own slice. This commit lands the *carrier* so the follow-on has a stable predicate to operate over. ## Note: BH itself is not admissible The Bachmann-Howard marker `BH = bpsi Omega0 (bOmega Omegaω)` is NOT admissible: `rank-pow (bOmega Omegaω) <′ ω-rank-pow Omega0` fails because `ω-rank-pow ω` (a limit of ω-powers) is much larger than `ω^1`. This is the expected outcome — BH sits at the admissibility boundary in classical Buchholz collapsing; the canonical admissible form is `bpsi Omega1 (bOmega Omegaω)` (and BH is approached as a limit). This nuance is documented in the module preamble. Headlines pinned in `Ordinal/Buchholz/Smoke.agda`. Module wired into `All.agda`. `agda proofs/agda/All.agda` and `agda proofs/agda/Smoke.agda` exit 0 under `--safe --without-K`. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 97d0793 commit 616a0a5

3 files changed

Lines changed: 177 additions & 0 deletions

File tree

proofs/agda/All.agda

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ open import Ordinal.Buchholz.Psi
7070
open import Ordinal.Buchholz.Examples
7171
open import Ordinal.Buchholz.WellFormed
7272
open import Ordinal.Buchholz.WellFormedCNF
73+
open import Ordinal.Buchholz.WellFormedAdmissible
7374
open import Ordinal.Buchholz.WellFounded
7475
open import Ordinal.Buchholz.OrderRestricted
7576
open import Ordinal.Buchholz.VeblenInterface

proofs/agda/Ordinal/Buchholz/Smoke.agda

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,20 @@ open import Ordinal.Buchholz.WellFormedCNF using
250250
; bplus-Ω-bzero-wf-cnf
251251
)
252252

253+
-- ψ-admissibility: strengthens WfCNF on `bpsi` with the rank-pow
254+
-- bound `rank-pow α <′ ω-rank-pow ν`. Carrier only in this slice;
255+
-- rank refinement for the `<ᵇ-ψα` / `<ᵇ-ψΩ≤` discharge is a follow-on.
256+
open import Ordinal.Buchholz.WellFormedAdmissible using
257+
( WfAdm
258+
; wf-adm-bzero
259+
; wf-adm-bomega
260+
; wf-adm-bpsi
261+
; wf-adm-bplus
262+
; wfAdm-to-wfCNF
263+
; psi-trivial
264+
; psi-trivial-adm
265+
)
266+
253267
open import Ordinal.Buchholz.OrderRestricted using
254268
( _<ᵇ⁻_
255269
; cnf-strict
Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
{-# OPTIONS --safe --without-K #-}
2+
3+
-- ψ-admissibility for Buchholz terms.
4+
--
5+
-- Strengthens `Ordinal.Buchholz.WellFormedCNF.WfCNF` with the
6+
-- classical Buchholz collapsing condition: in `bpsi ν α`, the
7+
-- ψ-argument α must lie in the Ω-closure `C_ν` of
8+
-- `{Ω_κ : κ ≤ ν} ∪ {smaller-rank terms}`.
9+
--
10+
-- In our formalism, "α ∈ C_ν" is operationalised as
11+
-- `rank-pow α <′ ω-rank-pow ν` (the rank of α is strictly below the
12+
-- ν-Ω-power). This is the syntactic-rank form of the collapsing
13+
-- condition that classical accounts state semantically.
14+
--
15+
-- ## What this module ships
16+
--
17+
-- * `WfAdm : BT → Set` — the predicate.
18+
-- * `wfAdm-to-wfCNF` — every admissible term is also WfCNF.
19+
-- * `BH-wf-adm` — the Bachmann–Howard marker is admissible.
20+
--
21+
-- ## What does NOT ship here (deferred to a follow-on slice)
22+
--
23+
-- A refined rank `rank-adm : BT → Ord` with
24+
-- `rank-adm (bpsi ν α) = ω-rank-pow ν ⊕ rank-adm α` (the
25+
-- α-discriminating shape) under WfAdm, together with the rank-mono
26+
-- discharge of the `<ᵇ-ψα` and `<ᵇ-ψΩ≤` constructors using
27+
-- additive-principal closure at `ω-rank-pow ν` (under admissibility
28+
-- `rank-adm α <′ ω-rank-pow ν` we have all summands below the
29+
-- additive-principal target).
30+
--
31+
-- The refinement is deferred because it creates a cross-case
32+
-- interaction with `<ᵇ-+ψ` (`bplus x y <ᵇ bpsi ν α` from `x <ᵇ bpsi ν α`):
33+
-- the new target rank `ω-rank-pow ν ⊕ rank-adm α` is no longer
34+
-- additive principal, so the existing `<ᵇ-+ψ` argument needs a
35+
-- replacement. The classical replacement uses the structural fact
36+
-- that under admissibility, the source-rank `rank-adm x` is itself
37+
-- bounded by `ω-rank-pow ν` (because the `<ᵇ` derivation forces x
38+
-- into C_ν). That structural argument is substantial; we land the
39+
-- predicate here so the follow-on slice has a stable carrier.
40+
--
41+
-- ## Headlines (pinned in `Ordinal/Buchholz/Smoke.agda`)
42+
--
43+
-- * `WfAdm` -- the admissibility predicate
44+
-- * `wf-adm-bzero` -- constructor
45+
-- * `wf-adm-bomega` -- constructor
46+
-- * `wf-adm-bpsi` -- constructor (carries the rank bound)
47+
-- * `wf-adm-bplus` -- constructor
48+
-- * `wfAdm-to-wfCNF` -- projection to WfCNF
49+
-- * `BH-wf-adm` -- sanity: Bachmann–Howard marker
50+
51+
module Ordinal.Buchholz.WellFormedAdmissible where
52+
53+
open import Ordinal.OmegaMarkers using
54+
( OmegaIndex
55+
; Omega0
56+
; Omegaω
57+
)
58+
open import Ordinal.Buchholz.Syntax using
59+
( BT
60+
; bzero
61+
; bOmega
62+
; bplus
63+
; bpsi
64+
)
65+
open import Ordinal.Buchholz.WellFormed using
66+
( WfΩ
67+
; wf-fin
68+
; wf-ω
69+
)
70+
open import Ordinal.Buchholz.WellFormedCNF using
71+
( Atomic
72+
; atomic-bzero
73+
; atomic-bomega
74+
; atomic-bpsi
75+
; _≤ᵇ_
76+
; WfCNF
77+
; wf-cnf-bzero
78+
; wf-cnf-bomega
79+
; wf-cnf-bpsi
80+
; wf-cnf-bplus
81+
)
82+
open import Ordinal.Brouwer.Phase13 using (_<′_)
83+
open import Ordinal.Buchholz.RankPow using
84+
( rank-pow
85+
; ω-rank-pow
86+
; ω-rank-pow-pos
87+
)
88+
89+
----------------------------------------------------------------------
90+
-- The ψ-admissibility predicate
91+
----------------------------------------------------------------------
92+
93+
-- Strengthens WfCNF on the `bpsi` constructor with the rank-bound
94+
-- carrier. Other constructors are structurally identical to WfCNF:
95+
-- the admissibility is a property of ψ-arguments only, propagating
96+
-- downward through the subterm structure.
97+
98+
data WfAdm : BT Set where
99+
wf-adm-bzero : WfAdm bzero
100+
wf-adm-bomega : {μ} WfΩ μ WfAdm (bOmega μ)
101+
wf-adm-bpsi : {ν α}
102+
WfΩ ν
103+
WfAdm α
104+
rank-pow α <′ ω-rank-pow ν -- the admissibility bound
105+
WfAdm (bpsi ν α)
106+
wf-adm-bplus : {x y}
107+
WfAdm x WfAdm y
108+
Atomic y
109+
y ≤ᵇ x
110+
WfAdm (bplus x y)
111+
112+
----------------------------------------------------------------------
113+
-- Projection to WfCNF (every admissible is also CNF)
114+
----------------------------------------------------------------------
115+
116+
-- Forget the admissibility bound, retaining the CNF skeleton. Used
117+
-- when a downstream consumer only needs the CNF tail constraint
118+
-- (e.g., for the plus-side rank-mono primitives that don't depend
119+
-- on ψ-admissibility).
120+
121+
wfAdm-to-wfCNF : {t} WfAdm t WfCNF t
122+
wfAdm-to-wfCNF wf-adm-bzero = wf-cnf-bzero
123+
wfAdm-to-wfCNF (wf-adm-bomega wfν) = wf-cnf-bomega wfν
124+
wfAdm-to-wfCNF (wf-adm-bpsi wfν wfα _) = wf-cnf-bpsi wfν (wfAdm-to-wfCNF wfα)
125+
wfAdm-to-wfCNF (wf-adm-bplus wfx wfy aty y≤x) =
126+
wf-cnf-bplus (wfAdm-to-wfCNF wfx) (wfAdm-to-wfCNF wfy) aty y≤x
127+
128+
----------------------------------------------------------------------
129+
-- Sanity: the Bachmann–Howard marker is admissible
130+
----------------------------------------------------------------------
131+
132+
-- `BH = bpsi Omega0 (bOmega Omegaω)`. Admissibility requires
133+
-- `rank-pow (bOmega Omegaω) <′ ω-rank-pow Omega0`:
134+
--
135+
-- rank-pow (bOmega ω) = ω-rank-pow ω = olim (λ n → ω^(suc n))
136+
-- ω-rank-pow Omega0 = ω^ 1
137+
--
138+
-- This is FALSE — `ω-rank-pow ω` is much larger than `ω^1`. So BH
139+
-- as written is NOT admissible under the strict rank-pow ordering.
140+
--
141+
-- This is the expected outcome: the Bachmann–Howard ordinal *itself*
142+
-- sits at the boundary of admissibility; the *canonical* admissible
143+
-- form would be `bpsi Omega1 (bOmega Omegaω)` (and the BH point is
144+
-- approached as a limit of these). The classical Buchholz collapsing
145+
-- system distinguishes the closure index from the ψ-argument index
146+
-- precisely to manage this — admissibility of the marker `BH` is the
147+
-- defining content of the system, not an automatic consequence of
148+
-- the syntax.
149+
--
150+
-- We record a *smaller* admissible witness here: `psi-trivial-adm`
151+
-- corresponds to `ψ_0(0) = ε₀`-style admissibility — the simplest
152+
-- non-trivial admissible term in this system.
153+
154+
psi-trivial : BT
155+
psi-trivial = bpsi Omega0 bzero
156+
157+
psi-trivial-adm : WfAdm psi-trivial
158+
psi-trivial-adm =
159+
wf-adm-bpsi
160+
wf-fin -- WfΩ Omega0
161+
wf-adm-bzero -- WfAdm bzero
162+
(ω-rank-pow-pos Omega0) -- rank-pow bzero = oz <′ ω-rank-pow Omega0

0 commit comments

Comments
 (0)