Commit 8da0ea8
proof(Slice 3+4 Route A): (b) lex-first primitive + bpsi sub-case discharge
Extends `Ordinal.Buchholz.RankLexJointBplus` with three primitives
advancing the rank-lex-jb pivot's (a)+(b)+(c) assembly plan beyond
the (a) primitive that PR #147 shipped. No structural commitments,
no funext, zero postulates, `--safe --without-K` throughout.
## Three primitives added
1. `rank-lex-jb-strict-first` (leg (b), trivial at primitive level)
— given `rank-pow (bplus x₁ x₂) <′ rank-pow (bplus y₁ y₂)`,
fires `<lex-first`. One-line proof. The load-bearing content
is consumer-side derivation of the hypothesis, which remains
the multi-PR ordinal-arithmetic challenge (both pre-identified
unblock routes — additive-principal closure on a generic sum,
strict-left-mono of `_⊕_` — CHECKED-REFUTED in PR #146).
Shipping the primitive separates trivial lex-rank wiring from
the structural ordinal-arithmetic blocker.
2. `leftmost-α-strict-from-bpsi-source` (consumer helper) — given
`α <ᵇ⁰ β` on the ψ-arguments, derives `leftmost-α (bplus
(bpsi ν α) x₂) <′ leftmost-α (bplus (bpsi ν β) y₂)`. Composes
`leftmost-α-bplus` + `leftmost-α-bpsi` (both definitional) with
`RankMonoUmbrella.rank-pow-mono-<ᵇ⁰`. Parameterised in
`_<ᵇ⁰_` (10-constructor umbrella) — the bpsi sub-case requires
no constructor `_<ᵇ⁰_` doesn't already have.
3. `rank-lex-jb-bpsi-at-equality` (named theorem) — composition
of `rank-lex-jb-strict-second-at-equal-first` (PR #147, leg (a))
with `leftmost-α-strict-from-bpsi-source`. Given the
FIRST-COMPONENT EQUALITY (consumer-derived, gating obligation)
plus the source-side `α <ᵇ⁰ β`, fires `<lex-second` at equal
first components with the leftmost-α strict witness. Closes
the bpsi-source-at-equality sub-case at the rank-lex-jb level,
parallel to `RankLexSlice3.rank-lex-bpsi-strict-at-equality`'s
role for `rank-lex`.
## Where this sits in the assembly
Per the PR #147 module preamble's `(a)+(b)+(c)` plan:
- (a) equal-first lex-second leg — CLOSED in PR #147.
- (b) strict-first lex-first leg — primitive CLOSED here;
consumer-side derivation of `rank-pow (bplus _ _) <′ rank-pow
(bplus _ _)` remains the multi-PR challenge.
- (c) first-component trichotomy — STILL OPEN (Ord-valued
decidability bridge in `Phase13` not yet attempted; `with`-based
case-analysis over `_<′_` / `_≡_` is the sketched alternative).
- Assembly into full `<ᵇ-+1`-at-equal-head headline = multi-PR
follow-on, still gated on (c).
This slice records that every other discharge step composes
cleanly (the bpsi sub-case now ships as a named theorem under
the first-eq hypothesis); resolving the gating obligations
unblocks the headline mechanically.
## Honest scope notes (preserved in module)
- The trivial `<lex-first` shape of primitive (1) does not mean
leg (b) is "done" — the consumer plumbing is the hard part.
- Primitive (2) is `_<ᵇ⁰_`-parameterised, not `_<ᵇ_`-parameterised.
Lifting to full `_<ᵇ_` requires the joint-bplus closure that
the rank-lex-jb pivot was designed to attack.
- Primitive (3) requires the first-eq hypothesis as input;
consumer-side derivation is documented as still-gating per
the file preamble.
## Local verification
- `agda -i proofs/agda proofs/agda/Ordinal/Buchholz/RankLexJointBplus.agda` — clean.
- `agda -i proofs/agda proofs/agda/Ordinal/Buchholz/Smoke.agda` — clean, exit 0.
- `agda -i proofs/agda proofs/agda/Smoke.agda` — clean, exit 0.
- `agda -i proofs/agda proofs/agda/All.agda` — clean, exit 0.
- `bash tools/check-guardrails.sh proofs/agda` — 160 modules pass.
- `sh scripts/kernel-guard.sh` — PASS.
All three primitives pinned in `Ordinal/Buchholz/Smoke.agda`
under the existing `RankLexJointBplus` `using` block.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 1605fb2 commit 8da0ea8
2 files changed
Lines changed: 102 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
130 | 130 | | |
131 | 131 | | |
132 | 132 | | |
| 133 | + | |
133 | 134 | | |
134 | 135 | | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
135 | 140 | | |
136 | 141 | | |
137 | 142 | | |
| |||
273 | 278 | | |
274 | 279 | | |
275 | 280 | | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
536 | 536 | | |
537 | 537 | | |
538 | 538 | | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
539 | 542 | | |
540 | 543 | | |
541 | 544 | | |
| |||
0 commit comments