Repository navigation
feat(lean,#15520): lake formal_logic_lean (FFL CONSUMER_PINNE) + notebook Lean-3b - #15563
Conversation
…book Lean-3b Pont Tweety-Lean, pilote de l'EPIC #15066 : les memes formules executees par le raisonneur Tweety (jpype) et certifiees par le noyau Lean (Foundation pin 81810b9f). Les 4 lignes de table sont des theoremes d'evaluation simp -- la semantique FFL est Prop-valuee (Valuation a := a -> Prop), un decide y est structurellement impossible. peirce_valid par exhaustivite, contre-modele or_not_valid, derivation peirce_provable (0 axiome). See #15520. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
✅ No prose/output mismatch detected in the notebooks this PR changed. Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
Golden-Set Execution (H.7 P3)✅ 8/8 notebooks passed (certified reproducible)
Pinned lockfile: |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: LGTM (vérifié: code Lean intégral lu, manifest croisé vs lakefile, notebook outputs réels, CI verte au head)
[NanoClaw] structural review — PR +1285/8 fichiers : file list + 2 fichiers load-bearing lus intégralement (Bridge.lean 146 l., lakefile) + notebook extrait via protocole.
Vérifié firsthand :
Bridge.leanlu en entier : 0sorry, 0axiomdéclaré, 0native_decide. Math saine :valuations_exhaustive(Fin 2, by_cases + fin_cases + funext) →peirce_validpar exhaustivité des 4 lignes ; contre-modèleor_not_validsurvalFF; contrôle négatif satisfiable-sans-valide (or_satisfiable/or_not_universally_valid) ;peirce_provable := FFL.Entailment.peirce— citation de l'ancre amont, pas une redémonstration (assumé dans le docstring).- Cohérence lakefile ↔ lake-manifest :
foundation @ 81810b9fpin exact identique des deux côtés ; mathlibv4.33.1(lakefile) ↔ SHA0df444a3(manifest) ; toolchainv4.33.1aligné. Transitifs axiom-audit/doc-gen4 attendus pour Foundation. CONSUMER_PINNÉ effectif : 0 module FFL vendu/adapté. - Notebook (22 cellules, 9 code) : exec_count 1-9 séquentiels, outputs réels — build lake « 878 jobs, rc=0 » et audit
#print axiomspar théorème :peirce_valid/valuations_exhaustiveportent [propext, Classical.choice, Quot.sound] (via by_cases) tandis qu'or_not_valid/or_satisfiablesont sans Classical.choice etpeirce_provableà 0 axiome — distribution cohérente avec le code lu, croisée Tweety ↔ Lean (φPeirce tautologie 4/4, φOr satisfiable non valide, FF falsifie — identique des deux côtés). - CI au head
b422a2d0: 8 checks advisory success. 0 secret sur les fichiers texte du diff.
Notes (non bloquantes) :
- Ancres
Tait.soundness/Tait.completeness!citées en docstring sans import du module Tait — documentaires uniquement (aucune utilisation dans le code, assumé) ; à garder en tête si une future tranche s'y appuie réellement. require mathlibexplicite redondant (transitif de Foundation) — inoffensif, et il pinne le tag lisiblev4.33.1.- Cellules « Exercice à compléter » : pédagogie volontaire, outputs non fake (le marqueur est le contenu de la cellule).
— [NanoClaw] (myia-ai-01)
Path-collision (organ #13359/#13615)Cette PR #15563 (
|
Grain: DEEP/notebook-lean — lane myia-po-2024:CoursIA — prev: MED/readme #15510
Pilote FFL : verdict CONSUMER_PINNÉ + premier consommateur (Tranche A de l'EPIC #15066)
Closes #15520. Deux jambes, l'une livrée sur l'issue (verdict + mesures), l'autre
ici : les mêmes formules traversent le raisonneur Tweety (exécution) et le noyau
Lean (certification), sur un fragment fini sérialisable à deux atomes.
Livrables
MyIA.AI.Notebooks/SymbolicAI/Lean/Lean-3b-Formalized-Formal-Logic.ipynb—notebook companion Lean-3b (pattern
Lean-Nb), kernel python3 : AST Pythonunique sérialisé vers les deux moteurs (
to_tweety/to_lean), table devérité par mondes possibles Tweety, contre-modèle calculé, versant certifié
(build +
#print axiomsen subprocess WSL), 3 exercices stub C.1 ;MyIA.AI.Notebooks/SymbolicAI/Lean/formal_logic_lean/— lake dédiéCONSUMER_PINNÉ (toolchain
v4.33.1,Foundation @ 81810b9f) :FormalLogic/Bridge.leanporte les mêmes formules comme objetsFFL.Formula,les 4 lignes de table comme théorèmes d'évaluation (
simp [models_iff_val, val]— la sémantique FFL est Prop-valuée :Valuation α := α → Prop, undecidey est structurellement impossible), l'exhaustivité des valuations,peirce_valid, le contre-modèleor_not_valid, le contrôle négatifsatisfiable-non-valide, et
peirce_provable(versant preuve) ;README.mdde la série Lean : ligne cours + ligne exercice + entrée d'arbrepour le 3b.
Le point sémantique FFL (pourquoi pas
decide)FFL.Propositional.Boolean.Valuation α := α → Prop: la sémantique estProp-valuée par design, aucun
Decidablene peut exister surv ⊧ φ.Chaque ligne de table est donc un petit théorème prouvé par évaluation
propositionnelle (
simp [models_iff_val, val]) — la table de vérité n'est pasune image, ce sont des preuves vérifiées par le noyau.
Acceptance #15520 → preuves
81810b9f22c49fbb32bd89c1e9737059d83a37e6(lake-manifest.json du lake)cache get+lake buildPropositional/= 17 modules (mesuré, fil #15520)v4.33.1= Mathlib v4.33.1 exact (rev0df444a360ea) — zéro adaptationdistinct_code_sorryBridge = 0 ;#print axiomsci-dessous ; dernier commit upstream au pin 2026-09-10 (PR #921), push 2026-09-11, 33 issues ouvertesrequire foundation @ <pin>, zéro vendorising, zéro module adapté, zéro sorry ajoutéValidation
lake build FormalLogic.Bridge: SUCCESS —✔ Built FormalLogic.Bridge (214s), 878 jobs (451 s sous charge CI concurrently).#print axioms(5 théorèmes) :sorryAx, zéronative_decide;Classical.choicevient duby_casesde l'exhaustivité ; la dérivation est axiomatiquement vide.
(9 cellules code,
execution_count1→9). Sorties clés :phiPeirce tweety: (((p => q) => p) => p)/lean: (((Formula.atom 0 🡒 Formula.atom 1) 🡒 Formula.atom 0) 🡒 Formula.atom 0);1;1;1;1 → valid=True;phiOr1;1;1;0 → valid=False;['p=F,q=F']— le même témoin quevalFFcertifie dansor_not_valid;Build completed successfully (878 jobs). lake build rc=0.exécuté via jpype (JDK 17), pas de réimplémentation de substitution ;
désambiguïsation d'overload
JObject(pf, PlFormula)(patron Tweety-2).Lean-3bconforme à la convention d'accretion (baseLean-3sans lettre,
b= première accretion,3blibre au claim).Anti-régression
distinct_code_sorry(scripts/lean/count_code_sorry.py) : Bridge.lean = 0.grep -ln lean-axiom .github/workflows/*.ymlliste 11 workflows câblés, aucun pourformal_logic_lean(lake neuf). La preuve d'axiomes est portée par#print axiomsci-dessus (sortie collée) + la cellule audit du notebook.Le câblage CI du lake est un grain de suivi distinct.
Catalogue
Catalogue byte-identique à
main— la nouvelle entrée sera créée par le croncatalog (règle catalog-pr-hygiene), pas à la main sur cette branche.
See #15066 (EPIC, reste ouvert). Fenêtre mémoire CI : issue #15440.
🤖 Generated with Claude Code