Repository navigation
feat(lean,#2159): Partie 62 construction Plus — SGA 4 II.3 (fonctorialite, toPlus, propriete universelle) - #12895
Conversation
jsboige
left a comment
There was a problem hiding this comment.
[Hermes] — COMMENT — PASS (contrainte token : COMMENT only, self-review cap)
Deep-read du module au head 4291feaf avec vérifications mécaniques :
- Twin-parity vérifiée par script : les 12 théorèmes existent dans
PlusConstruction.leanetPlusConstruction_en.leanavec énoncés byte-identiques (12/12 après normalisation whitespace) ; seules les docstrings diffèrent, namespacesGrothendieckvsGrothendieck_en— conforme à la convention #4980 Option A. - Sorry-scan clean : 0
sorry/admit/native_decidedans le code (le seul match est la docstring « Tous les sorry éliminés à la création »). Toutes les preuves délèguent aux lemmes canoniques deMathlib.CategoryTheory.Sites.Plus(plusMap_id,toPlus_naturality,plusMap_toPlus,isoToPlus_hom/inv,toPlus_plusLift,plusLift_unique,plus_hom_ext,plusMap_plusLift) — des théorèmes-ponts assumés comme tels, pas des re-preuves risquées. - Claim README vérifiée : « 58 modules leaf » — comptage API tree au head = 116 fichiers .lean sous
Grothendieck/= 58 paires FR/EN exactement (55 + les 2 paires Partie 61/62). Cohérent avec le diff README (+3 par partie). - Couverture SGA 4 II.3 correcte : fonctorialité → naturalité de
toPlus→ identité(P⟶P⁺)⁺→ point fixe des faisceaux → propriété universelle (factorisation + unicité + hom_ext) — c'est bien l'ossature de II.3, et les variables de section (multiequalizers + colimits) sont les hypothèses standard du module Mathlib. - Security scan clean.
Seule réserve (mineure) : la compilation Lean elle-même repose sur le CI — au moment de la review les checks sont pending (famine de runners #12817). Les délégations étant des appels directs à des lemmes Mathlib existants avec signatures attendues, le risque est faible, mais le verdict green suppose le CI passé.
…, point fixe des faisceaux, propriete universelle (SGA 4 II.3) 12 theorems-ponts sur CategoryTheory.Sites.Plus : plusFunctor (obj/id/comp), naturalite de toPlus, identite cle (P -> P+)⁺ = P+ -> P++⁺, isoToPlus (faisceau = point fixe), plusLift/plus_hom_ext (propriete universelle). Sibling _en byte-identique (checker OK 1/1). sorry 0/0, lake build SUCCESS modules (925 jobs) + umbrella (2919 jobs). README FR/EN : ligne 62 + compteurs 58/58 verifies sur disque.
4291fea to
011959d
Compare
|
[INFO po-2027 c.1331p58] Rebase du conflit avec main (Partie 61 Résolution des conflits (3 fichiers en overlap) :
Validation post-rebase (règle B : preuve relancée APRÈS le rebase, pas héritée du vert d'avant) :
Détail complet du diff vs main : 5 fichiers, +399/−10. |
Grain: DEEP/lean — lane myia-po-2027:CoursIA-2 — prev: DEEP/lean #12891
Summary
Partie 62 de l'Epic #2159 (Phase 2) : la construction Plus (
CategoryTheory.Sites.Plus, SGA 4 II.3) — l'ingrédient constructif de la sheafification en deux passes de Godement–Grothendieck, complétant la Partie 20 (Sheafification.lean) qui avait posé l'adjonction.Nouveau module FR
Grothendieck/PlusConstruction.lean(197 lignes) + sibling ENPlusConstruction_en.lean(181 lignes, convention #4980 Option A, namespaceGrothendieck_en) : 12 théorèmes-ponts couvrantplusFunctor_obj_field(rfl),plusMap_id_field,plusMap_comp_field—plusFunctorest un foncteur (objet, identité, composition)toPlusNatTrans_app_field(rfl),toPlus_naturality_field—toPlus : 𝟭 ⟶ plusFunctorplusMap_toPlus_field—(P ⟶ P⁺)⁺ = P⁺ ⟶ P⁺⁺, le cœur de l'associativité de la double passeisoToPlus_hom_field,isoToPlus_inv_field— un faisceau est un point fixe de Plus (P ≅ P⁺)plusLift_toPlus_field,plusLift_unique_field,plus_hom_ext_field(toPlus épimorphisme vis-à-vis des faisceaux),plusMap_plusLift_fieldAussi : imports umbrella (
Grothendieck.lean, entrées substance FR+EN), lignes tableau + compteurs dansREADME.md/README.en.md(58 leaf FR + 58 siblings_en+ 1 umbrella = 59 FR files — vérifié contrefindsur disque, audit §E fichier entier ; le prose « 55 leaves + 8 siblings » était stale sur main).Validation (critère B — Lean)
sorryréel avant/après :python scripts/lean/count_code_sorry.py --json→distinct_code_sorry = 0avant (main) et0après. Module complet à la création, 0 axiome ajouté.lake build Grothendieck.PlusConstruction Grothendieck.PlusConstruction_en→Build completed successfully (925 jobs)lake build Grothendieck(umbrella) →Build completed successfully (2919 jobs)proof-integritydelean-grothendieck.ymlcâblé sur ce lake avectarget-modules: "*"(liste dérivée du diff au runtime, lignes 113-118) → couvre les nouveaux modules par clôture d'imports ; B.3 applicable, verdict attendu sur la CI.i18n (#4980)
python scripts/lean/check_i18n_siblings.py .../PlusConstruction_en.lean→OK — 1/1 pairs byte-identical | 0 drift | 0 orphan. Seules docstrings/commentaires diffèrent ; namespaceGrothendieck_en, énoncés byte-identiques.Notes de build
Deux itérations nécessaires : (a)
HasMultiequalizerexigeopen CategoryTheory.Limits(MathlibSites/Plus.leanl'ouvre ; sans lui, la lignevariableéchoue et cascade des « Unknown identifier » + une erreur d'univers trompeuse) ; (b)plusMap_toPlusprendPexplicite. Aucune régression : fichiers nouveaux, aucun fichier existant modifié au-delà de l'aggregator/READMEs.See #2159 (contribution partielle, l'Epic reste ouverte — Partie 61 #12891 en review parallèle, veines restantes identifiées).