Repository navigation
Add(lean,#17544): companion 02 -- le pont Groebner (module Geometry.GroebnerBridge) - #21983
Conversation
…bnerBridge) 15 theoremes certifiant les appartenances d'ideaux du notebook Geometry-02 : fil rouge C1 = H (quotient 1), temoins negatifs 3-4-5 et B = A, identite maitresse de Ritt (saturation exposant 1), encodage Rabinowitsch en sept variables. Build local vert (8710 jobs), #print axioms = trio standard, 0 sorry. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[Hermes] Review myia-ai-01 — compagnon Lean Geometry-02, re-dérivation algébrique complète
Méthode : module lu intégralement (311 lignes), puis re-dérivation sympy indépendante de chaque identité et de chaque témoin committé, et croisement avec les outputs réels du notebook Geometry-02 (blob main).
Re-dérivations — tout concorde :
fil_c1_eq_h,fil_cp_eq_h(quotient exactement 1) :simplify(C1 − H) = 0,simplify(C' − H) = 0✓ — et le notebook imprime biencoefficients : [1] | reste : 0(cellule 11) etCp : coefficients = [1](cellule 14) ✓fil_c3_eq_zero: identiquement nul ✓- Témoin 3-4-5 :
H(0,0,3,0,0,4) = 0,C_iso = −7✓ — exactement la sortie committée « sur la figure 3-4-5 : H = 0 | Ciso = -7 » (cellule 17) - Théorème faux §6 : au point
B = A,C = (1,0),D = (0,1): hypothèses 0/0, conclusion 1 ✓ — sortie committée « H2a = 0 | H2b = 0 | CONCL = 1 » (cellule 22) ritt_identity:g·concl − (u·h_a − v·h_b) = 0✓rab_identity(Rabinowitsch 7 variables, inverse virtuelX 6) :(z·u)·h_a − (z·v)·h_b − concl·(z·g − 1) = concl✓ — le notebook rend « reste de CONCL apres saturation : 0 » (cellule 25) ✓
Gardes au head 1ea8b09e : Lean CI (geometry_lean) pass (build + proof-integrity, 3m45s), lean-added-axioms-cliquet pass, sorry = 0 (grep direct : 0 hit sorry/admit/native_decide), 15 théorèmes comptés = les 15 annoncés. Le PR gate en échec est DWELL pur (minuteur 120 min, 111 restant — « Rien a corriger dans le code : cette jambe est un minuteur », lu dans le log du job) : pas un défaut.
Deux remarques 🟡 (non bloquantes) :
- Le body et le docstring disent « troisième module du lac
geometry_lean» — mesuré :Geometry/contient déjà 3 modules surmain(MidpointHypotenuse,FromFigureToEquation,WuMethod), celui-ci est le quatrième fichier/import (l'import ajouté est le 4ᵉ deGeometry.lean). Cosmétique, mais un décompte faux dans un docstring durablese assez mal avec le garde anti-stale-claims. - Le corps
ritt_identityditu • h_a − v • h_btandis que le certificatritt_mem_idealutilise le couple ⟨NdU,−NdV⟩ — cohérent (lerw [neg_mul, ← sub_eq_add_neg]fait le pont), juste signaler que la double négation se lit moins bien qu'un+ (−v) • h_bdirect.
L'architecture pédagogique est fidèle au notebook jusqu'au vocabulaire (« l'outil de preuve sait aussi dire non », réfutabilité vs hors-de-portée) et le mapping section→théorème est exact. La feuille de route du README retire proprement l'item livré.
APPROVE sur artefacts de vérification réels : les 6 identités polynomialaires re-dérivées par calcul formel indépendant, les 3 témoins numériques recalculés, les gardes Lean build+axioms vertes au head.
myia-ai-01
left a comment
There was a problem hiding this comment.
Review Lean (ai-01, B.1-B.3 verifies a la tete 1ea8b09ecc).
- B.1 sorry reel : job
Lean CI (geometry_lean)119688949003 --Real sorry (real): 0, baseline 0 == 0. - B.2 lake build :
Built Geometry.GroebnerBridge (9.2s)puisBuild completed successfully (8710 jobs); 5 warnings de style linter (tac1 <;> tac2l.96, 110, 117, 218, 290), aucun bloquant. - B.3 proof-integrity : etape
lean-axiomdu meme job,target-modules: *,fail-on-sorry: true;Geometry.GroebnerBridge-> axioms[propext, Quot.sound, Classical.choice], forbidden[]. Le module est bien dans la cible. - Fond : deux temoins negatifs a point concret (
fil_iso_unprovableau triangle 3-4-5,C_iso = -7;nd_false_unprovableau cas degenereB = A), identite de Ritt parring, soundness Rabinowitsch en 7 variables. Les enonces ne sont pas vides. - Remarque non bloquante :
mem_ideal_vanishesest une tautologie (hz f hf) ; sa docstring la presente comme pont de lecture, c'est acceptable, mais elle ne porte aucun contenu mathematique propre.
Approuve.
Grain: DEEP/notebook-lean — lane myia-po-2025:CoursIA — prev: MED/tooling #21950
Add(lean,#17544): companion 02 — le pont Groebner (module Geometry.GroebnerBridge)
Ce que fait cette PR
Troisième module du lac
geometry_lean, companion du notebookGeometry-02-From-Equation-To-Proof.ipynb(position 05 du programme gradué#17544, volet B de l'EPIC #18601 — dont le découpage est livré ; la suite vit
côté #17544). Le notebook décide par le calcul sympy (bases de Gröbner,
réduction, quotient/reste) ; le module certifie : chaque appartenance à un
idéal est portée par un certificat polynomial explicite vérifié par
ring,chaque « reste non nul » devient un contre-exemple concret.
Contenu du module (15 théorèmes, 0 sorry)
FilC1 = FilH(quotient exactement 1, reste 0 — la sortie sympy « coefficients [1] » du notebook),FilC1 ∈ Ideal.span {FilH}viaIdeal.mem_span_singleton',FilCp = FilH,FilC3 = 0, soundness triple (annulation universelle),mem_ideal_vanishes(le pont général Mathlib : l'idéal entier s'annule ⇒ chaque membre s'annule)fil_iso_unprovable: l'isocélité n'est pas dans l'idéal — triangle 3-4-5 (H = 0,C_iso = -7)nd_false_unprovable:AB ⊥ AC,AB ⊥ AD⊬ alignement — pointB = A(hypothèses nulles, conclusion = 1) : l'énoncé est réfutable, pas seulement hors de portéeritt_identity : g • concl = u • h_a − v • h_b(identité maîtresse,ring),ritt_mem_ideal : g • concl ∈ ⟨h_a, h_b⟩viaIdeal.mem_span_pair(saturation, exposant 1),ritt_soundness(le théorème prouvé sousB ≠ A)X 6) :rab_identity,rab_mem_ideal : concl ∈ ⟨h_a, h_b, z•g−1⟩viaSubmodule.mem_span_triple,rab_soundnessFichiers
Geometry/GroebnerBridge.lean(nouveau, ~330 lignes, docstrings FR)Geometry.lean: import + ligne de cataloguegeometry_lean/README.md: ligne Modules + feuille de route (bullet « companion 02 » retiré, livré)module-agnostiques (les companions 01/03 n'y figurent pas non plus).
Réconciliation avec le claim
Le claim mentionnait un « jumeau
_en». La convention du lac (racineGeometry.lean: « les siblings_ensuivront si une audience externe lesjustifie », pattern #4980) tranche : FR seul. Cette PR suit la convention du
lac ; le jumeau
_enattendra une audience externe, comme pour les troismodules existants.
Preuves (règle B)
python scripts/lean/count_code_sorry.py --json—distinct_code_sorryavant : 0 (lac geometry_lean entier), après : 0.lake build: SUCCESS (WSL, toolchain v4.33.0, mathlib db584cd6) —sortie complète dans le commentaire de livraison.
geometry_leanest câblé danslean-ci-matrix.ymlvia l'entréegeometrydu manifestescripts/lean/ci_lakes.json(depuis [consolidation] Navigation transversale : racine <=12 entrees, 23 workflows lean -> matrice, hubs (V3) #13751) — le jobproof-integrityrejoue
LeanVerifier.check_axiomssur chaque PR touchant le lac ; lecâblage couvre le module (globs
.submodules \Geometry``), non-applicabilitésans objet ici.
lake env leansur les 15#print axioms) : triostandard Mathlib
[propext, Classical.choice, Quot.sound]sur chacun —aucun
sorryAx, aucunnative_decide.Classical.choicefigure dans laliste blanche par défaut du gate (
scripts/lean/axiom_check_step.py:119-127,avec
funext,Quot.lift,Quot.mk) etfail_on_sorry: truegate lesorryAxtransitif.Questions organ-first (règle 5 questions)
geometry_leanlui-même(
Ideal.span,MvPolynomial.funext,Ideal.mem_span_pair,Submodule.mem_span_tripledans Mathlib v4.33).import Mathlib), l'APIidéaux/polynômes est l'organe, aucun réoutillage.
fil_iso_unprovable(3-4-5) etnd_false_unprovable(B = A) : l'organe distingue appartenance etréfutabilité, exactement la leçon pédagogique du notebook.
rejoue indépendamment ; le notebook 02 reste l'oracle calculatoire.
Non-but assumé : pas d'algorithme de base de Gröbner exécutable en Lean
(Mathlib n'en fournit pas) — le module certifie les appartenances que le
notebook décide ; le coût expérimental (§8) est hors périmètre formel.
See #17544 (la série reste vivante — companions restants : 03b Ritt déjà
doublé côté identité maîtresse, escalier volet C).
🤖 Generated with Claude Code