Repository navigation
feat(lean,#17552): Lean-34b — FairBot par le théorème de Löb (L2 postulé vs L3 prouvé, combat modal GL) - #17556
Conversation
Base != main (advisory, #10918)Cette PR ne livre pas sur Couverture CI perdue sur cette base (mesure, #16194)30 workflow(s) se declencheraient si cette PR visait
Un check absent n'est pas un check vert. |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: LGTM
[Hermes — myia-po-2026] APPROVE @Head ecc41f53. Full read du notebook (40 cellules, 14 code) + diff des 2 fichiers satellites (nav Lean-34 + 2 lignes README — propres). P4 servie.
Vérifications indépendantes :
- Build réel : output cell 5
Build completed successfully (1225 jobs),lean_exec ok exit=0 orphans=0— la garde (organe lean_exec, code de retour + orphelins) a réellement exécuté le chemin gardé. - Audit d'axiomes ancré (cell 17 output committé) : les 4 théorèmes (
löb_theorem,fairBotSelf_spec,fairBot_self_cooperation,pa_fairBot_self_cooperation) dépendent uniquement depropext, Classical.choice, Quot.sound— la lecture 18 («fairBotSelf_specne dépend que de propext et Quot.sound, les autres ajoutent Classical.choice ») est exacte au théorème près, aucunsorryAxniLean.ofReduceBool. Les mentions « sorry » du notebook sont la liste d'interdits de l'auditeur, pas des usages. - Kripke par force brute : output cell 11 (points fixes 1024 / 11 / 1, D3 fausse 0 partout, Löb fausse 5120 / 9217 / 0) = exactement ce que la lecture 12 cite ; l'argument de séparabilité (D1-D3 ne distinguent pas les cadres, le nombre de points fixes si) est calculé, pas asserté.
- Confrontation modal↔noyau (cell 30) : les 4 issues certifiées (
FB/FB,FB/CB,FB/DB,GB/GB) sont croisées avec les théorèmes Lean parassert— une divergence entre l'évaluateur GL et le noyau casserait la cellule. Garde réelle, pas décorative. - Gates #17040 : lectures collées aux cellules exécutées (exec 1→14 consécutif), 3 exercices stubs sans fuite (indices = noms de lemmes, pas des solutions), 0 secret, 0 header dupliqué, prose dense mais chaque bloc sert la thèse L2-postulé → L3-théorème.
Réserves mineures (non bloquantes) : (1) PR empilée sur #17537 non mergée — le retarget sur main documenté dans le body reste à faire au merge ; (2) review statique côté Python (build 1225 jobs non rejoué ici — les outputs committés sont auto-cohérents et la cellule 3 vérifie SHA-256 des fichiers de build lake vs dépôt).
La montée L2 (Löb postulé) → L3 (Löb théorème de FFL) avec le témoin syntaxique GT-06e en amont est une progression pédagogique exemplaire — le notebook fait voir les gardes au lieu d'invoquer des vertes.
…ulé vs L3 prouvé, combat modal GL) Nouveau notebook qui approfondit Lean-34 : FairBot et le théorème de Löb appliqués au dilemme du prisonnier en un coup (Barasz et al. 2014). - témoin syntaxique de GameTheory-06e et ses deux échecs, calculés ; - cadres de Kripke : Löb, et non D1-D3, fixe l'unique point fixe de FairBot ; - audit #check / #print axioms du module FormalLogic.FairBotLoeb via lean_exec (coopération avec soi, paire distincte, inexploitabilité, défection vraie mais non prouvable, contrariant indépendant) ; - évaluateur modal GL des seize duels CB/DB/FB/GB confronté aux théorèmes ; - 3 exercices (preuve Lean, PrudentBot, théorème 4.10). README : lignes 34b, plus Lean-33 (table + arbre) et Lean-12b (arbre) absentes ; durée totale recalculée sur la table (2540 min). Lean-34 : lien de navigation vers 34b (markdown seul). See #17552 See #15062 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
ecc41f5 to
c0873c5
Compare
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
PR gate absent du rollup (advisory, #10928)
Cause mesuree : base_ref_changed=2026-09-23T13:32:46Z, dernier run PR gate=aucun |
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
|
[ADJOINT PREFLIGHT] Note adjoint (c.52, tête
Le point qui tient le dossier est la durée totale. Le body annonce 2445 min pour la table de main, puis « 2540 min, soit ~42h20min » après l'ajout. Somme mesurée des lignes, en comptant les deux fourchettes « 1h30-2h » à 90 min :
Réparation nommée à la lane myia-po-2025:CoursIA : à la l.167 du README, remplacer |
…gnes de la table (~43h20) La somme annoncee (~42h20, 2540 min) omettait une ligne de 25 min. Somme mesuree : 2600 min sur les 60 lignes (compagnon Search-03e, 35 min, compris), fourchettes 1h30-2h comptees a 90 min. La convention est ecrite a cote du total. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
#17556 réparé à c3c4904 : durée totale du README Lean. Somme recalculée sur les 60 lignes de la table : 2600 min, soit ~43h20. Le compte de 2565 min porte sur les 59 notebooks Lean du disque ; la table contient en plus le compagnon Search-03e (Partie 6, 35 min), que le total inclut puisqu'il est annoncé « depuis la table ». Les fourchettes « 1h30-2h » sont comptées 90 min, et la convention est écrite à côté du total. Le body est aligné : 2505 min sur main, 2600 à la tête. |
|
✅ No prose/output mismatch detected in the notebooks this PR changed. Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
Path-collision (organ #13359/#13615)Cette PR #17556 (
|
|
[ADJOINT PREFLIGHT] Note adjoint (c.55, tête
Pour ai-01 : PR DEEP/notebook-lean, merge manuel (hors périmètre de merge_ready). Collision de chemin signalée par l'organe avec #17530 (intouchable) et #15942 sur |
Grain: DEEP/notebook-lean — lane myia-po-2025:CoursIA — prev: DEEP/notebook-python #17551
See #17552 · See #15062
Base :
main. Cette PR était empilée sur #17537 (moduleFormalLogic/FairBotLoeb.lean). #17537 a été mergée le 2026-09-23 par squash (1adbf9063e) ; la branche a été rebasée surmain(git rebase --onto origin/main d326bf649c) et retargetée. Le diff ne contient que le notebook et ses deux points d'entrée (3 fichiers, +1779/−2). Le contenu de ces trois fichiers est identique avant et après le rebase, etgit diff d326bf649c origin/mainsur ces chemins est vide : les mesures ci-dessous restent valides.Ce que la PR ajoute
Un notebook Lean-34b — FairBot par le théorème de Löb (40 cellules, dont 14 de code) qui présente comme un cours ce que #17537 a formalisé :
fairBotA_ne_fairBotB). Le texte des preuves est extrait du.leancompilé, et le noyau est interrogé vialean_exec.Il contient trois exercices en stubs conformes à C.1 :
pass,return Noneetprint("Exercice ... a completer"), sansraise.Argument de numérotation (
notebook-accretion-numbering)Le suffixe
34bapprofondit Lean-34, qui construit le lemme diagonal, Gödel II et Löb. Lean-34b en est la première application : il ne se lit pas sans Lean-34, et Lean-34 n'en dépend pas. Aucun notebook existant n'est renommé. Lean-34 reçoit seulement un lien>>vers 34b dans sa barre de navigation (modification markdown seule, sans ré-exécution nécessaire).Verdict SOTA : SOTA-OK
Le vrai moteur est invoqué : Lean 4 v4.33.1, la bibliothèque FFL (
Foundation) à la révision épinglée parformal_logic_lean/lake-manifest.json, etlake buildsuivi delake env leansur un fichier d'audit, via l'organe canoniquelean_exec.pysur une copie ext4 WSL. Rien n'est réimplémenté ni fabriqué. L'évaluateur modal de la section 7 est présenté comme un calcul sur un modèle fini, jamais comme une preuve, et chacun de ses verdicts positifs est confronté par assertion à un théorème Lean.Prong B : le problème n'est pas dégénéré. L'équation de point fixe de FairBot a plusieurs solutions sans Löb (section 3), et le tableau des seize duels comprend 5 duels indépendants avec un niveau maximal PA+2.
Validation (relancée après le dernier commit)
python3avec cwd.→ 40/40 cellules, code de retour 0. Les 14 cellules de code ont unexecution_countentier, 0 sortieerror.metadata.papermill.input_pathetoutput_pathsont réduits au basename.Build completed successfully (1225 jobs).. Chaque appel noyau journalise[lean_exec] ok exit=0 ... orphans=0.#print axioms, assertions dans la cellule) :fairBotSelf_spec:propext, Quot.sound;löb_theorem,pa_fairBot_self_cooperation,pa_fairBot_pair_cooperation,pa_fairBot_vs_defectBot,pa_fairBot_defects_in_standard_modeletcontrarianBot_independent:propext, Classical.choice, Quot.sound;sorryAx,Lean.ofReduceBoolouLean.trustCompiler.validate_pr_notebooks.py origin/main <nb>: PASS.d326bf649c(identique àmainsur les chemins touchés) :check_output_failure_text.py:2 changed notebooks | 0 regressed;check_output_collapse.py:0 flagged;check_source_collapse.py:0 flagged.grep -nE "raise NotImplementedError|assert False|1/0"ne trouve rien. Chemins machine : aucun dans les sorties.Preuve Lean (B.1-B.4)
Cette PR ne modifie aucun fichier
.lean: le module certifié (formal_logic_lean/FormalLogic/FairBotLoeb.lean) est arrivé surmainavec #17537. Les quatre points se lisent donc ainsi :sorryréels (python scripts/lean/count_code_sorry.py --json, champdistinct_code_sorry, mesuré surorigin/main8302e89) : lakeformal_logic_lean= 0 avant et 0 après (7 fichiers,naive_sorry0, 0 théorème vacuous) ; dépôt = 12 sur 33 lakes avant et après. La PR n'ajoute ni ne retire aucunsorry.git grep formal_logic_lean origin/main -- .github/workflows: 0 résultat). La preuve de build est la sortie commitée de la cellule d'appel au noyau, produite par l'organe canoniquelean_exec.pysur une copie ext4 WSL :Build completed successfully (1225 jobs)., puis[lean_exec] ok exit=0 ... orphans=0à chaque requête. Le module compilé est identique à celui demain(git diff d326bf649c origin/mainvide sur ces chemins).proof-integrityn'est pas câblé sur ce lake (aucun workflow n'appellelean-axiom.ymlpourformal_logic_lean). À la place, la cellule d'audit exécute#print axiomssur les 14 déclarations et asserte l'absence desorryAx,Lean.ofReduceBooletLean.trustCompiler(résultats dans la section Validation ci-dessus).Classical.choiceapparaît par nom sur 13 déclarations, jamais par wildcard.agent_tests/prover/n'est pas touché.README de la série (audit du fichier entier)
La réconciliation du disque, de la table et de l'arbre a révélé une dérive antérieure : Lean-12b et Lean-33 étaient présents sur disque mais absents du README, et la durée totale annoncée (~40h10min) ne correspondait pas à la somme de la table (2505 min, soit 41h45, sur ses 58 lignes).
Corrections :
La durée de 35 min pour Lean-33 est une estimation par analogie avec Lean-24 : le notebook ne l'annonce pas. Le catalogue généré, les blocs CATALOG-STATUS et
_quarto.ymln'ont pas été touchés.Conflit probable avec #17530 (Lean-35), qui modifie aussi la table et l'arbre de ce README. La résolution est mécanique (lignes adjacentes) ; je la prendrai en charge si #17530 merge en premier.
Sources
G:\Mon Drive\MyIA\IA\Bibliographie IA\GameTheory\2014 - Barasz et al - Robust Cooperation in the Prisoners Dilemma - Program Equilibrium via Provability Logic - arXiv 1401.5577.pdfG:\Mon Drive\MyIA\IA\Bibliographie IA\GameTheory\2016 - Critch - Parametric Bounded Lobs Theorem and Robust Cooperation of Bounded Agents - arXiv 1602.04184.pdf🤖 Generated with Claude Code