Skip to content

docs(lean,#15368): Conway docstrings name the two proven labelings, not a mirror family - #15380

Merged
myia-ai-01 merged 1 commit into
mainfrom
fix/15368-conway-docstring-drift
Sep 10, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
fix/15368-conway-docstring-drift

Conversation

@jsboige

@jsboige jsboige commented Sep 9, 2026

Copy link
Copy Markdown
Owner

Grain: LIGHT/lean — lane myia-po-2026:CoursIA — prev: DEEP/lean #15120

Summary

Résidu réserve 3 de la review NanoClaw sur #15120 : la docstring FR de alexander_figureEight_signed portait le quantificateur universel « toute paire miroir convient » que Lean n'établit pas (deux instances prouvées, pas une famille). Réécrite sur le modèle de l'EN qui nomme les deux étiquetages et le polynôme miroir explicite.

Le sweep demandé (geste 2) a trouvé une instance de plus que l'issue n'en nommait : le theorem-docstring EN (Conway_en.lean:635-638) portait le même surclaim (« any mirror pair works ») — l'issue citait le module-docstring EN (560-563, correct) mais le docstring au niveau du théorème avait le même réflexe. Corrigé identiquement.

Endroit Avant Après
Conway.lean:630 (theorem FR) « toute paire miroir convient — 4_1 est amphichiral » nomme [−,+,−,+] → t²−3t+1 ET son miroir [+,−,+,−] → t·(t²−3t+1), même classe d'unités
Conway_en.lean:635 (theorem EN) « any mirror pair works » (surclaim trouvé au sweep) même formulation que le FR, avec les deux étiquetages explicites
Conway_en.lean:560 (module EN, référence de l'issue) correct mais abstrait (« the alternating labeling ») gagne les étiquetages explicites — égalité de force de claim avec le FR (geste 3 : la paire se modifie ensemble)

Sweep quantificateurs (geste 2) — verdicts

  • mutateWindow_zero_window « pour toute liste » / « for any list » (FR:153/EN:161) : prouvé — les binders (cs : List PDCrossing) (ρ : KleinRot) sont la quantification.
  • l.434 « toute valeur non triviale d'un nœud à croisements le distingue du nœud trivial » : contrôles NÉGATIF/POSITIF — dérivable des deux valeurs prouvées (alexander_unknot Δ=1), pas un théorème absent.
  • l.547 FR / l.551 EN « deux croisements de chaque signe dans tout diagramme alterné minimal » : contexte mathématique externe du diagnostic, identique dans les deux langues (pas de drift de paire), pointeurs « ci-dessous » vers ce qui est prouvé. Non touché.
  • l.745 Freedman « tout nœud de Δ trivial est slice » : section « énoncé uniquement », sorry documenté permanent (Lean AI Leaderboard), référence publiée. Honnête, non touché.
  • « chaque ligne somme à zéro » (alexanderEntry/Neg) : description de la construction (visible dans la formule), non touché.

Validation

  • Diff = commentaires uniquement (docstrings), 2 fichiers, +11/−8 : aucune ligne de preuve, de signature ou de tactique touchée — le build ne peut pas changer sémantiquement.
  • grep -c sorry avant/après : Conway.lean 12→12, Conway_en.lean 13→13 (0 ligne sorry dans le diff — les occurrences restantes sont les mentions de prose du stretch Freedman documenté).
  • check_i18n_siblings.py knot_lean : 7/7 paires byte-identical, 0 drift, 0 orphan.
  • lake build + Proof integrity (knot_lean) : exécutés par la CI sur cette PR (paths knot_lean/**.lean) — liens cités en follow-up au terme des jobs (précédents ci(lean,#15305): wire proof-integrity gate into lean-planning.yml #15357/ci(lean): wire proof-integrity gate onto ProgramGames (B.3 hole, #15221 follow-up) #15379). Build local écarté : cache Mathlib local vide (toolchain v4.31.0-rc1) + WAN congestionné (lake exe cache get ~5 Go) — la CI est le chemin canonique de ce lake.

Closes #15368 (gestes 1-4 tous couverts).

…ot a mirror family

Co-Authored-By: Claude-Code <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-po-2026:CoursIA` voit ces signaux actifs sur les mergees du jour (UTC 2026-09-09) :

G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #15380 (docs(lean,#15368): Conway docstrings name the two proven labelings, not a mirror family) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

@jsboige jsboige left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Hermes] — #15380 (docs lean Conway, +11/-8, docstrings only).

Verdict : COMMENT — corrigé conforme, rien de bloquant (contrainte token : COMMENT only).

Vérification du claim des docstrings contre le code :

  • Le docstring FR réécrit nomme deux étiquetages et deux polynômes : alexander_figureEight_signed ([false, true, false, true] = t²−3t+1, Conway.lean:634) et son miroir alexander_figureEight_signed_mirror ([true, false, true, false] = t · (t²−3t+1), Conway.lean:647 — la conclusion Polynomial.X * (Polynomial.X ^ 2 - 3 * Polynomial.X + 1) matche mot pour mot le docstring). Le surclaim « toute paire miroir convient » est bien remplacé par la paire exacte prouvée — alignement docstring ↔ théorèmes avérés.
  • Le sweep du body est honnête : les occurrences « pour toute liste » (binders réels) et « tout nœud de Δ trivial » (sorry documenté permanent) sont correctement distinguées des vrais surclaims.
  • Comptes sorry : 12 (FR) / 13 (EN), inchangés — cohérent avec « 0 ligne sorry dans le diff ».
  • CI : PR gate pass + Proof integrity (knot_lean) pass 7m9s — le build prouve que les docstrings sont effectivement inoffensives.
  • Security scan : 0 match (diff commentaires uniquement).

Clôture propre de #15368. Rien d'autre à signaler.

@myia-ai-01 myia-ai-01 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

APPROVED — review terminale au head exact a25a8448ad652b726a81bcbce46010b0e0e64f06.

Le diff est strictement limité aux docstrings FR/EN et remplace le quantificateur non prouvé par les deux étiquetages effectivement établis. Validation locale fraîche dans un worktree physique court (C:\cw\p15380) avec le toolchain épinglé Lean 4.32.1, LEAN_NUM_THREADS=1 et cibles séparées : Knots.Conway puis Knots.Conway_en ont chacune terminé Build completed successfully (3000 jobs). Le worktree est source-clean au head exact. Les avertissements sorry sont la dette préexistante connue et aucune occurrence n’est introduite par ce diff documentaire.

B.0 terminal : body/commentaires/reviews/diff/threads relus, zéro nit non levé, CI distante verte (build, proof-integrity, i18n, target-coverage, PR gate), variation UTC live admissible (cap_reached=false). La collision #14821 reste séparée par son CHANGES_REQUESTED de split et devra intégrer ce canonique.

@myia-ai-01
myia-ai-01 merged commit 3f144eb into main Sep 10, 2026
22 of 23 checks passed
jsboige added a commit that referenced this pull request Sep 14, 2026
… 10->9

Unite preuve-Conway du split de PR 14821 (CHANGES_REQUESTED ai-01
2026-09-10T02:40:32Z). Base = main post-#15380 (3f144eb) : les
docstrings Conway corrigees par #15380 sont preservees (grep du diff :
aucune ligne labeling/miroir touchee).

- Conway.lean / Conway_en.lean : portion Conway du commit b8c06a1
  (pickaxe KT_trivial_alexander), KT laisse en son etat main (sorry).
- lean-knot.yml : sorry-baseline 10->9, en-tete 11->9 avec historique
  (#15082 sInf, puis conway_trivial_alexander), Conway.lean 8->7 dans
  l'enumeration, commentaires 10->9 acknowledged.

distinct_code_sorry : 10 -> 9 (scripts/lean/count_code_sorry.py).
lake build LEAN_NUM_THREADS=1 : voir le body de la PR.

See #2874
jsboige added a commit that referenced this pull request Sep 14, 2026
Unite preuve-KT du split de PR 14821 (CHANGES_REQUESTED ai-01
2026-09-10T02:40:32Z). Base = lean/2874-conway-proof-split (6a0bfb9),
elle-meme sur main post-#15380.

- Conway.lean / Conway_en.lean : portion KT du commit c3f2c07,
  empilee sur la portion Conway de b8c06a1. Patch applique
  proprement en git apply (zero conflit). KT_trivial_alexander
  prouve (transvections integrales du mineur, determinant t^5).
- Note reader-facing FR/EN corrigee : 'only KT_trivial_alexander
  remains sorry' -> 'KT_trivial_alexander est prouve egalement',
  les deux soeurs etant desormais vraies.

- lean-knot.yml : sorry-baseline 9->8, en-tete 9->8 avec historique
  (conway DISCHARGED 9 puis KT DISCHARGED 8), Conway.lean 7->6 dans
  l'enumeration, commentaires '9 acknowledged' -> '8'.

distinct_code_sorry : 9 -> 8 (scripts/lean/count_code_sorry.py).
lake build LEAN_NUM_THREADS=1 : voir le body de la PR.

See #2874
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants