Skip to content

Commit 1f64d9f

Browse files
committed
ordinal(buchholz): refine Slice 2 obstruction notes (sanity-check + TODO marker)
Two clarifications on the Slice 2-omega and Slice 2-bplus follow-on sketches in `RankPow.agda`, in response to review of the original commit: * Slice 2-omega cross-check (iii) added. The candidate `olim (λ n → (ω-rank-pow ω) ·ℕ n)` has branches whose leading `oz ⊕` is NOT definitionally `ω-rank-pow ω` under Brouwer's right-recursing `_⊕_`, so the strict-dominance proof needs the propositional `oz ⊕ X ≤′ X` (or path-algebra equivalent) at the right step. Verify with a thin spike before committing the body — same hazard class as the original "same ordinal under different ℕ-indexing" issue. * `TODO(slice-2-bplus)` marker added at the natural landing-site for the `rank-pow-mono-≤ᵇ` companion lemma, with explicit note that option (b) (head-Ω inversion that does not depend on rank-mono) keeps `rank-pow-dominated-by-head-Ω` independent of the companion so signature changes don't silently propagate. No code change; comment refinements only. https://claude.ai/code/session_013nLEeKZXpvHnrDZMgRm19S
1 parent aaa197d commit 1f64d9f

1 file changed

Lines changed: 30 additions & 14 deletions

File tree

proofs/agda/Ordinal/Buchholz/RankPow.agda

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -537,20 +537,36 @@ rank-pow-bpsi-via-head-Ω _ _ = refl
537537
-- (ii) the consumer (Slice 3) does not need the additive-principal
538538
-- *of `ω-rank-pow-succ ω` itself* — it needs additive-principal of
539539
-- `ω-rank-pow (head-Ω target)`, which already lands via the existing
540-
-- `additive-principal-ω-rank-pow {ω}` (lines 238–255).
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.
541552
--
542-
-- Slice 2-bplus. Once the ω branch closes, prove the full lemma
553+
-- TODO(slice-2-bplus). Once the ω branch closes, prove the full
554+
-- lemma
543555
-- rank-pow-dominated-by-head-Ω : (t : BT) → NonBzero t → WfCNF t
544556
-- → rank-pow t <′ ω-rank-pow-succ (head-Ω t)
545-
-- by structural recursion on the WfCNF carrier. The bplus case needs
546-
-- a `rank-pow-mono-≤ᵇ : x ≤ᵇ y → rank-pow x ≤′ rank-pow y` companion
547-
-- for the original `<ᵇ` (the WfCNF tail bound is `_≤ᵇ_`, not `_≤ᵇ⁰_`).
548-
-- The existing `rank-pow-mono-≤ᵇ⁰` in `RankMonoUmbrella` covers the
549-
-- `<ᵇ⁰` carrier only. A direct `_≤ᵇ_`-mono primitive would need
550-
-- either (a) bridging `_≤ᵇ_` to `_≤ᵇ⁰_` (which is exactly the open
551-
-- Slice 4 problem — full rank-mono umbrella over the original `_<ᵇ_`),
552-
-- or (b) a head-Ω inversion lemma `bOmega ν <ᵇ x → ν <Ω head-Ω x`
553-
-- (and ψ-analogue) that does not transitively depend on rank-mono.
554-
-- Option (b) is the cleaner path; it parallels the existing
555-
-- per-constructor rank-mono primitives without going through the
556-
-- umbrella.
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

Comments
 (0)