Skip to content

Commit d8ca284

Browse files
committed
proof(ordinal): doubled-ladder cross-index gap double-cross-gap (Slice 3a)
The strict cross-index gap at the doubled scale, total over the OmegaIndex marker (fin AND the limit ω): ν <Ω μ → ω-rank-pow-succ (double ν) <′ ω-rank-pow (double μ) = rank2 (bOmega ν) <′ ω-rank-pow (double μ) i.e. Ω_ν's rank-block (2·idx ν + 2) lands strictly below μ's ψ-block (2·idx μ + 1) whenever ν <Ω μ. This is exactly the fact the single ω-power ladder could NOT provide — there `ω-rank-pow-succ μ ≤′ ω-rank-pow ν` was only NON-strict at the boundary ν = suc μ; the index-doubling buys the strict inequality. * fin marker: reuses the Slice-1 fact `Ω-block-below-next-ψ`, definitionally aligned via `double (fin n) = fin (n+n)` (`ω-rank-pow-succ (fin (n+n)) = ω^(2n+2)` etc.). * ω marker: one-step strict-mono `ω^-strict-mono-suc` into the limit's (2a+3)-th approximant via `f-in-lim′`. This is the bOmega-case arithmetic for the `WfAdm → rank2` scale-transfer bridge (option (ii)), and directly the arithmetic the cross-index `<ᵇ-Ωψ` constructor's `rank2`-mono will consume (with ⊕-left-weakening to absorb the target's ψ-argument). Remaining for the full bridge: the `WfAdm`-structural induction assembling bzero (positivity) / bOmega (this lemma) / bpsi (`double`-mono + IH) / bplus (additive-principal both directions). - `double-cross-gap` 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 30dc931 commit d8ca284

2 files changed

Lines changed: 40 additions & 2 deletions

File tree

proofs/agda/Ordinal/Buchholz/RankDoubledLadder.agda

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,13 @@ open import Data.Nat using (ℕ; suc; _+_; _<_; _≤_; s≤s)
7878
open import Data.Nat.Properties using (+-suc; +-mono-≤)
7979
open import Relation.Binary.PropositionalEquality using (_≡_; refl; subst; cong)
8080

81-
open import Ordinal.Brouwer using (Ord; osuc; oz)
81+
open import Ordinal.Brouwer using (Ord; osuc; oz; olim)
8282
open import Ordinal.Brouwer.Phase13 using
8383
( _≤′_
8484
; _<′_
8585
; ≤′-trans
8686
; ≤′-self-osuc
87+
; f-in-lim′
8788
)
8889
open import Ordinal.Brouwer.Arithmetic using (_⊕_)
8990
open import Ordinal.Brouwer.OmegaPow using
@@ -92,7 +93,7 @@ open import Ordinal.Brouwer.OmegaPow using
9293
; ω^-strict-mono-suc
9394
; additive-principal
9495
)
95-
open import Ordinal.OmegaMarkers using (OmegaIndex; fin; ω)
96+
open import Ordinal.OmegaMarkers using (OmegaIndex; fin; ω; _<Ω_; fin<fin; fin<ω)
9697
open import Ordinal.Buchholz.Syntax using (BT; bzero; bOmega; bpsi; bplus)
9798
open import Ordinal.Buchholz.RankPow using (ω-rank-pow; ω-rank-pow-succ)
9899
open import Ordinal.Buchholz.RankPowDomination using (ω-rank-pow-⊕-below-succ)
@@ -234,3 +235,39 @@ rank2-bpsi-below-bOmega : ∀ {ν α}
234235
rank2 (bpsi ν α) <′ rank2 (bOmega ν)
235236
rank2-bpsi-below-bOmega {ν} {α} adm =
236237
ω-rank-pow-⊕-below-succ {double ν} {rank2 α} adm
238+
239+
----------------------------------------------------------------------
240+
-- Cross-index gap at the doubled scale (the `<ᵇ-Ωψ` arithmetic)
241+
----------------------------------------------------------------------
242+
243+
-- The doubled ladder's STRICT cross-index gap, lifted to the
244+
-- `double`-of-OmegaIndex form and total over the marker (fin AND ω):
245+
--
246+
-- ν <Ω μ → rank2 (bOmega ν) <′ ω-rank-pow (double μ)
247+
-- = ω-rank-pow-succ (double ν) <′ ω-rank-pow (double μ)
248+
--
249+
-- i.e. Ω_ν's rank-block (2·idx ν + 2) lands strictly below μ's
250+
-- ψ-block (2·idx μ + 1) whenever ν <Ω μ. This is the fact that the
251+
-- single ω-power ladder could NOT provide (there, `ω-rank-pow-succ
252+
-- μ ≤′ ω-rank-pow ν` was only NON-strict at the boundary
253+
-- ν = suc μ); the doubling buys the strict inequality, here for
254+
-- both the fin markers (via the Slice-1 fact `Ω-block-below-next-ψ`,
255+
-- definitionally aligned through `double (fin n) = fin (n+n)`) and
256+
-- the limit marker `ω` (via one-step strict-mono into the limit's
257+
-- (2a+3)-th approximant).
258+
--
259+
-- This is the arithmetic the cross-index `<ᵇ-Ωψ` constructor's
260+
-- `rank2`-mono will consume (with `⊕`-left-weakening to absorb the
261+
-- target's ψ-argument), and the bOmega case of the WfAdm→rank2
262+
-- scale-transfer bridge.
263+
double-cross-gap : {ν μ}
264+
ν <Ω μ
265+
ω-rank-pow-succ (double ν) <′ ω-rank-pow (double μ)
266+
double-cross-gap {fin a} {fin b} (fin<fin a<b) = Ω-block-below-next-ψ a<b
267+
double-cross-gap {fin a} {ω} fin<ω =
268+
≤′-trans
269+
{osuc (ω^ (suc (suc (a + a))))}
270+
{ω^ (suc (suc (suc (a + a))))}
271+
{olim (λ n ω^ (suc n))}
272+
(ω^-strict-mono-suc (suc (suc (a + a))))
273+
(f-in-lim′ (λ n ω^ (suc n)) (suc (suc (a + a))))

proofs/agda/Ordinal/Buchholz/Smoke.agda

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -471,6 +471,7 @@ open import Ordinal.Buchholz.RankDoubledLadder using
471471
; Ω-block-below-next-ψ
472472
; rank2
473473
; rank2-bpsi-below-bOmega
474+
; double-cross-gap
474475
)
475476

476477
-- Slice 3 prerequisites (own block per CLAUDE.md Working rules):

0 commit comments

Comments
 (0)