Skip to content

Commit 558b8fa

Browse files
claudehyperpolymath
authored andcommitted
proof(ordinal): head-Ω-strict-or-eq — the joint-bplus umbrella case-split
Adds the leading-Ω classifier that turns a `_<ᵇ_` step into the actionable disjunction a `<ᵇ-+1` rank-mono umbrella dispatches on: head-Ω-strict-or-eq : x <ᵇ y → (head-Ω x <Ω head-Ω y) ⊎ (head-Ω x ≡ head-Ω y) It is `≤Ω-split` (existing, OmegaMarkers) composed with `head-Ω-mono` (landed last commit). The two branches are exactly the joint-bplus case-split: * LEFT (strict): feeds `RankPowSlice3Headline.rank-mono-<ᵇ-+1-via- head-Ω` directly — the CNF-dominance chain `rank-pow (bplus x₁ x₂) <′ ω-rank-pow-succ (head-Ω x₁) ≤′ ω-rank-pow (head-Ω y₁) ≤′ rank-pow (bplus y₁ y₂)` already closes this half. * RIGHT (equal-Ω boundary, e.g. `bpsi ν α <ᵇ bOmega ν` via `<ᵇ-ψΩ≤`): rank-pow collapses the ψ/Ω distinction, so the discharge needs the lex/admissibility second component — the genuine residual that the rank-lex / rank-adm route owns. This pins down Gate 1's frontier to exactly the equal-Ω boundary: the strict half is now mechanically dischargeable via this classifier + the existing head-Ω headline. - `head-Ω-strict-or-eq` pinned in `Ordinal/Buchholz/Smoke.agda`. - `Smoke.agda` + `All.agda` exit 0 under `--safe --without-K`; zero postulates, no escape pragmas, no funext. https://claude.ai/code/session_017t53M7W7ubmXpwymveLcCE
1 parent fd2a2f7 commit 558b8fa

2 files changed

Lines changed: 28 additions & 0 deletions

File tree

proofs/agda/Ordinal/Buchholz/HeadOmegaInversion.agda

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,11 @@ open import Ordinal.OmegaMarkers using
7070
; fin≤fin
7171
; fin≤ω
7272
; <Ω→≤Ω
73+
; ≤Ω-split
7374
)
7475
open import Data.Nat using (z≤n)
76+
open import Data.Sum.Base using (_⊎_)
77+
open import Relation.Binary.PropositionalEquality using (_≡_)
7578
open import Ordinal.Buchholz.Syntax using
7679
( BT
7780
; bzero
@@ -177,3 +180,27 @@ head-Ω-mono (<ᵇ-ψ+ p) = head-Ω-mono p
177180
head-Ω-mono (<ᵇ-+Ω p) = head-Ω-mono p
178181
head-Ω-mono (<ᵇ-+ψ p) = head-Ω-mono p
179182
head-Ω-mono (<ᵇ-+1 p) = head-Ω-mono p
183+
184+
----------------------------------------------------------------------
185+
-- Leading-Ω classification along a `_<ᵇ_` step
186+
----------------------------------------------------------------------
187+
188+
-- Combining `head-Ω-mono` with `≤Ω-split`: every `x <ᵇ y` either
189+
-- strictly raises the leading Ω-marker, or leaves it equal.
190+
--
191+
-- * LEFT (`head-Ω x <Ω head-Ω y`): the strict-head case the
192+
-- joint-bplus headline `RankPowSlice3Headline.rank-mono-<ᵇ-+1-
193+
-- via-head-Ω` consumes directly — the CNF-dominance chain has
194+
-- the room it needs.
195+
-- * RIGHT (`head-Ω x ≡ head-Ω y`): the equal-marker boundary
196+
-- (e.g. `bpsi ν α <ᵇ bOmega ν` via `<ᵇ-ψΩ≤`), where rank-pow
197+
-- collapses the ψ/Ω distinction and the discharge must come
198+
-- from the lex / admissibility second component instead.
199+
--
200+
-- This is the exact case-split a `<ᵇ-+1` rank-mono umbrella performs
201+
-- on its source derivation: feed LEFT to the head-Ω headline, route
202+
-- RIGHT to the boundary discharge.
203+
head-Ω-strict-or-eq : {x y}
204+
x <ᵇ y
205+
(head-Ω x <Ω head-Ω y) ⊎ (head-Ω x ≡ head-Ω y)
206+
head-Ω-strict-or-eq p = ≤Ω-split (head-Ω-mono p)

proofs/agda/Ordinal/Buchholz/Smoke.agda

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -439,6 +439,7 @@ open import Ordinal.Buchholz.HeadOmegaInversion using
439439
( head-Ω-inv-bOmega
440440
; head-Ω-inv-bpsi
441441
; head-Ω-mono
442+
; head-Ω-strict-or-eq
442443
)
443444

444445
-- Lane 3 head-Ω Slice 2-bplus (own block per CLAUDE.md Working

0 commit comments

Comments
 (0)