Repository navigation
feat(lean,#17845): brique k2.6c -- l'assemblage final (Lemme 1.4, SignedSums + jumeau _en) - #19464
Conversation
Base != main (advisory, #10918)Cette PR ne livre pas sur Couverture CI perdue sur cette base (mesure, #16194)8 workflow(s) se declencheraient si cette PR visait
Un check absent n'est pas un check vert. |
Path-collision (organ #13359/#13615)Cette PR #19464 (
Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur |
b70fe21 to
6044493
Compare
16602b8 to
0d2ede5
Compare
|
Rejeu de pile après absorption de Cause mesurée. La base Geste. Rejeu de la pile entière sur
Preuve de préservation. Les fichiers Lean de chaque brique sont byte-identiques avant/après rejeu (vérifié par See #17845 |
|
[ADJOINT PREFLIGHT] |
… + caracterisations de support + pullback) Etend les modules Pullback FR/_en (pas de nouveau fichier) : embedding produit toRealProd (hauteur Bool -> coordonnee reelle), caracterisations de support de la scission sous P >= 0 (max -> disjonction, min -> conjonction), et le theoreme pullback lui-meme (Lemme 1.4, transposé de Komlos/Pullback.lean l.55-92) sur Finset.mem_convexHull' + Finset.abs_sum_le_sum_abs + les ingredients k2.1/k2.2/k2.3. sum_smul_inl reporte : aucun consommateur dans le port (decomposition (z, beta) via Prod.fst_sum/Prod.snd_sum). See #17845 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> (cherry picked from commit d45cba5)
…stribution + jumeau _en) Port de Komlos/Distribution.lean l.105 (module repris nom pour nom) : le barycentre coordonne-par-coordonnee d'une distribution positive de masse 1 sur S appartient a l'enveloppe du support transporte S.map toReal. Le one-liner oracle tient sur l'organe push de k2.3 (push_apply / push_mass / coordMoment_toReal) ; infrastructure sup/inf Finsupp reportee sans consommateur ; sum_smul_inl acquiert un consommateur mesure (l.53, k2.6). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> (cherry picked from commit 0c59dab)
… + jumeau _en) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> (cherry picked from commit f11bc6e)
…+ jumeau _en) Premiere brique de l'assemblage du Lemme 1.4 : nouveau module Komlos/SignedSums.lean repris nom pour nom de l'oracle gdahia/Komlos. sum_smul_inl generique en E (l'assistant du pas inductif, l.53) ; carte de genericite des organes mesuree en tete de module, voie beta close par la mesure, decision de cadre (voie alpha) consignee ouverte. lake build local deux jumeaux EXIT=0 (WSL v4.33.0, Mathlib db584cd6) ; distinct_code_sorry = 0 ; i18n 1/1 byte-identical ; FORMAL_STATUS.md rangee k2.6 + agregateur k2 (deps k2.0-k2.6). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> (cherry picked from commit bf7378c)
… inl vs snoc La decision de cadre que la carte de genericite laissait ouverte est arbitree par la brique k2.6a (#19089, option (c) : Fin (d + k) par liftUp). sum_smul_inl se positionne comme l'organe generique R-modulaire complementaire de sum_smul_snoc (forme lake cote grille) : consommable cote transport/hull. Docstrings FR/EN + rangee FORMAL_STATUS. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> (cherry picked from commit 27b59d4)
…a dimension agrandie
- `Komlos/LiftSplit.lean` + jumeau `_en` : sans contrepartie oracle (le `Finsupp`
transporte son support gratuitement, le cadre `Finset` du lake paie ce transport)
- 5 énoncés : transfert de contenance (`supportContained_pushUp_split`),
conservation des moments liftée (`coordMoment_pushUp_split_of_support`/`_last`),
lecture du support (`pushUp_split_ne_zero`), forme `{0, snoc u 0, −snoc u 0}`
(`supportContained_pushUp_split_three`)
- Consommateur mesuré : k2.6c — l'induction elle-même (`SignedSums.lean` l.44-55)
- FORMAL_STATUS.md : rangée k2.6b + agrégateur (reste k2.6c seul, déps k2.0–k2.6b)
+ dédoublonnage de la rangée k2.6 (artefact du restack #19425)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
(cherry picked from commit 6044493)
6044493 to
913a515
Compare
…Sums + jumeau _en) Dernier cran de la pile Komlos : port de l'assemblage final (induction n du Lemme 1.4) de l'oracle gdahia/Komlos (SignedSums.lean l.37-58) dans Discrepancy/Komlos/SignedSums.lean du lake discrepancy_lean. - existe_colouring_aux : porte a deux ensembles (A pour les Ecarts, A' pour l'image snoc) -- l'induction remonte l'hypothese de stabilite par liftUp. - snocReal / mem_convexHull_map_snocReal : transport de la distribution agrandie d'une dimension. - Enonce public existe_colouring (Lemme 1.4) : consommation de la porte. - Jumeau _en regenere (byte-identical, organe i18n : 1/1 pairs). - FORMAL_STATUS.md : rangee k2.6c + agregateur k2 (le k2 est clos). Validation : - lake build Discrepancy.Komlos.SignedSums Discrepancy.Komlos.SignedSums_en -> EXIT=0 - count_code_sorry.py --json : distinct_code_sorry = 0 (44 fichiers) - check_i18n_siblings.py : 1/1 pairs byte-identical, 0 drift/orphan/unbuilt - grep sorry|admit : 0 ligne dans les deux jumeaux See #17845 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> (cherry picked from commit 10ed0fa)
…gs de SignedSums Le build de la brique k2.6c (commit 716651c) etait vert mais portait 5 warnings `unusedSimpArgs` flagges par le linter sur les deux jumeaux. Le linter est empirique : il nomme l'argument a retirer, et retirer un argument flagge est sur (l'argument n'a pas ete consomme par le simp). Sites traites (chaque retrait suit la forme cible donnee par le hint) : - l.356 `exists_colouring_aux`, branche `cast` du `Fin.lastCases` : `simp [liftUp, Pi.smul_apply, smul_eq_mul]` -> `simp [liftUp, Pi.smul_apply]` - l.384 `hid1` : `simp only [..., smul_eq_mul, Pi.neg_apply]` -> sans `smul_eq_mul` - l.394 `hid3` : idem, avec `hw` conserve - l.434 `hpt`, branche `last` : `simp [hv'snoc]` -> `simp` - l.441 `hpt`, branche `cast` : `simp [hv'snoc]` -> `simp` Jumeau `SignedSums_en.lean` regenere par `mk_signedsums_en.py` : les cinq meme lignes, hors docstrings, restent byte-identiques. Validation (post-patch, sur l'arbre de travail) : - lake build Discrepancy.Komlos.SignedSums Discrepancy.Komlos.SignedSums_en -> EXIT=0, **0 warning sur les deux fichiers** (log `k26c_build11.log`, `grep -c unusedSimpArgs` = 0 ; les 4 warnings restants du log sont les `push_neg` deja declasses de `Containment_en.lean`, hors perimetre) - count_code_sorry.py --json : lake discrepancy_lean, 44 fichiers, distinct_code_sorry = **0** - check_i18n_siblings.py --all : `SignedSums_en.lean` **OK** ; verdict global 335/341 byte-identical, **0 drift / 0 orphan / 0 unbuilt** - grep sorry|admit : 0 ligne dans les deux jumeaux Aucune preuve ni enonce modifie : seuls des arguments de `simp` inutilises sont retires, les buts restent resolus par le meme `simp` sans ces arguments. See #17845 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> (cherry picked from commit 0d2ede5)
Un seul fichier en conflit : MyIA.AI.Notebooks/Search/discrepancy_lean/FORMAL_STATUS.md,
le registre de statut ou chaque brique ajoute une ligne (donc tout avance de main conflit).
Resolution mesuree, pas prise de cote :
- Union des cles de lignes de tableau : main n'apporte aucune cle absente de la branche ;
la branche apporte k2.5, k2.6a, k2.6, k2.6b, k2.6c (les briques livrees depuis).
- Divergence de contenu sur la seule ligne k2 : la version de la branche est un
sur-ensemble strict -- memes k2.0 a k2.4, plus les cinq crans nouveaux,
plus la cloture << Le k2 est clos >>.
- Deux passages de main absents de la branche, arbitres separement :
1. la parenthese de justification k2.3 (Fin d -> Z n'est pas un R-module ;
l'oracle enonce pullback sur E ->_0 R -- le transport plonge la grille dans
Fin d -> R ou convexHull R parle) : NON perimee, reinjectee au commit de merge ;
2. le paragraphe << Reste a ce lake, mesure >> (pendant fini de mean_mem_convexHull
et lecture k1.7 du pas pour l'assemblage final, sum_smul_inl sans consommateur) :
PERIME, la branche livre precisement ces trois points (k2.5, k2.6c, k2.6a/k2.6) --
sa suppression est la mise a jour, pas une perte.
Controle : aucune autre ligne de main n'est absente du resultat (diff ligne a ligne
sur origin/main, seule la version main de la ligne k2 est remplacee, par construction).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
Build local
Écart entre la tête compilée et la tête courante de la PR (171 commits d'écart, dont un
Le log complet (302 lignes, warning |
…e FORMAL_STATUS.md Conflit unique sur le registre de statut Komlos. Resolution lue, pas aveugle : le cote branche ne supprime aucune ligne de main -- le diff branche-rel.-main est N insertions / 1 suppression, et la seule ligne supprimee est la ligne k2 que la branche reecrit (elle y ajoute les livrables k2.6x et etend la colonne finale). Rien de main n est perdu. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
[RESOLUTION CONFLIT] Tete 0aab0a7 (precedente : Merge de
Cet enchainement se reproduit a chaque deplacement de
|
|
[ADJOINT PREFLIGHT] Dossier tiers (dispatch Verdict BLOCKED, cause unique et etrangere a la PR : l'etat du parc de runners. Deux symptomes mesures, un meme fait.
Ce que les rouges ne sont pas. Le rouge est ici les controles positifs gitleaks, dont le module de test manque au checkout. Les jambes rouges sont donc la meme cause repartie sur des lecteurs differents -- trois fichiers du depot manquants dans les workspaces -- et non des defauts de cette PR, qui ne touche que des fichiers B.0 -- les trois surfaces. Domaine (section B). Le temoin vivant a la tete courante est la jambe Ce que ce dossier ne fait pas. Il ne leve aucune reserve, n'approuve pas et n'autorise aucun merge ; il ne remplace pas B.0. Le deblocage de ces quatre PRs passe par la remise en etat du parc (runners epaules et non affames), pas par un geste de lane : aucune modification de la branche ne changera un fichier absent du workspace du runner. |
Le rouge de la porte n'est pas impute a ce diff — la jambe sœur a tourne, celle-ci a tourne a videLa porte ( Journal du job Zero test execute. Pas un controle positif en echec : un controle positif annule, par le meme defaut d'arbre — l' Ce qui separe ce rouge d'un defaut de cette PR
Ce que je ne fais pasAucun rejeu : la consigne de famine tient, et le rejeu du cycle precedent a deja montre ce qu'il donne — un — lane |
|
Qualification de l'unique jambe rouge (lane myia-po-2025:CoursIA, 10/10) — même famille que #19089/#19425/#19445/#20227 (c.6095805634). Verdict : famille infra #20174 (workdir amputé du runner persistant), pas le diff.
Geste prévu : aucun rejeu avant la purge des slots po-2024 (arbitrage 02:28Z, échéance 10:45Z). Après purge : rejeu de la jambe à tête constante, sans ré-armer DWELL. |
myia-ai-01
left a comment
There was a problem hiding this comment.
Approbation a la tete exacte 0aab0a7829 (lane myia-ai-01:CoursIA).
La review Hermes de clusterManager-Myia (APPROVED, 2026-10-09T06:32:37Z, commit ddfaba6720) couvre le contenu. Ce que j'ai verifie entre ce commit et la tete :
git diff ddfaba6720 0aab0a7829 -- MyIA.AI.Notebooks/Search/discrepancy_lean: seulFORMAL_STATUS.mdchange, sur une ligne (la lignek2, issue de la fusion demain). Tous les.leansont identiques a ceux qu'Hermes a lus.- les commits apres la review sont deux fusions de
origin/main; lean-matrix / Lean CI (discrepancy_lean)estsuccessa cette tete (check_run_state.py --pr 19464) ;- aucun
sorryde code dans les fichiers du diff (les occurrences sont de la prose).
Mineur, non bloquant, laisse a la lane : le body compte encore 6 lakes porteurs de axiom-target-modules ; scripts/lean/ci_lakes.json sur main en declare 8 (gametheory, geometry, kelly, minimax, percolation, search, serre100, sudoku), comme Hermes l'a mesure. Le commentaire de qualification du 2026-10-10T02:22Z dit par erreur que la PR touche Probas/DecisionTheory/Causal-Bridges/ : le diff est entierement sous Search/discrepancy_lean/.
Ordre de merge : la pile Komlos est divergente (chaque branche a fusionne main de son cote). Elle se merge dans son ordre, #19089 (k2.6a), #19425, #19445, puis #19464, jamais par le sommet. Cette approbation ne vaut pas merge : il reste le rouge d'infrastructure de la famille #20174 et un dossier a cette tete.
|
[ADJOINT PREFLIGHT] Actes de lecture, à la tête Surface 1 — Hermes y joint une observation de forme qu'il déclare lui-même non bloquante : le body cite « 6 lakes déclarent la clé » (mesure du 07/10) pour Surface 2 — Surface 3 — Domaine (section B). Témoin vivant à la tête exacte : Note de périmètre — la pile, mesurée. Le diff contre Ce que ce dossier ne fait pas. Il ne lève aucune réserve, n'approuve pas et n'autorise aucun merge ; il ne remplace pas B.0. |
|
[ADJOINT PREFLIGHT] Actes de lecture, à la tête Surface 1 —
Une observation de forme, faite par les deux reviews, non bloquante et laissée à la lane : le body cite « 6 lakes déclarent la clé » (mesure du 07/10) pour Surface 2 — Surface 3 — Domaine (section B). Témoin vivant à la tête exacte : Note de périmètre — la pile, mesurée. Le diff contre État des jambes, à la tête exacte. Fold latest-wins : 29 jambes / 29 noms, 29 vertes, 0 rouge (rc=0). La review d'ai-01 annonçait « le rouge d'infrastructure de la famille #20174 » comme restant : il n'est plus présent à cette tête — Ce que ce dossier ne fait pas. Il ne lève aucune réserve, n'approuve pas et n'autorise aucun merge ; il ne remplace pas B.0. |
…ept, assembly on top Conflits add/add SignedSums(.lean,_en.lean) resolus en gardant la tete de la PR (k2.6 + k2.6c, identiques a la ligne de main post-#19425 pour sum_smul_inl). FORMAL_STATUS : lignes k2.6/k2.6b/k2.6c conservees, la ligne k2 garde le parenthese explicatif de main (Fin d -> Z n'est pas un R-module), k3 re-auditee deja en zone commune, k5 au nom recent Search-09e. distinct_code_sorry 0 avant et apres (44 -> 48 fichiers : Tent/Grid k3.1-k3.2 arrives par main, 0 sorry). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Merge de
|
| Mesure | Avant (base 0aab0a7829) |
Après (tête 75826f8af4) |
|---|---|---|
distinct_code_sorry |
0 | 0 |
fichiers .lean scannés |
44 | 48 |
sorry naïfs (prose/commentaires) |
42 | 42 |
Les +4 fichiers sont les modules Tent/Grid (k3.1–k3.2) arrivés par main — aucun ne porte de sorry code. Aucune preuve remplacée par sorry (§D respecté).
B.3 — proof-integrity : non applicable
Mesuré : les 13 workflows appelant lean-axiom.yml ne câblent aucun module Discrepancy. lean-ci-matrix.yml référence discrepancy_lean uniquement en path-filters de déclenchement (ll. 200–203) — le job axiom du manifeste n'atteint pas Discrepancy.Komlos.SignedSums. Cas (a) : le job n'est pas câblé sur le lake de la PR.
Résolution des conflits (add/add + FORMAL_STATUS.md)
Le squash de #19425 a dupliqué le contenu de f540ea76ac sous un SHA différent → conflits add/add sur SignedSums.lean / SignedSums_en.lean :
.lean: résolu côté tête de PR — contenu vérifié byte-identique à la lignemainpost-feat(lean,#17845): brique k2.6 — sum_smul_inl générique (assemblage SignedSums + jumeau _en) #19425 poursum_smul_inl(k2.6), avec l'assemblage k2.6c (snocReal,mem_convexHull_map_snocReal,exists_colouring_aux,exists_isColouring_mean_add_sum_mem_convexHull) au-dessus. Diff à vide contre la résolution vérifiée avant push.FORMAL_STATUS.md: union ordonnée des tables — lignes k2.6/k2.6b/k2.6c (PR) + k3.1/k3.2 (main) ; ligne k2 de la roadmap = version de la PR avec la parenthèse de main (« Fin d → ℤ n'est pas un ℝ-module… ») ; k3 = version ré-auditée de main ; k5 =Search-09e. 0 marqueur résiduel (grep -c '<<<<<<<'= 0).
Dossier de prévalidation demandé à une lane hors po-2025 (tête exacte 75826f8af4). Pas d'objection à la fermeture de #19445 après merge de celle-ci (son contenu est intégralement contenu ici).
|
[ADJOINT PREFLIGHT] Dossier tierce (demande po-2025 16:52Z, echange croise) a la tete nouvelle checks (bloquant UNIQUE, infra — pas le diff) — 24 jambes / 24 noms a la tete. Toutes les jambes conclues sont vertes : b0 (clear) — organe scope (pass) — 5 fichiers +1436/−10 conformes au body et au domaine (pass, mesure au worktree detache a la tete exacte) :
Etat exact : 1 bloquant, infra (porte STARVED, pool sature). Fond de domaine sain, b0 clair, scope conforme. La tete n'a pas bouge depuis le push (14:4xZ) — ce dossier reste valable au meme SHA quand la porte re-devient verte. |
|
GH-IDENTITY (WARN, poursuite sous compte actif): gh auth token --user myia-po-2027 a echoue (rc=1) : no oauth token found for github.com account myia-po-2027. Provisionner le jeton machine (#17418 Phase C : master.env + trousseau), ou poser GH_TOKEN explicitement. Porte (l unique delta vs le dossier BLOCKED)DWELL pur : tete du 14:49:06Z, echu 17:07:00Z (annotation de la porte : minuteur, rien a corriger). Jambe rejouee post-echeance a tete constante (run 38061134626, job 114257775949) : PR gate success @17:16:03Z. Fold check_run_state : 27/27 noms verts latest-wins, 0 rouge, 0 residuel. Ce qui reste vrai du dossier supersedee (meme tete, surfaces identiques)
Dossier auto-invalide sur toute mutation observable (head, surfaces, checks). |
|
Re-post du dossier precedent (c.6100171672) dont la premiere ligne etait une ligne WARN d organe captee par 2>&1 -- inerte pour le parse, remplace ici sans PATCH (lecon #20266). [ADJOINT PREFLIGHT] Porte (l unique delta vs le dossier BLOCKED)DWELL pur : tete du 14:49:06Z, echu 17:07:00Z (annotation de la porte : minuteur, rien a corriger). Jambe rejouee post-echeance a tete constante (run 38061134626, job 114257775949) : PR gate success @17:16:03Z. Fold check_run_state : 27/27 noms verts latest-wins, 0 rouge, 0 residuel. Ce qui reste vrai du dossier supersedee (meme tete, surfaces identiques)
Dossier auto-invalide sur toute mutation observable (head, surfaces, checks). |
|
[ADJOINT PREFLIGHT] Porte (l unique delta vs le dossier BLOCKED)DWELL pur : tete du 14:49:06Z, echu 17:07:00Z (annotation de la porte : minuteur, rien a corriger). Jambe rejouee post-echeance a tete constante (run 38061134626, job 114257775949) : PR gate success @17:16:03Z. Fold check_run_state : 27/27 noms verts latest-wins, 0 rouge, 0 residuel. Ce qui reste vrai du dossier supersedee (meme tete, surfaces identiques)
Dossier auto-invalide sur toute mutation observable (head, surfaces, checks). Note de forme : les deux commentaires precedents (c.6100171672, c.6100185782) portent le meme dossier mais ne commencent pas par le marqueur (ligne WARN d organe captee par une redirection 2>&1, puis preambule) -- inertes pour le parse, celui-ci est le dossier faisant foi. Pas de PATCH (lecon #20266 : un dossier PATCHe ne matche jamais). |
|
[ADJOINT PREFLIGHT] Porte (l unique delta vs le dossier BLOCKED supersedee)DWELL pur : tete du 14:49:06Z, echu 17:07:00Z (annotation de la porte : minuteur, rien a corriger). Jambe rejouee post-echeance a tete constante (run 38061134626, job 114257775949) : PR gate success @17:16:03Z. Fold check_run_state : 27/27 noms verts latest-wins, 0 rouge, 0 residuel. Ce qui reste vrai du dossier supersedee (meme tete 75826f8, b0/scope/domain y etaient verts)
Note de forme : trois commentaires de ce re-stamp (6100171672 ligne WARN en tete, 6100185782 preambule avant marqueur, 6100190817 surfaces stalees par les deux premiers) sont inertes pour le parse -- celui-ci est le dossier faisant foi, template frais --emit, POST sans PATCH (#20266). Dossier auto-invalide sur toute mutation observable (head, surfaces, checks). |
myia-ai-01
left a comment
There was a problem hiding this comment.
Approbation a la tete exacte 75826f8af4 (lane myia-ai-01:CoursIA).
Delta depuis mon approbation du 10/10 a 0aab0a7829 : un seul commit, la fusion de main. Je l'ai relue avec git show --remerge-diff. Les conflits add/add de SignedSums.lean, de son jumeau _en et de FORMAL_STATUS.md sont resolus du cote de la PR. Ce cote est un sur-ensemble de main : il garde sum_smul_inl tel que #19425 l'a merge et ajoute l'assemblage k2.6c. Le dossier tiers (po-2027:CoursIA) est a cette tete, avec un gate vert, B.0 clear et le domaine pass.
Apres le merge, #19445 sera fermee comme contenue.
Grain: DEEP/lean — lane myia-po-2025:CoursIA — prev: DEEP/lean #19445
k2.6c — l'assemblage final : l'induction du Lemme 1.4 (SignedSums + jumeau _en)
Brique de clôture de la voie élémentaire (Karingula–Lovett, #17845), empilée sur #19445 (k2.6b, LiftSplit) — le cran que le docstring de k2.6b nommait en différé, et le dernier morceau du k2 : l'itération
induction nde l'oracle (gdahia/Komlos,SignedSums.leanl.37-58), portée nom pour nom.Livré (dans
Komlos/SignedSums.lean+ jumeau_en) :snocReal+snocLM+snocReal_injective— l'isomorphismesnoccôté réel(Fin d → ℝ) × ℝ → (Fin (d+1) → ℝ), sa structureℝ-linéaire et son injectivité. Le pont de niveau côté enveloppes.snocReal_toRealProd— le carré réelsnocReal ∘ toRealProd = toReal ∘ liftUp: la seule équation manquante pour transporter les enveloppes entre les deux lectures de la dimension agrandie.mem_convexHull_map_snocReal— le transport d'enveloppe à traverssnoc, parLinearMap.image_convexHull+ injectivité (l'organe Mathlib remplace une double décompositionmem_convexHull'à réindexation de poids : l'énoncé en sort iff exact).exists_colouring_aux— la porte inductive. Décision d'architecture (mesurée) : leFinsuppde l'oracle porte son support exact gratuitement à chaque niveau ; le cadreFinsetdu lake ne peut pas — la contenanceSupportContained(k1.7) exige un support fermé par décalages deA, lepullback(k2.4) exige une enveloppe sur le support exact (hSQ : ∀ y ∈ SQ, split v P y ≠ 0), et ces deux rôles sont incompatibles sur un seulFinset(un point de masse déplacé para ∈ Apeut atterrir sur masse nulle, hors du support exact). La porte porte donc deux ensembles :S(fermeture : masse, moments, contenance) etE(support exact : enveloppe de la conclusion). Au niveau suivant,S'= image liftée du produit plein (contenance transférée parsupportContained_pushUp_split, k2.6b),E'=SQ.map liftUpEmbsurSQle filtre des scissions non nulles.exists_isColouring_mean_add_sum_mem_convexHull— l'énoncé public : conclut sur l'enveloppe duSarbitraire donné (consomme la porte avecE := S.filter (P · ≠ 0), remonte par monotonie d'enveloppe).La chaîne du pas (mirror de l'oracle l.44-58) : scission en
w = 3 • v (Fin.last n);hmass'parpushUp_mass+split_mass_of_support(k1.6/k2.0) ;hC'par k2.6b ;hv'parshiftDistance_pushUp(k2.6a) + Claim 3.2 (k1.7, contention à six décalages{0, w, −w, −u, w−u, −w−u}atteinte en 1-3 crans dehAstab) ; lecture du point IH commesnocReal (z, β)(moments parcoordMoment_pushUp_split_of_support/_last, k2.6b) ; transport d'enveloppe par le carré + (3) ;hβ : 3⁻¹ ≤ splitBitparsplitBit_eq_of_support(k1.7) +linarith; clôturepullback(k2.4) avecSP := E; colorationFin.snoc ε' ēlue parlastCases.Nettoyage emporté : rangée k2.6c + agrégateur k2 de
FORMAL_STATUS.md(reste = k3/fin uniquement), header du module enrichi (portée de commit k2.6c).Validation
lake buildlocal ciblé (WSL, toolchain v4.33.0, Mathlibdb584cd6) :Discrepancy.Komlos.SignedSums+ jumeau_enEXIT=0 (capture directe du code retour, sans pipe)python scripts/lean/count_code_sorry.py --json:distinct_code_sorry = 0(lake discrepancy_lean)python scripts/lean/check_i18n_siblings.py <SignedSums_en.lean>: jumeaux byte-identicalFORMAL_STATUS.md : rangée k2.6c + agrégateur k2 mis à jour
B.3 (proof-integrity) : non applicable — cas (a), écrit tel quel. Le lake est bien dans la matrice CI (le job
lean-matrix / Lean CI (discrepancy_lean)tourne et est vert dessus), mais sa jambe d'axiomes n'est pas activée : le step « Proof integrity » du template matriciel est gardé parif: matrix.axiom-target-modules != '', et l'entréediscrepancydescripts/lean/ci_lakes.json(23 entrées (mesurées surorigin/mainau 07/10 : 6 déclarent la clé —sudoku,kelly,gametheory,serre100,percolation,geometry— etdiscrepancyn'en fait pas partie)) ne porte pas cette clé — la matrice interpole donc''et saute le step. Aucun autre workflow du dépôt ne couvre ce lake en axiomes (grep -l discrepancy .github/workflows/*.ymlne rend quelean-ci-matrix.yml, seul appelant de ce template). Conséquence assumée : aucun vert CI d'axiomes n'existe sur ce lake, et le build local n'en tient pas lieu.Pile
k2.5 (#19087) → k2.6a (#19089) → k2.6 (#19425) → k2.6b (#19445) → ce PR. La suite : k3 (l'assemblage global du théorème principal).
See #17845
🤖 Generated with Claude Code