File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -28,5 +28,7 @@ open import Ordinal.OmegaMarkers
2828open import Ordinal.Buchholz.Syntax
2929open import Ordinal.Buchholz.Closure
3030open import Ordinal.Buchholz.Psi
31+ open import Ordinal.Buchholz.Examples
32+ open import Ordinal.Buchholz.Smoke
3133
3234open import Smoke
Original file line number Diff line number Diff line change @@ -12,19 +12,19 @@ module Ordinal.Buchholz.Closure where
1212open import Data.Nat.Base using (ℕ; _≤_; _<_)
1313open import Data.Nat.Properties using (≤-trans)
1414
15- open import Ordinal.OmegaMarkers using (OmegaIndex)
15+ open import Ordinal.OmegaMarkers using (OmegaIndex; _≤Ω_ )
1616open import Ordinal.Buchholz.Syntax using (BT; bzero; bOmega; bplus; bpsi)
1717
1818data Cν (ν : 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
2626Cν-monotone : ∀ {ν m n t} → m ≤ n → Cν ν m t → Cν ν n t
2727Cν-monotone _ cν-zero = cν-zero
28- Cν-monotone _ cν-omega = cν-omega
28+ Cν-monotone _ ( cν-omega μ≤ν) = cν-omega μ≤ν
2929Cν-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
Original file line number Diff line number Diff line change 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ν
Original file line number Diff line number Diff line change @@ -17,9 +17,9 @@ open import Ordinal.Buchholz.Syntax using (BT; bpsi)
1717open import Ordinal.Buchholz.Closure using (Cν; cν-psi)
1818
1919psiν-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
2424psiν-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
Original file line number Diff line number Diff line change 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+ )
Original file line number Diff line number Diff line change 88
99module 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
1314data 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+
1739Omega0 : OmegaIndex
1840Omega0 = fin zero
1941
Original file line number Diff line number Diff 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
128134open 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 ()
You can’t perform that action at this time.
0 commit comments