Repository navigation
feat(lean,#17845): tranche k3 — Komlos/Tent.lean complet (13 preuves reportées, 0 sorry) - #19563
Conversation
… reportees, 0 sorry) Port integral du Tent.lean de l'oracle (gdahia/Komlos) au pin v4.33.0/db584cd6 : sum_tent, sum_tent_sq, abs_tent_sub_le, step, abs_step_le_one, step_eq_zero, sum_step_sq_le, tent_sub_tent_eq_sum_step, sum_tent_sub_sq_le_nat/_le (borne L2 discrete du Lemme 4.1), support_tent_subset, Icc_neg_add_one, sum_Icc_comp_tent_add_one. lake build SUCCESS sur les deux jumeaux, i18n byte-identical, distinct_code_sorry 0 -> 0 (additif). Ligne FORMAL_STATUS k3.1 + reaudit k3 : la voie oracle est totalement discrete (Grid.lean ensuite). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: LGTM
Deep review de la tranche k3 (Komlos/Tent.lean complet — 13 preuves reportées c.885 livrées, portage grind v4.34 → pin v4.33.0/db584cd6).
Vérifications (artefacts réels, head 39aa436) :
- Diff lu en entier (674 lignes, 3 fichiers :
Tent.lean+215/−26, jumeauTent_en.lean+215/−27,FORMAL_STATUS.md+1 ligne k3.1 + ligne planification k3 réécrite). Les 13 lemmes annoncés sont bien présents en code, corps de preuve complets —support_tent_subset,Icc_neg_add_one,sum_Icc_comp_tent_add_one,sum_tent(Σ tent = M² par induction),sum_tent_sq(3·Σ tent² = M(2M²+1)),abs_tent_sub_le(1-Lipschitz viaabs_max_sub_max_le_abs),step/abs_step_le_one/step_eq_zero,sum_step_sq_le(≤ 2M),tent_sub_tent_eq_sum_step(télescopage),sum_tent_sub_sq_le_nat,sum_tent_sub_sq_le(borne L² discrète ≤ 2·M·m², Cauchy–Schwarzsq_sum_le_card_mul_sum_sq). Chaîne de dépendances interne cohérente (chaque lemme ne consomme que des briques livrées au-dessus de lui dans le fichier). - Sorry-scan sur les blobs head : 0 occurrence de
sorryen code (les 2 matches grep sont les déclarations « 0sorry» de la prose). Claim « 0 sorry » vérifié, pas seulement affirmé. - Preuve-vive CI :
lean-matrix / Lean CI (discrepancy_lean)SUCCESS sur le head — l'organe a réellement compilé ce module (le diff touche précisémentDiscrepancy/Komlos/Tent.lean, périmètre couvert).i18n sibling driftSUCCESS — jumeau EN cohérent (corps de preuve byte-identiques, prose traduite).prose-countsSUCCESS. - Comptes : 19 déclarations
lemma/defpar fichier au head = 21 briques annoncées moinstent/tent_nonnegdéjà présents hors hunk diff — cohérent avec la liste « briques closes » du doc-comment. - FORMAL_STATUS.md : ligne k3.1 fidèle au diff livré (les adaptations listées —
Set.Iccforcé, cast entier global,omegane splitte pas|j|,sum_range_sub'absent → induction — correspondent aux corps de preuve réels du diff) ; ligne k3 du plan réécrite « voie totalement discrète » cohérente avec l'infrastructure livrée (pas deintervalIntegraldans le diff, sommes closes + L² discret seulement). - Security scan : 0 match.
PR gate failure = minuteur DWELL (plancher 120 min, écoule 21:07Z — mécanique, « rien à corriger dans le code », non-organe). Le seul autre check non-vert est l'advisory paragraph-length non-bloquant encore in_progress.
Note d'adaptation remarquable par sa précision mesurée (chaque substitution de tactique justifiée par ce qui est absent au pin, sondé via lake env lean) — c'est la partie la plus utile du fichier pour les tranches k4/k5.
[Hermes hermes-pr-review, cycle :19 06/10, host f6be46d1b7a3, sig=0d26130d]
|
[ADJOINT PREFLIGHT] |
…eree FORMAL_STATUS.md Conflit unique (content) : MyIA.AI.Notebooks/Search/discrepancy_lean/FORMAL_STATUS.md. Cause : #19563 (tranche k3, Tent.lean, merge 9eb7a38) et cette branche (k2.2, convexite) ecrivent la meme region du registre -- k3 ete livree sur main avant la racine k2.2 de la pile. Resolution UNION, verifiee par double construction (main+cotes-branche == branche+cotes-main, byte-identique) : - tableau des briques : les DEUX lignes inserees conservees, ordre numerique k2.1 < k2.2 (branche) < k3.1 (main) ; - tableau de planification : ligne k2 = version branche (k2.2 livre, reste pullback bloque sur transport de dimension) ; ligne k3 = version main (reaudit oracle discret) -- reecritures disjointes, lignes adjacentes. Coherence verifiee : k3.1 (Tent.lean, algebre discrete) n'introduit aucun convexHull -- l'affirmation k2 'convexHull passe de 0 a sa premiere occurrence' survit a l'union. numstat: vs origin/main +2/-1 ; vs dd10e15 +2/-1. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Grain: DEEP/lean — lane myia-po-2025:CoursIA — prev: LIGHT/docs #19538
Tranche k3 du lake discrepancy_lean :
Komlos/Tent.leancomplet (13 preuves reportées)See #17845 (EPIC distillation Karingula–Lovett, tranche k3 — le fichier
Tent.leande l'oracle Dahia est désormais porté en intégralité).Ce que la tranche livre
Les 13 preuves explicitement reportées en c.885 (delivery #17918) sont closes, chacune portée du
grindv4.34 de l'oracle vers des tactiques disponibles au pin du lake (v4.33.0 / Mathlibdb584cd6) :support_tent_subset,Icc_neg_add_one,sum_Icc_comp_tent_add_one,sum_tent,sum_tent_sq,abs_tent_sub_le,step,abs_step_le_one,step_eq_zero,sum_step_sq_le,tent_sub_tent_eq_sum_step,sum_tent_sub_sq_le_nat,sum_tent_sub_sq_le.Le résultat porteur est
sum_tent_sub_sq_le(∑ (tent M j − tent M (j−m))² ≤ 2·M·m²) — l'ossatureL²discrète du Lemme 4.1 (l'estimation de densité-tente). Mesure contre l'oracle : la voie Dahia est totalement discrète —Grid.leanconsommesum_tent_sq+sum_tent_sub_sq_lepour construire le poids normaliségridF N(distanceL²de translation ≤ |m|/(N·√12)) ; le « FTC sur segments » du papier est remplacé par la discrétisation sur grille. La tranche suivante (k3.2) est le port deGrid.lean.Adaptations grind → v4.33 (détail par preuve en note de fin de fichier)
abs_tent_sub_le: la triangulaire inverse est reconstruite viaabs_max_sub_max_le_abs+abs_abs_sub_abs_le_abs_sub(les nomsabs_add/neg_le_abs_selfde Mathlib récent sont absents au pin — sondé parlake env lean).step_eq_zero/support_tent_subset:omegane splitte pas|j|sur ℤ (atome opaque — mesuré) ; chaque borneM ≤ |j|passe par(by omega : M ≤ -j).trans ((le_abs_self _).trans_eq (abs_neg _)).support_tent_subset:Function.support ... ⊆ IccforceSet.Icc(leIccnu sousopen Finsets'élabore en coercion↑(Finset.Icc)— sonmem_Iccne s'applique pas, mesuré au probe).Icc_neg_add_one/sum_Icc_comp_tent_add_one: les bornes en cast entier global((M + 1 : ℕ) : ℤ)—(M + 1 : ℤ)se distribue en↑M + 1et ne matche jamais le↑(M + 1)produit par l'induction ; les gardessum_insertportent la forme cast explicite.sum_tent: lerwdirect avecf := idéchoue (le patternid (tent …)n'existe pas dans le but) — normalisationhave h := …; simp only [id] at havant lerw.tent_sub_tent_eq_sum_step:sum_range_sub'absent au pin → induction manuelle surk(Nat.cast_add/Nat.cast_one+sum_range_succ+ring).Preuves de validation
sorryréel avant/après :python scripts/lean/count_code_sorry.py --json→ lake discrepancy :distinct_code_sorry0 → 0 (tranche additive : les 13 preuves étaient absentes demain, pas des stubssorry— aucune preuve existante n'est remplacée ; total dépôt inchangé à 12, hors périmètre de cette PR).lake build SUCCESSlocal (WSL, pin v4.33.0 / db584cd6, oleans Mathlib pré-construits) :lean-axiomn'est pas câblé sur ce lake (aucune cléaxiom-target-modulespourdiscrepancydansscripts/lean/ci_lakes.json, cas (a) du §B.3). La gate sorry-baseline du lake ("sorry-baseline": "0",sorry-filter-mode: real) couvre le comptage réel.python scripts/lean/check_i18n_siblings.py <Tent.lean> <Tent_en.lean>→OK — 1/1 pairs byte-identical | 0 drift | 0 orphan(rc=0).FORMAL_STATUS.mdk3.1 documente la tranche + le reste mesuré de k3 (port deGrid.lean, la voie étant totalement discrète — la ligne de planification k3 est réécrite en conséquence).Scope du diff
Discrepancy/Komlos/Tent.lean(FR) : 8 briques inchangées (byte-identiques à feat(discrepancy,#17845): port Komlos.Tent from Dahia (buildable core) #17918) + 13 preuves nouvelles + note d'adaptation.Discrepancy/Komlos/Tent_en.lean(EN) : miroir.FORMAL_STATUS.md: ligne k3.1 + ligne de planification k3 réécrite.🤖 Generated with Claude Code