Skip to content

Commit 16c6ee9

Browse files
committed
agda: add recursive Buchholz depth bridge
1 parent 0133707 commit 16c6ee9

3 files changed

Lines changed: 71 additions & 0 deletions

File tree

proofs/agda/All.agda

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ open import Ordinal.Buchholz.VeblenComparisonModel
4848
open import Ordinal.Buchholz.ExtendedOrder
4949
open import Ordinal.Buchholz.LiftedExtendedOrder
5050
open import Ordinal.Buchholz.IteratedExtendedOrder
51+
open import Ordinal.Buchholz.RecursiveSurfaceOrder
5152
open import Ordinal.Buchholz.SurfaceOrder
5253
open import Ordinal.Buchholz.VeblenObligations
5354
open import Ordinal.Buchholz.Smoke
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
{-# OPTIONS --safe --without-K #-}
2+
3+
-- Direct recursive same-binder closure over the current Buchholz core.
4+
--
5+
-- Unlike the blocked `SurfaceLiftInterface` route, this relation does
6+
-- not ask a single wrapper to be self-stable. Instead each derivation
7+
-- carries a finite same-binder depth, which can be extracted and
8+
-- embedded into the iterated wrapper tower.
9+
10+
module Ordinal.Buchholz.RecursiveSurfaceOrder where
11+
12+
open import Data.Nat.Base using (ℕ; zero; suc)
13+
open import Data.Product.Base using (Σ; _,_)
14+
open import Relation.Nullary using (¬_)
15+
16+
open import Ordinal.Buchholz.Syntax using (BT; bplus; bpsi)
17+
open import Ordinal.Buchholz.Order using (_<ᵇ_)
18+
open import Ordinal.Buchholz.IteratedExtendedOrder using
19+
( LiftedOrder
20+
; SurfaceDepth
21+
; surf-core
22+
; surf-ψα
23+
; surf-+2
24+
; surface⇒lifted
25+
; LiftedOrder-irreflexive
26+
)
27+
28+
infix 4 _<ᵇʳᶠ_
29+
30+
data _<ᵇʳᶠ_ : BT BT Set where
31+
<ᵇʳᶠ-core : {x y} x <ᵇ y x <ᵇʳᶠ y
32+
<ᵇʳᶠ-ψα : {ν α β} α <ᵇʳᶠ β bpsi ν α <ᵇʳᶠ bpsi ν β
33+
<ᵇʳᶠ-+2 : {x y z} y <ᵇʳᶠ z bplus x y <ᵇʳᶠ bplus x z
34+
35+
<ᵇʳᶠ-depth : {x y} x <ᵇʳᶠ y
36+
<ᵇʳᶠ-depth (<ᵇʳᶠ-core _) = zero
37+
<ᵇʳᶠ-depth (<ᵇʳᶠ-ψα p) = suc (<ᵇʳᶠ-depth p)
38+
<ᵇʳᶠ-depth (<ᵇʳᶠ-+2 p) = suc (<ᵇʳᶠ-depth p)
39+
40+
<ᵇʳᶠ⇒SurfaceDepth : {x y} (p : x <ᵇʳᶠ y) SurfaceDepth (<ᵇʳᶠ-depth p) x y
41+
<ᵇʳᶠ⇒SurfaceDepth (<ᵇʳᶠ-core x<y) = surf-core x<y
42+
<ᵇʳᶠ⇒SurfaceDepth (<ᵇʳᶠ-ψα p) = surf-ψα (<ᵇʳᶠ⇒SurfaceDepth p)
43+
<ᵇʳᶠ⇒SurfaceDepth (<ᵇʳᶠ-+2 p) = surf-+2 (<ᵇʳᶠ⇒SurfaceDepth p)
44+
45+
SurfaceDepth⇒<ᵇʳᶠ : {n x y} SurfaceDepth n x y x <ᵇʳᶠ y
46+
SurfaceDepth⇒<ᵇʳᶠ (surf-core x<y) = <ᵇʳᶠ-core x<y
47+
SurfaceDepth⇒<ᵇʳᶠ (surf-ψα p) = <ᵇʳᶠ-ψα (SurfaceDepth⇒<ᵇʳᶠ p)
48+
SurfaceDepth⇒<ᵇʳᶠ (surf-+2 p) = <ᵇʳᶠ-+2 (SurfaceDepth⇒<ᵇʳᶠ p)
49+
50+
<ᵇʳᶠ-depth-witness : {x y} (p : x <ᵇʳᶠ y) Σ ℕ (λ n SurfaceDepth n x y)
51+
<ᵇʳᶠ-depth-witness p = <ᵇʳᶠ-depth p , <ᵇʳᶠ⇒SurfaceDepth p
52+
53+
<ᵇʳᶠ⇒lifted : {x y} (p : x <ᵇʳᶠ y) LiftedOrder (suc (<ᵇʳᶠ-depth p)) x y
54+
<ᵇʳᶠ⇒lifted p = surface⇒lifted (<ᵇʳᶠ⇒SurfaceDepth p)
55+
56+
<ᵇʳᶠ-irreflexive : {x} ¬ (x <ᵇʳᶠ x)
57+
<ᵇʳᶠ-irreflexive {x} p = LiftedOrder-irreflexive (suc (<ᵇʳᶠ-depth p)) (<ᵇʳᶠ⇒lifted p)

proofs/agda/Ordinal/Buchholz/Smoke.agda

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,19 @@ open import Ordinal.Buchholz.IteratedExtendedOrder using
205205
; SurfaceDepth-irreflexive
206206
)
207207

208+
open import Ordinal.Buchholz.RecursiveSurfaceOrder using
209+
( _<ᵇʳᶠ_
210+
; <ᵇʳᶠ-core
211+
; <ᵇʳᶠ-ψα
212+
; <ᵇʳᶠ-+2
213+
; <ᵇʳᶠ-depth
214+
; <ᵇʳᶠ⇒SurfaceDepth
215+
; SurfaceDepth⇒<ᵇʳᶠ
216+
; <ᵇʳᶠ-depth-witness
217+
; <ᵇʳᶠ⇒lifted
218+
; <ᵇʳᶠ-irreflexive
219+
)
220+
208221
open import Ordinal.Buchholz.SurfaceOrder using
209222
( _<ᵇˢ_
210223
; <ᵇˢ-core

0 commit comments

Comments
 (0)