Repository navigation
feat(lean,#15062): FairBot par le théorème de Löb prouvé — FormalLogic.FairBotLoeb (L3) - #17537
Conversation
…c.FairBotLoeb (L3) Module consommateur L3 de l'EPIC #15062 dans le lake formal_logic_lean : la coopération FairBot x FairBot est déduite du théorème de Löb que FFL prouve (ProvabilityAbstraction.löb_theorem), sans champ postulé. - section abstraite : tout prédicat de prouvabilité D1-D3 sur une théorie diagonalisable — auto-coopération, coopération mutuelle, non-exploitabilité (Kreisel), CooperateBot, DefectBot, défection non prouvable (Gödel II), ContrarianBot indépendant ; - instanciation arithmétique : prouvabilité standard de PA, paire de FairBots de codes distincts (exclusiveMultifixedpoint), défection vraie dans le modèle standard (SoundOn). Build local du lake complet : 1403 jobs, 0 warning FormalLogic ; distinct_code_sorry 0 -> 0 ; axiomes propext / Classical.choice / Quot.sound. README : audit fichier entier (dépendance ModalLogic, pin LeanTypst 2158f3de, entrées FolBridge / ModalBridge / FairBotLoeb). See #15062 See #15066 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Concern: On n'a pas un notebook associé d'exposition? |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[NanoClaw] review statique (conteneur ai-01 sans ceinture Lean : zéro rejeu ce tour ; vérification par lecture intégrale des sources, greps, et cohérence des artefacts).
VERDICT: LGTM (vérifié : lecture complète des 3 fichiers au head d326bf649c0867d99d5fd4463d71d0a6f11cdc53, +300/−9)
Ce qui est mesuré et exact
Module FormalLogic/FairBotLoeb.lean (249 lignes lues intégralement).
- Zéro axiome de secours : grep des 249 lignes →
sorryAx/native_decide/sorry/admit/axiom/unsafe= 0 occurrence. Uniques hits : 3noncomputable(fairBotPairBody,fairBotA,fairBotB) — attendu pour des points fixes multiples. Cohérent avecdistinct_code_sorry 0du body. - Tous les énoncés cités par le body existent au bon endroit :
fairBotSelf_spec(l.92, clause diagonaleF ↔ 𝔅 Fpardiagsur la théorie de base),fairBot_self_cooperation(l.97, une application deProvabilityAbstraction.löb_theoremsur la moitiéK_right),fairBot_mutual_cooperation(l.105),fairBot_unexploitable(l.118,𝔅.KR= Kreisel),fairBot_vs_cooperateBot(l.125,D1 (by simp)= nécessitation),fairBot_vs_defectBot(l.131),fairBot_vs_defectBot_defection_unprovable(l.143, viacon_unprovable),contrarianBot_independent(l.154,gödel_independent). - Preuve de
fairBot_mutual_cooperationdéroulée à la main : D2 distribue𝔅(p ⋏ q) → 𝔅p ⋏ 𝔅q, les clauses croiséesp ↔ 𝔅q/q ↔ 𝔅pfournissent𝔅q → pet𝔅p → q, Löb conclut sur la conjonction. Exactement la dérivation Barasz et al. 2014 annoncée. - Paire arithmétique :
fairBotA/fairBotBparexclusiveMultifixedpoint (fairBotPairBody T) 0/1(l.185-190),fairBotA_ne_fairBotB(l.195), clauses croiséesfairBotA_spec/fairBotB_specparexclusiveMultidiagonal(l.201-215), puisstandard_fairBot_pair_cooperation=fairBot_mutual_cooperation (fairBotA_spec T) (fairBotB_spec T)(l.218-220) — l'assemblage correspond exactement aux hypothèses du théorème abstrait. pa_fairBot_defects_in_standard_model(l.239-245) :¬ (ℕ↓[ℒₒᵣ] ⊧ 𝗣𝗔.standardProvability ⊥)parSoundOn.sound_on+ cohérence de𝗣𝗔— le commentaire relie correctement àpa_fairBot_vs_defectBot(ni coopération ni défection prouvables, défection vraie dans ℕ). Lecture du second théorème d'incomplétude correcte.- En-tête : la table L2→L3 (l.19-24) est conforme au body —
nec↔bew_def/D1,dist↔HBL2,posIntros↔HBL3,loeb↔löb_theorem(théorème, aucun champ), et le diagnostic « ce qui manque à L2 n'est pas une 4ᵉ condition mais la classeDiagonalization» est cohérent avec le rôle effectif dediag/exclusiveMultidiagonaldans le module.
FormalLogic.lean (+5/−0). Le patch ajoute l'entrée de documentation FormalLogic.FairBotLoeb dans la liste des modules consommateurs et l'import FormalLogic.FairBotLoeb en dernière position — cohérent avec les conventions du fichier (import après le docstring de clôture -/). Rien à redire.
README.md (+46/−9). Les trois dérives annoncées par le body sont réellement corrigées : (1) ModalLogic entre au tableau des pins avec 71968137 et sa justification compat 4.33.1 ; (2) le pin LeanTypst passe de 888d8656 à 2158f3de, avec la cause datée (#17017) ; (3) la structure des modules documente désormais FolBridge et ModalBridge (jusque-là absents). Le chiffre de build « 1403 jobs » du README concorde avec celui du body ; la mention de FairBotLoeb seul à 1225 jobs est cohérente avec le comptage propre. Derive (3) : la phrase d'isolation de l'import arithmétique est réécrite pour couvrir le nouveau module (« l'import arithmétique reste cantonné à deux modules ») — exact au vu des imports L.1-2 du module.
Réserves mineures
- Pas de rejeu. Ni
lake buildni#print axiomsrejoués depuis ce siège (pas de ceinture Lean dans le conteneur). Les claims « 17 déclarations aux axiomes {propext, Classical.choice, Quot.sound} » et « 0 sorryAx/native_decide » ne sont donc pas re-mesurés ici : les greps statiques confirment l'absence de secours dans les sources, et le build 1403/1225 jobs est cohérent entre body et README — mais la mesure noyau reste celle de l'auteur. fairBotA_ne_fairBotBparsimp(l.195-196) : je n'ai pas rejoué la tactique. Elle est raisonnable (deux indices distincts deFin 2sur une fonction de point fixe), mais c'est le point le plus « magique » du module — à confirmer par le CI qui a la ceinture.- La disjointure de ce module avec
FormalLogic.ModalBridgeetGLBridge(imports) se lit sur les patches fournis ; je n'ai pas re-diffé les fichiers antérieurs pour vérifier l'absence de chevauchement de contenu. La note de l'en-tête (« pont GL du même lake :FormalLogic.GLBridge#15923 ») suggère une complémentarité voulue, pas une duplication. - Question ouverte de l'auteur sur le fil (jsboige, 11:16:28Z) : « On n'a pas un notebook associé d'exposition? » — non tranchée par cette PR ; à la décision de l'auteur, pas un défaut du module.
|
Réponse à la question du 2026-09-23 à 11:16Z, « On n'a pas un notebook associé d'exposition ? » : non, pas encore. Aucun notebook de
Le notebook n'est pas ajouté à cette PR, qui reste un module Lean de trois fichiers. La question est reportée sciemment dans l'issue de suivi #17552, ouverte avant le merge. Sa cible est |
|
[ADJOINT PREFLIGHT] |
Grain: DEEP/lean — lane myia-po-2025:CoursIA — prev: DEEP/notebook-python #17536
Résumé
Cette PR livre le module consommateur L3 promis par le body de l'EPIC #15062 (« si le pilote passe »). La coopération FairBot × FairBot y est déduite du théorème de Löb arithmétique que FFL prouve (
ProvabilityAbstraction.löb_theorem), et non d'un champ postulé. Le résultat est ensuite instancié sur la prouvabilité standard de 𝗣𝗔.Le module s'ajoute au lake
formal_logic_lean(FFL CONSUMER_PINNÉ, #15520 / #15916 / #17017). Elle touche trois fichiers : le nouveau moduleFormalLogic/FairBotLoeb.lean, son import dans la racineFormalLogic.leanet leREADME.mddu lake. Aucune dépendance n'est modifiée.Contenu
Section abstraite. Elle vaut pour tout
𝔅 : Provability T₀ Tsur une théorieT₀diagonalisable.fairBotSelf_specT₀ ⊢ FB 🡘 𝔅 FB(point fixe diagonal)Diagonalization T₀fairBot_self_cooperationT ⊢ FB𝔅.HBLfairBot_mutual_cooperationp 🡘 𝔅 qetq 🡘 𝔅 p, alorsT ⊢ p ⋏ q𝔅.HBLfairBot_unexploitable𝔅.KreiselfairBot_vs_cooperateBotfairBot_vs_defectBotConsistent T, KreiselfairBot_vs_defectBot_defection_unprovableConsistent T, HBLcontrarianBot_independentConsistent T, KreiselInstanciation arithmétique. Elle porte sur
T.standardProvability, pour toute théorie[T.Δ₁] [𝗜𝚺₁ ⪯ T], puis sur 𝗣𝗔.standard_fairBot_self_cooperationetpa_fairBot_self_cooperation: auto-coopération de FairBot.fairBotAetfairBotBsont construits parexclusiveMultifixedpoint.fairBotA_ne_fairBotBétablit qu'ils sont distincts, etfairBotA_spec/fairBotB_specque chacun est le point fixe de la prouvabilité de l'autre.pa_fairBot_pair_cooperationen tire la coopération mutuelle. Cette coopération n'est donc pas réductible à l'auto-référence d'un seul code.pa_fairBot_vs_defectBot: ni la coopération ni la défection ne sont prouvables dans 𝗣𝗔.pa_fairBot_defects_in_standard_model: la défection est pourtant vraie dans ℕ (SoundOn).Pourquoi ce module importe
L2 (#16414) a montré qu'une modalité
bumpvérifie D1–D3 sans vérifier Löb. Ce module rend lisible l'ingrédient qui manquait : le lemme diagonal (Diagonalization), et non une quatrième condition de dérivabilité. La correspondance L2 → L3 est tabulée dans la docstring du module :nec↔bew_def/D1,dist↔HBL2,posIntros↔HBL3, etloeb↔löb_theorem, qui est un théorème et non un champ.Références : Barasz et al. 2014 (arXiv:1401.5577), Critch 2016 (arXiv:1602.04184).
Validation
Compte de
sorry. Mesuré avecpython scripts/lean/count_code_sorry.py --jsonsur le lakeformal_logic_lean:distinct_code_sorry0 → 0 (7 fichiers,naive_sorry0).Build du lake complet. Il est passé par l'organe
scripts/lean/lean_exec.py, en WSL ext4, avec lelakefile.leanet lelake-manifest.jsonde la branche (sources identiques,diff -r).ModalLogic@71968137a été cloné par lake.Le build ciblé
lake build FormalLogic.FairBotLoebcompile 1225 jobs, sans aucun warning dansFormalLogic.Axiomes. La sonde
#print axiomsa été exécutée sur le build complet (fichier temporaire hors dépôt, non committé).La sonde ne trouve ni
sorryAxninative_decide.B.3 (proof-integrity) : non applicable (a). Aucun workflow n'appelle
lean-axiom.ymlpourformal_logic_lean:grep -ln 'formal_logic_lean' .github/workflows/*.ymlne rend rien (#8677). La sonde d'axiomes ci-dessus en tient lieu.README : audit du fichier entier
Le README a été confronté au disque et au manifeste, et trois dérives préexistantes y ont été corrigées :
MyIntelligenceAgency/ModalLogic@71968137(feat(lean,#15066): pont modal Tweety<->FFL — FormalLogic.ModalBridge (tranche C) #17017) était absente du tableau ;LeanTypstétait périmé (888d8656, alors que le manifeste porte2158f3dedepuis feat(lean,#15066): pont modal Tweety<->FFL — FormalLogic.ModalBridge (tranche C) #17017). L'absence de licence racine a été re-vérifiée au nouveau pin, ainsi que la licence Apache-2.0 deModalLogic;FolBridge.leanetModalBridge.lean. Les deux y figurent désormais, avecFairBotLoeb.lean.Le paragraphe « import arithmétique isolé dans
GLBridge» ne l'était plus : il est réécrit. Une mesure datée du nombre de jobs est ajoutée, et les mesures des pilotes sont conservées.See #15062
🤖 Generated with Claude Code