Skip to content

Commit 4ee86b6

Browse files
committed
Scaffold E5 Buchholz modules with ν-indexed closure
1 parent 1e363ab commit 4ee86b6

6 files changed

Lines changed: 136 additions & 0 deletions

File tree

proofs/agda/All.agda

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,9 @@ open import Ordinal.Base
2424
open import Ordinal.Closure
2525
open import Ordinal.CNF
2626
open import Ordinal.PsiSimple
27+
open import Ordinal.OmegaMarkers
28+
open import Ordinal.Buchholz.Syntax
29+
open import Ordinal.Buchholz.Closure
30+
open import Ordinal.Buchholz.Psi
2731

2832
open import Smoke
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{-# OPTIONS --safe --without-K #-}
2+
3+
-- Stage S1/S2 scaffolding for docs/buchholz-plan.adoc.
4+
--
5+
-- `Cν ν m t` is the ν-indexed closure family at stage `m` for term
6+
-- `t`. This is the Buchholz-shaped generalisation of Ordinal.Closure:
7+
-- closure is still staged by ℕ while carrying an explicit Ω-index
8+
-- parameter `ν` for future side conditions.
9+
10+
module Ordinal.Buchholz.Closure where
11+
12+
open import Data.Nat.Base using (ℕ; _≤_; _<_)
13+
open import Data.Nat.Properties using (≤-trans)
14+
15+
open import Ordinal.OmegaMarkers using (OmegaIndex)
16+
open import Ordinal.Buchholz.Syntax using (BT; bzero; bOmega; bplus; bpsi)
17+
18+
data : OmegaIndex) : BT Set where
19+
cν-zero : {m} Cν ν m bzero
20+
cν-omega : {m μ} Cν ν m (bOmega μ)
21+
cν-plus : {m x y} Cν ν m x Cν ν m y Cν ν m (bplus x y)
22+
cν-psi : {m k μ β} k < m Cν ν k β Cν ν m (bpsi μ β)
23+
24+
-- Headline E5 structural lemma: raising the stage keeps derivability.
25+
26+
Cν-monotone : {ν m n t} m ≤ n Cν ν m t Cν ν n t
27+
Cν-monotone _ cν-zero = cν-zero
28+
Cν-monotone _ cν-omega = cν-omega
29+
Cν-monotone m≤n (cν-plus cx cy) = cν-plus (Cν-monotone m≤n cx) (Cν-monotone m≤n cy)
30+
Cν-monotone m≤n (cν-psi k<m ck) = cν-psi (≤-trans k<m m≤n) ck
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{-# OPTIONS --safe --without-K #-}
2+
3+
-- Stage S1/S2 scaffolding for docs/buchholz-plan.adoc.
4+
--
5+
-- First ψ_ν-side exclusion statement over the ν-indexed closure:
6+
-- no ψ-term can be generated at stage 0 because `cν-psi` requires
7+
-- a strictly earlier stage witness.
8+
9+
module Ordinal.Buchholz.Psi where
10+
11+
open import Data.Nat.Base using (_≤_; z≤n; s≤s)
12+
open import Data.Nat.Properties using (≤-trans)
13+
open import Relation.Nullary using (¬_)
14+
15+
open import Ordinal.OmegaMarkers using (OmegaIndex)
16+
open import Ordinal.Buchholz.Syntax using (BT; bpsi)
17+
open import Ordinal.Buchholz.Closure using (Cν; cν-psi)
18+
19+
psiν-notin-Cν : {ν μ β} ¬ Cν ν 0 (bpsi μ β)
20+
psiν-notin-Cν (cν-psi () _)
21+
22+
-- Useful companion: any derivation of `ψ_μ β` lives at stage at least 1.
23+
24+
psiν-stage-lb : {ν μ β m} Cν ν m (bpsi μ β) 1 ≤ m
25+
psiν-stage-lb (cν-psi k<m _) = ≤-trans (s≤s z≤n) k<m
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{-# OPTIONS --safe --without-K #-}
2+
3+
-- Stage S1/S2 scaffolding for docs/buchholz-plan.adoc.
4+
--
5+
-- Pure Buchholz-style term syntax over Ω-indices. This module is only
6+
-- structural syntax; ordering, normal forms, and semantics are staged
7+
-- in later milestones.
8+
9+
module Ordinal.Buchholz.Syntax where
10+
11+
open import Ordinal.OmegaMarkers using (OmegaIndex; Omega0)
12+
13+
data BT : Set where
14+
bzero : BT
15+
bOmega : OmegaIndex BT
16+
bplus : BT BT BT
17+
bpsi : OmegaIndex BT BT
18+
19+
-- The common ψ₀ abbreviation.
20+
21+
psi0 : BT BT
22+
psi0 α = bpsi Omega0 α
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{-# OPTIONS --safe --without-K #-}
2+
3+
-- Stage S1/S2 scaffolding for docs/buchholz-plan.adoc.
4+
--
5+
-- Formal Ω-index markers only; no ordinal semantics is claimed here.
6+
-- Finite markers are represented by `fin n`, and `ω` is the first
7+
-- limit marker used later by Buchholz syntax.
8+
9+
module Ordinal.OmegaMarkers where
10+
11+
open import Data.Nat.Base using (ℕ; zero; suc)
12+
13+
data OmegaIndex : Set where
14+
fin : OmegaIndex
15+
ω : OmegaIndex
16+
17+
Omega0 : OmegaIndex
18+
Omega0 = fin zero
19+
20+
Omega1 : OmegaIndex
21+
Omega1 = fin (suc zero)
22+
23+
Omegaω : OmegaIndex
24+
Omegaω = ω

proofs/agda/Smoke.agda

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,3 +97,34 @@ open import Ordinal.PsiSimple using
9797
( psi-notin-C
9898
; psi-least
9999
)
100+
101+
open import Ordinal.OmegaMarkers using
102+
( OmegaIndex
103+
; fin
104+
; ω
105+
; Omega0
106+
; Omega1
107+
; Omegaω
108+
)
109+
110+
open import Ordinal.Buchholz.Syntax using
111+
( BT
112+
; bzero
113+
; bOmega
114+
; bplus
115+
; bpsi
116+
; psi0
117+
)
118+
119+
open import Ordinal.Buchholz.Closure using
120+
( Cν
121+
; cν-zero
122+
; cν-omega
123+
; cν-plus
124+
; cν-psi
125+
; Cν-monotone
126+
)
127+
128+
open import Ordinal.Buchholz.Psi using
129+
( psiν-notin-Cν
130+
)

0 commit comments

Comments
 (0)