Skip to content

Commit 4af27fe

Browse files
committed
agda: add projection measure shared-binder lemmas
1 parent 8f21cb0 commit 4af27fe

5 files changed

Lines changed: 105 additions & 4 deletions

File tree

docs/buchholz-plan.adoc

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,10 @@ The order / well-foundedness track now has an explicit staged split:
113113
* WF-1.65 (`Ordinal.Buchholz.VeblenMeasureTarget`): first concrete
114114
measure target fixed as a lexicographic order on `OmegaIndex × BT`,
115115
with well-foundedness reduced to `×-wellFounded <Ω-wf wf-<ᵇ`.
116+
* WF-1.68 (`Ordinal.Buchholz.VeblenProjectionMeasure`): projection
117+
measure into that target made explicit; the two deferred
118+
shared-binder obligations now land as concrete target lemmas
119+
`proj-dec-+2` and `proj-dec-ψα`.
116120
* WF-1.7 (`Ordinal.Buchholz.VeblenObligations`): discharge
117121
same-binder obligation shapes in projection-model form; landed lemmas:
118122
`dec-+2-plus-right`, `dec-ψα-psi-arg`.
@@ -123,9 +127,10 @@ The order / well-foundedness track now has an explicit staged split:
123127

124128
Remaining open Veblen-route work after this update:
125129

126-
* Define the concrete measure into `OmegaIndex × BT`.
127-
* Discharge the shared-binder same-index/same-left sub-cases in that
128-
target, in a K-free style.
130+
* Reconcile the projection-style same-binder measure pieces with the
131+
remaining constructor obligations into one single concrete measure.
132+
* Cover the non-shared-binder interface fields not yet realized by the
133+
current projection measure.
129134
* Instantiate the Veblen interface without deferred assumptions.
130135

131136
Risk-gated bridge currently admitted:

proofs/agda/All.agda

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ open import Ordinal.Buchholz.WellFounded
4242
open import Ordinal.Buchholz.VeblenInterface
4343
open import Ordinal.Buchholz.VeblenIdentityModel
4444
open import Ordinal.Buchholz.VeblenMeasureTarget
45+
open import Ordinal.Buchholz.VeblenProjectionMeasure
4546
open import Ordinal.Buchholz.VeblenObligations
4647
open import Ordinal.Buchholz.Smoke
4748

proofs/agda/Ordinal/Buchholz/Smoke.agda

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,18 @@ open import Ordinal.Buchholz.VeblenMeasureTarget using
132132
; ≺M-wf
133133
)
134134

135+
open import Ordinal.Buchholz.VeblenProjectionMeasure using
136+
( proj-index
137+
; proj-term
138+
; proj-measure
139+
; proj-dec-+2
140+
; proj-dec-ψα
141+
; proj-dec-ΩΩ
142+
; proj-dec-Ωψ
143+
; proj-dec-ψΩ
144+
; proj-dec-ψΩ<
145+
)
146+
135147
open import Ordinal.Buchholz.VeblenObligations using
136148
( plus-right
137149
; psi-arg
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
{-# OPTIONS --safe --without-K #-}
2+
3+
-- Projection-style concrete measure into the current Veblen target.
4+
--
5+
-- This is not yet the final single measure model for the whole
6+
-- interface. Its role is narrower: make the target images used by the
7+
-- shared-binder follow-up explicit, and discharge those two deferred
8+
-- obligations in `≺M` itself.
9+
10+
module Ordinal.Buchholz.VeblenProjectionMeasure where
11+
12+
open import Data.Product.Base using (_,_)
13+
14+
open import Ordinal.OmegaMarkers using
15+
( OmegaIndex
16+
; Omega0
17+
; _<Ω_
18+
)
19+
open import Ordinal.Buchholz.Syntax using (BT; bzero; bOmega; bplus; bpsi)
20+
open import Ordinal.Buchholz.Order using (_<ᵇ_)
21+
open import Ordinal.Buchholz.VeblenMeasureTarget using
22+
( Measure
23+
; _≺M_
24+
; by-index
25+
; by-term
26+
)
27+
open import Ordinal.Buchholz.VeblenObligations using (plus-right; psi-arg)
28+
29+
proj-index : BT OmegaIndex
30+
proj-index bzero = Omega0
31+
proj-index (bOmega μ) = μ
32+
proj-index (bplus x _) = proj-index x
33+
proj-index (bpsi ν _) = ν
34+
35+
proj-term : BT BT
36+
proj-term bzero = bzero
37+
proj-term (bOmega _) = bzero
38+
proj-term (bplus x y) = plus-right (bplus x y)
39+
proj-term (bpsi ν α) = psi-arg (bpsi ν α)
40+
41+
proj-measure : BT Measure
42+
proj-measure t = proj-index t , proj-term t
43+
44+
-- The same-binder target obligations now become direct lexicographic
45+
-- decreases on the projected payload.
46+
proj-dec-+2 :
47+
{x y₂ z₂}
48+
y₂ <ᵇ z₂
49+
proj-measure (bplus x y₂) ≺M proj-measure (bplus x z₂)
50+
proj-dec-+2 y₂<z₂ = by-term y₂<z₂
51+
52+
proj-dec-ψα :
53+
{ν α β}
54+
α <ᵇ β
55+
proj-measure (bpsi ν α) ≺M proj-measure (bpsi ν β)
56+
proj-dec-ψα α<β = by-term α<β
57+
58+
-- The index-driven cases already fit the first lexicographic
59+
-- component of the same target.
60+
proj-dec-ΩΩ :
61+
{μ ν}
62+
μ <Ω ν
63+
proj-measure (bOmega μ) ≺M proj-measure (bOmega ν)
64+
proj-dec-ΩΩ μ<ν = by-index μ<ν
65+
66+
proj-dec-Ωψ :
67+
{μ ν α}
68+
μ <Ω ν
69+
proj-measure (bOmega μ) ≺M proj-measure (bpsi ν α)
70+
proj-dec-Ωψ μ<ν = by-index μ<ν
71+
72+
proj-dec-ψΩ :
73+
{μ ν α β}
74+
μ <Ω ν
75+
proj-measure (bpsi μ α) ≺M proj-measure (bpsi ν β)
76+
proj-dec-ψΩ μ<ν = by-index μ<ν
77+
78+
proj-dec-ψΩ< :
79+
{ν μ α}
80+
ν <Ω μ
81+
proj-measure (bpsi ν α) ≺M proj-measure (bOmega μ)
82+
proj-dec-ψΩ< ν<μ = by-index ν<μ

readme.adoc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,10 +89,11 @@ Ordinal/Buchholz track status:
8989
* `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.
9090
* `Ordinal.Buchholz.VeblenIdentityModel` provides a first concrete instantiation of that interface (identity measure bootstrap), with `dec-ψα` / `dec-+2` kept as explicit parameters.
9191
* `Ordinal.Buchholz.VeblenMeasureTarget` now fixes the first concrete target carrier for the Veblen route: a lexicographic order on `OmegaIndex × BT`, with `≺M-wf` proved from the existing `Ω` and Buchholz well-foundedness results.
92+
* `Ordinal.Buchholz.VeblenProjectionMeasure` now makes the projection-style measure into that target explicit and discharges the two deferred shared-binder obligations there (`proj-dec-ψα`, `proj-dec-+2`), along with the already index-driven strict cases.
9293
* `Ordinal.Buchholz.VeblenObligations` advances the hard-obligation discharge track with concrete projection-model lemmas for both same-binder shapes:
9394
** `dec-+2-plus-right`
9495
** `dec-ψα-psi-arg`
95-
* Open work is now concentrated in defining the actual measure into that target and discharging the shared-binder cases (`<ᵇ-ψα`, `<ᵇ-+2`) there in a `--without-K`-compatible way.
96+
* Open work is now concentrated in turning those target-level pieces into one full concrete interface instantiation: the remaining non-shared-binder constructor obligations still need to be made compatible with a single measure, in a `--without-K`-compatible way.
9697

9798
== External Bridge Targets (local workspace)
9899

0 commit comments

Comments
 (0)