Skip to content

Commit 8463418

Browse files
committed
proof(ordinal): ω-rank-pow reflects _<Ω_ (bridge bOmega-case inversion)
The converse of `ω-rank-pow-mono`, and the precise blocker the WfAdm→rank2 scale-transfer bridge's bOmega case needs: ω-rank-pow ν <′ ω-rank-pow μ → ν <Ω μ From `rank-pow (bOmega ν) = ω-rank-pow ν <′ ω-rank-pow μ` the bridge recovers `ν <Ω μ` and feeds `double-cross-gap`. Marker case analysis: * fin/fin: reflect `ω^`-mono via irreflexivity (`b ≤ a` forces `ω^(suc a) <′ ω^(suc a)`; `≰⇒>` yields `a < b`); * fin/ω: `fin _ <Ω ω` unconditionally; * ω/fin: absurd — `ω-rank-pow ω` is a limit ABOVE every `ω^(suc b)` (`ω^-suc-below-lim` + asymmetry); * ω/ω: absurd by irreflexivity. Helpers: `<′-irrefl` (from `wf⇒asym wf-<′`), `ω^-suc-below-lim`. Meta-inference fails through the *defined* `_<′_` (unfolds to `osuc _ ≤′ _`), so `wf⇒asym`/`<′-irrefl` carry explicit carrier implicits at each site. With `double-cross-gap` this completes both hard ingredients of the bridge's bOmega case. Remaining: the WfAdm-structural induction (bzero positivity / bOmega [these] / bpsi `double`-mono + IH / bplus additive-principal both directions). - `ω-rank-pow-reflects-<Ω` 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 11199e1 commit 8463418

2 files changed

Lines changed: 54 additions & 1 deletion

File tree

proofs/agda/Ordinal/Buchholz/RankDoubledLadder.agda

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,9 @@
7575
module Ordinal.Buchholz.RankDoubledLadder where
7676

7777
open import Data.Nat using (ℕ; suc; _+_; _<_; _≤_; s≤s)
78-
open import Data.Nat.Properties using (+-suc; +-mono-≤)
78+
open import Data.Nat.Properties using (+-suc; +-mono-≤; ≰⇒>)
79+
open import Data.Empty using (⊥; ⊥-elim)
80+
open import Induction.WellFounded using (wf⇒asym)
7981
open import Relation.Binary.PropositionalEquality using (_≡_; refl; subst; cong)
8082

8183
open import Ordinal.Brouwer using (Ord; osuc; oz; olim)
@@ -85,12 +87,14 @@ open import Ordinal.Brouwer.Phase13 using
8587
; ≤′-trans
8688
; ≤′-self-osuc
8789
; f-in-lim′
90+
; wf-<′
8891
)
8992
open import Ordinal.Brouwer.Arithmetic using (_⊕_)
9093
open import Ordinal.Brouwer.OmegaPow using
9194
( ω^_
9295
; ω^-strict-mono
9396
; ω^-strict-mono-suc
97+
; ω^-mono-≤
9498
; additive-principal
9599
)
96100
open import Ordinal.OmegaMarkers using (OmegaIndex; fin; ω; _<Ω_; fin<fin; fin<ω)
@@ -271,3 +275,51 @@ double-cross-gap {fin a} {ω} fin<ω =
271275
{olim (λ n ω^ (suc n))}
272276
(ω^-strict-mono-suc (suc (suc (a + a))))
273277
(f-in-lim′ (λ n ω^ (suc n)) (suc (suc (a + a))))
278+
279+
----------------------------------------------------------------------
280+
-- `ω-rank-pow` reflects `_<Ω_` (the bridge's bOmega-case inversion)
281+
----------------------------------------------------------------------
282+
283+
-- Irreflexivity of `_<′_`, from its well-foundedness.
284+
<′-irrefl : {α} α <′ α
285+
<′-irrefl {α} p = wf⇒asym wf-<′ {α} {α} p p
286+
287+
-- Every approximant of `ω-rank-pow ω`'s limit lies below the limit:
288+
-- `ω^(suc b) <′ olim (λ n → ω^(suc n)) = ω-rank-pow ω`.
289+
ω^-suc-below-lim : b ω^ (suc b) <′ ω-rank-pow ω
290+
ω^-suc-below-lim b =
291+
≤′-trans
292+
{osuc (ω^ (suc b))}
293+
{ω^ (suc (suc b))}
294+
{olim (λ n ω^ (suc n))}
295+
(ω^-strict-mono-suc (suc b))
296+
(f-in-lim′ (λ n ω^ (suc n)) (suc b))
297+
298+
-- `ω-rank-pow` reflects the strict Ω-order: the converse of
299+
-- `ω-rank-pow-mono`. Needed by the bOmega case of the WfAdm→rank2
300+
-- bridge — from `rank-pow (bOmega ν) = ω-rank-pow ν <′ ω-rank-pow μ`
301+
-- recover `ν <Ω μ`, then feed `double-cross-gap`. By marker cases:
302+
-- * fin/fin: reflect `ω^`-mono via irreflexivity (`b ≤ a` would
303+
-- force `ω^(suc a) <′ ω^(suc a)`);
304+
-- * fin/ω: `fin _ <Ω ω` holds unconditionally;
305+
-- * ω/fin: absurd — `ω-rank-pow ω` is a limit ABOVE every
306+
-- `ω^(suc b)` (asymmetry);
307+
-- * ω/ω: absurd by irreflexivity.
308+
ω-rank-pow-reflects-<Ω : {ν μ}
309+
ω-rank-pow ν <′ ω-rank-pow μ
310+
ν <Ω μ
311+
ω-rank-pow-reflects-<Ω {fin a} {fin b} p = fin<fin (reflect-nat p)
312+
where
313+
reflect-nat : ω^ (suc a) <′ ω^ (suc b) a < b
314+
reflect-nat q =
315+
≰⇒> (λ b≤a
316+
<′-irrefl {ω^ (suc a)}
317+
(≤′-trans
318+
{osuc (ω^ (suc a))} {ω^ (suc b)} {ω^ (suc a)}
319+
q
320+
(ω^-mono-≤ (s≤s b≤a))))
321+
ω-rank-pow-reflects-<Ω {fin a} {ω} _ = fin<ω
322+
ω-rank-pow-reflects-<Ω {ω} {fin b} p =
323+
⊥-elim (wf⇒asym wf-<′ {olim (λ n ω^ (suc n))} {ω^ (suc b)}
324+
p (ω^-suc-below-lim b))
325+
ω-rank-pow-reflects-<Ω {ω} {ω} p = ⊥-elim (<′-irrefl {ω-rank-pow ω} p)

proofs/agda/Ordinal/Buchholz/Smoke.agda

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -472,6 +472,7 @@ open import Ordinal.Buchholz.RankDoubledLadder using
472472
; rank2
473473
; rank2-bpsi-below-bOmega
474474
; double-cross-gap
475+
; ω-rank-pow-reflects-<Ω
475476
)
476477

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

0 commit comments

Comments
 (0)