Repository navigation
feat(geometry,#17544): notebook Geometry-05 -- le pont formel (Grobner vs noyau) - #20062
Conversation
…ve par Grobner » face au noyau Position 05 du programme gradue de la serie Geometry, derniere marche du chemin principal : le theoreme fil rouge (milieu de l'hypotenuse) est confronte dans un meme carnet a ses deux verdicts -- le certificat algebrique de Grobner (positions 02/03) et le terme de preuve du noyau Lean/Mathlib (lac companion geometry_lean). Contenu mesure, pas repris d'un manuel : - §1 lit le module Lean comme TEXTE (4 enonces, dont 1 prive) : aucun lake build, donc execution CPU en ~6 s ; - §2 encode le fil rouge (B a l'origine, M milieu de [AC]) et reduit trois conclusions par la base de Grobner : restes nuls ; - §3 verifie le certificat par remultiplication (ecart exactement nul) ; - §4 temoin negatif MA^2 = MB^2/4 : reste (3/4)(xm^2+ym^2), somme de deux carres -- nul sur R a la seule origine ; - §5 rotation (forme invariante) contre cisaillement (forme perimee, reste non nul) : le verdict algebrique n'a aucun moyen de distinguer « theoreme faux » de « encodage perime » ; - §6 le tableau des deux garanties, plus le comptage textuel des axiomes interdits (indicateur ; la mesure d'autorite reste l'organe du depot, scripts/lean/count_code_sorry.py, et la jambe proof-integrity). C.1 : trois exercices a stubs non bloquants. C.2 : 10/10 cellules, 0 erreur, execution_count non nul partout, sorties commitees. README de serie : la ligne 02 passe de « A venir » a « Livre (#17588) » (le fichier est sur main depuis cette PR) et la ligne 05 est liee. README parent : 05 sort de « A venir », 04b y reste. _quarto.yml : ajout du carnet. Chaine de navigation verifiee (--check rc=0, aucune nouvelle infraction). See #17544 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
✅ No prose/output mismatch detected in the notebooks this PR changed. Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
|
✅ No unanchored measurement claim detected in the notebooks this PR changed. Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
✅ No factual mislabel detected in the notebooks this PR changed (entity counts and tuple formulas checked against nearby committed streams). Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
Golden-Set Execution (H.7 P3)✅ 9/9 notebooks passed (certified reproducible)
Pinned lockfile: |
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
…metry-05 Le notebook neuf portait `../../Lean-38-Capstone-Geometry-Lean-Python.ipynb` alors qu'il vit dans `SymbolicAI/Lean/Geometry/` ; le fichier cible est dans `SymbolicAI/Lean/`, donc un seul niveau remonte. Corrige dans les DEUX cellules markdown qui portent le renvoi (introduction et conclusion) — le scanner dedoublonne par href et n'en signalait qu'une. Rouge impute a la PR : jambe `No enrich-quality regression in changed notebooks`, dont l'annotation du check-run nomme le notebook. Preuve, meme dossier et meme arbre, seule la version du contenu change : scripts/notebook_tools/enrich_quality_ci.py --base NONE --head <nb> -> rc=1 sur le contenu d'avant (1 finding [HREF_MISSING]), rc=0 apres. Le controle positif est refait dans le dossier du notebook : lance hors de l'arbre du depot, le meme organe fabrique deux faux positifs (`../README.md`, `geometry_lean/README.md`, valides mais irresolubles depuis le dossier temporaire). Modification markdown seule : aucune re-execution due (regle C.2, exception markdown). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
check-nav-chain rouge a la tete 9238a74 : le nouveau carnet 05 sans lien entrant faisait passer la serie a deux entrees (orphan_entry x2). Apres ce lien, la cause remontait plus haut : l'entree de serie (02) n'avait AUCUN lien sortant -- 01/03/03b/04 etaient deja unreachable en baseline, et 05 allait les rejoindre comme seul finding NOUVEAU. Deux lignes de pied de page au style maison (03b) : - 02 -> 03 : toute la chaine 02->03->03b->04->05 devient atteignable (8 findings baseline resolus, 0 nouveau) - 04 -> 05 : le nouveau carnet gagne son lien entrant Markdown seul, aucune cellule code touchee. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
Vérifié localement à la tête poussée : |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
|
[ADJOINT PREFLIGHT] READY — attestation tierce a la tete
Commentaire tierce de prevalidation — n'approuve ni ne merge. Lane emettrice : myia-po-2023:CoursIA (file c2142). |
myia-ai-01
left a comment
There was a problem hiding this comment.
Relu a la tete exacte. Geometry-05 : 27 cellules, ec 1..10, 0 erreur, trois exercices en stubs corrects ; les modifications de Geometry-02/04 sont des liens de navigation additifs. Remarque pour la suite (Epic #20250, phase 3) : la prose cite l'EPIC #18601 et l'EPIC #17544 et une « tranche 2 » ; mentions isolees, tolerees, a regrouper en pied de carnet lors du nettoyage de la serie. B.0 rc=0.
…pas re-chiffre Tranche Forensic de la non-regression appairee de #13778, seconde et derniere paire du claim vivant de cette lane (« Whale+FBI »). Re-execution par l'executeur canonique (kernel .net-csharp, cwd = dossier du carnet), sous le sous-module au gitlink de main : 9/9 cellules, 0 erreur, 41,1 s. VERDICT : NO REGRESSION sur la qualite -- medianes 37,0 (MGS) et 43,5 (mealpy), etendues [25-39] et [43-45], MGS gagne 4/4 graines, determinisme 8/8 : identique au chiffre pres. PROSE RECALEE (cellules 5 et 12) -- cinq passages, dont un qui ne pouvait pas etre re-chiffre : - course temoin : 458 ms -> 387 ms (runs anterieurs 458 ms, run original 322 ms) ; - ecart moteur ms/eval mealpy/MGS : 5,63x (0,031 contre 0,174) -> 6,47x (0,027 contre 0,173) ; - ecart fitness C#/Python : 5,13x (0,006 contre 0,031) -> 6,59x (0,007 contre 0,045) ; - vitesse du verdict : 5,63x -> 6,47x ; - **L'ENONCE QUI S'INVERSE.** Le carnet affirmait : « cette fois l'ecart moteur (5,63x) depasse l'ecart fitness (5,13x), a la difference de DE et SA ». Sur cette execution les deux ratios sont 6,47x et 6,59x : l'ordre BASCULE, et de 2 % seulement. L'enonce est donc RETIRE -- il n'est pas re-chiffre en son contraire, ce qui serait fabriquer une conclusion a partir d'un ecart de bruit. Ce qui est ecrit a la place : les deux ratios sont indiscernables ici, leur ordre a bascule d'une execution a l'autre, la paire ne soutient plus l'enonce qu'elle portait, et ce qui reste mesure est ce que chaque ratio dit separement. Ce que la tranche ne fait PAS : elle ne modifie aucune cellule de code, ne touche ni fonction de cout, ni budget, ni graines. La prose qualitative (separation totale de qualite, FBI devant SA) survit inchangee et verifiee. Diff 78 insertions / 438 suppressions. Comme sur MGS-25, la mesure cellule par cellule des tailles de sortie montre que la perte reelle est le blob JS probeAddresses de la cellule 2 (retire par strip_probe_banner.py) ; le solde est du compte rendu JSON et les metadonnees papermill/execution du run anterieur, que l'executeur .NET ne reecrit pas. Grain: DEEP/notebook-dotnet -- lane myia-po-2025:CoursIA -- prev: DEEP/notebook-python #20062 See #13778 Part of #1203 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… Forensic (#20268) * Fix(mgs,#13778): MGS-25 non-regression Whale -- prose de cout re-ancree, sorties fraiches Tranche Whale de la non-regression appairee de #13778 -- claim vivant de cette lane, et restant nomme par la correction de liste du 10/10 (« Whale+FBI (claims vivants po-2025) »). Re-execution par l'executeur canonique (dotnet_executor.py, kernel .net-csharp, cwd = dossier du carnet), sous le sous-module au gitlink de main (2b21a6ae, GeneticSharp 4406ad7, reconstruit Debug net9.0, 0 erreur) : 9/9 cellules, 0 erreur, 42,5 s. VERDICT : NO REGRESSION. Qualite identique au chiffre pres -- medianes 49,5 / 49,5 / 51,0 conflits, etendues [46-51] / [46-53] / [50-54], memes conflits par graine sur les 12 paires graine-moteur, determinisme 12/12. Seules les colonnes de temps et la ligne d'environnement bougent. PROSE RE-ANCREE (cellule 12) -- deux passages citaient des nombres perimes : - ratio moteur ms/eval mealpy/MGS : 1,77x (0,039 contre 0,069) -> 2,46x (0,031 contre 0,077). Le nombre ne se substitue pas seul : a 2,46x il tombe DANS la bande du DE/SA (2,4x-3,3x) et non plus entre celle-ci et le coude-a-coude du PSO (0,8x-1,0x). La phrase est donc REECRITE, pas re-chiffree, et le ratio moteur est desormais declare sensible a la machine ET a la charge (1,69x run original, 1,77x run committe, 2,85x re-execution chargee, 2,46x ici) ; - ratio fitness C#/Python : 6,24x (0,007 contre 0,043) -> 6,40x (0,006 contre 0,039). L'ecart moteur (2,46x) reste sous l'ecart fitness : la revendication de la phrase survit telle quelle. SORTIES FRAICHES (C.2). La banniere probeAddresses (blob JS de 3168 car., 97 lignes JSON) est retiree par strip_probe_banner.py --apply, comme sur MGS-22/23/24/28/30. La banniere nuget de la cellule 6 passe de « Installed Packages pythonnet, 3.1.0 » a « Installing Packages pythonnet » -- forme que portent 5 des 9 carnets de la serie, donc pas un artefact isole. Le diff (86 insertions / 459 suppressions, net -373) se lit par la mesure, pas par le compte : la taille des sorties, cellule par cellule, ne baisse qu'en cellule 2 (-3168 car., le blob) et cellule 6 (-5 car., la banniere). Le reste des suppressions est du compte rendu JSON (le blob ligne a ligne) et les metadonnees papermill/execution du run du 02/10, que l'executeur .NET ne reecrit pas -- les conserver laisserait des metadonnees decrivant une provenance qui n'est plus la leur. Forme deja portee par MGS-22/26/28/30. Grain: DEEP/notebook-dotnet -- lane myia-po-2025:CoursIA -- prev: DEEP/notebook-python #20062 See #13778 Part of #1203 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * Fix(mgs,#13778): MGS-27 non-regression Forensic -- un enonce retire, pas re-chiffre Tranche Forensic de la non-regression appairee de #13778, seconde et derniere paire du claim vivant de cette lane (« Whale+FBI »). Re-execution par l'executeur canonique (kernel .net-csharp, cwd = dossier du carnet), sous le sous-module au gitlink de main : 9/9 cellules, 0 erreur, 41,1 s. VERDICT : NO REGRESSION sur la qualite -- medianes 37,0 (MGS) et 43,5 (mealpy), etendues [25-39] et [43-45], MGS gagne 4/4 graines, determinisme 8/8 : identique au chiffre pres. PROSE RECALEE (cellules 5 et 12) -- cinq passages, dont un qui ne pouvait pas etre re-chiffre : - course temoin : 458 ms -> 387 ms (runs anterieurs 458 ms, run original 322 ms) ; - ecart moteur ms/eval mealpy/MGS : 5,63x (0,031 contre 0,174) -> 6,47x (0,027 contre 0,173) ; - ecart fitness C#/Python : 5,13x (0,006 contre 0,031) -> 6,59x (0,007 contre 0,045) ; - vitesse du verdict : 5,63x -> 6,47x ; - **L'ENONCE QUI S'INVERSE.** Le carnet affirmait : « cette fois l'ecart moteur (5,63x) depasse l'ecart fitness (5,13x), a la difference de DE et SA ». Sur cette execution les deux ratios sont 6,47x et 6,59x : l'ordre BASCULE, et de 2 % seulement. L'enonce est donc RETIRE -- il n'est pas re-chiffre en son contraire, ce qui serait fabriquer une conclusion a partir d'un ecart de bruit. Ce qui est ecrit a la place : les deux ratios sont indiscernables ici, leur ordre a bascule d'une execution a l'autre, la paire ne soutient plus l'enonce qu'elle portait, et ce qui reste mesure est ce que chaque ratio dit separement. Ce que la tranche ne fait PAS : elle ne modifie aucune cellule de code, ne touche ni fonction de cout, ni budget, ni graines. La prose qualitative (separation totale de qualite, FBI devant SA) survit inchangee et verifiee. Diff 78 insertions / 438 suppressions. Comme sur MGS-25, la mesure cellule par cellule des tailles de sortie montre que la perte reelle est le blob JS probeAddresses de la cellule 2 (retire par strip_probe_banner.py) ; le solde est du compte rendu JSON et les metadonnees papermill/execution du run anterieur, que l'executeur .NET ne reecrit pas. Grain: DEEP/notebook-dotnet -- lane myia-po-2025:CoursIA -- prev: DEEP/notebook-python #20062 See #13778 Part of #1203 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * Fix(mgs,#13778): reserve NanoClaw -- retraction du positionnement WOA dans la bande DE/SA + clause valeurs non arrondies MGS-27 MGS-25 : le point 2,46x renversait le positionnement du run committé (1,77x) sous une derive a signe constant des timings (8 MGS ameliores, 4 mealpy degrades) -- signature d'une condition de run, pas d'une propriete de la paire. Meme traitement retractatif que la paire FBI : la plage mesuree (1,69x-2,85x) devient le chiffre de tete, le positionnement dans la bande est retire, ce qui est stable (MGS devant dans toutes les conditions mesurees) est enonce. MGS-27 : clause 'ratio calcule sur les valeurs non arrondies' ajoutee (quotient affiche 6,41x vs 6,47x imprime), aligne sur le carnet WOA. Markdown-only, aucune cellule code touchee, outputs et execution_count inchangs (splice chirurgical, pas de round-trip nbformat). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
Grain: DEEP/notebook-python — lane myia-po-2025:CoursIA — prev: DEEP/notebook-lean #19705
Ce que cette PR livre
Position 05 du programme gradué de la série Geometry (Epic #17544) — la dernière marche du chemin principal, celle que le README de série annonçait comme « le pont formel ».
Un même carnet confronte le théorème fil rouge (le milieu de l'hypoténuse est équidistant des trois sommets) à ses deux verdicts :
Contenu mesuré, pas repris d'un manuel
Chaque affirmation est calculée dans le carnet, et a été vérifiée hors carnet avant d'être écrite :
geometry_lean/Geometry/MidpointHypotenuse.leancomme texte — 4 énoncés dont 1 privé — aucunlake build, donc exécution CPU ;sympy.groebner: restes nuls ;(xa - xc),(ya - yc),1, remultiplication à écart exactement nul ;MA² = MB²/4: reste(3/4)(xm² + ym²), somme de deux carrés — nul sur ℝ à la seule origine. La sortie étiquette explicitement les racines complexes que sympy rend par défaut, et le carnet explique pourquoi « où le reste s'annule-t-il » n'a pas de réponse sans dire sur quel corps ;scripts/lean/count_code_sorry.py, champdistinct_code_sorry) et la jambeproof-integrity.Preuve d'exécution (C.2)
python scripts/notebook_tools/notebook_tools.py execute <nb> --python-only→ SUCCESS, ~6 s, 10/10 cellules de code,execution_countnon nul partout, 0 cellule en erreur, sorties committées.C.1 : les trois exercices sont des stubs non bloquants (
print("Exercice a completer")) — le carnet s'exécute de bout en bout non complété.Le carnet n'utilise pas de LaTeX
$…$:check_math_render.py --pathrend 0 occurrence.Les 5 questions « organe d'abord »
sympy.groebnerest l'organe des positions 02 et 03 ; la lecture du lac est le patron deLean-38, l'escalier d'entrée.sympy.groebner(..., order="lex", domain=sp.QQ)et le lac lu par candidats de chemin.MidpointHypotenuse.leanprouve le même énoncé sans coordonnées, et la jambeproof-integritydelean-geometry.ymlinterroge les axiomes réellement utilisés. C'est le cœur du carnet : deux organes indépendants, deux garanties différentes.Périmètre
6 fichiers : le carnet
Geometry-05-Pont-Formel-Python.ipynb, le README de série, le README parent,_quarto.yml, et — pour mailler la chaîne de navigation — les pieds de page deGeometry-02-From-Equation-To-Proof.ipynbet deGeometry-04-DD-AR-Python.ipynb.Trois corrections de cohérence dans le même geste :
maindepuis feat(geometry,#17544): notebook Geometry-02 -- preuve par algebre (ideaux, Groebner, saturation) #17588 ;02 -> 03et04 -> 05) : sans eux la série avait deux entrées et les carnets 01/03/03b/04 étaient inatteignables depuis la base.Chaîne de navigation vérifiée :
check_notebook_nav_chain.py --check→ rc=0, aucune nouvelle infraction. Garde prose quantitative :[OK] aucun compteur quantitatif en prose. Catalogue laissé byte-identique — il appartient à l'automatisation.See #17544
🤖 Generated with Claude Code