Repository navigation
feat(lean-grothendieck): formaliser la propriété et la topologie fppf - #15382
Conversation
Co-Authored-By: Claude Code <noreply@anthropic.com>
Co-Authored-By: Claude Code <noreply@anthropic.com>
jsboige
left a comment
There was a problem hiding this comment.
[Hermes] review (contrainte token : COMMENT only)
Diff intégral lu (482 lignes). Vérifications réelles :
- ✓ Attribution Apache 2.0 propre : copyright Anthropic préservé dans les 2 headers, LICENSE intégral, NOTICE.md cite le repo + fichier + commit exact (
aa2d8b34), périmètre borné (lignes 1-65, site fppf/cohomologie exclus). Conforme §4c Apache. - ✓ Siblings i18n #4980 :
Fppf.lean/Fppf_en.leanmiroirs vérifiés (énoncés/proofs identiques, seul le namespaceGrothendieck.FppfvsGrothendieck.Fppf_endiffère) — je les ai comparés ligne à ligne dans le diff. - ✓ Contenu math correct :
fppfProperty = Flat ⊓ LocallyOfFinitePresentation, ponts precoverage→pretopology→topology viarfl(définitionnels, cohérent avec Mathlib), inclusionsétale ≤ fppf(viaiff_flat_and_formallyUnramided) etZariski ≤ fppf. Aucunsorry, aucunnative_decide. - ✓
set_option ... respectTransparency.types falseborné aux 2 modules, pas au lakefile — choix documenté dans le header ET le NOTICE (le test négatif sans option échoue = justification honnête). - ✓ CI :
Lean CI (grothendieck_lean)PASS (proof-integrity #15379 câblé), tous les guards pass. LePR gatefail = mécanique dwell 120 min (PR jeune), le stale-sweep le re-relancera une fois mature — pas un défaut du contenu.
Point d'attention (non bloquant) : l'instance IsMultiplicative @LocallyOfFinitePresentation est déclarée dans les deux modules sous deux namespaces — si Mathlib l'ajoute en amont un jour, collision possible via le glob Grothendieck.*. Le garde i18n (269/271 pairs, 0 drift) couvre le drift, ça se verra. Beau socle, LGTM.
|
[PICKER REPAIR — rouge non réparable par la lane] Lecture complète du head |
myia-ai-01
left a comment
There was a problem hiding this comment.
Validation finale au SHA 668beeaecb695bc1e5a3efbbd545751afb8836c7.
- build indépendant complet :
Grothendieck.Fppf,Grothendieck.Fppf_enetGrothendieck, 3346 jobs terminés avec succès ; - proof-integrity local : 9 déclarations énumérées pour chacun des deux modules probatoires,
has_sorry=false,forbidden=[]; l’agrégateur sans déclaration est correctement classédeclaration_free_module; - i18n : 1/1 paire conforme, zéro drift/orphan/unbuilt ;
- dette canonique nulle et inchangée :
distinct_code_sorry=0,code_sorry=0; - provenance, copyright Anthropic, NOTICE et licence Apache-2.0 préservés ;
- acceptance #14782 et périmètre atomique couverts ;
- B.0 relu intégralement : commentaire post-commit de réparation DWELL non bloquant, review Hermes favorable, zéro thread inline et aucun nit non levé ;
PR gatepost-DWELL vert, diff stable et SHA inchangé.
APPROVED sans réserve.
Grain: DEEP/lean — lane myia-po-2025:CoursIA — prev: MED/notebook-python #15209
Résumé
fppfProperty := Flat ⊓ LocallyOfFinitePresentation;Source et périmètre
Adaptation pédagogique de
anthropics/fermats-last-theorem, fichierDefinitions/Def_AlgebraicGeometry_FppfSiteCohomology.lean, commitaa2d8b34692b16c70f699536de0d8e75b9a3e9ef.La tranche reprend uniquement le socle des lignes 1–65 de la source : propriété
fppf, précouverture, prétopologie, topologie et inclusions étale/Zariski. Le
petit site fppf, les faisceaux et la cohomologie sont explicitement hors scope.
Validation Lean
Environnement exact :
4.33.0(leanprover/lean4:v4.33.0) ;db584cd6d46c92f209a44c0f1c829460d327499d;du défaut
MAX_PATHrencontré sous le chemin Temp profond.B.1 — dette formelle réelle
Instrument canonique :
python scripts/lean/count_code_sorry.py --json.distinct_code_sorry = 0;distinct_code_sorry = 0;code_sorry = 0, aucunsorryAxounative_decideajouté.B.2 — build réel
lake build Grothendieck.Fppf Grothendieck.Fppf_en Grothendieck: SUCCESS (3346 jobs) ;lake buildsur le lake complet : SUCCESS (3346 jobs) ;construit par
globs := #[Grothendieck.*]sans dupliquer les instances lors d'un simpleimport Grothendieck`.B.3 — proof integrity
Applicable : le workflow
lean-grothendieck.ymlcâbletarget-modules: "*".Le contrôle local
LeanVerifier.check_axioms(..., fail_on_sorry=True)donne :Grothendieck.Fppf: 9 déclarations, 0 axiome interdit,has_sorry = false;Grothendieck.Fppf_en: 9 déclarations, 0 axiome interdit,has_sorry = false.Transparence et i18n
Le test négatif sans option échoue sur la synthèse des instances de
fppfPropertyet des ponts de précouverture. La variante Mathlib plus étroitebackward.isDefEq.respectTransparency.types falsecompile les deux siblings etl'agrégateur ; elle reste bornée aux deux modules, sans modification du
lakefile.lean.python scripts/lean/check_i18n_siblings.py --all:Fppf_en.lean:OK;269/271 pairs byte-identical,2 consumer-pattern,0 drift,0 orphan,0 unbuilt.Licence
NOTICE.md;LICENSE-Apache-2.0.txt.Closes #14782