Skip to content

Commit 11feeba

Browse files
committed
Deepen E5 ν-conditions and add Buchholz examples/smoke
1 parent fb5c03b commit 11feeba

7 files changed

Lines changed: 137 additions & 8 deletions

File tree

proofs/agda/All.agda

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,7 @@ open import Ordinal.OmegaMarkers
2828
open import Ordinal.Buchholz.Syntax
2929
open import Ordinal.Buchholz.Closure
3030
open import Ordinal.Buchholz.Psi
31+
open import Ordinal.Buchholz.Examples
32+
open import Ordinal.Buchholz.Smoke
3133

3234
open import Smoke

proofs/agda/Ordinal/Buchholz/Closure.agda

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,19 @@ module Ordinal.Buchholz.Closure where
1212
open import Data.Nat.Base using (ℕ; _≤_; _<_)
1313
open import Data.Nat.Properties using (≤-trans)
1414

15-
open import Ordinal.OmegaMarkers using (OmegaIndex)
15+
open import Ordinal.OmegaMarkers using (OmegaIndex; _≤Ω_)
1616
open import Ordinal.Buchholz.Syntax using (BT; bzero; bOmega; bplus; bpsi)
1717

1818
data : OmegaIndex) : BT Set where
1919
cν-zero : {m} Cν ν m bzero
20-
cν-omega : {m μ} Cν ν m (bOmega μ)
20+
cν-omega : {m μ} μ ≤Ω ν Cν ν m (bOmega μ)
2121
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 μ β)
22+
cν-psi : {m k μ β} μ ≤Ω ν k < m Cν ν k β Cν ν m (bpsi μ β)
2323

2424
-- Headline E5 structural lemma: raising the stage keeps derivability.
2525

2626
Cν-monotone : {ν m n t} m ≤ n Cν ν m t Cν ν n t
2727
Cν-monotone _ cν-zero = cν-zero
28-
Cν-monotone _ cν-omega = cν-omega
28+
Cν-monotone _ (cν-omega μ≤ν) = cν-omega μ≤ν
2929
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
30+
Cν-monotone m≤n (cν-psi μ≤ν k<m ck) = cν-psi μ≤ν (≤-trans k<m m≤n) ck
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
{-# OPTIONS --safe --without-K #-}
2+
3+
-- Stage S1/S2 scaffolding for docs/buchholz-plan.adoc.
4+
--
5+
-- Small concrete Buchholz terms and closure witnesses used as smoke
6+
-- examples while the full ordering/normal-form development is pending.
7+
8+
module Ordinal.Buchholz.Examples where
9+
10+
open import Data.Nat.Base using (z≤n; s≤s)
11+
open import Relation.Binary.PropositionalEquality using (_≡_; refl)
12+
open import Relation.Nullary using (¬_)
13+
14+
open import Ordinal.OmegaMarkers using (Omega0; Omega1; Omegaω; fin≤ω)
15+
open import Ordinal.Buchholz.Syntax using (BT; bOmega; bpsi; psi0)
16+
open import Ordinal.Buchholz.Closure using (Cν; cν-omega; cν-psi)
17+
open import Ordinal.Buchholz.Psi using (psiν-notin-Cν)
18+
19+
bh-psi0-omega1 : BT
20+
bh-psi0-omega1 = bpsi Omega0 (bOmega Omega1)
21+
22+
bh-psi0-omegaω : BT
23+
bh-psi0-omegaω = bpsi Omega0 (bOmega Omegaω)
24+
25+
psi0-expands : psi0 (bOmega Omega1) ≡ bh-psi0-omega1
26+
psi0-expands = refl
27+
28+
omega1-in-Cω-at-0 : Cν Omegaω 0 (bOmega Omega1)
29+
omega1-in-Cω-at-0 = cν-omega fin≤ω
30+
31+
psi0-omega1-at-1 : Cν Omegaω 1 bh-psi0-omega1
32+
psi0-omega1-at-1 = cν-psi fin≤ω (s≤s z≤n) omega1-in-Cω-at-0
33+
34+
psi0-omega1-not-at-0 : ¬ Cν Omegaω 0 bh-psi0-omega1
35+
psi0-omega1-not-at-0 = psiν-notin-Cν

proofs/agda/Ordinal/Buchholz/Psi.agda

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ open import Ordinal.Buchholz.Syntax using (BT; bpsi)
1717
open import Ordinal.Buchholz.Closure using (Cν; cν-psi)
1818

1919
psiν-notin-Cν : {ν μ β} ¬ Cν ν 0 (bpsi μ β)
20-
psiν-notin-Cν (cν-psi () _)
20+
psiν-notin-Cν (cν-psi _ () _)
2121

2222
-- Useful companion: any derivation of `ψ_μ β` lives at stage at least 1.
2323

2424
psiν-stage-lb : {ν μ β m} Cν ν m (bpsi μ β) 1 ≤ m
25-
psiν-stage-lb (cν-psi k<m _) = ≤-trans (s≤s z≤n) k<m
25+
psiν-stage-lb (cν-psi _ k<m _) = ≤-trans (s≤s z≤n) k<m
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
{-# OPTIONS --safe --without-K #-}
2+
3+
-- Buchholz-layer manifest. Keeps load-bearing names pinned so that
4+
-- accidental renames fail quickly in a focused module.
5+
6+
module Ordinal.Buchholz.Smoke where
7+
8+
open import Ordinal.OmegaMarkers using
9+
( OmegaIndex
10+
; fin
11+
; ω
12+
; _≤Ω_
13+
; fin≤fin
14+
; fin≤ω
15+
; ω≤ω
16+
; ≤Ω-refl
17+
; ≤Ω-trans
18+
; Omega0
19+
; Omega1
20+
; Omegaω
21+
)
22+
23+
open import Ordinal.Buchholz.Syntax using
24+
( BT
25+
; bzero
26+
; bOmega
27+
; bplus
28+
; bpsi
29+
; psi0
30+
)
31+
32+
open import Ordinal.Buchholz.Closure using
33+
( Cν
34+
; cν-zero
35+
; cν-omega
36+
; cν-plus
37+
; cν-psi
38+
; Cν-monotone
39+
)
40+
41+
open import Ordinal.Buchholz.Psi using
42+
( psiν-notin-Cν
43+
; psiν-stage-lb
44+
)
45+
46+
open import Ordinal.Buchholz.Examples using
47+
( bh-psi0-omega1
48+
; bh-psi0-omegaω
49+
; psi0-expands
50+
; omega1-in-Cω-at-0
51+
; psi0-omega1-at-1
52+
; psi0-omega1-not-at-0
53+
)

proofs/agda/Ordinal/OmegaMarkers.agda

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,34 @@
88

99
module Ordinal.OmegaMarkers where
1010

11-
open import Data.Nat.Base using (ℕ; zero; suc)
11+
open import Data.Nat.Base using (ℕ; _≤_; zero; suc)
12+
open import Data.Nat.Properties using (≤-refl; ≤-trans)
1213

1314
data OmegaIndex : Set where
1415
fin : OmegaIndex
1516
ω : OmegaIndex
1617

18+
-- Structural preorder on Ω-markers used as side conditions in Buchholz
19+
-- closure rules: finite indices compare by `ℕ` order, every finite
20+
-- index is below `ω`, and `ω` is only below itself.
21+
22+
data _≤Ω_ : OmegaIndex OmegaIndex Set where
23+
fin≤fin : {m n} m ≤ n fin m ≤Ω fin n
24+
fin≤ω : {m} fin m ≤Ω ω
25+
ω≤ω : ω ≤Ω ω
26+
27+
infix 4 _≤Ω_
28+
29+
≤Ω-refl : {ν} ν ≤Ω ν
30+
≤Ω-refl {fin n} = fin≤fin ≤-refl
31+
≤Ω-refl {ω} = ω≤ω
32+
33+
≤Ω-trans : {α β γ} α ≤Ω β β ≤Ω γ α ≤Ω γ
34+
≤Ω-trans (fin≤fin m≤n) (fin≤fin n≤k) = fin≤fin (≤-trans m≤n n≤k)
35+
≤Ω-trans (fin≤fin _) fin≤ω = fin≤ω
36+
≤Ω-trans fin≤ω ω≤ω = fin≤ω
37+
≤Ω-trans ω≤ω ω≤ω = ω≤ω
38+
1739
Omega0 : OmegaIndex
1840
Omega0 = fin zero
1941

proofs/agda/Smoke.agda

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,12 @@ open import Ordinal.OmegaMarkers using
102102
( OmegaIndex
103103
; fin
104104
; ω
105+
; _≤Ω_
106+
; fin≤fin
107+
; fin≤ω
108+
; ω≤ω
109+
; ≤Ω-refl
110+
; ≤Ω-trans
105111
; Omega0
106112
; Omega1
107113
; Omegaω
@@ -128,3 +134,14 @@ open import Ordinal.Buchholz.Closure using
128134
open import Ordinal.Buchholz.Psi using
129135
( psiν-notin-Cν
130136
)
137+
138+
open import Ordinal.Buchholz.Examples using
139+
( bh-psi0-omega1
140+
; bh-psi0-omegaω
141+
; psi0-expands
142+
; omega1-in-Cω-at-0
143+
; psi0-omega1-at-1
144+
; psi0-omega1-not-at-0
145+
)
146+
147+
open import Ordinal.Buchholz.Smoke using ()

0 commit comments

Comments
 (0)