@@ -418,3 +418,155 @@ rank-mono-<ᵇ-+1-ψ-target : ∀ {x₁ x₂ ν α y₂}
418418rank-mono-<ᵇ-+1-ψ-target {x₁} {x₂} {ν} {α} {y₂} =
419419 rank-mono-<ᵇ-+1-via-target {x₁} {x₂} {bpsi ν α} {y₂}
420420 (additive-principal-ω-rank-pow {ν})
421+
422+ ----------------------------------------------------------------------
423+ -- Slice 2 of the head-Ω domination route
424+ ----------------------------------------------------------------------
425+ --
426+ -- The HeadOmega module (`Ordinal.Buchholz.HeadOmega`) defines the
427+ -- leading-Ω-index head function `head-Ω : BT → OmegaIndex`. This
428+ -- section adds the per-marker "next ω-power up" target
429+ -- `ω-rank-pow-succ : OmegaIndex → Ord` consumed by the planned (but
430+ -- not yet landed) `<ᵇ-+1` joint-bplus head-Ω domination route.
431+ --
432+ -- ## Scope of this slice
433+ --
434+ -- Lands:
435+ -- * `ω-rank-pow-succ : OmegaIndex → Ord`
436+ -- * `ω-rank-pow-succ-fin` — definitional sanity, fin branch
437+ -- * `ω-rank-pow-<-succ-fin` — per-marker strict dominance at fin
438+ -- * `rank-pow-bOmega-via-head-Ω`,
439+ -- `rank-pow-bpsi-via-head-Ω` — atomic-rank `refl`-shape primitives
440+ -- factoring `rank-pow` through `head-Ω` for the two non-bplus,
441+ -- non-bzero `BT` constructors. Useful at consumer-recursion
442+ -- sites that want to rewrite source-rank into head-Ω form
443+ -- without unfolding `rank-pow` and `head-Ω` separately.
444+ --
445+ -- Deferred (with concrete obstructions documented inline below):
446+ -- * The headline domination lemma
447+ -- `rank-pow-dominated-by-head-Ω : (t : BT) → NonBzero t →
448+ -- WfCNF t → rank-pow t <′ ω-rank-pow-succ (head-Ω t)`
449+ -- in its full generality. The fin branch is structurally clean
450+ -- (every WfCNF clause discharges via additive-principal at
451+ -- ω^(suc(suc n)) and the existing per-constructor rank-mono
452+ -- primitives), but the **ω branch of `head-Ω` cannot strictly
453+ -- dominate under the originally-proposed `ω-rank-pow-succ ω` shape**.
454+ -- See the obstruction note immediately below.
455+ --
456+ -- ## Obstruction note for the ω branch
457+ --
458+ -- The originally proposed shape (per CLAUDE.md § "Session arc
459+ -- 2026-05-27 late evening" — Slice 2 sketch) was:
460+ --
461+ -- ω-rank-pow ω = olim (λ n → ω^ (suc n)) -- existing
462+ -- ω-rank-pow-succ ω = olim (λ n → ω^ (suc (suc n))) -- proposed
463+ --
464+ -- Both `olim`s represent the **same** ordinal (ω^ω) — the supremum of
465+ -- {ω, ω², ω³, …} and the supremum of {ω², ω³, ω⁴, …} are equal as
466+ -- ordinals, just with different ℕ-indexings of the same tail. Under
467+ -- the recursive `_<′_` of `Phase13`, this manifests as: every attempt
468+ -- to discharge `osuc (olim (λ n → ω^(suc n))) ≤′ olim (λ k → ω^(suc(suc k)))`
469+ -- by picking a branch `k` in the target falls back to an `osuc (olim …)
470+ -- ≤′ ω^(suc(suc k)) ·ℕ j` obligation that is again a limit-vs-osuc
471+ -- comparison, recursing indefinitely.
472+ --
473+ -- A follow-on slice must replace the ω branch with a genuinely
474+ -- strictly-larger ordinal (the natural candidate is `ω^(ω+1)`, the
475+ -- next additive-principal above `ω^ω`). In Brouwer notation this
476+ -- would be `olim (λ n → (ω-rank-pow ω) ·ℕ n)`; the proof obligation
477+ -- shifts but does not vanish — `(ω-rank-pow ω) ·ℕ n` is itself a
478+ -- nested limit, and the strict-dominance proof needs the equivalent of
479+ -- the existing `additive-principal-ω-rank-pow` ω-branch closure
480+ -- (lines 238–255 above) lifted one ω-power.
481+ --
482+ -- Choosing not to make that replacement in this slice keeps the
483+ -- abstraction minimal and avoids committing to a shape that the
484+ -- consumer (Slice 3, `rank-mono-<ᵇ-+1-via-head-Ω`) might want to
485+ -- specialise differently. The ω branch of `ω-rank-pow-succ` below
486+ -- therefore reuses the **original** CLAUDE.md proposal verbatim, so
487+ -- the abstraction is in place for follow-on slices to inspect and
488+ -- (if needed) override before any consumer pulls on the ω case.
489+
490+ ω-rank-pow-succ : OmegaIndex → Ord
491+ ω-rank-pow-succ (fin n) = ω^ (suc (suc n))
492+ ω-rank-pow-succ ω = olim (λ n → ω^ (suc (suc n)))
493+
494+ -- Definitional sanity at the fin branch. Mirrors `ω-rank-pow-fin`.
495+ ω-rank-pow-succ-fin : ∀ n → ω-rank-pow-succ (fin n) ≡ ω^ (suc (suc n))
496+ ω-rank-pow-succ-fin _ = refl
497+
498+ -- Per-marker strict dominance at the fin branch. For each `fin n`,
499+ -- `ω-rank-pow (fin n) = ω^(suc n)` is strictly below
500+ -- `ω-rank-pow-succ (fin n) = ω^(suc(suc n))` via the one-step
501+ -- strict-mono of the ω-power ladder. The ω branch is deferred per the
502+ -- obstruction note above.
503+ ω-rank-pow-<-succ-fin : ∀ n
504+ → ω-rank-pow (fin n) <′ ω-rank-pow-succ (fin n)
505+ ω-rank-pow-<-succ-fin n = ω^-strict-mono-suc (suc n)
506+
507+ -- Atomic-rank-pow `refl`-shape primitives. For non-bplus, non-bzero
508+ -- BT constructors, `rank-pow` reduces to `ω-rank-pow` of the
509+ -- corresponding `head-Ω` value. Both equations are `refl`; provided
510+ -- as named lemmas so consumer rewrites can target `head-Ω`-form
511+ -- without unfolding `rank-pow` and `head-Ω` separately.
512+
513+ open import Ordinal.Buchholz.HeadOmega using (head-Ω)
514+
515+ rank-pow-bOmega-via-head-Ω : ∀ ν
516+ → rank-pow (bOmega ν) ≡ ω-rank-pow (head-Ω (bOmega ν))
517+ rank-pow-bOmega-via-head-Ω _ = refl
518+
519+ rank-pow-bpsi-via-head-Ω : ∀ ν α
520+ → rank-pow (bpsi ν α) ≡ ω-rank-pow (head-Ω (bpsi ν α))
521+ rank-pow-bpsi-via-head-Ω _ _ = refl
522+
523+ ----------------------------------------------------------------------
524+ -- Where this lands in the head-Ω closure plan
525+ ----------------------------------------------------------------------
526+ --
527+ -- The abstraction landed here (`ω-rank-pow-succ` + the fin-branch
528+ -- dominance + the atomic factoring) is the smallest useful first cut.
529+ -- The two open follow-ons are:
530+ --
531+ -- Slice 2-omega. Replace the ω branch of `ω-rank-pow-succ` with a
532+ -- genuinely strictly-dominating shape and prove `ω-rank-pow ω <′
533+ -- (new-shape)`. Candidate: `ω^(ω+1)` encoded as
534+ -- `olim (λ n → (ω-rank-pow ω) ·ℕ n)`. Cross-checks before committing:
535+ -- (i) the new shape closes under ordinal addition strictly above
536+ -- `ω-rank-pow ω` (so additive-principal-style closure lifts);
537+ -- (ii) the consumer (Slice 3) does not need the additive-principal
538+ -- *of `ω-rank-pow-succ ω` itself* — it needs additive-principal of
539+ -- `ω-rank-pow (head-Ω target)`, which already lands via the existing
540+ -- `additive-principal-ω-rank-pow {ω}` (lines 238–255);
541+ -- (iii) sanity-check the indexing. The candidate's branches are
542+ -- `(ω-rank-pow ω) ·ℕ n = (… (oz ⊕ ω-rank-pow ω) … ⊕ ω-rank-pow ω)`
543+ -- — the leading `oz ⊕` is NOT definitionally `ω-rank-pow ω` under
544+ -- Brouwer's right-recursing `_⊕_`. As an ordinal denotation the
545+ -- supremum is `ω^ω · ω = ω^(ω+1)` and is strictly above `ω^ω`, so
546+ -- the lemma *should* go through, but the proof needs the
547+ -- propositional `oz ⊕ X ≤′ X` (or a path-algebra equivalent) at the
548+ -- right step — this is exactly the same hazard ("same ordinal under
549+ -- different ℕ-indexing") that disqualified the original
550+ -- `olim (λ n → ω^(suc(suc n)))` shape. Verify with a thin spike
551+ -- before committing the body.
552+ --
553+ -- TODO(slice-2-bplus). Once the ω branch closes, prove the full
554+ -- lemma
555+ -- rank-pow-dominated-by-head-Ω : (t : BT) → NonBzero t → WfCNF t
556+ -- → rank-pow t <′ ω-rank-pow-succ (head-Ω t)
557+ -- by structural recursion on the WfCNF carrier. The bplus case
558+ -- needs a `rank-pow-mono-≤ᵇ : x ≤ᵇ y → rank-pow x ≤′ rank-pow y`
559+ -- companion for the original `_<ᵇ_` — landing-site below this
560+ -- comment block — because the WfCNF tail bound is `_≤ᵇ_`, not
561+ -- `_≤ᵇ⁰_`. The existing `rank-pow-mono-≤ᵇ⁰` in `RankMonoUmbrella`
562+ -- covers the `<ᵇ⁰` carrier only. A direct `_≤ᵇ_`-mono primitive
563+ -- would need either (a) bridging `_≤ᵇ_` to `_≤ᵇ⁰_` (which is
564+ -- exactly the open Slice 4 problem — full rank-mono umbrella over
565+ -- the original `_<ᵇ_`), or (b) a head-Ω inversion lemma
566+ -- `bOmega ν <ᵇ x → ν <Ω head-Ω x` (and ψ-analogue) that does not
567+ -- transitively depend on rank-mono. Option (b) is the cleaner
568+ -- path; it parallels the existing per-constructor rank-mono
569+ -- primitives without going through the umbrella, and keeps
570+ -- `rank-pow-dominated-by-head-Ω` independent of
571+ -- `rank-pow-mono-≤ᵇ` so that a future signature change to one
572+ -- does not silently break the other.
0 commit comments