Skip to content

Commit cf7ec23

Browse files
committed
agda: add Ω+/ψ+ left-summand bridges for Buchholz order
1 parent b6a2936 commit cf7ec23

8 files changed

Lines changed: 66 additions & 25 deletions

File tree

docs/buchholz-plan.adoc

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -113,16 +113,16 @@ The order / well-foundedness track now has an explicit staged split:
113113
* WF-1.7 (`Ordinal.Buchholz.VeblenObligations`): discharge
114114
same-binder obligation shapes in projection-model form; landed lemmas:
115115
`dec-+2-plus-right`, `dec-ψα-psi-arg`.
116-
* WF-2 (in progress): explicit inversion lemmas for the still-open
117-
mixed head cases (`Ω/+`, `ψ/+`) and the newly admitted comparison
118-
bridge `bpsi ν α <ᵇ bOmega μ` under `ν ≤Ω μ`.
116+
* WF-2 (in progress): mixed-head bridge layer now includes
117+
`bpsi ν α <ᵇ bOmega μ` (under `ν ≤Ω μ`) and left-summand bridges
118+
into additive terms (`<ᵇ-Ω+`, `<ᵇ-ψ+`) with inversions.
119119

120120
Remaining open comparison work after this update:
121121

122-
* Constructor-level comparison rules for `bOmega` vs `bplus` (both
123-
directions) in the intended normal-form discipline.
124-
* Constructor-level comparison rules for `bpsi` vs `bplus` (both
125-
directions).
122+
* Constructor-level comparison rules for non-top `bplus` vs `bOmega`
123+
(the `bplus → bOmega` direction beyond `<ᵇ-+ω`).
124+
* Constructor-level comparison rules for non-top `bplus` vs `bpsi`
125+
(the `bplus → bpsi` direction beyond `<ᵇ-+ψω`).
126126
* Shared-binder same-index/same-left sub-cases in a K-free style
127127
(do not return to the blocked direct reflexive-equation elimination
128128
route).

proofs/agda/Ordinal/Buchholz/Order.agda

Lines changed: 35 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,24 @@
88
-- the term heads naturally determine. Totality is *not* proved here
99
-- and neither is well-foundedness; those are WF-1 and WF-2.
1010
--
11-
-- Scope of this module. The 7 constructors below cover the head
11+
-- Scope of this module. The constructors below cover the head
1212
-- pairs marked ✓ in the matrix, with the lex-on-left-summand case
1313
-- for bplus and the lex-on-Ω-index case for bpsi:
1414
--
1515
-- head of x \ head of y │ bzero │ bOmega │ bplus │ bpsi
1616
-- ──────────────────────┼───────┼────────┼───────┼──────
1717
-- bzero │ – │ ✓ │ ✓ │ ✓
18-
-- bOmega │ │ ✓ │ │ ✓ (when μ <Ω ν)
18+
-- bOmega │ │ ✓ │ │ ✓ (when μ <Ω ν)
1919
-- bplus │ │ │ ✓ │
20-
-- bpsi │ │ ✓ │ │ ✓ (when μ <Ω ν)
20+
-- bpsi │ │ ✓ │ │ ✓ (when μ <Ω ν)
2121
--
2222
-- Open cases (no constructor yet; must be discharged in follow-ups
2323
-- before `<ᵇ`-totality and well-foundedness can land):
2424
--
25-
-- * bOmega vs bplus (general case) — requires a comparison
26-
-- between atomic heads and additive normal forms. A narrow
27-
-- top-marker bridge is admitted by `<ᵇ-+ω`.
28-
-- * bpsi vs bplus (either direction) — same reason, mediated by
29-
-- the leading bpsi summand of a bplus in CNF.
25+
-- * bplus vs bOmega (general case) — currently only the top-marker
26+
-- bridge `<ᵇ-+ω` is admitted.
27+
-- * bplus vs bpsi (general case) — currently only the top-marker
28+
-- bridge `<ᵇ-+ψω` is admitted.
3029
-- * Two same-binder sub-cases whose natural shapes run into Agda
3130
-- 2.6.3's `--without-K` restriction on reflexive-equation
3231
-- elimination and are deferred pending a K-free reformulation:
@@ -76,6 +75,10 @@ data _<ᵇ_ : BT → BT → Set where
7675
<ᵇ-ψΩ : {μ ν α β} μ <Ω ν bpsi μ α <ᵇ bpsi ν β
7776
<ᵇ-ψΩ≤ : {ν μ α} ν ≤Ω μ bpsi ν α <ᵇ bOmega μ
7877

78+
-- Left-summand bridge into additive terms.
79+
<ᵇ-Ω+ : {μ x y} bOmega μ <ᵇ x bOmega μ <ᵇ bplus x y
80+
<ᵇ-ψ+ : {ν α x y} bpsi ν α <ᵇ x bpsi ν α <ᵇ bplus x y
81+
7982
-- bplus comparison by the left summand. The same-left sub-case
8083
-- (compare right summands when lefts agree) is deferred for the
8184
-- same `--without-K` reason as `<ᵇ-ψα` above: its natural shape
@@ -115,27 +118,43 @@ infix 4 _<ᵇ_
115118
-- Left leg: <ᵇ-0-Ω (x = bzero, y = bOmega _)
116119
<ᵇ-trans <ᵇ-0-Ω (<ᵇ-ΩΩ _) = <ᵇ-0-Ω
117120
<ᵇ-trans <ᵇ-0-Ω (<ᵇ-Ωψ _) = <ᵇ-0-ψ
121+
<ᵇ-trans <ᵇ-0-Ω (<ᵇ-Ω+ _) = <ᵇ-0-+
118122
-- Left leg: <ᵇ-0-+ (x = bzero, y = bplus _ _)
119123
<ᵇ-trans <ᵇ-0-+ (<ᵇ-+1 _) = <ᵇ-0-+
120124
<ᵇ-trans <ᵇ-0-+ (<ᵇ-+ω _) = <ᵇ-0-Ω
121125
<ᵇ-trans <ᵇ-0-+ (<ᵇ-+ψω _) = <ᵇ-0-ψ
122126
-- Left leg: <ᵇ-0-ψ (x = bzero, y = bpsi _ _)
123127
<ᵇ-trans <ᵇ-0-ψ (<ᵇ-ψΩ _) = <ᵇ-0-ψ
128+
<ᵇ-trans <ᵇ-0-ψ (<ᵇ-ψ+ _) = <ᵇ-0-+
124129
-- Left leg: <ᵇ-ΩΩ (x = bOmega _, y = bOmega _)
125130
<ᵇ-trans (<ᵇ-ΩΩ p) (<ᵇ-ΩΩ q) = <ᵇ-ΩΩ (<Ω-trans p q)
126131
<ᵇ-trans (<ᵇ-ΩΩ p) (<ᵇ-Ωψ q) = <ᵇ-Ωψ (<Ω-trans p q)
132+
<ᵇ-trans (<ᵇ-ΩΩ p) (<ᵇ-Ω+ q) = <ᵇ-Ω+ (<ᵇ-trans (<ᵇ-ΩΩ p) q)
127133
-- Left leg: <ᵇ-Ωψ (x = bOmega _, y = bpsi _ _)
128134
<ᵇ-trans (<ᵇ-Ωψ p) (<ᵇ-ψΩ q) = <ᵇ-Ωψ (<Ω-trans p q)
135+
<ᵇ-trans (<ᵇ-Ωψ p) (<ᵇ-ψ+ q) = <ᵇ-Ω+ (<ᵇ-trans (<ᵇ-Ωψ p) q)
129136
-- Left leg: <ᵇ-ψΩ (x = bpsi _ _, y = bpsi _ _)
130137
<ᵇ-trans (<ᵇ-ψΩ p) (<ᵇ-ψΩ q) = <ᵇ-ψΩ (<Ω-trans p q)
131138
<ᵇ-trans (<ᵇ-ψΩ p) (<ᵇ-ψΩ≤ q) = <ᵇ-ψΩ≤ (≤Ω-trans (<Ω→≤Ω p) q)
139+
<ᵇ-trans (<ᵇ-ψΩ p) (<ᵇ-ψ+ q) = <ᵇ-ψ+ (<ᵇ-trans (<ᵇ-ψΩ p) q)
132140
-- Left leg: <ᵇ-ψΩ≤ (x = bpsi _ _, y = bOmega _)
133141
<ᵇ-trans (<ᵇ-ψΩ≤ p) (<ᵇ-ΩΩ q) = <ᵇ-ψΩ≤ (≤Ω-trans p (<Ω→≤Ω q))
134142
<ᵇ-trans (<ᵇ-ψΩ≤ p) (<ᵇ-Ωψ q) = <ᵇ-ψΩ (≤Ω-<Ω-trans p q)
143+
<ᵇ-trans (<ᵇ-ψΩ≤ p) (<ᵇ-Ω+ q) = <ᵇ-ψ+ (<ᵇ-trans (<ᵇ-ψΩ≤ p) q)
135144
-- Left leg: <ᵇ-+1 (x = bplus _ _, y = bplus _ _)
136145
<ᵇ-trans (<ᵇ-+1 p) (<ᵇ-+1 q) = <ᵇ-+1 (<ᵇ-trans p q)
137146
<ᵇ-trans (<ᵇ-+1 p) (<ᵇ-+ω q) = <ᵇ-+ω (<ᵇ-trans p q)
138147
<ᵇ-trans (<ᵇ-+1 p) (<ᵇ-+ψω q) = <ᵇ-+ψω (<ᵇ-trans p q)
148+
-- Left leg: <ᵇ-Ω+ (x = bOmega _, y = bplus _ _)
149+
<ᵇ-trans (<ᵇ-Ω+ p) (<ᵇ-+1 q) = <ᵇ-Ω+ (<ᵇ-trans p q)
150+
<ᵇ-trans (<ᵇ-Ω+ p) (<ᵇ-+ω q) = <ᵇ-trans p q
151+
<ᵇ-trans (<ᵇ-Ω+ p) (<ᵇ-+ψω q) = <ᵇ-trans p q
152+
-- Left leg: <ᵇ-ψ+ (x = bpsi _ _, y = bplus _ _)
153+
<ᵇ-trans (<ᵇ-ψ+ p) (<ᵇ-+1 q) = <ᵇ-ψ+ (<ᵇ-trans p q)
154+
<ᵇ-trans (<ᵇ-ψ+ p) (<ᵇ-+ω q) = <ᵇ-trans p q
155+
<ᵇ-trans (<ᵇ-ψ+ p) (<ᵇ-+ψω q) = <ᵇ-trans p q
156+
<ᵇ-trans (<ᵇ-+ω p) (<ᵇ-Ω+ q) = <ᵇ-+1 (<ᵇ-trans p q)
157+
<ᵇ-trans (<ᵇ-+ψω p) (<ᵇ-ψ+ q) = <ᵇ-+1 (<ᵇ-trans p q)
139158
-- Left leg: <ᵇ-+ψω (x = bplus _ _, y = bpsi ω _)
140159
<ᵇ-trans (<ᵇ-+ψω p) (<ᵇ-ψΩ≤ ω≤ω) = <ᵇ-+ω (<ᵇ-trans p (<ᵇ-ψΩ≤ ω≤ω))
141160
-- Right leg: <ᵇ-ψΩ≤ (y = bpsi _ _, z = bOmega _)
@@ -146,12 +165,11 @@ infix 4 _<ᵇ_
146165
-- WF-2 open-case inversions (Ω vs +)
147166
----------------------------------------------------------------------------
148167

149-
-- The current 7-constructor core has no witness for either direction.
150-
-- These inversion lemmas pin that fact explicitly for downstream case
151-
-- splits while the comparison rule is still deferred.
168+
-- The Ω→+ bridge is admitted (`<ᵇ-Ω+`), while the non-top
169+
-- bplus→Ω case remains deferred.
152170

153-
<ᵇ-inv-Ω+ : {μ x y} bOmega μ <ᵇ bplus x y
154-
<ᵇ-inv-Ω+ ()
171+
<ᵇ-inv-Ω+ : {μ x y} bOmega μ <ᵇ bplus x y bOmega μ <ᵇ x
172+
<ᵇ-inv-Ω+ (<ᵇ-Ω+ Ω<x) = Ω<x
155173

156174
<ᵇ-inv-+Ωfin : {x y n} bplus x y <ᵇ bOmega (fin n)
157175
<ᵇ-inv-+Ωfin ()
@@ -164,11 +182,11 @@ infix 4 _<ᵇ_
164182
-- WF-2 open-case inversions (ψ vs +)
165183
----------------------------------------------------------------------------
166184

167-
-- Like Ω-vs-+, these comparisons are still deferred and currently
168-
-- have no constructors in either direction.
185+
-- The ψ→+ bridge is admitted (`<ᵇ-ψ+`), while the non-top
186+
-- bplus→ψ case remains deferred.
169187

170-
<ᵇ-inv-ψ+ : {μ α x y} bpsi μ α <ᵇ bplus x y
171-
<ᵇ-inv-ψ+ ()
188+
<ᵇ-inv-ψ+ : {μ α x y} bpsi μ α <ᵇ bplus x y bpsi μ α <ᵇ x
189+
<ᵇ-inv-ψ+ (<ᵇ-ψ+ ψ<x) = ψ<x
172190

173191
<ᵇ-inv-+ψfin : {x y n α} bplus x y <ᵇ bpsi (fin n) α
174192
<ᵇ-inv-+ψfin ()

proofs/agda/Ordinal/Buchholz/Smoke.agda

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ open import Ordinal.Buchholz.Order using
5555
; <ᵇ-Ωψ
5656
; <ᵇ-ψΩ
5757
; <ᵇ-ψΩ≤
58+
; <ᵇ-Ω+
59+
; <ᵇ-ψ+
5860
; <ᵇ-+ω
5961
; <ᵇ-+ψω
6062
; <ᵇ-+1

proofs/agda/Ordinal/Buchholz/VeblenIdentityModel.agda

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ open import Ordinal.Buchholz.Order using
2121
; <ᵇ-Ωψ
2222
; <ᵇ-ψΩ
2323
; <ᵇ-ψΩ≤
24+
; <ᵇ-Ω+
25+
; <ᵇ-ψ+
2426
; <ᵇ-+ω
2527
; <ᵇ-+ψω
2628
; <ᵇ-+1
@@ -42,6 +44,8 @@ identity-interface dec-ψα dec-+2 = record
4244
; dec-Ωψ = <ᵇ-Ωψ
4345
; dec-ψΩ = <ᵇ-ψΩ
4446
; dec-ψΩ≤ = <ᵇ-ψΩ≤
47+
; dec-Ω+ = <ᵇ-Ω+
48+
; dec-ψ+ = <ᵇ-ψ+
4549
; dec-+ω = <ᵇ-+ω
4650
; dec-+ψω = <ᵇ-+ψω
4751
; dec-+1 = <ᵇ-+1

proofs/agda/Ordinal/Buchholz/VeblenInterface.agda

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ open import Ordinal.Buchholz.Order using
2828
; <ᵇ-Ωψ
2929
; <ᵇ-ψΩ
3030
; <ᵇ-ψΩ≤
31+
; <ᵇ-Ω+
32+
; <ᵇ-ψ+
3133
; <ᵇ-+ω
3234
; <ᵇ-+ψω
3335
; <ᵇ-+1
@@ -50,6 +52,10 @@ record VeblenWFInterface {ℓm ℓr : Level}
5052
dec-Ωψ : {μ ν α} μ <Ω ν measure (bOmega μ) ≺ measure (bpsi ν α)
5153
dec-ψΩ : {μ ν α β} μ <Ω ν measure (bpsi μ α) ≺ measure (bpsi ν β)
5254
dec-ψΩ≤ : {ν μ α} ν ≤Ω μ measure (bpsi ν α) ≺ measure (bOmega μ)
55+
dec-Ω+ : {μ x y} measure (bOmega μ) ≺ measure x
56+
measure (bOmega μ) ≺ measure (bplus x y)
57+
dec-ψ+ : {ν α x y} measure (bpsi ν α) ≺ measure x
58+
measure (bpsi ν α) ≺ measure (bplus x y)
5359

5460
dec-+ω : {x y} x <ᵇ bOmega ω measure (bplus x y) ≺ measure (bOmega ω)
5561
dec-+ψω : {x y α} x <ᵇ bpsi ω α measure (bplus x y) ≺ measure (bpsi ω α)
@@ -67,6 +73,8 @@ record VeblenWFInterface {ℓm ℓr : Level}
6773
core-monotone (<ᵇ-Ωψ μ<ν) = dec-Ωψ μ<ν
6874
core-monotone (<ᵇ-ψΩ μ<ν) = dec-ψΩ μ<ν
6975
core-monotone (<ᵇ-ψΩ≤ ν≤μ) = dec-ψΩ≤ ν≤μ
76+
core-monotone (<ᵇ-Ω+ Ω<x) = dec-Ω+ (core-monotone Ω<x)
77+
core-monotone (<ᵇ-ψ+ ψ<x) = dec-ψ+ (core-monotone ψ<x)
7078
core-monotone (<ᵇ-+ω x<ω) = dec-+ω x<ω
7179
core-monotone (<ᵇ-+ψω x<ψω) = dec-+ψω x<ψω
7280
core-monotone (<ᵇ-+1 x₁<y₁) = dec-+1 x₁<y₁

proofs/agda/Ordinal/Buchholz/WellFounded.agda

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ open import Ordinal.Buchholz.Order using
3434
; <ᵇ-Ωψ
3535
; <ᵇ-ψΩ
3636
; <ᵇ-ψΩ≤
37+
; <ᵇ-Ω+
38+
; <ᵇ-ψ+
3739
; <ᵇ-+ω
3840
; <ᵇ-+ψω
3941
; <ᵇ-+1
@@ -64,6 +66,8 @@ mutual
6466

6567
<ᵇ-pred-bplus-from : {α β x} Acc _<ᵇ_ α x <ᵇ bplus α β Acc _<ᵇ_ x
6668
<ᵇ-pred-bplus-from _ <ᵇ-0-+ = <ᵇ-acc-bzero
69+
<ᵇ-pred-bplus-from (acc rsα) (<ᵇ-Ω+ Ω<α) = rsα Ω<α
70+
<ᵇ-pred-bplus-from (acc rsα) (<ᵇ-ψ+ ψ<α) = rsα ψ<α
6771
<ᵇ-pred-bplus-from (acc rsα) (<ᵇ-+1 {x₂ = x₂} x₁<α) = <ᵇ-acc-bplus-from (rsα x₁<α) x₂
6872

6973
<ᵇ-acc-bplus-from : {α} Acc _<ᵇ_ α : BT) Acc _<ᵇ_ (bplus α β)

proofs/agda/Smoke.agda

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,8 @@ open import Ordinal.Buchholz.Order using
182182
; <ᵇ-Ωψ
183183
; <ᵇ-ψΩ
184184
; <ᵇ-ψΩ≤
185+
; <ᵇ-Ω+
186+
; <ᵇ-ψ+
185187
; <ᵇ-+ω
186188
; <ᵇ-+ψω
187189
; <ᵇ-+1

readme.adoc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,12 +80,15 @@ Ordinal/Buchholz track status:
8080
* Top-marker `bplus` bridges are now admitted and inverted:
8181
** `<ᵇ-+ω`, `<ᵇ-+ψω`
8282
** `<ᵇ-inv-+Ωω`, `<ᵇ-inv-+ψω`
83+
* Left-summand bridges into additive terms are admitted and inverted:
84+
** `<ᵇ-Ω+`, `<ᵇ-ψ+`
85+
** `<ᵇ-inv-Ω+`, `<ᵇ-inv-ψ+`
8386
* `Ordinal.Buchholz.VeblenInterface` now pins a measure-based WF interface with explicit constructor obligations and deferred same-binder obligations (`dec-ψα`, `dec-+2`) for the Veblen-route follow-up.
8487
* `Ordinal.Buchholz.VeblenIdentityModel` provides a first concrete instantiation of that interface (identity measure bootstrap), with `dec-ψα` / `dec-+2` kept as explicit parameters.
8588
* `Ordinal.Buchholz.VeblenObligations` advances the hard-obligation discharge track with concrete projection-model lemmas for both same-binder shapes:
8689
** `dec-+2-plus-right`
8790
** `dec-ψα-psi-arg`
88-
* Open work remains for general `Ω/+` and `ψ/+` comparisons and for the shared-binder cases (`<ᵇ-ψα`, `<ᵇ-+2`) in a `--without-K`-compatible style.
91+
* Open work remains for non-top `bplus` vs `bOmega`/`bpsi` comparisons and for the shared-binder cases (`<ᵇ-ψα`, `<ᵇ-+2`) in a `--without-K`-compatible style.
8992

9093
== External Bridge Targets (local workspace)
9194

0 commit comments

Comments
 (0)