Repository navigation
fix(pedagogy,#17570): ICT tranche — re-pointer consommateurs vers evolveHashlifeFastAtN_correct_uncond - #17688
Conversation
…lveHashlifeFastAtN_correct_uncond ICT-Life-SubstratCertifie.ipynb (9 cellules markdown : cell 0/18/19/21/22/27) et ict/life.py (bloc docstring l. 20-34) pointaient hashlife_correct comme garantie de correction du calcul de trajectoire. Or ce théorème est *vacuously true* dans le régime du saut (BoxAssezGrand cappée à n≤2 sur grilles non-vides, disjoint de la garde Hashlife n≥8). La garantie pleine, inconditionnelle et non-vacuous vit dans evolveHashlifeFastAtN_correct_uncond (Lean, conway_lean/Conway/Life/HashlifeCorrectness.lean l. 7202, PR #11781 commit c5df96d 2026-08-19). Cette tranche répercute ce pointage côté consommateurs ; la docstring historique hashlife_correct côté Lean a déjà été mise à jour par commit eacb29b 2026-09-24 (fix #17570 lake tranche, mergé sur main). Aucune cellule code du notebook touchée (C.2 préservation : 11/11 exec_count, 16 outputs intacts). See #17570 Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
|
[ADJOINT PREFLIGHT] |
Résumé
Tranche ICT de l'issue #17570 (consommateurs) : re-pointer la garantie de
correction citée dans
ICT-Life-SubstratCertifie.ipynbetict/life.pydepuis
hashlife_correct(vacuously true dans le régime du saut) versevolveHashlifeFastAtN_correct_uncond(non-vacuous, sans hypothèse).Vérifications before-fix (Tell c.974 strict ★★★ + Tell c.1156 ★★ strict)
Lecture critique first-hand du contenu réel avant patch :
Lean source first-hand (
conway_lean/Conway/Life/HashlifeCorrectness.lean) :theorem hashlife_correct (n : Nat) (g : Grid) (h : BoxAssezGrand g n) :— confirmép5_large_n_hyps_unsatcité dans la docstring — confirméboxAssezGrand_nonempty_le_twocité — confirmétheorem evolveHashlifeFastAtN_correct_uncond (n : Nat) (g : Grid) : evolveHashlifeFastAtN n g = evolve n g := evolveHashlifeFastAtN_correct one_jumpAt_correct n g— confirmétheorem one_jumpAt_correct : OneJumpAtCorrect := by— confirméhashlife_correct(l. 6369-6372) mise à jour par commiteacb29b98c2026-09-24 (fix fix(ict,lean): ICT citehashlife_correctcomme garantie pleine — vide dans le régime du saut ; re-pointer versevolveHashlifeFastAtN_correct_uncond#17570 dans le lake lui-même)Git log first-hand : le théorème
evolveHashlifeFastAtN_correct_uncondest livré par PR feat(lean,#11161): grain 3 complet — OneJumpAtCorrect theoreme + capstone evolveHashlifeFastAtN_correct_uncond #11781 (commitc5df96d5b02026-08-19, feat [Lean][GOL] Recadrage Gosper : prouver evolveHashlifeFastAtN inconditionnel (étape 2, #6724) — la capture devient corollaire #11161 grain 3), PAS par une autre PR. Une première rédaction citait#17644— corrigée après vérificationgit log.Notebook first-hand (
ict_cells_full.txtexporté) : 9 cellules markdown contiennent le wording à corriger (cell 0 intro, cell 18 tableau + phrase « seul moteur prouvé », cell 19 section 5 H1 + théorème + calibration, cell 21 conclusion « garantie complète », cell 22 section 6 « branche Hashlife couverte », cell 27 synthèse « garantie de correction »). Toutes les chaînes OLD ont été trouvées verbatim.ict/life.py first-hand (l. 15-34) : le bloc docstring
**Pont preuve <-> mesure**est un paragraphe multiligne — confirmé l. 22 contientdu theoreme \`hashlife_correct`` formalise en Lean dans la track ``conway_lean```. Patch par remplacement du bloc complet (15 lignes → 26 lignes).Modifications
ICT-Life-SubstratCertifie.ipynbict/life.pyAucune cellule code modifiée : 11/11 cellules code conservent leur
execution_countréel et leurs outputs intacts. C.2 ne déclenche pas de ré-exécution obligatoire (validation first-hand post-fix :nbformat.validate(nb)OK, 11/11 exec_count, 16 outputs préservés).Acceptance #17570 (tranche ICT consommateurs)
evolveHashlifeFastAtN_correct_uncond(5 mentions cell 0/18/19/21/22/27)hashlife_correct(cell 0, 19, 21, 22, 27)ict/life.pydocstring pointe versevolveHashlifeFastAtN_correct_uncondET nomme la vacuité dehashlife_correctc5df96d5b02026-08-19 ; docstring update commiteacb29b98c2026-09-24)eacb29b98c)Hors périmètre (rappel)
hashlife_correctcôté Lean : déjà mergée par commiteacb29b98c(fix fix(ict,lean): ICT citehashlife_correctcomme garantie pleine — vide dans le régime du saut ; re-pointer versevolveHashlifeFastAtN_correct_uncond#17570 lake tranche).myia-po-2027:CoursIA-2(PR fix(search,#17550): sauts de ligne doublés — Search-02c + App-14 (tables GFM réparées, re-exec .NET) #17577, OPEN).Tell c.770 v3 strict fondateur (leçon durable consignée)
Première rédaction de cette PR citait PR #17644 pour le théorème
evolveHashlifeFastAtN_correct_uncond— vérificationgit logfirst-hand a montré que ce PR n'existe pas. Le bon numéro est #11781 (commitc5df96d5b02026-08-19). Patch corrigé et ré-appliqué sur fichiers remis à l'état HEAD avant le second passage.Tell c.974 strict ★★★ fondateur : ne JAMAIS citer un numéro de PR sans vérification
git log. Leçon ajoutée au journal de délégation.Grain
Grain: MED/notebook-python — lane myia-po-2026:CoursIA-2 — prev: MED/notebook-python #17632🤖 Generated with Claude Code