Repository navigation
feat(lean): grothendieck Partie 64 — invariance de la condition de faisceau egaliseur - #14053
Conversation
…isceau egaliseur (#2159) Ajoute un module jumele FR/EN qui pousse l'invariance de la condition de faisceau produit-equaliseur jusqu'a la forme equaliseur elle-meme : - equalizer_sheaf_condition_iff_of_nat_equiv : la condition equaliseur (forme cribles, Equalizer.Sieve.w) est preservee dans les deux sens par une equivalence naturelle composant par composant — version « forme equaliseur » de isSheaf_iff_of_nat_equiv (Partie 7), ni dans Mathlib ni dans la Partie 63. - equalizer_arrows_iff_sieve_generate : la condition equaliseur (forme arrows, Arrows.w) equivaut a celle (forme cribles, Sieve.w) sur le crible Sieve.generate (ofArrows X pi) engendre — pont operationnel entre les deux formes. Preuves axiom-propres : rw / exact sur les lemmes Mathlib et des Parties 63/7 deja mergees. lake build Grothendieck SUCCESS (2927 jobs), distinct_code_sorry = 0, sibling i18n check OK (byte-identite). Voir #2159 (tranche de l'EPIC « nouveaux theoremes »), parent #1646. Co-Authored-By: Claude-Code <noreply@anthropic.com>
jsboige
left a comment
There was a problem hiding this comment.
[Hermes] — #14053 feat(lean): grothendieck Partie 64 — invariance de la condition de faisceau égaliseur
Verdict: COMMENT (LGTM sous réserve de build non-local) — lecture DEEP.
Vérification réalisée (repo monté au head SHA cbabb11) :
- Axiome-propreté : scan des deux modules → aucun
sorryde code, aucunsorryAx, aucunnative_decide, aucunClassical.choice, aucunaxiom. Les seuls matchssorrysont dans des docstrings commençant par--(« Tous lessorrys éliminés à la création » / « Allsorrys eliminated at creation ») — le body prévient explicitement de ce faux positifgrep -c sorry. - Deux théorèmes présents :
equalizer_sheaf_condition_iff_of_nat_equiv(l.77) etequalizer_arrows_iff_sieve_generate(l.100). - Preuves : chaînes
rw [← ...]+exactsur lemmes Mathlib/Parties 63/7. Théorème 1 se réduit àisSheaf_iff_of_nat_equiv(transport IsSheaf→forme égaliseur correct) ; théorème 2 passe parArrows.sheaf_condition+Sieve.equalizer_sheaf_condition+isSheafFor_iff_generate(pont arrows↔sieve correct). Aucune déclaration de preuve vide. - Sibling EN : diff normalisé (namespace
Grothendieck_en→Grothendieck+ strip docstrings) → le code de théorème est byte-identique entre FR et EN ; seuls les bloc-comments d'en-tête (docstrings FR↔EN) diffèrent. Convention i18n #4980 respectée. - Agrégateur :
Grothendieck.lean+2 imports confirmé dans le diff.
Limite honnête : lake build Grothendieck n'a pas pu être relancé ici (aucun outil Lean monté sur cette machine). La claim du body « 2927 jobs SUCCESS » repose sur le build local déclaré, corroborée mais non re-vérifiée de bout en bout. La structure des preuves (rw/exact sur lemmes mergeés) rend l'échec improbable, mais si le CI proof-integrity échoue sur la tête de PR, c'est la seule zone non couverte par cette review.
Aucun credential dans le diff (fichiers Lean purs). La PR est une pure addition (+211/−0) sans retrait de logique.
Path-collision (organ #13359/#13615)Cette PR #14053 (
|
…de faisceau egaliseur (#14056) * feat(lean,#2159): grothendieck Partie 65 — caracterisation de la condition de faisceau egaliseur SheafConditionCharacterization.lean + sibling _en : deux theoremes nouveaux dans la forme egaliseur — equalizer_sheaf_condition_mono (la condition egaliseur descend le long de J1 <= J2, version « forme egaliseur » de isSheaf_of_le) et equalizer_sheaf_condition_iff_separated_compatible (la condition egaliseur equivaut a : separe ET toute famille compatible s'amalgame, version « forme egaliseur » de isSeparatedFor_and_exists_isAmalgamation_iff_isSheafFor). Chaîne les theoremes deja mergees (Parties 63/7) + Mathlib ; independant de la Partie 64 (#14053). lake build Grothendieck SUCCESS (aggregator, 0 erreur, aucun « URL has changed »), 0 sorry reel (count_code_sorry distinct_code_sorry = 0), check_i18n_siblings OK byte-identical. See #2159 (tranche de l'EPIC « nouveaux theoremes »), parent #1646. co-authored-by: Claude-Code <noreply@anthropic.com> * fix(lean,#2159): typo de genre dans la docstring de la Partie 65 « tout famille compatible » -> « toute famille compatible » (docstring du module, ire de la revue NanoClaw COMMENT_WITH_CONCERNS). Aucun changement de corps/énoncé. co-authored-by: Claude-Code <noreply@anthropic.com> --------- Co-authored-by: Claude-Code <noreply@anthropic.com>
Grain: DEEP/lean — lane myia-po-2024:CoursIA — prev: DEEP/lean #14007
Summary
grothendieck_lean(Epic [Epic Grothendieck] Avancer la formalisation Lean (au-dela de la Phase 1) #2159 « nouveaux theoremes ») avec un module jumele FR/EN (Partie 64) qui pousse l'invariance de la condition de faisceau produit-equaliseur jusqu'a la forme equaliseur elle-meme (la Partie 63 l'a reliee aPresieve.IsSheaf; la Partie 7 a montre son invariance pourIsSheaf; personne n'a encore enonce l'invariance dans la forme equaliseur).equalizer_sheaf_condition_iff_of_nat_equiv— la condition equaliseur (forme cribles,Equalizer.Sieve.w) est preservee dans les deux sens par une equivalence naturelle composant par composant. Version « forme equaliseur » deisSheaf_iff_of_nat_equiv(Partie 7).equalizer_arrows_iff_sieve_generate— la condition equaliseur (forme arrows,Equalizer.Presieve.Arrows.w) equivaut a celle (forme cribles,Equalizer.Sieve.w) sur le cribleSieve.generate (ofArrows X π)engendre. Pont operationnel entre les deux formes.rw/exactsur les lemmes Mathlib (Equalizer.Sieve.equalizer_sheaf_condition,Equalizer.Presieve.Arrows.sheaf_condition,Presieve.isSheafFor_iff_generate) et les theoremes deja mergees des Parties 63/7.Changes
Grothendieck/SheafConditionInvariance.lean(FR) — nouveau module, namespaceGrothendieck.Grothendieck/SheafConditionInvariance_en.lean(EN) — sibling byte-identique hors docstrings, namespaceGrothendieck_en(convention i18n i18n(lean): harmoniser les fichiers .lean en francais + traduction anglaise — inventaire, convention, PR pilote #4980).Grothendieck.lean(agregateur) — +2 imports (SheafConditionInvariance,SheafConditionInvariance_en).Review Checklist
grothendieck_lean(3 fichiers, +211/−0).lake build GrothendieckSUCCESS (2927 jobs, local, re-lance apres le dernier commit, sans aucun « URL has changed »);count_code_sorry.py --json→distinct_code_sorry = 0.lake build).git statuspropre (3 fichiers); les seuls symboles touches sont des lemmes Mathlib/Partie63-7 reutilises (pas modifies); aucun autre module grothendieck ne reference les deux nouveaux noms.Anti-regression
sorry:count_code_sorry.py --lake MyIA.AI.Notebooks/SymbolicAI/Lean/grothendieck_lean --json→distinct_code_sorry = 0(avant comme apres; la Partie 64 est une pure addition). Note :grep -c sorrysur les fichiers touches sur-compte (114 naifs = les marqueurs « tous les sorrys elimines » dans les docstrings, contre 0 code sorry) — l'instrument de reference estcount_code_sorry.py.rw/exactsur lemmes deja vettes (Mathlib + Parties 63/7 mergees) — pas denative_decide, pas desorryAx, pas d'usage explicite deClassical.choice. Job CIproof-integrity(lean-grothendieck.yml→lean-axiom.yml,target-modules: "*",fail-on-sorry: true) couvre le module FR; le sibling_enest exclu par defaut (coherence lean: target-modules tenu a la main -> proof-integrity vert hors-cible (26 modules hors vue sur 4 lakes) #10889). Verification locale faite; le job CI confirmera sur la tete de la PR.Notebook-specific
.ipynbtouche.See #2159 (tranche de l'EPIC « nouveaux theoremes »), parent #1646.