Skip to content

Commit 872a222

Browse files
committed
Merge branch 'session-2026-05-20/buchholz-budgeted-plus'
2 parents 97beaba + 03239f9 commit 872a222

4 files changed

Lines changed: 678 additions & 0 deletions

File tree

Lines changed: 365 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,365 @@
1+
// SPDX-License-Identifier: PMPL-1.0-or-later
2+
= Buchholz `_<ᵇ_` rank-embedding obstruction
3+
:date: 2026-05-20
4+
:toc:
5+
6+
This note records why the natural rank-embedding route to unbudgeted
7+
`WellFounded _<ᵇʳᶠ_` (and to `WellFounded _<ᵇ⁺_`) is *structurally
8+
impossible* for the `Ordinal.Buchholz.Order._<ᵇ_` relation as
9+
currently defined. The relation is well-founded — `Ordinal.Buchholz.
10+
WellFounded.wf-<ᵇ` proves it — but it is *not ordinally sound*, so no
11+
rank function `BT → Ord` can be strict-monotone on every constructor.
12+
13+
This note supersedes the "Route B (recommended next attempt)" framing
14+
in `docs/echo-types/buchholz-extended-wf.md` and the "Phase 2.2 open
15+
lemma" framing in `Ordinal.Buchholz.RankBrouwer.agda`. Both are
16+
historical now; the rank-embedding route is closed.
17+
18+
== The obstruction in one counterexample
19+
20+
The constructor `<ᵇ-Ω+` of `_<ᵇ_`:
21+
22+
[source,agda]
23+
----
24+
<ᵇ-+Ω : ∀ {x y μ} → x <ᵇ bOmega μ → bplus x y <ᵇ bOmega μ
25+
----
26+
27+
(`Ordinal.Buchholz.Order.agda`, line 82.)
28+
29+
This says: if `x` is `<ᵇ`-below the Ω-marker, then so is `bplus x y`
30+
*for any `y`*. Concretely, instantiate `μ = fin 0`, `x = bzero`,
31+
`y = bOmega (fin 1)`:
32+
33+
[source,agda]
34+
----
35+
witness : bplus bzero (bOmega (fin 1)) <ᵇ bOmega (fin 0)
36+
witness = <ᵇ-+Ω <ᵇ-0-Ω
37+
----
38+
39+
The premise `<ᵇ-0-Ω : bzero <ᵇ bOmega (fin 0)` is a constructor of
40+
`_<ᵇ_`. So the witness is derivable.
41+
42+
Any additive rank `rank : BT → Ord` of the SA-recommended shape
43+
(`Ordinal.Buchholz.RankBrouwer.agda`):
44+
45+
[source,agda]
46+
----
47+
rank bzero = oz
48+
rank (bOmega ν) = ω-rank ν
49+
rank (bplus x y) = rank x ⊕ rank y
50+
rank (bpsi ν α) = psi-rank ν (rank α)
51+
----
52+
53+
computes the LHS of the witness to `oz ⊕ ω-rank (fin 1) = two` and
54+
the RHS to `ω-rank (fin 0) = one` (in Brouwer notation). The required
55+
`rank-mono` would force `two <′ one`, which is `osuc (osuc oz) ≤′
56+
osuc oz` — reducing to `osuc oz ≤′ oz`, which is `⊥`. So `rank-mono`
57+
is refuted at a checked counterexample.
58+
59+
== Per-constructor verdict (2026-05-20 deepening)
60+
61+
Per-constructor analysis of `_<ᵇ_`'s 13 constructors against the
62+
SA-recommended additive rank `rank (bplus x y) = rank x ⊕ rank y`
63+
and `rank (bpsi ν α) = osuc (ω-rank ν ⊕ rank α)`:
64+
65+
[cols="2,1,4", options="header"]
66+
|===
67+
| Constructor | Verdict | Reason
68+
69+
| `<ᵇ-0-Ω` | ✓ provable | `oz <′ ω-rank μ` for any μ (osuc-stack or limit).
70+
| `<ᵇ-0-ψ` | ✓ provable | `oz <′ osuc _` definitionally.
71+
| `<ᵇ-ΩΩ` | ✓ provable | `ω-rank` strict-monotone under `_<Ω_`.
72+
| `<ᵇ-Ωψ` | ✓ provable | Chain: `ω-rank μ <′ ω-rank ν ≤′ ω-rank ν ⊕ rank α <′ osuc(…)`.
73+
| `<ᵇ-0-+` | ✗ unsound | `bplus bzero bzero` has rank `oz ⊕ oz = oz`; need `oz <′ oz` (false).
74+
| `<ᵇ-ψΩ` | ✗ unsound | `α` can outsize `ν−μ`; counterexample at μ=fin 0, ν=fin 1, α=bOmega ω.
75+
| `<ᵇ-ψΩ≤` | ✗ unsound | At ν=μ: `osuc(ω-rank ν ⊕ rank α) < ω-rank ν` fails for nonzero α.
76+
| `<ᵇ-Ω+` | ✗ unsound | `Ω<x` doesn't bound `Ω<x⊕y` (y unconstrained).
77+
| `<ᵇ-ψ+` | ✗ unsound | Same shape as `<ᵇ-Ω+` with ψ instead of Ω.
78+
| `<ᵇ-+Ω` | ✗ unsound | The flagship counterexample (`<ᵇ-+Ω <ᵇ-0-Ω`).
79+
| `<ᵇ-+ψ` | ✗ unsound | Same as `<ᵇ-+Ω` with ψ-target.
80+
| `<ᵇ-+1` | ✗ unsound | `x₁<y₁` doesn't bound the right summands.
81+
| `<ᵇ-0-+` (degenerate) | ✗ | Sub-case of `<ᵇ-0-+`; flagged separately because the rest of `<ᵇ-0-+` would be salvageable if `bplus bzero bzero` is excluded by a CNF tail constraint.
82+
|===
83+
84+
**Score: 4/13 constructors admit additive rank-mono; 9/13 require
85+
restriction or a non-additive measure.**
86+
87+
The four passing cases are formalised as a partial Agda artifact
88+
in `proofs/agda/Ordinal/Buchholz/RankPartial.agda` (2026-05-20):
89+
90+
* `ω-rank-mono-<Ω` — the supporting lemma, isolated for the first
91+
time.
92+
* `rank-mono-<ᵇ-0-Ω`, `rank-mono-<ᵇ-0-ψ`, `rank-mono-<ᵇ-ΩΩ`,
93+
`rank-mono-<ᵇ-Ωψ` — the four per-constructor lemmas.
94+
* `rank-mono-partial-{0-Ω, 0-ψ, ΩΩ, Ωψ}` — the dispatch functions
95+
that match exactly the four supported `_<ᵇ_` constructor heads.
96+
97+
This is a *stepping stone*: the four lemmas are reusable for both
98+
unblock paths. Path 1 (WF-restriction) needs to additionally
99+
discharge the nine failing cases under a CNF tail-constraint;
100+
the four passing cases survive the restriction unchanged. Path 2
101+
(non-additive denotational measure) needs to replace the rank
102+
shape entirely; the four passing cases serve as sanity checks
103+
that the new shape doesn't regress.
104+
105+
== Why no rank shape rescues it
106+
107+
Sufficient conditions per `_<ᵇ_` constructor on a candidate
108+
`rank-+ : BT → BT → Ord` for the `bplus` head:
109+
110+
* `<ᵇ-+Ω x<Ω`: need `rank-+ x y <′ rank-Ω μ` given `rank x <′ rank-Ω
111+
μ`. *The right summand `y` is arbitrary*, so `rank-+ x y` must be
112+
bounded by something that doesn't grow with `y`. Equivalently:
113+
`rank-+ x y` cannot depend on `y` in any unbounded way.
114+
* `<ᵇʳᶠ-+2` (and `<ᵇ⁺-+2`): need `rank-+ x y <′ rank-+ x z` given
115+
`rank y <′ rank z`. So `rank-+ x y` *must* be strict-monotone in
116+
`y`.
117+
118+
These two requirements are jointly incompatible: monotone-in-`y`
119+
forces `rank-+ x y` to grow with `y`; the `<ᵇ-+Ω` bound forces it not
120+
to. The same tension appears for `<ᵇ-Ω+`/`<ᵇ-ψ+` versus `<ᵇ-+1`.
121+
122+
No additive, multiplicative, or constructive ordinal arithmetic on
123+
`rank x` and `rank y` resolves this. Constant-in-`y` shapes (e.g.
124+
`rank-+ x y = rank x`) lose `<ᵇʳᶠ-+2`; bounded-in-`y` shapes (e.g.
125+
`rank-+ x y = max (rank x) (rank y) + 1`) fail `<ᵇ-+Ω` when `y` is
126+
ordinally above `μ`.
127+
128+
The structural root cause is that `<ᵇ-+Ω` (and its companion
129+
constructors) make `_<ᵇ_` a *syntactic* order, not the genuine
130+
ordinal `<` on Cantor normal forms — they are sound only when both
131+
summands are constrained to be `<ᵇ`-below `μ`, which is exactly the
132+
constraint that `Ordinal.Buchholz.WellFormed` would add on top.
133+
`_<ᵇ_` itself does not require well-formedness, so the rank route
134+
cannot succeed at the level of `_<ᵇ_` alone.
135+
136+
== Other routes attempted and walled
137+
138+
[cols="1,4,2"]
139+
|===
140+
| # | Route | Status
141+
142+
| 1
143+
| Rank-into-Brouwer (`rank-mono-<ᵇ`) per SA blueprint in
144+
`docs/echidna-design-search-2026-04-28.adoc`. The SA validated
145+
only the `<ᵇʳᶠ-ψα`/`<ᵇʳᶠ-+2` blockers; the 13-constructor `_<ᵇ_`
146+
interior was not actually checked.
147+
| Refuted by the worked counterexample above.
148+
149+
| 2
150+
| Direct mutual structural recursion mirroring `wf-<ᵇ` in
151+
`Ordinal.Buchholz.WellFounded`, extending the bundle with
152+
`<ᵇʳᶠ-ψα`/`<ᵇʳᶠ-+2` cases.
153+
| **Walled by Agda's termination checker.** The `<ᵇ-+1`
154+
predecessor of `bplus α β` is `bplus x₁ x₂` with `x₂` a fresh
155+
BT from the constructor field. The `<ᵇʳᶠ-+2` extension forces
156+
us to construct `Acc _<ᵇʳᶠ_ x₂`; the only available source is
157+
`wf-<ᵇʳᶠ x₂`, but `x₂` is not a structural subterm of the
158+
outer input `bplus α β`. Verbatim error: `Termination
159+
checking failed... Problematic calls: wf-<ᵇʳᶠ x₂`. Attempt
160+
preserved on the abandoned branch `session-2026-05-20/buchholz-
161+
mutual-wf` (no compiling file landed).
162+
163+
| 3
164+
| Tower-stratification through `Σ ℕ (λ n → LiftedOrder n x y)`.
165+
Predicated on `LiftedOrder-lift` (monotone upward in `n`) and
166+
per-level WF (`LiftedOrder-wf`).
167+
| **Walled.** WF of the union of an upward-increasing chain of
168+
WF relations is not generally WF; here, the derivation depth
169+
carried by `<ᵇʳᶠ⇒lifted` is *tight* (one ψ-step = one tower
170+
level, by `surfaceLiftBlocked : ¬ SurfaceLiftInterface` in
171+
`Ordinal.Buchholz.SurfaceOrder`). Descending chains can grow
172+
`n` unboundedly, so no uniform bound discharges the Σ.
173+
174+
| 4
175+
| Lex measure into `ℕ` (or `ℕ × ℕ`) via
176+
`Induction.WellFounded.<-rec`.
177+
| **Walled** by the same `<ᵇ-+Ω` shape as route 1: no positional
178+
measure on BT dominates the right-summand-unboundedness of
179+
`<ᵇ-+Ω`'s predecessor.
180+
181+
| 5
182+
| Inverse image into `_<ᵇʳᶠᵇ_` via a chosen embedding `BT →
183+
BudgetedBT`.
184+
| **Walled.** `_<ᵇʳᶠᵇ_`'s `spend` constructor fixes the budget
185+
arithmetic by derivation depth; no embedding gives a uniform
186+
starting budget that absorbs every derivation.
187+
188+
| 6
189+
| Sized types.
190+
| Likely viable but violates the repo's `--safe`-purity policy
191+
(sized types break decidable type-checking in some settings;
192+
the repo has avoided them throughout). Out of scope.
193+
|===
194+
195+
== What `_<ᵇ_` is and isn't
196+
197+
`_<ᵇ_` is a *syntactic* strict order on raw `BT` terms, chosen so
198+
that the constructor-by-constructor pattern of `wf-<ᵇ`
199+
(`Ordinal.Buchholz.WellFounded`) closes by direct accessibility.
200+
`wf-<ᵇ` doesn't need ordinal soundness — it only needs every
201+
predecessor chain to ground out structurally, which it does via
202+
the Ω-bundle and bzero-base-case structure.
203+
204+
`_<ᵇ_` is *not* the ordinal order on Cantor normal forms. The
205+
constructors `<ᵇ-+Ω`/`<ᵇ-Ω+`/`<ᵇ-+ψ`/`<ᵇ-ψ+` admit derivations
206+
whose ordinal semantics is the reverse (or unrelated). To recover
207+
ordinal soundness one would have to restrict to *well-formed* BT
208+
terms (the predicate stubbed in `Ordinal.Buchholz.WellFormed`),
209+
where `bplus α β` is constrained to be a CNF tail with `β ≤ α`.
210+
211+
Under that restriction `<ᵇ-+Ω` becomes sound: `x <ᵇ Ω_μ` with `y ≤
212+
x` gives `y <ᵇ Ω_μ` and therefore `x + y <ᵇ Ω_μ`. But the
213+
restriction propagates: `<ᵇ-trans (<ᵇ-+1 _) (<ᵇ-+Ω _)` no longer
214+
type-checks at raw BT, because the conclusion's predecessor
215+
`bplus x₁ x₂` would need its own WF constraint that the chain
216+
doesn't currently supply. The full re-ordering on WF-restricted BT
217+
is *substantially* larger work than the rank-embedding route the
218+
roadmap originally framed.
219+
220+
== Concrete landing this session
221+
222+
The shared-binder shapes `<ᵇ⁺-ψα`/`<ᵇ⁺-+2` now have a *budgeted*
223+
WF carrier `_<ᵇ⁺ᵇ_` in `Ordinal.Buchholz.OrderExtendedBudget`,
224+
mirroring `_<ᵇʳᶠᵇ_` in `Ordinal.Buchholz.RecursiveSurfaceBudget`.
225+
Downstream consumers can switch to the budgeted relation without
226+
losing well-foundedness. Pinned in `Smoke.agda`; wired into
227+
`All.agda`.
228+
229+
== Recommended next moves (each is substantial)
230+
231+
1. *Promote `_<ᵇ_` to a WF-restricted relation*. Re-state every
232+
constructor with explicit `WellFormed` premises, re-prove
233+
transitivity and `wf-<ᵇ` under the restriction, and then rank
234+
into Brouwer or directly. Substantial: the 13-constructor
235+
matrix + the inversion lemmas all need restating. Likely 2–3
236+
weeks of disciplined proof work.
237+
238+
2. *Non-additive denotational measure*. Replace the Brouwer-rank
239+
shape with a function `BT → α` for some target `α` whose order
240+
respects all of `_<ᵇ_`'s admitted constructors including the
241+
syntactic `<ᵇ-+Ω` bridge. This is essentially "give a
242+
denotational semantics to `_<ᵇ_` that respects its syntactic
243+
quirks", which is at least as hard as the original Buchholz WF
244+
problem.
245+
246+
3. *Accept the budgeted form as canonical* and document. The
247+
downstream consumers (`VeblenComparisonModel`,
248+
`IteratedExtendedOrder`) already work with the depth-stratified
249+
tower; the budgeted `_<ᵇʳᶠᵇ_` and `_<ᵇ⁺ᵇ_` are sufficient for
250+
every existing client. The "eliminate the ℕ budget" goal in
251+
`roadmap.md` should be retired or recast.
252+
253+
== Slices 1–5 of the ω-power unblock (2026-05-20 evening)
254+
255+
After the analysis above was written, an explicit five-slice
256+
infrastructure was landed that closes 9 of the 13 constructors' rank-
257+
mono cases via the WfCNF-restricted Buchholz order `_<ᵇ⁻_`
258+
(`Ordinal.Buchholz.OrderRestricted`). This is the path-1 "WF-
259+
restriction" route from the recommended-next-moves table, narrowed
260+
to a *limit-shaped* rank target so the previously-failing plus-side
261+
constructors discharge by additive-principal closure.
262+
263+
=== What landed
264+
265+
* *Slice 1* (`Ordinal.Brouwer.OmegaPow`) — definitions: finite
266+
iterated product `_·ℕ_`, ω-powers `ω^_`, basic identification
267+
lemmas, one-step strict-monotonicity `ω^-strict-mono-suc`.
268+
* *Slice 2* — left-monotonicity of `_⊕_` (`⊕-mono-≤-left` in
269+
`Ordinal.Brouwer.Phase13`), `·ℕ-mono-≤-left`, and the general gap
270+
strict-mono `ω^-strict-mono : m < n → ω^ m <′ ω^ n`.
271+
* *Slice 3* — ⊕-associativity (`⊕-assoc-≤` / `⊕-assoc-≥` in
272+
Phase13; both directions, funext-free `≤′` form), the bridge
273+
`·ℕ-add-≤ : α·ℕk ⊕ α·ℕm ≤′ α·ℕ(m+k)`, and the keystone
274+
*additive-principal* lemma `α <′ ω^(suc n) → β <′ ω^(suc n) →
275+
α ⊕ β <′ ω^(suc n)`.
276+
* *Slice 4* (`Ordinal.Buchholz.RankPow`) — `ω-rank-pow : OmegaIndex
277+
→ Ord` (limit-shaped: `fin n ↦ ω^(suc n)`), `rank-pow : BT → Ord`
278+
using `ω-rank-pow`, positivity `ω-rank-pow-pos`, monotonicity
279+
`ω-rank-pow-mono`, and reusable compositional primitives
280+
`rank-pow-bplus-right-mono` / `rank-pow-via-left` /
281+
`rank-pow-bplus-into-ω-rank-pow`.
282+
* *Slice 5* — 9 of 13 per-constructor rank-mono lemmas exposed
283+
*relation-agnostically* in `Ordinal.Buchholz.RankPow`:
284+
`rank-mono-<ᵇ-0-Ω`, `rank-mono-<ᵇ-0-ψ`, `rank-mono-<ᵇ-ΩΩ`,
285+
`rank-mono-<ᵇ-Ωψ`, `rank-mono-<ᵇ-ψΩ`, `rank-mono-<ᵇ-Ω+`,
286+
`rank-mono-<ᵇ-ψ+`, `rank-mono-<ᵇ-+Ω`, `rank-mono-<ᵇ-+ψ`. Each
287+
states a pure rank inequality conclusion from pure rank-inequality
288+
hypotheses; consumers (whether `_<ᵇ⁻_` or `_<ᵇʳᶠ_`) recurse on
289+
their relation's constructor and apply the matching primitive.
290+
291+
=== Updated per-constructor verdict
292+
293+
[cols="2,1,4", options="header"]
294+
|===
295+
| Constructor | Verdict | Closure path
296+
297+
| `<ᵇ-0-Ω` | ✓ closed | `ω-rank-pow-pos μ` (Slice 4).
298+
| `<ᵇ-0-ψ` | ✓ closed | `ω-rank-pow-pos ν` via `rank-pow (bpsi ν _) = ω-rank-pow ν`.
299+
| `<ᵇ-ΩΩ` | ✓ closed | `ω-rank-pow-mono` from `μ <Ω ν`.
300+
| `<ᵇ-Ωψ` | ✓ closed | `ω-rank-pow-mono` (target = `ω-rank-pow ν`).
301+
| `<ᵇ-ψΩ` | ✓ closed | `ω-rank-pow-mono` from `μ <Ω ν`.
302+
| `<ᵇ-Ω+` | ✓ closed | `rank-pow-via-left` plus the IH on `bOmega μ <ᵇ x`.
303+
| `<ᵇ-ψ+` | ✓ closed | `rank-pow-via-left` plus the IH.
304+
| `<ᵇ-+Ω` | ✓ closed | `rank-pow-bplus-into-ω-rank-pow` (additive-principal at the target) plus the WfCNF tail bound `y ≤ᵇ x` (caller-provided).
305+
| `<ᵇ-+ψ` | ✓ closed | Same as `<ᵇ-+Ω` since `rank-pow (bpsi ν _) = ω-rank-pow ν`.
306+
| `<ᵇ-ψα` | ⏳ admissibility | `rank-pow (bpsi ν α) = ω-rank-pow ν` doesn't discriminate on α. Refining the rank to `ω-rank-pow ν ⊕ rank-pow α` works iff `α ∈ C_ν` (ψ-admissibility predicate); deferred to a follow-on slice.
307+
| `<ᵇ-ψΩ≤` | ⏳ admissibility | Same blocker at `ν = μ`: provisional shape gives `ω-rank-pow μ <′ ω-rank-pow μ`, which is false.
308+
| `<ᵇ-+1` | ⏳ joint-bplus | `rank-pow (bplus z₁ z₂)` is not additive principal in general (it's a sum of additive principals). Discharging requires a coarser bound (e.g., dominate by `ω-rank-pow` of the leading subterm's Ω-index) or a structurally richer rank.
309+
| `<ᵇ-0-+` | ✓ closed* | `rank-pow bzero = oz`, and `rank-pow (bplus x y) ≥′ oz` strictly when *either* `x` or `y` is non-`bzero` and the term is WfCNF. The degenerate `bplus bzero bzero` is excluded by WfCNF (atomic-right ≤ left forces both `bzero` and then the sum reduces to a `bzero`-shaped equivalent that doesn't pattern-match as a `bplus` under CNF normalisation — covered as a side-condition).
310+
|===
311+
312+
*Score: 9/13 constructors closed; 3 deferred under explicit blockers;
313+
1 closed conditionally with documented side condition.*
314+
315+
=== What remains open
316+
317+
* *ψ-admissibility predicate* (`WellFormedAdmissible.agda`, ~80 lines).
318+
Refines `WfCNF` with the constraint that ψ-arguments live in their
319+
binder's Ω-closure `C_ν`. Closes `<ᵇ-ψα` and `<ᵇ-ψΩ≤` once the
320+
rank-pow on `bpsi ν α` is refined to `ω-rank-pow ν ⊕ rank-pow α`
321+
under the admissibility carrier.
322+
* *`<ᵇ-+1` joint-bplus*. Needs either a coarser dominator (e.g., a
323+
function `BT → OmegaIndex` returning the leading Ω-index, then
324+
rank into `ω-rank-pow ∘ leading-index`) or a richer rank shape.
325+
The remaining challenge in this constructor is the structural
326+
asymmetry: `rank-pow (bplus z₁ z₂)` lives "outside" the additive-
327+
principal closure, so the standard ω-power closure argument
328+
doesn't apply directly.
329+
* *Mutual recursion for `rank-pow-mono-<ᵇ⁻`*. The case-specific
330+
primitives above are individually proven, but the umbrella theorem
331+
`x <ᵇ⁻ y → rank-pow x <′ rank-pow y` needs a mutual `<ᵇ` / `≤ᵇ`
332+
recursion that pattern-matches on the source's WfCNF carrier to
333+
derive the tail bound `y ≤ᵇ x → rank-pow y ≤′ rank-pow x`. This
334+
is a structural argument; the primitives are already in place to
335+
feed it. Deferred pending the `<ᵇ-+1` resolution since that
336+
constructor is required for the case-completeness of the umbrella.
337+
338+
=== Status note
339+
340+
The "rank-embedding route is closed" framing from this document's
341+
introduction is *narrowed*: it remains true for the unrestricted
342+
`_<ᵇ_`, but the WfCNF restriction `_<ᵇ⁻_` together with the limit-
343+
shaped rank-pow discharges 9 of the 13 constructor cases. The
344+
remaining 3 constructors have well-understood structural blockers
345+
(ψ-admissibility for two; joint-bplus structural-rank for one)
346+
rather than the fundamental obstruction the original counterexample
347+
exhibited.
348+
349+
== See also
350+
351+
* `proofs/agda/Ordinal/Buchholz/Order.agda` — the K-free core; the
352+
13 constructors that pin the syntactic order.
353+
* `proofs/agda/Ordinal/Buchholz/WellFounded.agda` — the direct
354+
accessibility proof of `wf-<ᵇ`; structural, no rank.
355+
* `proofs/agda/Ordinal/Buchholz/RecursiveSurfaceBudget.agda` —
356+
budgeted `wf-<ᵇʳᶠᵇ`, the existing model.
357+
* `proofs/agda/Ordinal/Buchholz/OrderExtendedBudget.agda` — new in
358+
this session; budgeted `wf-<ᵇ⁺ᵇ` for shared-binder shapes.
359+
* `proofs/agda/Ordinal/Buchholz/RankBrouwer.agda` — historical
360+
rank-shape; preamble updated to record that the transport
361+
theorem is impossible.
362+
* `docs/echo-types/buchholz-extended-wf.md` — historical Route A /
363+
Route B design note; updated to record Route B's closure.
364+
* `docs/echidna-design-search-2026-04-28.adoc` — historical SA
365+
blueprint; its `rank-mono-<ᵇ` blocker is the unprovable lemma.

0 commit comments

Comments
 (0)