Skip to content

Commit a3a8bb9

Browse files
committed
Strengthen E5 closure lemmas and add psi0(Omega1) witness path
1 parent 3655111 commit a3a8bb9

6 files changed

Lines changed: 98 additions & 10 deletions

File tree

proofs/agda/Ordinal/Buchholz/Closure.agda

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@
1010
module Ordinal.Buchholz.Closure where
1111

1212
open import Data.Nat.Base using (ℕ; _≤_; _<_)
13+
open import Data.Product.Base using (Σ; _,_; _×_)
1314
open import Data.Nat.Properties using (≤-trans)
1415

15-
open import Ordinal.OmegaMarkers using (OmegaIndex; _≤Ω_)
16+
open import Ordinal.OmegaMarkers using (OmegaIndex; _≤Ω_; ≤Ω-trans)
1617
open import Ordinal.Buchholz.Syntax using (BT; bzero; bOmega; bplus; bpsi)
1718

1819
data : OmegaIndex) : BT Set where
@@ -28,3 +29,27 @@ Cν-monotone _ cν-zero = cν-zero
2829
Cν-monotone _ (cν-omega μ≤ν) = cν-omega μ≤ν
2930
Cν-monotone m≤n (cν-plus cx cy) = cν-plus (Cν-monotone m≤n cx) (Cν-monotone m≤n cy)
3031
Cν-monotone m≤n (cν-psi μ≤ν k<m ck) = cν-psi μ≤ν (≤-trans k<m m≤n) ck
32+
33+
-- Monotonicity in the Ω-index parameter.
34+
35+
Cν-index-monotone : {ν ν' m t} ν ≤Ω ν' Cν ν m t Cν ν' m t
36+
Cν-index-monotone _ cν-zero = cν-zero
37+
Cν-index-monotone ν≤ν' (cν-omega μ≤ν) = cν-omega (≤Ω-trans μ≤ν ν≤ν')
38+
Cν-index-monotone ν≤ν' (cν-plus cx cy) = cν-plus (Cν-index-monotone ν≤ν' cx) (Cν-index-monotone ν≤ν' cy)
39+
Cν-index-monotone ν≤ν' (cν-psi μ≤ν k<m ck) = cν-psi (≤Ω-trans μ≤ν ν≤ν') k<m (Cν-index-monotone ν≤ν' ck)
40+
41+
-- Combined monotonicity in index and stage.
42+
43+
Cν-monotone-both : {ν ν' m n t} ν ≤Ω ν' m ≤ n Cν ν m t Cν ν' n t
44+
Cν-monotone-both ν≤ν' m≤n ct = Cν-monotone m≤n (Cν-index-monotone ν≤ν' ct)
45+
46+
-- Structural inversion helpers for the indexed constructors.
47+
48+
cν-omega-index : {ν m μ} Cν ν m (bOmega μ) μ ≤Ω ν
49+
cν-omega-index (cν-omega μ≤ν) = μ≤ν
50+
51+
cν-psi-index : {ν m μ β} Cν ν m (bpsi μ β) μ ≤Ω ν
52+
cν-psi-index (cν-psi μ≤ν _ _) = μ≤ν
53+
54+
cν-psi-decompose : {ν m μ β} Cν ν m (bpsi μ β) Σ ℕ (λ k (k < m) × Cν ν k β)
55+
cν-psi-decompose (cν-psi {k = k} _ k<m ck) = k , (k<m , ck)

proofs/agda/Ordinal/Buchholz/Examples.agda

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,21 @@
77

88
module Ordinal.Buchholz.Examples where
99

10-
open import Data.Nat.Base using (z≤n; s≤s)
10+
open import Data.Nat.Base using (_≤_; z≤n; s≤s)
1111
open import Relation.Binary.PropositionalEquality using (_≡_; refl)
1212
open import Relation.Nullary using (¬_)
1313

14-
open import Ordinal.OmegaMarkers using (Omega0; Omega1; Omegaω; fin≤ω)
14+
open import Ordinal.OmegaMarkers using
15+
( Omega0
16+
; Omega1
17+
; Omegaω
18+
; ≤Ω-refl
19+
; Omega0≤Omega1
20+
; Omega1≤Omegaω
21+
)
1522
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ν)
23+
open import Ordinal.Buchholz.Closure using (Cν; cν-omega; cν-psi; Cν-index-monotone)
24+
open import Ordinal.Buchholz.Psi using (psiν-notin-Cν; psiν-stage-lb)
1825

1926
bh-psi0-omega1 : BT
2027
bh-psi0-omega1 = bpsi Omega0 (bOmega Omega1)
@@ -25,11 +32,26 @@ bh-psi0-omegaω = bpsi Omega0 (bOmega Omegaω)
2532
psi0-expands : psi0 (bOmega Omega1) ≡ bh-psi0-omega1
2633
psi0-expands = refl
2734

35+
psi0-Omega1-target : BT
36+
psi0-Omega1-target = bh-psi0-omega1
37+
38+
omega1-in-C1-at-0 : Cν Omega1 0 (bOmega Omega1)
39+
omega1-in-C1-at-0 = cν-omega ≤Ω-refl
40+
41+
psi0-omega1-at-1-in-C1 : Cν Omega1 1 bh-psi0-omega1
42+
psi0-omega1-at-1-in-C1 = cν-psi Omega0≤Omega1 (s≤s z≤n) omega1-in-C1-at-0
43+
44+
psi0-omega1-not-at-0-in-C1 : ¬ Cν Omega1 0 bh-psi0-omega1
45+
psi0-omega1-not-at-0-in-C1 = psiν-notin-Cν
46+
47+
psi0-omega1-stage-lb-in-C1 : {m} Cν Omega1 m bh-psi0-omega1 1 ≤ m
48+
psi0-omega1-stage-lb-in-C1 = psiν-stage-lb
49+
2850
omega1-in-Cω-at-0 : Cν Omegaω 0 (bOmega Omega1)
29-
omega1-in-Cω-at-0 = cν-omega fin≤ω
51+
omega1-in-Cω-at-0 = Cν-index-monotone Omega1≤Omegaω omega1-in-C1-at-0
3052

3153
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
54+
psi0-omega1-at-1 = Cν-index-monotone Omega1≤Omegaω psi0-omega1-at-1-in-C1
3355

3456
psi0-omega1-not-at-0 : ¬ Cν Omegaω 0 bh-psi0-omega1
3557
psi0-omega1-not-at-0 = psiν-notin-Cν

proofs/agda/Ordinal/Buchholz/Psi.agda

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ open import Data.Nat.Base using (_≤_; z≤n; s≤s)
1212
open import Data.Nat.Properties using (≤-trans)
1313
open import Relation.Nullary using (¬_)
1414

15-
open import Ordinal.OmegaMarkers using (OmegaIndex)
15+
open import Ordinal.OmegaMarkers using (OmegaIndex; _≤Ω_)
1616
open import Ordinal.Buchholz.Syntax using (BT; bpsi)
17-
open import Ordinal.Buchholz.Closure using (Cν; cν-psi)
17+
open import Ordinal.Buchholz.Closure using (Cν; cν-psi; cν-psi-index)
1818

1919
psiν-notin-Cν : {ν μ β} ¬ Cν ν 0 (bpsi μ β)
2020
psiν-notin-Cν (cν-psi _ () _)
@@ -23,3 +23,6 @@ psiν-notin-Cν (cν-psi _ () _)
2323

2424
psiν-stage-lb : {ν μ β m} Cν ν m (bpsi μ β) 1 ≤ m
2525
psiν-stage-lb (cν-psi _ k<m _) = ≤-trans (s≤s z≤n) k<m
26+
27+
psiν-index-bound : {ν μ β m} Cν ν m (bpsi μ β) μ ≤Ω ν
28+
psiν-index-bound = cν-psi-index

proofs/agda/Ordinal/Buchholz/Smoke.agda

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ open import Ordinal.OmegaMarkers using
1818
; Omega0
1919
; Omega1
2020
; Omegaω
21+
; Omega0≤Omega1
22+
; Omega0≤Omegaω
23+
; Omega1≤Omegaω
2124
)
2225

2326
open import Ordinal.Buchholz.Syntax using
@@ -36,17 +39,28 @@ open import Ordinal.Buchholz.Closure using
3639
; cν-plus
3740
; cν-psi
3841
; Cν-monotone
42+
; Cν-index-monotone
43+
; Cν-monotone-both
44+
; cν-omega-index
45+
; cν-psi-index
46+
; cν-psi-decompose
3947
)
4048

4149
open import Ordinal.Buchholz.Psi using
4250
( psiν-notin-Cν
4351
; psiν-stage-lb
52+
; psiν-index-bound
4453
)
4554

4655
open import Ordinal.Buchholz.Examples using
4756
( bh-psi0-omega1
4857
; bh-psi0-omegaω
4958
; psi0-expands
59+
; psi0-Omega1-target
60+
; omega1-in-C1-at-0
61+
; psi0-omega1-at-1-in-C1
62+
; psi0-omega1-not-at-0-in-C1
63+
; psi0-omega1-stage-lb-in-C1
5064
; omega1-in-Cω-at-0
5165
; psi0-omega1-at-1
5266
; psi0-omega1-not-at-0

proofs/agda/Ordinal/OmegaMarkers.agda

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
module Ordinal.OmegaMarkers where
1010

11-
open import Data.Nat.Base using (ℕ; _≤_; zero; suc)
11+
open import Data.Nat.Base using (ℕ; _≤_; z≤n; s≤s; zero; suc)
1212
open import Data.Nat.Properties using (≤-refl; ≤-trans)
1313

1414
data OmegaIndex : Set where
@@ -44,3 +44,12 @@ Omega1 = fin (suc zero)
4444

4545
Omegaω : OmegaIndex
4646
Omegaω = ω
47+
48+
Omega0≤Omega1 : Omega0 ≤Ω Omega1
49+
Omega0≤Omega1 = fin≤fin z≤n
50+
51+
Omega0≤Omegaω : Omega0 ≤Ω Omegaω
52+
Omega0≤Omegaω = fin≤ω
53+
54+
Omega1≤Omegaω : Omega1 ≤Ω Omegaω
55+
Omega1≤Omegaω = fin≤ω

proofs/agda/Smoke.agda

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,9 @@ open import Ordinal.OmegaMarkers using
111111
; Omega0
112112
; Omega1
113113
; Omegaω
114+
; Omega0≤Omega1
115+
; Omega0≤Omegaω
116+
; Omega1≤Omegaω
114117
)
115118

116119
open import Ordinal.Buchholz.Syntax using
@@ -129,16 +132,28 @@ open import Ordinal.Buchholz.Closure using
129132
; cν-plus
130133
; cν-psi
131134
; Cν-monotone
135+
; Cν-index-monotone
136+
; Cν-monotone-both
137+
; cν-omega-index
138+
; cν-psi-index
139+
; cν-psi-decompose
132140
)
133141

134142
open import Ordinal.Buchholz.Psi using
135143
( psiν-notin-Cν
144+
; psiν-stage-lb
145+
; psiν-index-bound
136146
)
137147

138148
open import Ordinal.Buchholz.Examples using
139149
( bh-psi0-omega1
140150
; bh-psi0-omegaω
141151
; psi0-expands
152+
; psi0-Omega1-target
153+
; omega1-in-C1-at-0
154+
; psi0-omega1-at-1-in-C1
155+
; psi0-omega1-not-at-0-in-C1
156+
; psi0-omega1-stage-lb-in-C1
142157
; omega1-in-Cω-at-0
143158
; psi0-omega1-at-1
144159
; psi0-omega1-not-at-0

0 commit comments

Comments
 (0)