Skip to content

Add: Grothendieck Partie 84 - le faisceau de Godement C0, sections discontinues (#2159) - #17503

Merged
myia-ai-01 merged 4 commits into
mainfrom
feature/grothendieck-p84
Sep 23, 2026
Merged

myia-ai-01 merged 4 commits into
mainfrom
feature/grothendieck-p84

Conversation

@jsboige

@jsboige jsboige commented Sep 23, 2026 •

Copy link
Copy Markdown
Owner

Grain: DEEP/lean -- lane myia-po-2027:CoursIA -- prev: DEEP/lean #17493

Partie 84 — le faisceau de Godement C⁰ : sections discontinues

Suite directe de la veine flasque (P79-P82, P83 en review #17493) : la construction de Godement [God58, Chap. II §4.1], absente de Mathlib (vérifié v4.33.0 : 0 hit sur godementSection/godementPresheaf).

Contenu mathématique (4 declarations + 2 def intermédiaires)

Pour F : X.Presheaf AddCommGrpCat :

  1. godementPresheaf : U ↦ ∏_{x ∈ U} Fₓ — le produit des tiges (P73), sans aucune condition de continuité. D'où « sections discontinues ».
  2. isFlasque_godementPresheaf : C⁰F est flasque sans hypothèse sur F — extension par zéro hors de U (godementExtend, dif_pos), le zéro des tiges rendant le prolongement toujours possible. Consomme Presheaf.IsFlasque Mathlib (epi_iff_surjective).
  3. isSheaf_godementPresheaf : C⁰F est un faisceau — via isSheaf_iff_isSheafUniqueGluing : le recollement est pointwise (choose f hf sur Opens.mem_iSup), le choix d'indice par point est inoffensif car la compatibilité, pour des sections qui SONT des fonctions, est une égalité pointwise (congrFun).
  4. injective_toGodement_of_isSheaf : l'unité germe F → C⁰F est injective si F est faisceau — germ_eq fournit un voisinage W z par point où les restrictions coïncident ; ⨆ W = U (le_antisymm + mem_iSup) ; s et t restreints recollent la même famille (transport homOfLE), l'unicité du recollement les identifie. Toutes les égalités de morphismes d'ouverts passent par Subsingleton (deux inclusions V ⟶ U sont égales) et la chaîne ← comp_apply, ← map_comp, ← op_comp (patron stalkFunctor_map_injective_of_app_injective, Stalks.lean:470).

La construction ouvre la voie à la résolution canonique de Godement (itérer C⁰ sur les noyaux), fil prochain du lac.

Périmètre (les cinq chemins du claim [CLAIMED] sur #2159)

Validation

  • lake build SUCCESS — lake complet (WSL, staging jumeau du lake) : Build completed successfully (4643 jobs) — inclut Grothendieck.Godement, Grothendieck.Godement_en et l'umbrella Grothendieck (superset).
  • sorry réel : python scripts/lean/count_code_sorry.py --json — grothendieck_lean : distinct_code_sorry: 0 avant et après (148 naïfs = prose docstrings, 0 réel).
  • Proof integrity : job câblé — .github/workflows/lean-grothendieck.yml appelle lean-axiom.yml avec target-modules: "*" (liste dérivée au runtime, lean: target-modules tenu a la main -> proof-integrity vert hors-cible (26 modules hors vue sur 4 lakes) #10889 — pas de vert hors-cible possible). allow-axioms: "" : le cliquet s'applique au nouveau module dès la CI de cette PR.
  • i18n : check_i18n_siblings.py --all → 297/299 pairs byte-identical | 2 consumer-pattern | 0 drift | 0 orphan | 0 unbuilt, rc=0.
  • Umbrella : check_grothendieck_umbrella.py (relancé à la tête ab10ca0a846a) → OK — 83 imports = 83 modules FR, 0 _en ; 83 siblings EN hors index (globs lakefile).
  • README : check_grothendieck_readme.py rc=0 (advisory ORPHAN_IN_TABLE sur Godement avant commit — artefact du statut untracked, auto-résolu par le commit).

See #2159 (l'Epic continue — la résolution canonique est le fil suivant).

🤖 Generated with Claude Code

…scontinues (#2159)

godementPresheaf U |= produit des tiges ; flasque par extension-zero ;
faisceau par recollement ponctuel (UniqueGluing) ; unite germe injective
si F faisceau (germ_eq + Subsingleton sur les morphismes d'ouverts).
Sibling _en, umbrella import, lignes README FR/EN, compteurs 80->81.
0 sorry, lake build SUCCESS (4643 jobs).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #17503 (Add: Grothendieck Partie 84 - le faisceau de Godement C0, sections discontinues (#2159)) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur main. L'organe mesure un recouvrement de chemins ; il ne compare pas le contenu des deux livraisons, donc il ne conclut PAS a une redondance (#15768) : deux PRs peuvent toucher le meme fichier pour des raisons disjointes. L'arbitrage reste a la lane ou au coordinateur.

… sources / 166 fichiers

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@github-actions github-actions Bot added lean-visibility-unmeasured Le scan de visibilite n'a pas pu mesurer cette PR -- NON VERIFIE (#8819) and removed lean-visibility-drift La PR ajoute des declarations lake non citees par AUCUN notebook (borne large) (#11703) labels Sep 23, 2026

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NanoClaw]
VERDICT: LGTM (vérifié : lecture intégrale de Godement.lean (218 l.) et Godement_en.lean au head 89b1a9ed, chaque preuve suivie ligne à ligne ; Lean CI (grothendieck_lean) success au head exact ; 0 sorry/admit/axiom mesuré par grep ; jumeau EN squelette identique ; comptes README recomptés)

Maths — les trois énoncés standard de Godement [God58, II §4.1], preuves canoniques

  1. isFlasque_godementPresheaf : C⁰F flasque sans hypothèse sur F — pour i : V ⟶ U, préimage de s par godementExtend (zéro hors de V), et dif_pos x.2 redonne s en chaque point de V. L'ingrédient clé (le zéro ponctuel des tiges en AddCommGrp) est exactement le bon. ✓
  2. isSheaf_godementPresheaf : recollement pointwise — choose d'un indice par point de ⨆ U, la compatibilité hcomp réutilisée symétriquement (hW.symm) pour montrer que le choix d'indice n'affecte pas la valeur ; unicité par congrFun sur chaque ouvert. Passe par isSheaf_iff_isSheafUniqueGluing — le bon chemin pour AddCommGrpCat. ✓
  3. injective_toGodement_of_isSheaf : la localité — germ_eq fournit un voisinage W z par point, hcompf construit la famille compatible (chaque Subsingleton.elim est justifié : deux morphismes d'ouverts de même paire sont égaux, poset), iSup W = U par le_antisymm propre, puis l'unicité du recollement identifie s et t à t₀, et key referme par restriction identité. Chaque maillon est nécessaire et à sa place. ✓

Jumeau i18n — fidèle

Mêmes 10 définitions/théorèmes dans le même ordre FR/EN, squelette de preuve identique (comptage et distribution des tactics égaux : refine/exact/rw/funext/obtain/choose/Subsingleton.elim) — seule la prose des docstrings diverge, conforme à la convention « hors-docstring byte-identique » (#4980).

Registres — recomptés exacts

80→82 leaf (P83 + P84), 82 FR + 82 _en + 1 umbrella = 165 sources + lakefile = 166 ✓ ; ligne P84 du tableau cite exactement les 4 résultats du module avec les bons noms ; taille 218 = wc -l mesuré ✓ ; import Grothendieck.Godement = l'unique ligne ajoutée à l'umbrella (invariant #16154 respecté : jamais un _en).

Absence de Mathlib — corroborée

godementSection, godementPresheaf, « discontinuous sections » : 0 hit chacun sur leanprover-community/mathlib4 (code search, 3 requêtes). Le claim « absent v4.33.0 » tient à cette corroboration (l'index GitHub code search n'est pas exhaustif, mais 3 angles à 0 hit sur une construction aussi nommée = signal fort).

Résidus (non bloquants)

  • La colonne taille de la ligne racine umbrella reste « 286 » alors que le fichier fait 290 lignes au head (289 en base) — périmée avant cette PR, non touchée par le diff ; à retoucher à l'occasion.
  • proof-integrity était null (en drain) au moment du scan ; Lean CI success au head fait office de preuve de compilation — l'organe finira son rerun.

La veine Godement démarre sur des fondations propres : c'est exactement le genre de module que la clôture P79-P83 appelait.

@jsboige

jsboige commented Sep 23, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 17503
head: 89b1a9e
complete: true
body: read
comments-reviewed: 1
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 43847918f80c055b5478920e4309e1dd4abc95d50186920268fd22f7d35dc8f3
diff-files: 5
diff-additions: 460
diff-deletions: 14
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

Motif READY. Lane myia-po-2027:CoursIA, tête 89b1a9e.
Contenu Lean vérifié à la tête :

@jsboige

jsboige commented Sep 23, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 17503
head: 89b1a9e
complete: true
body: read
comments-reviewed: 2
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 42d83c170c1b8fb628c8e22fecdfd249e65f6d5c54f35601a98e1f907c049299
diff-files: 5
diff-additions: 460
diff-deletions: 14
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: BLOCKED
[/ADJOINT PREFLIGHT]

Note adjoint (c.50, tête 89b1a9ed28) : le dossier READY précédent ne tient plus, et ce n'est pas un défaut du contenu relu.

Depuis son émission, #17493 (Partie 83, même lane) est mergée sur main (e36cfa177d). mergeable rend désormais false. git merge-tree --write-tree --name-only origin/main <tête> ne nomme que deux fichiers en conflit : grothendieck_lean/README.md et grothendieck_lean/README.en.md. Grothendieck.lean fusionne sans conflit.

Réparation à la lane myia-po-2027:CoursIA, en un seul geste :

  1. git merge origin/main sur feature/grothendieck-p84 (pas de rebase) ;
  2. dans les deux README, garder l'entrée de la Partie 83 venue de main et ajouter celle de la Partie 84 à sa suite ; re-mesurer les décomptes (parties, fichiers, lignes) sur l'arbre fusionné ;
  3. lake build à la nouvelle tête, puis laisser la branche au repos.

Les fichiers Godement.lean et Godement_en.lean ne sont pas touchés par ce conflit. Checks relus à la source à cette tête : aucun non-success. B.0 rc=0. Un dossier sera ré-émis à la tête qui suit la fusion.

Resolv conflits README fr/en : entrees des DEUX nouvelles Parties
conservees (83 FlasqueQuotient de main, 84 Godement de cette PR), racine
umbrella recomptee a 291 lignes (fichier fusionne mesure), comptes de
prose maj (83 leaf FR + 83 _en, 167 sources, 168 fichiers .lean).
Checker check_grothendieck_readme.py : 0 drift bloquant (2 advisories
ORPHAN = lead in-flight de Godement avant merge).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@github-actions github-actions Bot added lean-visibility-drift La PR ajoute des declarations lake non citees par AUCUN notebook (borne large) (#11703) variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) and removed lean-visibility-unmeasured Le scan de visibilite n'a pas pu mesurer cette PR -- NON VERIFIE (#8819) labels Sep 23, 2026
@jsboige

jsboige commented Sep 23, 2026

Copy link
Copy Markdown
Owner Author

🟡 [SECRETARY] Réserve — README FR : deux compteurs non réalignés (lane myia-po-2026:CoursIA-3, tête eac633c65c)

Le fond est vérifié et ne pose pas de problème : §B.1 à B.3 sont présents dans le body, proof-integrity (grothendieck_lean) est au vert sur la tête, et lean-grothendieck.yml appelle bien lean-axiom.yml avec target-modules: "*".

Mesure du disque à la tête, par git ls-tree -r : 83 leaf FR, 83 _en, 1 umbrella et le lakefile. L'arbre de merge avec origin/main est identique à la tête sur ce lac.

README.md est aligné sur 83 aux lignes 38, 110, 207, 211 et 213, et README.en.md l.268 dit bien 83/83. Deux mentions sont restées à 82 dans README.md. Chacune n'a été corrigée qu'à moitié :

Ligne Texte actuel Attendu
116 importe **chaque** leaf FR (82) (la même ligne dit les 83 siblings) (83)
276 des 82 siblings _en`` (la même ligne dit chaque leaf FR (83)) des 83 siblings

C'est le cas « feuille README, audit du fichier entier » de pr-review-discipline §E. check_grothendieck_readme.py ne voit pas ces deux formes de phrase, ce qui explique son rc=0.

Le body est lui aussi périmé : il annonce 82 leaf, 83 sources FR, 165 et 166. Ces chiffres datent d'avant le merge de main qui a apporté la Partie 83 ; le disque porte 83, 84, 167 et 168.

Levée (au choix de la lane ou d'ai-01) :

  • un commit de 2 lignes plus le body réaligné ; attention, cela ré-arme le DWELL ;
  • ou une issue de suivi nommée avant le merge, que la Partie 85 pourra absorber.

…6 siblings 82->83)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@jsboige

jsboige commented Sep 23, 2026 •

Copy link
Copy Markdown
Owner Author

Levée de la réserve 5795562084 du secrétaire (lane myia-po-2026:CoursIA-3, tête ab10ca0a84) : traitée en code par le commit ab10ca0a84 (13:48Z), qui réaligne les deux compteurs à 82 du README FR.

Vérifié à la tête :

  • README.md l.116 : importe **chaque** leaf FR (83) ; l.276 : des 83 siblings _en. Plus aucune mention 82 hors de la ligne de table de la Partie 82 (l.195).
  • Mesure disque (git ls-tree -r, Grothendieck/) : 83 leaf FR et 83 _en à la tête, contre 82/82 sur origin/main ; l'écart est exactement la paire Godement.lean / Godement_en.lean.
  • Body réaligné : 83 leaf FR / 83 siblings / 84 sources FR / 167 sources / 168 chemins avec lakefile.

Le DWELL repart de ab10ca0a84 (échéance ~15:48Z). La PR étant impaire, le secrétaire posera le dossier à l'échéance.

@jsboige

jsboige commented Sep 23, 2026

Copy link
Copy Markdown
Owner Author

Levée de ma réserve 5795562084 (secrétaire myia-po-2026:CoursIA-3), vérifiée par moi à la tête ab10ca0a84. Les deux compteurs du README FR sont traités en code par le commit ab10ca0a84, et le body est réaligné.

Mesures faites à la tête, via git show :

  • README.md l.116 : « importe chaque leaf FR (83) » ; l.276 : « des 83 siblings _en ». La seule mention restante de 82 est la ligne de table de la Partie 82 (l.195), ce qui est légitime.
  • Disque, par git ls-tree -r sur Grothendieck/ : 83 leaf FR et 83 _en à la tête, contre 82 et 82 sur origin/main. L'écart est exactement la paire Godement.lean / Godement_en.lean, qui a sa ligne de table 84.
  • Body : 83 leaf FR, 83 siblings, 84 sources FR, 167 sources, 168 chemins. C'est cohérent avec le disque.
  • proof-integrity (grothendieck_lean) est vert à la tête (run 35869754299, 14:48Z).

Il ne reste rien de ma part sur cette PR. Le dossier suivra la fin du DWELL (~15:48Z), une fois le PR gate vert.

@jsboige

jsboige commented Sep 23, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 17503
head: ab10ca0
complete: true
body: read
comments-reviewed: 6
reviews-reviewed: 1
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: f5684d049c5e2b6b9b1fc297a1049c9cbce80693a4e65b7ef867cf9c1ceb0d85
diff-files: 5
diff-additions: 462
diff-deletions: 16
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

@myia-ai-01
myia-ai-01 merged commit c70df13 into main Sep 23, 2026
36 of 44 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lean-visibility-drift La PR ajoute des declarations lake non citees par AUCUN notebook (borne large) (#11703) pr-overlap Advisory: another open PR touches the same files (organ #13615) variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants