TweetyProject - Série de Notebooks Jupyter

↑ SymbolicAI | SemanticWeb →

Série complète de notebooks pour explorer TweetyProject, une bibliothèque Java pour l’intelligence artificielle symbolique. Le décompte exact des notebooks et leur maturité figurent dans le catalogue généré ci-dessous ; la série cible la version Tweety 1.30.

Comment lire ce README

Le dépôt se lit à trois vitesses (choisir sa vitesse de lecture) ; la série Tweety aussi :

Vitesse Vous voulez… Lisez…
Découverte comprendre ce que Tweety peut faire pour vous Série en quelques mots, puis le parcours principal, en suivant ses numéros nus
Licence maîtriser un palier (logiques, argumentation, causalité…) le parcours principal d’un palier (ses numéros nus), puis ses approfondissements quand une lettre vous retient
Recherche les laboratoires croisés Python/Lean, les compagnons natifs Lean, le lac d’argumentation Pour aller plus loin, puis, dans chaque palier, les lettres et les *-Lean*

Ce README ne liste plus les notebooks un par un dans une table plate : la table Structure ci-dessous distingue le parcours principal (numéros nus, lisibles de haut en bas) des approfondissements (lettres) et des sous-séries (Argumentation). Le compte exact des notebooks et leur maturité vivent dans le bloc CATALOG-STATUS ci-dessus, régénéré chaque jour par la CI — il fait foi au niveau granulaire.

Lire un nom de fichier

Un nom de notebook Tweety suit la forme Tweety-<NN>[<lettre>]-<Titre>-<Noyau?>.ipynb :

Élément Exemple Ce qu’il vous dit
numéro nu 01–12 Tweety-01-Setup-Python une marche du parcours principal : on peut s’arrêter là
lettre après le numéro Tweety-02b-Semantics-CSharp un approfondissement du palier 02, facultatif
suffixe -Python / -CSharp / -Lean / -Lean-Python Tweety-3b-Modal-Lab-Lean le kernel à installer ; -Lean-Python désigne un notebook Python qui pilote Lean
-CSharp vs -Csharp Tweety-10-MLN-Csharp vs Tweety-02-Basic-Logics-CSharp deux écritures historiques du même suffixe, encore en cours de normalisation (#16231)

La normalisation des noms est en cours (#16231) — la colonne Stack des tables fait foi.

Série en quelques mots

À qui s’adresse cette série : étudiants en IA, chercheurs en argumentation computationnelle, développeurs intéressés par le raisonnement formel, et tout curieux souhaitant comprendre les bases mathématiques derrière le raisonnement explicite. Aucun prérequis en logique formelle n’est supposé : les concepts sont introduits progressivement, des opérateurs propositionnels de base jusqu’aux sémantiques d’argumentation les plus avancées.

Présentation

TweetyProject est une collection de bibliothèques Java couvrant plusieurs domaines :

  • Logiques formelles : Propositionnelle, Premier ordre, Modale, Description, QBF
  • Argumentation computationnelle : Dung, ASPIC+, DeLP, ABA, ADF
  • Révision de croyances : AGM, Mesures d’incohérence, MUS/MCS
  • Agents et dialogues : Multi-agents, Protocoles argumentatifs
  • Préférences et vote : Ordres de préférence, Agrégation

Les notebooks utilisent deux implémentations pour exécuter TweetyProject, selon le langage d’apprentissage visé :

Implémentation Stack Kernel JVM requise ? Notebooks
Python (originelle) JPype (pont Java↔︎Python) Python 3 Oui (JDK téléchargé par le setup) Tweety-1 à Tweety-11 (+ Tweety-02d-FOL-Lab-Lean labo FOL croisé, Tweety-02e-Preuves-Hilbert-Gentzen-Lean calculs de preuve Hilbert/LK, Tweety-5b-Lean-Argumentation companion Lean 4, Tweety-5d-Stable-Synthesis-Lean synthèse Z3→Lean, Tweety-5e-Propositional-Lab-Lean laboratoire propositionnel, Tweety-3b-Modal-Lab-Lean laboratoire modal et Tweety-02f-Modal-Zoo-Lean-Python sous-cube modal certifie — huit systemes et leur diagramme de Hasse)
C#/.NET (port natif) IKVM 8.14 (bytecode Java→.NET) .net-csharp Non (runtime IKVM pur .NET) 18 notebooks *-Csharp (de Tweety-2-Basic-Logics-Csharp à Tweety-11-Causal-Csharp ; ex. 2b-Semantics, 3-Dung, 4-Aspic)

Les deux implémentations couvrent les mêmes concepts fondamentaux (logique propositionnelle, sémantique des mondes possibles, logique du premier ordre, argumentation de Dung) ; le port C# les expose sans JVM, directement dans le runtime .NET, ce qui les rend exécutables côté .NET Interactive comme n’importe quel notebook C#. Les notebooks -Csharp vivent à côté de leurs homologues Python (pas dans un sous-dossier), pour faciliter la comparaison des deux stacks sur un même concept. Voir EPIC #4667.

Schéma de numérotation C# (clarification, cf. #5642, mandat #5081) : la série Tweety mêle deux conventions de nommage pour le port C# :

  • Twin par numéro : Tweety-N-<Topic>-Csharp jumelle le notebook Python Tweety-N-<Topic> (ex. Tweety-2-Basic-Logics + -Csharp, Tweety-5-Abstract-Argumentation + -Csharp). Le -Csharp apparaît à côté du Python pour la comparaison stack-à-stack.
  • Extension C#-only par suffixe lettre : Tweety-2b-Semantics-Csharp, Tweety-2c-FOL-Csharp, Tweety-3-Conditional-Logics-Csharp, Tweety-3-ModalLogic-Csharp, Tweety-3-QBF-Csharp sont des extensions logiques pures sous le bloc 3 (Advanced Logics).

Cas Dung(3) / Aspic(4) — particularité : Tweety-3-Dung-Csharp et Tweety-4-Aspic-Csharp sont des extensions C#-only de l’argumentation computationnelle placées sous les numéros 3 (logique) et 4 (révision AGM) par proximité chronologique d’implémentation (la première vague du port C# a démarré avant la renumérotation narrative #5081). Ces deux notebooks seront migrés à terme vers Tweety-5c-Dung-Csharp (à côté de Tweety-5-Abstract-Argumentation) et Tweety-6c-Aspic-Csharp (à côté de Tweety-6-Structured-Argumentation) — voir #5642 pour la roadmap de renommage. En attendant, la coexistence (Dung sous 3, ASPIC+ sous 4) est documentée comme intentionnelle et pedagogiquement défendable (comparaison directe stack-à-stack entre Python et C# possible).

À l’heure des modèles statistiques et des LLMs, pourquoi étudier ces logiques symboliques ? Parce qu’elles apportent ce que l’apprentissage seul ne garantit pas : un raisonnement explicite, vérifiable et explicable. L’argumentation computationnelle (cadres de Dung, ASPIC+, ABA) modélise la façon dont des agents confrontent des arguments, gèrent les contradictions et aboutissent à des conclusions justifiées — avec des applications en raisonnement juridique, en aide à la décision, en négociation multi-agents, et de plus en plus comme couche de contrôle au-dessus des LLMs (détecter les incohérences, structurer un débat). La révision de croyances (AGM) formalise comment un agent rationnel met à jour ses connaissances face à une information nouvelle ou contradictoire. L’intérêt de TweetyProject est de réunir tous ces formalismes sous un même toit : on expérimente d’une logique à l’autre sans avoir à réimplémenter chaque solveur.

Symbolique vs. Statistique

Pour comprendre où se positionne cette série, voici une comparaison entre les approches symbolique et statistique de l’IA :

Aspect IA Symbolique (TweetyProject) IA Statistique (ML/LLMs)
Représentation Logiques formelles (PL, FOL, DL) Vecteurs embeddings, poids neuronaux
Raisonnement Déduction formelle, vérification Inférence probabiliste, approximation
Vérifiabilité Preuves mathématiques, solveurs Benchmarks empiriques, statistiques
Explicabilité Chaînes de raisonnement lisibles Boîte noire, attention maps
Incohérence Détection MUS/MCS, SAT solver Gradient instability, divergence
Force Garanties de correction Adaptabilité, généralisation
Limite Complexe à grande échelle Manque de garanties formelles

Cette série ne propose pas de choisir l’un ou l’autre, mais de comprendre les deux. L’intersection est d’ailleurs le front actif de la recherche : argumentation pour contrôler les LLMs, logiques neuronales, vérification formelle de modèles génératifs.

Vue d’ensemble

Statistique Valeur
Notebooks 38 racine (13 Python + 7 Lean companion + 18 C#) + 1 probe
Cellules totales 1170 (dont 446 code) — 38 racine + 1 probe
Durée estimée ~6h (tutorat)
Kernel Python 3 (JPype/Java)
Version Tweety 1.30 recommandée
Solveurs externes Clingo, SPASS, EProver, Z3, PySAT
JARs Java 42 (39 modules Tweety 1.30 + 3 deps externes)

Parcours d’apprentissage

flowchart LR
    P1["<b>Phase 1</b><br/>Fondations<br/>logiques PL / FOL / DL / modale<br/>NB 1-3"]
    P2["<b>Phase 2</b><br/>Révision de croyances<br/>AGM, MUS, MaxSAT<br/>NB 4"]
    P3["<b>Phase 3</b><br/>Argumentation<br/>Dung + ASPIC/DeLP<br/>NB 5-6"]
    P4["<b>Phase 4</b><br/>Frameworks avancés<br/>ADF, WAF, ranking, probabiliste<br/>NB 7a-7b"]
    P5["<b>Phase 5</b><br/>Applications<br/>dialogues, vote, préférences<br/>NB 8-9"]
    P1 --> P2 --> P3 --> P4 --> P5
    %% color: explicite -- sans lui, libelle clair sur fond clair en mode sombre GitHub (#15022) ; ton parfois plus fonce que le stroke (le stroke en couleur de texte rendrait infer illisible) : ne pas harmoniser
    classDef core fill:#fff3cd,stroke:#856404,stroke-width:2px,color:#856404;
    class P3 core;

Le cœur de la série est la Phase 3 (argumentation, surlignée) — les fondations logiques et la révision de croyances y mènent, les frameworks avancés et les applications en découlent. Le détail de chaque phase suit.

Phase 1 : Fondations (Notebooks 1-3, ~1.5h)

La série débute avec le notebook 1 (Setup) qui configure toute l’environnement : téléchargement automatique du JDK Zulu, des 39 JARs des modules TweetyProject 1.30 (plus 3 dépendances externes), et des outils externes (Clingo pour ASP, SPASS pour la logique modale, EProver pour le premier ordre). Une fois la JVM initialisée via JPype, le notebook 2 plonge dans les logiques fondamentales : la logique propositionnelle avec les opérateurs booléens, la satisfaisabilité (SAT) via pySAT, et la logique du premier ordre avec la construction de signatures et le raisonnement avec EProver. Le notebook 3 étend ces fondations aux logiques de Description (DL) pour les ontologies, la logique modale (nécessité/possibilité) pour le raisonnement sur les mondes possibles, les formules booléennes quantifiées (QBF), et la logique conditionnelle pour le raisonnement defeasible. À l’issue de cette phase, vous maîtrisez les outils de base du raisonnement formel.

Phase 2 : Révision de Croyances (Notebook 4, ~45 min)

Ce notebook unique introduit la gestion de l’incohérence dans les systèmes intelligents. Plutôt que d’échouer face à des connaissances contradictoires, un système rationnel doit identifier les sources de conflit (MUS - Minimal Unsatisfiable Subsets), mesurer l’incohérence (scores et indices), et réélaborer ses croyances (révision AGM). Les outils pratiques incluent MaxSAT pour l’optimisation sous contraintes et le raisonnement multi-agents avec CrMas. C’est un pont entre les logiques pures et les systèmes multi-agents.

Phase 3 : Argumentation — De l’abstrait au structuré (Notebooks 5-6, ~2h)

Les notebooks 5 et 6 constituent le cœur de la série. Le notebook 5 introduit l’argumentation abstraite de Dung (1995) : un cadre où des arguments s’attaquent mutuellement sans regarder leur contenu interne. On y explore les sémantiques classiques (grounded, preferred, stable, semi-stable), la sémantique CF2 pour les cycles, et les nouveautés 1.30 (équivalence de frameworks, explications, raisonnement causal). Le notebook 6 monte d’un cran de granularité avec l’argumentation structurée : ASPIC+ (arguments construits à partir de règles defeasibles), DeLP (logique defeasible programmée), ABA (argumentation par hypothèse), et l’Answer Set Programming (ASP) via Clingo. La comparaison entre ces cadres montre que chacun offre un compromis différent entre expressivité et calculabilité.

Phase 4 : Frameworks avances et probabilistes (Notebooks 7a-7b, ~1h)

Le notebook 7a explore les extensions du cadre de Dung : ADF (Abstract Dialectical Frameworks, où les arguments peuvent avoir plusieurs preconditions), les frameworks bipolaires (support + attaque), les WAF (Weighted Argument Frameworks avec attaques pondérées), les SAF (Social Argumentation Frameworks), les SetAF (attaques collectives), et les frameworks étendus (attaques récursives sur des attaques). Le notebook 7b aborde deux axes différents : les sémantiques de classement (ranking) qui assignent un niveau de crédibilité à chaque argument plutôt que des extensions binaires, et l’argumentation probabiliste où les arguments portent des probabilités.

Phase 5 : Applications multi-agents (Notebooks 8-9, ~1h)

La série se conclut par deux notebooks applicatifs. Le notebook 8 modélise les dialogues argumentatifs entre agents : protocoles d’échange, jeux grounded, et loteries argumentatives. Le notebook 9 traite des préférences et de la théorie du vote : ordres de préférence, règles d’agrégation (Borda, Condorcet, Copeland), et leur connexion avec l’argumentation. C’est la passerelle vers la théorie des jeux et le choix social.

Parcours alternatifs

Parcours logique (focus fondations, ~2h)

Pour ceux qui souhaitent une base solide en logiques formelles avant l’argumentation :

  1. Setup (1) → Logiques de base (2) → Logiques avancées (3) → Révision (4)
  2. Puis choisir : Argumentation abstraite (5) pour la théorie pure, ou Applications (8-9) pour les cas d’usage

Parcours argumentation intensive (focus 5-7b, ~3.5h)

Pour les étudiants en argumentation computationnelle, aller droit au but :

  1. Setup rapide (1) : ne garder que la partie configuration JVM
  2. Logiques de base (2) : section PL uniquement, skip FOL si déjà connu
  3. Argumentation abstraite (5) : Dung + sémantiques
  4. Argumentation structurée (6) : ASPIC+ et DeLP
  5. Frameworks avancés (7a) : ADF + bipolarité
  6. Ranking et probabiliste (7b) : sémantiques de classement

Parcours applications (focus 8-9, ~1h)

Pour les praticiens intéressés par les applications multi-agents :

  1. Setup (1) + Logiques de base (2) : juste pour l’environnement
  2. Argumentation abstraite (5) : sémantiques de Dung essentielles
  3. Dialogues multi-agents (8) : protocoles et jeux grounded
  4. Préférences et vote (9) : théorie du vote et agrégation

Structure

La table ci-dessous distingue trois niveaux. Le parcours principal ne porte aucune lettre en ligne — il se lit de haut en bas. Les approfondissements vivent dans des sous-sections : les laboratoires croisés Python/Lean, les compagnons Lean natifs, et les jumeaux C#/.NET. La sous-série Argumentation a son propre parcours principal — Argumentum est un dépôt partenaire, ce README n’en est pas l’inventaire.

Parcours principal

Numéros nus uniquement, lisibles de haut en bas. Le compte et la maturité exacts vivent dans le bloc CATALOG-STATUS (haut de page).

# Notebook Ce qu’on y apprend Stack
1 Tweety-01-Setup-Python Configuration JVM, JARs, solveurs externes Python
2 Tweety-02-Basic-Logics-Python Logique propositionnelle (SAT) et du premier ordre (FOL) Python
3 Tweety-3-Advanced-Logics DL, Modale, QBF, Conditionnelle Python
4 Tweety-4-Belief-Revision MUS, MaxSAT, Mesures d’incohérence, AGM Python
5 Tweety-5-Abstract-Argumentation Dung AF, sémantiques grounded/stable/CF2 Python
6 Tweety-06-Structured-Argumentation-Python ASPIC+, DeLP, ABA, ASP Python
7 Tweety-07a-Extended-Frameworks-Python ADF, Bipolar, WAF, SAF, SetAF, Extended Python
8 Tweety-08-Agent-Dialogues-Python Agents, dialogues argumentatifs, loteries Python
9 Tweety-09-Preferences-Python Préférences, théorie du vote Python
10 Tweety-10-MLN Markov Logic Networks (FOL pondérée) Python
11 Tweety-11-Causal do-calculus de Pearl, interventions, contrefactuels Python
12 Tweety-12-Grounded-Via-TweetyProject Bouclage de la sémantique grounded entre Python et Lean Python

Durée indicative du parcours léger : environ 13 h pour les notebooks racine Python. Le parcours s’arrête où vous voulez : le palier 5 (argumentation abstraite) ou le palier 6 (argumentation structurée) se suffisent à eux-mêmes pour qui ne vise que la modélisation du raisonnement.

Approfondissements

Une section par palier qui ouvre des lettres. Chaque lettre est facultative : on l’ouvre si le palier vous retient ou si vous préparez un pont vers un autre cours. Les laboratoires Python/Lean se lisent après avoir installé le noyau Lean (elan toolchain install stable, kernel Lean 4) ; les compagnons Lean natifs n’ont besoin que du noyau Lean.

Autour de 02 — sémantique propositionnelle, FOL, et laboratoires

Lettre Notebook Ce que cette lettre ajoute
02a Tweety-02-Basic-Logics-CSharp Jumeau C#/.NET du 02 (IKVM, port pilote #4792, premier pont Java→.NET de la série)
02b Tweety-02b-Semantics-CSharp Sémantique propositionnelle .NET (mondes possibles)
02c Tweety-02c-FOL-CSharp FOL porté .NET via IKVM 8.14 (tweetyproject.logics.fol.* réel)
02d Tweety-02d-FOL-Lab-Lean Labo croisé (tranche B de l’EPIC #15066) : un même syllogisme exécuté par SimpleFolReasoner (six verdicts) et certifié par le noyau Lean sur le corpus FFL épinglé — conséquences quantifiées, contre-modèles finis exhibés ; la distinction FALSE ≠ « négation prouvée » y est mesurée
02e Tweety-02e-Preuves-Hilbert-Gentzen-Lean Calculs de preuve (tranche D de l’EPIC #15066) : trois axiomes de Hilbert vérifiés par deux oracles réels, une preuve de Hilbert construite par chaînage avant (coût mesuré), puis le calcul des séquents LK — hauteur et taille d’un arbre avant/après élimination des coupures, le Hauptsatz étant invoqué comme théorème du noyau (Derivation.Canonical.constructiveHauptsatz, témoin IsCutFree)
02f Tweety-02f-Modal-Zoo-Lean-Python Zoo modal certifié (tranche G de l’EPIC #15066) : huit systèmes normaux (K, KD, KT, KTB, K4, S4, KD45, S5) et l’ordre qui les relie. Les listes du module FormalLogic.ModalZoo (#17642) sont exportées par lake env lean (ModalZoo.toJson), l’ordre est recalculé en Python sur les seuls profils exportés, puis la carte est dessinée : 21 inclusions strictes sur 28 paires du cube, dont 11 arêtes de couverture, et 7 paires incomparables — chacune certifiée par le noyau

Autour de 03 — logiques avancées : modal et laboratoire

Lettre Notebook Ce que cette lettre ajoute
03b Tweety-3b-Modal-Lab-Lean Labo modal croisé (tranche C de l’EPIC #15066) : schémas K/T/4/5 — syntaxe MlParser Tweety (bug SPASS #1334 documenté), balayage exhaustif des 512 cadres 3-mondes en Python (correspondances T/réflexif, 4/transitif, 5/euclidien mesurées en égalités exactes), certificats du kernel Lean sur le pont FormalLogic.ModalBridge (#17017)
03c-DL Tweety-3-Advanced-Logics-Csharp DL/ML/QBF/CL .NET — DRAFT : conflits de noms DLL entre logics.ml + logics.cl + logics.qbf simultanés
03c-CL Tweety-3-Conditional-Logics-Csharp Logique conditionnelle .NET (IKVM) — raisonneur cl réel
03c-Dung Tweety-3-Dung-Csharp Argumentation de Dung .NET (IKVM, c.182 PR #5194) — NaiveDlReasoner
03c-ML Tweety-3-ModalLogic-Csharp Logique modale .NET (IKVM) — MlReasoner réel
03c-QBF Tweety-3-QBF-Csharp QBF .NET (IKVM, c.185 PR #5202) — solveur QBF réel

Autour de 04 — belief revision et ASPIC+

Lettre Notebook Ce que cette lettre ajoute
04c-BR Tweety-4-Belief-Revision-Csharp Belief Revision .NET (IKVM) : Revision/MUSMaxSAT réels
04c-Aspic Tweety-4-Aspic-Csharp ASPIC+ .NET (IKVM) — AspicArgumentation réel

Autour de 05 — argumentation abstraite et compagnons Lean

Lettre Notebook Ce que cette lettre ajoute
05b Tweety-5b-Lean-Argumentation Compagnon natif (kernel Lean) : preuve formelle 0-sorry de Dung dans le lake argumentation_lean (grounded = point fixe Knaster–Tarski), #check + #print axioms in-kernel (UNLOCK c.127, jonction Mathlib #2611)
05c Tweety-5-Abstract-Argumentation-Csharp Twin C# Dung AF from-scratch (BCL .NET, pas IKVM/JVM) : fonction caractéristique, acceptabilité, ensembles admissibles/complets, sémantiques grounded (plus petit point fixe) / stable / preferred, labeling 3 valeurs (in/out/undec), génération aléatoire, 3 exercices
05d Tweety-5d-Stable-Synthesis-Lean Synthèse certifiée d’extensions stables (Loi II #12205, variante -c, #13597) : spécification → Z3 (générateur ≠ vérificateur) → témoin {1, 2, 5} → certificat Lean by decide dans le lake argumentation_lean (module Argumentation.Synthesis + sibling _en, i18n #4980) ; cas UNSAT du 3-cycle certifié (afB_no_stable)
05e Tweety-5e-Propositional-Lab-Lean Compagnon transversal (tranche A de l’EPIC #15066) : trois formules-témoins (SYL valide, ORB satisfiable non valide, CONTR insatisfiable) traversent trois lectures — Tweety via JPype (verdicts et contre-modèles calculés), recomptage Python indépendant des 8 mondes du fragment {a, b, c}, certification du kernel Lean natif sur Foundation (FFL) au commit épinglé ; la même chaîne de formule est sérialisée pour les deux moteurs (SOTA, aucune réimplémentation jouet)

Autour de 06 — argumentation structurée et jumeau C

Lettre Notebook Ce que cette lettre ajoute
06c Tweety-06-Structured-Argumentation-CSharp Twin C# ASPIC+ from-scratch (BCL, pas IKVM ; DeLP/ABA/ASP conceptuel)

Autour de 07 — cadres étendus et probabilistes

Le palier 07 est porté par le 07a (Python) et son jumeau 07ac (C#) ; le 07b (probabiliste) en est l’approfondissement.

Lettre Notebook Ce que cette lettre ajoute
07ac Tweety-07a-Extended-Frameworks-CSharp Twin C# hybride : ADF/SetAF/EAF/VAF from-scratch (BCL, Kleene 3-valued) + tranche 2 lib Tweety réelle via IKVM (DLL shade 7a versionnée à la racine, rebuildable via dotnet-build/rebuild-7a.sh ; #4956)
07b Tweety-07b-Ranking-Probabilistic-Python Sémantiques de classement (ranking) et argumentation probabiliste
07bc Tweety-07b-Ranking-Probabilistic-CSharp Jumeau C# du 07b (IKVM, c.179 PR #5231) — Ranking, SubgraphProbability réels

Autour de 08 et 09 — applications multi-agents

Lettre Notebook Ce que cette lettre ajoute
08c Tweety-08-Agent-Dialogues-CSharp Twin C# dialogues argumentatifs from-scratch (BCL .NET, pas IKVM/JVM ; Dung AF + agents + protocole Claim/Argue/Concede/Retract + loterie argumentative Monte-Carlo)
09c Tweety-09-Preferences-CSharp Préférences .NET (IKVM, c.180 PR #5268)

Autour de 10 et 11 — synthèse

Lettre Notebook Ce que cette lettre ajoute
10c Tweety-10-MLN-Csharp MLN porté .NET (IKVM, c.188 PR #5209) — MarkovLogicNetwork, vrais appels
11c Tweety-11-Causal-Csharp Twin C# moteur causal booléen from-scratch .NET : do-operator, contrefactuels par mondes jumeaux

Sous-série Argumentation — Argumentum

Les notebooks 5 et 6 sont la couche Tweety de la sous-série Argumentation : ils portent les fondations de Dung et d’ASPIC+. Argumentum, le partenaire agentique, vit dans un dépôt externe et applique ces sémantiques à des textes. Voir Argument_Analysis pour la série partenaire, et le sous-module pour le code source de l’agent.

Durée totale indicative : ~13 h (Python) + ~10 h (C#/.NET). Le tableau ci-dessus couvre les notebooks principaux (12 Python + 18 C#/.NET + 7 Lean companion) ; voir aussi _probes/Tweety-IKVM-Init-Probe.ipynb (BETA smoke-test IKVM) et argumentation_lean/ (lake Lean 4, toolchain v4.32.1 depuis #11587, avec les fichiers .lean du dossier Argumentation/ — les modules FR : Basic, Characteristic, Extensions, Fundamental, Grounded, Synthesis + leurs siblings _en i18n #4980).

En quoi chaque notebook est unique

Chaque notebook introduit un concept ou cadre théorique spécifique. Le tableau ci-dessous résume en une ligne l’apport pédagogique de chacun — couvrant les notebooks principaux (12 Python + 18 C#/.NET + 7 Lean companion) :

# Notebook Concept clé enseigné
1 Setup Boucle configuration : JVM → JPype → JARs → solveurs externes
2 Basic Logics SAT solving en pratique (pySAT) + formalisme FOL avec EProver
2a Basic Logics (C#, pilote) Logique propositionnelle .NET — port pilote IKVM (#4792), premier pont Java→.NET de la série
2b Semantics (C#) Sémantique propositionnelle .NET (mondes possibles) — port IKVM 8.14
2c Basic Logics (C#) FOL porté .NET via IKVM 8.14 : tweetyproject.logics.fol.* réel
2d FOL Lab (Python+Lean) Un syllogisme, deux moteurs : SimpleFolReasoner exécute six verdicts, le noyau Lean certifie conséquences (théorèmes) et non-conséquences (contre-modèles finis) — FALSE n’est pas « négation prouvée »
2e Preuves Hilbert/LK (Python+Lean) Deux calculs de preuve mesurés : Hilbert (axiomes + MP, recherche par chaînage avant, coût en instances/MP) et séquents LK (hauteur/taille d’arbre avant/après élimination des coupures, Hauptsatz = théorème du noyau)
2f Zoo modal (Python+Lean) Huit systèmes modaux et leur ordre partiel : les données du module exportées par lake env lean, l’ordre recalculé sur les profils, puis la carte — 11 arêtes de couverture contre 7 paires incomparables ; « incomparable » n’est ni « un peu plus faible » ni « on ne sait pas »
3 Advanced Logics Ontologies OWL (DL) + raisonnement modale (SPASS) + QBF
3b Modal Lab (Python+Lean) Théorie de la correspondance mesurée : énumération exhaustive 512 cadres ↔︎ contre-modèles kernel-vérifiés (pont ModalBridge)
3c-DL Advanced Logics (C#) DL/ML/QBF/CL .NET — DRAFT : conflits de noms DLL entre logics.ml + logics.cl + logics.qbf simultanés
3c-CL Conditional Logics (C#) Logique conditionnelle .NET (IKVM) — raisonneur cl réel
3c-Dung Dung (C#) Argumentation de Dung .NET (IKVM, c.182 PR #5194) — NaiveDlReasoner
3c-ML Modal Logic (C#) Logique modale .NET (IKVM) — MlReasoner réel
3c-QBF QBF (C#) QBF .NET (IKVM, c.185 PR #5202) — solveur QBF réel
4 Belief Revision Identification de conflits (MUS) + révision AGM + MaxSAT
4c-BR Belief Revision (C#) Belief Revision .NET (IKVM) : Revision/MUSMaxSAT réels, BETA
4c-Aspic Aspic (C#) ASPIC+ .NET (IKVM) — AspicArgumentation réel
5 Abstract Argumentation Sémantiques de Dung (grounded/stable/CF2) + frameworks aléatoires
5b Lean Argumentation Companion natif (kernel Lean) : preuve formelle 0-sorry de Dung dans le lake argumentation_lean, BETA
5c Abstract Argumentation (C#) Dung AF from-scratch BCL .NET (sans IKVM/JVM) : sémantiques grounded/stable/preferred, labeling 3 valeurs
5d Stable Synthesis (Lean) Synthèse certifiée d’extensions stables : spécification → générateur Z3 → témoin → certificat Lean by decide dans le lake argumentation_lean (module Argumentation.Synthesis), cas UNSAT du 3-cycle certifié
5e Propositional Lab (Lean) Trois lectures d’une même formule — Tweety (verdicts et contre-modèles calculés), recomptage Python des 8 mondes, certification Lean sur Foundation (FFL) au commit épinglé ; théâtre des trois verdicts valid / satisfiable non valide / insatisfiable
6 Structured Argumentation Comparaison ASPIC+/DeLP/ABA/ASP — le cadre idéal selon le domaine
6c Structured Argumentation (C#) ASPIC+ from-scratch BCL .NET (sans IKVM) — DeLP/ABA/ASP en contrepoint conceptuel
7a Extended Frameworks Au-delà de Dung : ADF, bipolarité, attaques pondérées et collectives
7ac Extended Frameworks (C#) Hybride : ADF/SetAF/EAF/VAF from-scratch BCL .NET (logique de Kleene 3 valeurs) + tranche 2 Dung/Weighted/Social/ADF via la lib Tweety reelle (IKVM, DLL shade 7a versionnee)
7b Ranking & Probabilistic Classement graduel des arguments + incertitude sur les arguments
7bc Ranking & Probabilistic (C#) Ranking/Probabiliste .NET (IKVM) — Ranking, SubgraphProbability réels
8 Agent Dialogues Protocoles d’échange entre agents + négociation argumentative
8c Agent Dialogues (C#) Dialogues argumentatifs from-scratch BCL .NET : protocole Claim/Argue/Concede/Retract + loterie Monte-Carlo
9 Preferences Agrégation de préférences (Borda, Condorcet) + théorie du vote
9c Preferences (C#) Préférences .NET (IKVM, EPIC #4667 PR #5268)
10 MLN Pont symbolique/statistique : FOL + poids, marginales, exceptions (pingouin)
10c MLN (C#) MLN porté .NET (IKVM) : MarkovLogicNetwork, vrais appels
11 Causalité do-calculus de Pearl : intervention do(X) vs observation, contrefactuels
11c Causalité (C#) Moteur causal booléen from-scratch .NET : do-operator, contrefactuels par mondes jumeaux

Le pont symbolique/statistique (notebook 10 — MLN)

Le notebook 10 introduit les Markov Logic Networks, qui font varier le « degré de logique » d’une formule via son poids w. À une extrémité (w → ∞), on retrouve la logique classique (un seul monde violant rend la base inconsistante) ; à l’autre (w = 0), la statistique pure (tous les mondes équiprobables). Le paradoxe du pingouin illustre comment ce spectre résout des cas qu’aucune des deux extrêmes ne sait traiter seule :

flowchart LR
    LOGIC["<b>Logique classique</b><br/>FOL stricte<br/><i>w → ∞ (règle dure)</i><br/>un seul monde violant = ⊥"]
    MLN["<b>Markov Logic Network</b><br/>P(world) ∝ exp(Σ wᵢ · nᵢ)<br/>chaque formule FOL = une contrainte <i>souple</i>"]
    STAT["<b>Statistique pure</b><br/>mondes équiprobables<br/><i>w = 0 (aucune contrainte)</i>"]
    LOGIC -.->|"poids croissant"| MLN
    MLN -.->|"poids décroissant"| STAT
    PENG(["<b>Paradoxe du pingouin</b> — discrimine les deux extrêmes<br/>Flies(tweety) = 0.00 : l'exception stricte « pingouin ⇒ ¬vole » l'emporte<br/>Flies(robin)  = 0.79 : la règle pondérée « oiseau ⇒ vole » seule, sans exception"])
    MLN --> PENG

L’échelle causale de Pearl (notebook 11 — Causalité)

Le notebook 11 monte d’un niveau par rapport aux approches probabilistes : il distingue corrélation et causalité grâce à l’opérateur do(X). Judea Pearl formalise cette distinction par une échelle à trois niveaux, chaque saut étant inaccessible au niveau inférieur. Le scénario du baromètre illustre le saut crucial entre les niveaux 1 et 2 : observer la baisse du baromètre prédit la pluie (corrélation via l’orage), mais forcer le baromètre à baisser ne fait pas pleuvoir (pas de causalité) :

flowchart TD
    L1["<b>Niveau 1 — Association</b><br/>observe(X) → Y<br/>P(rain | drops) = <b>True</b><br/><i>corrélation : drops et rain coïncident via le confondeur storm</i>"]
    L2["<b>Niveau 2 — Intervention</b><br/>do(X) → Y<br/>P(rain | do(drops)) = <b>False</b><br/><i>l'opérateur do ROMPT l'équation storm → drops ; drops ne porte plus d'info sur rain</i>"]
    L3["<b>Niveau 3 — Contrefactuel</b><br/>« si X avait été différent, Y aurait-il eu lieu ? »<br/>observe(wet) ∧ ¬sprinkler → wet = <b>True</b><br/><i>twin model : rain aurait suffi à mouiller l'herbe</i>"]
    L1 -->|"saut inaccessible à la statistique seule"| L2
    L2 -->|"saut inaccessible à l'intervention seule"| L3

La signature du do-calculus — P(rain | drops) ≠ P(rain | do(drops)) — est exactement ce que la logique classique (notebooks 1-4) et les MLN (notebook 10) restent incapables d’exprimer : ils ne connaissent que l’association.

Ponts causaux — le do-calculus au-delà du symbolique

Tweety raisonne sur le do-calculus en logique propositionnelle : do(X) y est qualitatif — un atome forcé, un SCM réécrit, une réponse vrai/faux. C’est idéal pour voir la différence entre observe et do sans nombres, mais Tweety ne chiffre pas un effet causal ni ne lève quantitativement un paradoxe de Simpson. Les séries probabilistes du dépôt reprennent exactement ce notebook avec des distributions :

  • Infer-5-Causal-Inference — le jumeau distributionnel par message passing : P(Y|do(X)) calculé par mutilation de graphe en Infer.NET (EP/VMP), ajustements backdoor / front-door, paradoxe de Simpson résolu numériquement.
  • PyMC-05-Causal-Inference — la version MCMC avec l’opérateur natif pm.do et le contrefactuel par abduction.
  • ICT-05-CausalEmergence-Python — le même do monte d’un cran : à quelle échelle un système fait-il le plus de travail causal ?

Vue d’ensemble des quatre paradigmes : le README IIT, section « Ponts causaux : le do-calculus de Pearl à travers les paradigmes ».

Concepts clés

Concept Description
Logique Propositionnelle Operateurs booléens, DNF, satisfaisabilité (SAT)
Logique du Premier Ordre Quantificateurs (∀, ∃), prédicats, fonctions
Logique de Description Ontologies, TBox/ABox, sous-typage, OWL
Logique Modale Nécessité (□) et possibilité (◇), mondes possibles
Argumentation de Dung Frameworks abstraits, attaques, sémantiques (grounded, stable)
Argumentation structurée Arguments construits à partir de prémisses et règles
Révision AGM Mise à jour rationnelle de croyances face à l’information contradictoire
MUS/MCS Sous-ensembles insatisfaisables/maximaux — identifier les conflits
Answer Set Programming Programmation par modèles (ASP) via Clingo
Agrégation de préférences Borda, Condorcet, Copeland — combiner des opinions

Domaines d’application

Domaine Notebooks Exemple concret
Juridique 5, 6, 8 Argumentation légale, débats en cour, preuve par argument
Aide à la décision 4, 9 Diagnostic médical, planification de ressources, vote
Multi-agents 8 Négociation automatique, protocoles de dialogue
Ontologies 3 Représentations de connaissances, OWL, Web sémantique
Vérification formelle 2, 3, 4 SAT/SMT solving, proof checking, model checking
LLM control 5, 6, 7b Détection d’incohérences, structuration de débats, argumentation probabiliste

Exemples concrets

Derrière chaque cadre de la série se cache une application réelle ou un problème de recherche actif :

  • L’argumentation de Dung (notebook 5) est le fondement mathématique de nombreux systèmes d’aide à la décision juridique : des arguments se confrontent, les sémantiques déterminent quels arguments sont “acceptables”, et le résultat guide la conclusion. C’est aussi la base des frameworks d’explicabilité des LLMs — détecter les incohérences entre réponses d’un modèle.
  • ASPIC+ et DeLP (notebook 6) modélisent des débats où les arguments ont une structure interne : prémisses, règles defeasibles, et priorités. Applications en aide à la décision médicale, en gestion de conflits de règles, et en vérification de contrats.
  • La révision de croyances AGM (notebook 4) formalise comment un système rationnel met à jour ses connaissances quand une information contradictoire arrive. Applications en intégration de données, diagnostic de bases de connaissance, et fusion de sources d’information.
  • Les frameworks étendus (notebook 7a) généralisent Dung pour capturer des situations réelles où des arguments ont plusieurs preconditions (ADF), où des attaques ont des poids variés (WAF), ou des groupes d’arguments attaquent collectivement (SetAF).
  • La théorie du vote (notebook 9) est au cœur des systèmes de recommandation collective, de l’agrégation de préférences en intelligence artificielle, et des mécanismes d’incitation (mechanism design).

Un framework de Dung, visualisé

L’argumentation abstraite de Dung (notebook 5) se réduit à un graphe orienté : des nœuds (les arguments) et des flèches (les attaques). La question n’est pas « l’argument est-il vrai ? » mais « survive-t-il aux attaques ? » — c’est ce que calculent les sémantiques. Exemple minimal :

flowchart LR
    C(["<b>C</b>"]) -->|"attaque"| B["<b>B</b>"]
    B -->|"attaque"| A["<b>A</b>"]
    classDef acc fill:#d4edda,stroke:#28a745,stroke-width:2px,color:#155724;
    classDef rej fill:#f8d7da,stroke:#dc3545,stroke-width:2px,color:#721c24;
    class C acc;
    class A acc;
    class B rej;

Extension grounded : C n’est attaqué par personne → accepté ; B est attaqué par l’accepté C → rejeté ; A n’est attaqué que par le rejeté B → accepté. D’où {A, C}. La règle se tient en une phrase : un argument est acceptable si tous ses attaquants sont eux-mêmes défaits. Les sémantiques preferred/stable, les cycles (CF2) et le raisonnement causal du notebook 5 raffinent ce même calcul.

Quick Start

# 1. Installer les packages Python
pip install jpype1 requests tqdm clingo z3-solver python-sat

# 2. Ouvrir le notebook de setup (auto-télécharge JDK + JARs)
jupyter notebook Tweety-01-Setup-Python.ipynb

# 3. Exécuter toutes les cellules, puis passer à Tweety-2

JDK 17 et les 42 JARs (39 modules TweetyProject 1.30 + 3 dépendances externes : args4j, commons-math, sat4j) sont téléchargés automatiquement par le notebook de setup. Aucune installation système requise.

Prérequis

Niveau mathématique attendu

Cette série suppose une maîtrise de base en logique et raisonnement :

Concept Utilisation dans la série Notes de révision
Logique propositionnelle (ET, OU, NON, →) Notebook 2 (PL), 5+ (argumentation) Tables de vérité, DNF/CNF, satisfaisabilité
Logique du premier ordre (quantificateurs) Notebook 2 (FOL), 3 (DL) ∀, ∃, variables, prédicats
Graphes (nœuds, arêtes) Notebook 5 (Dung AF), 7a (SetAF) Chemins, cycles, orientés
Ensembles (inclusion, union, intersection) Partout (extensions, bases) Ensembles finis, parties
Raisonnement par récurrence Notebook 3 (DL), 5 (sémantiques) Principe de récurrence bien-fondée

Inutile de maîtriser : théorie de la preuve formelle, complexité computationnelle avancée (la complexité des sémantiques de Dung est expliquée en contexte). Les concepts logiques sont introduits progressivement dans chaque notebook.

Prérequis techniques

Python et dépendances

pip install jpype1 requests tqdm clingo z3-solver python-sat

Java/JVM

  • JDK 17+ — telechargé automatiquement (Zulu) par le notebook de setup
  • JPype — bridge Python ↔︎ Java (charge automatiquement les JARs)

Outils externes (optionnels mais recommandés)

Outil Usage Installation
Clingo 5.4+ ASP (Answer Set Programming) download_tweety_tools.py --clingo
SPASS Logique modale Binaire inclus ou auto-download Linux
EProver FOL haute performance Installation manuelle ou dossier inclus
Z3 SMT solver, MARCO pip install z3-solver
PySAT SAT/MaxSAT moderne pip install python-sat

Installation

Packages Python requis

pip install jpype1 requests tqdm clingo z3-solver python-sat

Vérification de l’environnement

# Lancer le notebook de setup
jupyter notebook Tweety-01-Setup-Python.ipynb
# Exécuter toutes les cellules — il télécharge JDK, JARs, outils externes

# Ou utiliser le script de validation
cd scripts
python verify_all_tweety.py --quick

JDK 17 et les 42 JARs (39 modules TweetyProject 1.30 + 3 dépendances externes : args4j, commons-math, sat4j) sont téléchargés automatiquement par le notebook de setup. Aucune installation système requise.

Architecture

Tweety/
├── Tweety-01-Setup-Python.ipynb                           # Configuration JVM/JPype
├── Tweety-02-Basic-Logics-Python.ipynb                    # PL + FOL
├── Tweety-02-Basic-Logics-CSharp.ipynb             # Logique propositionnelle .NET (IKVM, PROD)
├── Tweety-02b-Semantics-CSharp.ipynb               # Sémantique propositionnelle .NET (IKVM, BETA)
├── Tweety-02c-FOL-CSharp.ipynb                     # FOL .NET (IKVM, BETA)
├── Tweety-02d-FOL-Lab-Lean.ipynb                   # Labo FOL croisé Tweety/Lean (tranche B #15066)
├── Tweety-02e-Preuves-Hilbert-Gentzen-Lean.ipynb   # Calculs de preuve Hilbert/LK (tranche D #15066)
├── Tweety-02f-Modal-Zoo-Lean-Python.ipynb          # Zoo modal certifie : 8 systemes, Hasse (tranche G #15066)
├── Tweety-3-Advanced-Logics.ipynb                 # DL, ML, QBF, CL
├── Tweety-3b-Modal-Lab-Lean.ipynb                 # Labo modal croisé Kripke/Lean (tranche C #15066)
├── Tweety-3-Advanced-Logics-Csharp.ipynb          # DL/ML/QBF/CL .NET (DRAFT — conflits DLL)
├── Tweety-3-Conditional-Logics-Csharp.ipynb       # Logique conditionnelle .NET (IKVM, PROD)
├── Tweety-3-Dung-Csharp.ipynb                     # Argumentation de Dung .NET (IKVM, PROD)
├── Tweety-3-ModalLogic-Csharp.ipynb               # Logique modale .NET (IKVM, PROD)
├── Tweety-3-QBF-Csharp.ipynb                      # QBF .NET (IKVM, PROD)
├── Tweety-4-Belief-Revision.ipynb                 # Révision de croyances
├── Tweety-4-Belief-Revision-Csharp.ipynb          # Belief Revision .NET (IKVM, BETA)
├── Tweety-4-Aspic-Csharp.ipynb                    # ASPIC+ .NET (IKVM, BETA)
├── Tweety-5-Abstract-Argumentation.ipynb          # Dung, sémantiques, CF2
├── Tweety-5-Abstract-Argumentation-Csharp.ipynb   # Twin C# Dung AF from-scratch (BCL, BETA)
├── Tweety-5b-Lean-Argumentation.ipynb             # Companion kernel Lean 4
├── Tweety-5d-Stable-Synthesis-Lean.ipynb          # Synthèse certifiée Z3→Lean (Loi II #12205)
├── Tweety-5e-Propositional-Lab-Lean.ipynb         # Laboratoire propositionnel Tweety/Lean (tranche A #15066)
├── Tweety-06-Structured-Argumentation-Python.ipynb        # ASPIC+, DeLP, ABA, ASP
├── Tweety-06-Structured-Argumentation-CSharp.ipynb # Twin C# ASPIC+ from-scratch (BCL, PROD)
├── Tweety-07a-Extended-Frameworks-Python.ipynb            # ADF, Bipolar, WAF, SAF
├── Tweety-07a-Extended-Frameworks-CSharp.ipynb     # Twin C# ADF/SetAF/EAF/VAF from-scratch (BCL, PROD)
├── Tweety-07b-Ranking-Probabilistic-Python.ipynb          # Ranking Semantics
├── Tweety-07b-Ranking-Probabilistic-CSharp.ipynb   # Ranking/Probabiliste .NET (IKVM, PROD)
├── Tweety-08-Agent-Dialogues-Python.ipynb                 # Agents, dialogues, loteries
├── Tweety-08-Agent-Dialogues-CSharp.ipynb          # Twin C# dialogues from-scratch (BCL, PROD)
├── Tweety-09-Preferences-Python.ipynb                     # Préférences, vote
├── Tweety-09-Preferences-CSharp.ipynb              # Préférences .NET (IKVM, PROD)
├── Tweety-10-MLN.ipynb                            # Markov Logic Networks
├── Tweety-10-MLN-Csharp.ipynb                     # MLN .NET (IKVM, PROD)
├── Tweety-11-Causal.ipynb                         # do-calculus Pearl
├── Tweety-11-Causal-Csharp.ipynb                  # Twin C# moteur causal from-scratch (BCL, PROD)
├── tweety_init.py                                 # Module d'initialisation JPype/JVM
├── requirements.txt                               # Dépendances Python (JPype1, etc.)
├── org.tweetyproject.tweety-*.dll                 # 19 assemblages .NET (shades IKVM, EPIC #4667)
├── dotnet-build/                                  # Build Maven/.csproj des shades IKVM (EPIC #4667)
├── libs/                                          # JARs Tweety (42 : 39 modules 1.30 + 3 deps) — téléchargé
├── jdk-17-portable/                               # JDK Zulu — téléchargé auto par le setup
├── ext_tools/                                     # Solveurs externes (Clingo, SPASS, EProver) — téléchargé
├── resources/                                     # Fichiers d'exemples — téléchargé
├── scripts/
│   ├── download_tweety_tools.py                  # Téléchargement des dépendances
│   ├── verify_all_tweety.py                      # Validation
│   ├── validate_syntax.py                        # Validation syntaxe Python
│   ├── sat_calibration.py                        # Calibration SAT
│   ├── sat_comparison_demo.py                    # Démo comparative SAT
│   ├── test_*.py                                  # 4 tests unitaires (sat_calibration, sat_comparison_demo, validate_syntax, verify_tweety_iopub)
│   └── _archive/                                  # Scripts archivés (reorganize_tweety.py)
├── _probes/                                       # Smoke-tests (1 nb : Tweety-IKVM-Init-Probe)
├── argumentation_lean/                            # Lake Lean 4 (6 modules .lean + 6 siblings _en, i18n #4980)
└── README.md                                      # Ce fichier

Note : les dossiers libs/, jdk-17-portable/, ext_tools/ et resources/ sont des répertoires d’exécution (non suivis par Git, téléchargés automatiquement par Tweety-01-Setup-Python.ipynb ou scripts/download_tweety_tools.py). L’ancien dossier templates student/ n’existe plus dans cette partition. scripts/ contient 5 scripts .py au premier niveau (download_tweety_tools.py, verify_all_tweety.py, validate_syntax.py, sat_calibration.py, sat_comparison_demo.py), 4 tests test_*.py et un README.md, plus un sous-dossier _archive/ (qui contient reorganize_tweety.py, déplacé depuis le premier niveau — plus de doublon). Le dossier _output/ n’est pas présent dans cette partition (les traces Papermill ne sont pas conservées). Audit §E whole-file gate 2026-07-15, re-audit 2026-08-15, re-audit fichier-entier 2026-09-25 (comptes de notebooks, cellules et durées re-mesurés sur disque — périmètre et résidus déclarés dans l’entrée de changelog).

Outils Externes

Script de téléchargement automatisé

Un script autonome est disponible pour télécharger toutes les dépendances :

cd MyIA.AI.Notebooks/SymbolicAI/Tweety

# Télécharger tout (JARs, ressources, outils)
python scripts/download_tweety_tools.py --all

# Télécharger uniquement les JARs
python scripts/download_tweety_tools.py --jars

# Télécharger uniquement les ressources
python scripts/download_tweety_tools.py --resources

# Télécharger Clingo (ASP solver)
python scripts/download_tweety_tools.py --clingo

# Voir toutes les options
python scripts/download_tweety_tools.py --help

Liste des dépendances

Outil Usage Téléchargement Auto Versionné Git
Clingo ASP (Answer Set Programming) Oui (Win/Linux) Oui (binaire Windows)
SPASS Logique Modale Oui (Linux) Oui (binaire + docs Windows)
EProver FOL haute performance Non Oui (installation complète)
Z3 SMT solver, MARCO pip install z3-solver N/A (package Python)
PySAT SAT/MaxSAT moderne pip install python-sat N/A (package Python)
Native SAT Bibliothèques SAT JNI Oui Oui (DLLs Minisat, Lingeling)
JDK 17 JVM pour JPype Oui (Zulu) Non (trop volumineux)
JARs Tweety Bibliothèques Java Oui (Maven Central) Non (trop volumineux)
Resources Fichiers exemples Oui (GitHub) Non (fichiers de données)

Notes d’installation

Clingo

  • Télécharge automatiquement pour Windows et Linux
  • Version 5.4.0 depuis GitHub releases (potassco/clingo)
  • Si déjà installé dans le PATH, utilise la version système

SPASS (Windows)

  • Le téléchargement automatique n’est PAS disponible sur Windows (l’installeur ne peut pas être automatisé)

  • Deux options :

    1. Utiliser le binaire déjà inclus dans le dépôt Git (ext_tools/spass/SPASS.exe)
    2. Installation manuelle :

SPASS (Linux)

  • Télécharge automatiquement (version 64-bit ou 32-bit selon l’architecture)

EProver

  • Doit être installé manuellement : https://eprover.org/
  • L’installation complète est déjà incluse dans ../ext_tools/EProver/
  • Contient tous les utilitaires : eprover, eground, enormalizer, etc.

Bibliothèques natives SAT

  • DLLs Windows (Minisat, Lingeling, Picosat) pour Tweety JNI
  • Téléchargeables automatiquement ou déjà incluses dans libs/native/

Limitations Connues

Limitations constatées à l’origine sous Tweety 1.28/1.29 et toujours documentées dans les notebooks courants (série 1.30 — le notebook 4 cite les changements de package 1.28 pour CrMas, le notebook 5 le ClassCastException) :

Limitation Impact Contournement
CrMas/InformationObject Section révision multi-agents échoue API refactorisée, classe supprimée
SimpleMlReasoner Bloque indéfiniment Utiliser SPASS externe
AF Learning ClassCastException Bug interne, section désactivée
ADF natif SAT Raisonnement ADF incomplet Nécessite solveur SAT natif (non JPype)
FOL avec égalité Heap space sur grandes requêtes Utiliser EProver externe

Modules TweetyProject Couverts

Logiques (Notebooks 2-3)

Module Description Notebook
logics.pl Logique Propositionnelle 2
logics.fol Logique du Premier Ordre 2
logics.dl Logique de Description 3
logics.ml Logique Modale 3
logics.qbf Quantified Boolean Formulas 3
logics.cl Logique Conditionnelle 3
logics.mln Markov Logic Networks (FOL pondérée) 10
causal Raisonnement causal (do-calculus, SCM, contrefactuels) 11

Révision de Croyances (Notebook 4)

Module Description
beliefdynamics Opérateurs de révision AGM
logics.pl.analysis Mesures d’incohérence
logics.pl.sat MUS, MaxSAT

Argumentation (Notebooks 5-7)

Module Description Notebook
arg.dung Frameworks de Dung 5
arg.aspic ASPIC+ 6
arg.delp Defeasible Logic Programming 6
arg.aba Assumption-Based Argumentation 6
lp.asp Answer Set Programming 6
arg.adf Abstract Dialectical Frameworks 7a
arg.bipolar Frameworks Bipolaires 7a
arg.weighted Frameworks Pondérés 7a
arg.social Argumentation Sociale 7a
arg.setaf Attaques Collectives 7a
arg.extended Attaques Récursives 7a
arg.rankings Sémantiques de Classement 7b
arg.prob Argumentation Probabiliste 7b

Agents et Préférences (Notebooks 8-9)

Module Description Notebook
agents Framework agents de base 8
agents.dialogues Dialogues argumentatifs 8
agents.dialogues.oppmodels Jeux grounded (ArguingAgent) 8
agents.dialogues.lotteries Loteries argumentatives 8
preferences Ordres de préférence, agrégation 9

Validation des Notebooks

Script de vérification

cd MyIA.AI.Notebooks/SymbolicAI/Tweety/scripts

# Vérification structurelle rapide
python verify_all_tweety.py --quick

# Vérification environnement
python verify_all_tweety.py --check-env

# Analyse des sorties existantes
python verify_all_tweety.py --analyze-outputs --verbose

# Exécution complète (lent)
python verify_all_tweety.py --execute --verbose

# Notebook spécifique
python verify_all_tweety.py --notebook Tweety-2 --analyze-outputs

Options disponibles

Option Description
--quick Validation structure uniquement
--check-env Vérifier JDK, JARs, outils
--analyze-outputs Analyser sorties existantes
--execute Exécution Papermill complète
--cell-by-cell Exécution cellule par cellule
--execute-missing Exécuter cellules sans output
--clean-errors Nettoyer sorties en erreur
--verbose Sortie détaillée
--json Format JSON (CI/CD)

FAQ / Troubleshooting

JPypeError ou JVM déjà démarrée

Tweety utilise JPype pour intégrer la JVM. Si un notebook signale que la JVM est déjà démarrée, c’est que le notebook précédent ne l’a pas arrêtée proprement. Relancer Jupyter et exécuter depuis le notebook 1.

Clingo non trouvé

Si clingo n’est pas dans le PATH, utiliser le script de téléchargement :

python scripts/download_tweety_tools.py --clingo

Le binaire Windows sera téléchargé dans ext_tools/.

EProver ne répond pas ou heap space

EProver peut bloquer sur des formules FOL complexes avec égalité. La solution est d’utiliser un solveur plus léger ou de réduire la taille de la base de connaissances. Voir la section “Limitations connues” ci-dessus.

Erreur de chargement d’un JAR Tweety

Vérifier que la version Tweety dans Tweety-01-Setup-Python.ipynb correspond à la version téléchargée. La version recommandée est 1.30. Pour changer de version, modifier la variable TWEETY_VERSION puis relancer le notebook 1.

ClassCastException en argumentation

Le notebook 5 signale un bug connu (AF Learning — ClassCastException). La section correspondante est désactivée. Suivre les autres sections sans problème.

JPype lent au premier appel

Le premier appel à un module Java déclenche le chargement de la JVM et des classes Tweety. Attendez 5-10 secondes avant la première réponse. Les appels suivants sont rapides.

Comment passer d’un notebook à l’autre ?

Chaque notebook présuppose la configuration faite dans Tweety-1-Setup (JDK, JARs, JVM). Une fois le notebook 1 exécuté, les notebooks 2-9 peuvent être exécutés dans l’ordre logique de la série. Les outils externes (Clingo, SPASS, EProver) sont configurés par le notebook 1.

Versions TweetyProject

Version Date Nouveautés
1.28 Janvier 2025 arg.caf, k-admissibility, API refactoring
1.29 Juillet 2025 arg.eaf (Epistemic AF), graph rendering
1.30 Janvier 2026 causal reasoning, arg.explanations, equivalence checking

La version est configurable dans Tweety-01-Setup-Python.ipynb (variable TWEETY_VERSION). La version 1.30 est recommandée — elle inclut les sémantiques de causalité, les explications en argumentation, et le checking d’équivalence de frameworks.

Ressources

Références académiques

Référence Couverture
Dung, “On the Acceptability of Arguments” (1995) Notebook 5, sémantiques de Dung
Modgil & Prakken, “The ASPIC+ Framework” (2014) Notebook 6, argumentation structurée
Alchourron, Gardenfors & Makinson, “On the Logic of Theory Change” (1985) Notebook 4, révision AGM
Enderton, A Mathematical Introduction to Logic (2001) Notebooks 2-3, logiques formelles
Besnard & Hunter, Elements of Argumentation (2008) Notebooks 5-7, théorie argumentation
Brewka, Eiter & Truszczynski, “Answer Set Programming at a Glance” (2011) Notebook 6, ASP/Clingo
Russell & Norvig, AIMA 4e éd., ch. 7-8 Cadre général logique et SAT
Gärdenfors & Makinson (1988) Notebook 4, enracinement épistémique (caractérisation AGM)
Caminada (2006); Modgil & Caminada (2009) Notebook 5, labellings trivalués (in/out/undec)
Baroni et al. (2005) Notebook 5, sémantique CF2 (cycles impairs)
García & Simari, “Defeasible Logic Programming” (2004) Notebook 6, DeLP
Brewka & Woltran, “Abstract Dialectical Frameworks” (2010) Notebook 7a, ADF
Cayrol & Lagasquie-Schiex (2005) Notebook 7a, frameworks bipolaires (BAF)
Bonzon, Delobelle, Konieczny & Maudet (2016) Notebook 7b, sémantiques de classement
Arrow, “Social Choice and Individual Values” (1951) Notebook 9, théorème d’impossibilité (choix social)

Ressources en ligne

  • TweetyProject : https://tweetyproject.org/
  • Documentation API : https://tweetyproject.org/api/
  • GitHub : https://github.com/TweetyProjectTeam/TweetyProject
  • JPype : https://jpype.readthedocs.io/

Ponts avec les autres séries

Série Connection Détails
Argument_Analysis Argumentation agentique Utilise Tweety comme backend Java pour le raisonnement argumentatif. Les sémantiques de Dung (notebook 5) sont directement appliquées dans l’analyse de textes.
Lean Vérification formelle Les logiques propositionnelles et FOL (notebooks 2-3) correspondent aux tactiques de preuve Lean. Les SAT solvers de Tweety complètent la vérification Lean.
SmartContracts Méthodes formelles La vérification formelle SC-14 (Certora/SMTChecker) utilise les mêmes solveurs SAT/SMT. La logique propositionnelle de Tweety est la base des invariants Solidity.
SemanticWeb Logique de Description / OWL La logique de Description (Tweety-3) est le fondement du raisonnement OWL : les ontologies OWL DL (SW-6/SW-7) utilisent les mêmes solveurs DL que Tweety.
GameTheory Théorie du vote Le notebook 9 (Préférences/Vote) couvre les concepts de choix social formalisés dans game_theory_lean/SocialChoice/ (Arrow, Sen, Voting).
Planners Planification argumentative Les dialogues argumentatifs (notebook 8) peuvent être modélisés comme des problèmes de planification PDDL.
Lecture transversale La mer qui monte Grille de lecture grothendieckienne du dépôt : changement de représentation, certification A/B/C

Conclusion / Prochaines étapes

Ce que vous avez appris

Tweety est l’outil où le raisonnement devient explicite et vérifiable — le contre-pied des approches purement statistiques. En parcourant cette série, vous êtes allé du connecteur booléen au débat multi-agent :

  • Les logiques classiques (notebooks 1-4) : propositionnelle, du premier ordre, modale, de description. Vous avez vu qu’un même énoncé se décide mécaniquement — un SAT solver tranche, un reasoner DL classe, sans intuition.
  • L’argumentation (notebooks 5-7b) : la contribution la plus originale de Tweety. Les frameworks de Dung, ASPIC+, ABA, ADF, l’argumentation bipolaire et probabiliste — chaque modèle définit non pas « quelle conclusion est vraie » mais « quel argument résiste à l’attaque ». C’est une logique du débat, pas de la vérité.
  • Les applications (notebooks 8-9) : dialogues multi-agents, révision de croyances AGM, préférences et vote. La boucle se ferme — du raisonnement individuel à la délibération collective.

Prochaines étapes

  • Appliquez l’argumentation à du texte réel : la série Argument_Analysis utilise Tweety comme backend pour analyser des argumentations naturelles — c’est le terrain où les sémantiques de Dung rencontrent du langage humain.
  • Certifiez : les SAT/SMT solvers de Tweety et la vérification formelle partagent le même socle. La série Lean pousse la logique jusqu’à la preuve de programmes ; SmartContracts (SC-14) l’applique aux invariants Solidity.
  • Reliez aux ontologies : la logique de description de Tweety-3 est le moteur de raisonnement OWL. La série SemanticWeb (SW-6/SW-7) en fait le cœur des graphes de connaissances.
  • Élargissez au choix social : le notebook 9 (vote, préférences) est la porte d’entrée vers la théorie du choix social formalisée en Lean dans la série GameTheory (Arrow, Sen, Voting).
  • Les six ponts détaillés ci-dessus (## Ponts avec les autres séries) cartographient l’ensemble de ces connexions ; la Lecture transversale les relie au fil rouge du dépôt.

Le fil rouge

Le pitch de Tweety tient en un mot : explicabilité. Là où un LLM produit une réponse, Tweety produit un argument — une chaîne de raisonnement inspectable, attaquable, défendable. Les logiques changent (propositionnelle, FOL, modale, DL), les frameworks changent (Dung, ASPIC+, ABA), mais l’exigence reste — raisonner de façon transparente, pas opaquement. C’est elle que vous emportez au-delà de cette série, et c’est ce qui fait de l’IA symbolique un garde-fou naturel pour l’IA générative.


Version 1.2.6 — Septembre 2026 — entrée README de Tweety-02f-Modal-Zoo-Lean-Python (tranche G de l’EPIC #15066, sous-cube modal certifié : le module FormalLogic.ModalZoo (#17642) porte huit systèmes normaux et l’ordre** qui les relie ; le notebook exporte ses trois listes par lake env lean (toJson, récupéré entre marqueurs — aucune recopie), recalcule l’ordre en Python à partir des seuls profils exportés (le droit de le faire étant le théorème weakerThan_iff_profile), puis dessine le diagramme de Hasse — 11 arêtes de couverture et 7 paires incomparables, sur les 28 paires du cube, 21 inclusions strictes dont 10 par transitivité ; trois exercices stubs C.1). Surfaces touchées : table Structure (+ entrée 2f), table « En quoi chaque notebook est unique » (+ entrée), arbre de structure, tableau des stacks (colonne Python) et statistiques par sous-catégorie (Lean companion 6 → 7, total 38 → 39). Écart mesuré et corrigé au passage : la vue d’ensemble annonçait 1165 cellules pour 37 racine + 1 probe ; le disque en portait 1150 (1138 racine + 12 probe) — l’addition du notebook porte le compte à 1170 (446 code). Les 438 cellules de code, elles, étaient exactes. Résidus déclarés, non comblés ici : Tweety-12-Grounded-Via-TweetyProject reste absent des deux tables (13e notebook Python, durée jamais déclarée — même résidu que v1.2.3 à v1.2.5, aucune ligne inventée) ; la ligne « Durée estimée ~6h (tutorat) » n’est pas re-dérivée (notion distincte de la somme par notebook) ; et le bloc CATALOG-STATUS (pedagogical_count: 36) n’est pas réécrit à la main — il décrit main avant l’ajout et se résorbera à la prochaine régénération (catalog-pr-hygiene). Précédent : Version 1.2.5 — Septembre 2026 — entrée README de Tweety-02e-Preuves-Hilbert-Gentzen-Lean (tranche D de l’EPIC #15066, atelier calculs de preuve : les trois axiomes de Hilbert vérifiés par deux oracles réels, une preuve construite par chaînage avant — coût mesuré en instances/MP, plus une contre-expérience qui réfute par la mesure l’hypothèse d’un vivier simplement trop étroit — le syllogisme hypothétique, valide pour les deux oracles, n’est pas dérivé par le moteur, et l’élargir aux sous-formules de la cible ne suffit pas — puis le calcul des séquents LK dont la hauteur et la taille sont mesurées avant/après élimination des coupures, le Hauptsatz étant invoqué comme théorème du noyau Derivation.Canonical.constructiveHauptsatz, témoin IsCutFree inclus). Surfaces touchées : table Structure (+ entrée 2e), table « En quoi chaque notebook est unique » (+ entrée), arbre de structure, statistiques par sous-catégorie (Lean companion 4 → 6, total 35 → 38 — le recensement inclut désormais Tweety-12-Grounded-Via-TweetyProject, jusqu’ici hors comptes, avec sa maturité déclarée absente plutôt qu’inventée) et colonne Python du tableau des stacks (16 → 18). Le même geste comble un écart non déclaré : Tweety-02d-FOL-Lab-Lean (tranche B, #16877), présent sur disque depuis sa livraison mais absent des deux tables, y entre avec sa propre durée déclarée (45 minutes, lue dans le notebook) — aucune durée inventée. Trois écarts mesurés et corrigés au passage : les comptes de notebooks (« 32 » de la vue d’ensemble → 37 racine, dont 36 tabulés ; 34 → 36 principaux), les cellules totales (916 → 1165, mesurées sur l’ensemble des fichiers de la série) et les durées agrégées (Python ~13h, C#/.NET ~10h — la somme de la colonne C# valait déjà 585 min contre « ~7h » annoncées) ; l’arbre annonçait par ailleurs 18 assemblages .NET, git ls-tree origin/main en compte 19. Résidus déclarés, non comblés ici : Tweety-12-Grounded-Via-TweetyProject reste absent des tables (13e notebook Python ; sa durée n’est déclarée nulle part — même résidu que v1.2.3 et v1.2.4, aucune ligne inventée) ; la ligne « Durée estimée ~6h (tutorat) » de la vue d’ensemble n’est pas re-dérivée (notion distincte de la somme par notebook, non mesurable depuis le disque) ; et le versant Lean de la tranche D reste dans le notebook — les deux fichiers d’index du lake (FormalLogic/../FormalLogic.lean et son README.md) sont sous claim actif d’une autre lane (check_lane_claim.py, verdict BLOCKED au 2026-09-25), aucun module de pont n’a donc été ajouté à formal_logic_lean/. Précédent : Version 1.2.4 — Septembre 2026 — entree README de Tweety-3b-Modal-Lab-Lean (tranche C de l’EPIC #15066, laboratoire modal croise Python/Kripke <-> Lean/ModalBridge #17017) : table Structure (+ entrée 3b, notebooks principaux 33 → 34), table « En quoi chaque notebook est unique » (+ entrée), arbre de structure, statistiques par sous-categorie (Lean companion 3 → 4, total 34 → 35) et colonne Python du tableau des stacks (15 → 16). Residu declare, non comble ici : Tweety-12-Grounded-Via-TweetyProject reste absent des tables (duree non declaree, cf. v1.2.3). Precedent : Version 1.2.3 — Septembre 2026 — entree README de Tweety-5e-Propositional-Lab-Lean (tranche A de l’EPIC #15066, laboratoire propositionnel Tweety/Lean) : table Structure (notebooks principaux 32 → 33), table « En quoi chaque notebook est unique » (ajout de 5d et 5e, lignes 31 → 33), arbre de structure, statistiques par sous-categorie (Lean companion 2 → 3, total 33 → 34) et colonne Python du tableau des stacks (14 → 15). Residu declare, non comble ici : Tweety-12-Grounded-Via-TweetyProject (13e notebook Python, kernel python3, execute 8/8 sans erreur) reste absent des tables — sa duree n’est declaree nulle part dans le notebook, aucune ligne n’a donc ete inventee. Precedent : Version 1.2.2 — Août 2026 — ajout Tweety-5d (synthèse certifiée Z3→Lean, Loi II #12205/#13597) : lake argumentation_lean 6+6 siblings _en (module Synthesis), toolchain corrigée v4.32.1 (#11587), comptes re-mesurés : notebooks 33, cellules 969 dont 390 code (périmètre : 32 Tweety-* + 1 probe). Précédent : Version 1.2.1 — re-audit fichier-entier §E : 18 DLLs shades, scripts/ 5+4+_archive, pin IKVM 8.14, limitations re-ancrées 1.30. EPIC #3975 tranche tweety.**

Statistiques catalogue à jour

Statistiques détaillées de la sous-série Tweety. Le pedagogical_count: 36 est lu depuis le marqueur <!-- CATALOG-STATUS --> (l. 5-10). Le détail par sous-catégorie ci-dessous est réconcilié avec les étiquettes par-notebook du tableau Structure (source granulaire). NB : le marqueur indique maturity: BETA=33, ALPHA=3 — l’heuristique catalogue ne distingue pas les statuts PROD/BETA/DRAFT du tableau Structure (qui fait foi au niveau granulaire, DRAFT = Tweety-3-Advanced-Logics-Csharp BROKEN inclus) ; la prose ne s’aligne donc pas sur le marqueur (cf. catalog-pr-hygiene : ne pas s’aligner sur un catalogue faux). Un écart d’une unité subsiste, et il est attendu : le marqueur, régénéré par l’automatisation, décrit main avant l’ajout de Tweety-02e (36 racine), quand le recensement de cette page en compte 38 — le bloc CATALOG-STATUS n’est jamais réécrit à la main sur une branche feature (catalog-pr-hygiene), la résorption se fait donc à la prochaine régénération, pas ici :

Sous-catégorie NB Statut
Python (Tw-1..11) 12 PROD=12
Tweety-12-Grounded (non tabulé) 1 maturité non déclarée
Lean companion (2d, 2e, 2f, 3b, 5b, 5d, 5e) 7 BETA=7
C#/.NET 18 PROD=12, BETA=5, DRAFT=1
Probe _probes/ 1 BETA
Total 39 PROD=24, BETA=13, DRAFT=1, non déclarée=1

Détails paradigmes/stacks :

  • Python (JPype, 13 nb) : PL/FOL/DL/ML/QBF/CL/Dung/ASPIC+/AGM/MLN/do-calculus Pearl — double stack sur Tw-3 (DL+Modale+QBF), Tw-4 (Belief Revision), Tw-7b (Ranking), Tw-9 (vote/préférences), Tw-10 (MLN), Tw-11 (causal). Tous PROD. Les sept companions Lean viennent en supplément : Tweety-02d-FOL-Lab-Lean (BETA, kernels Python + Lean, tranche B de l’EPIC #15066 : un même syllogisme exécuté par SimpleFolReasoner et certifié sur le corpus FFL épinglé — conséquences quantifiées, contre-modèles finis exhibés) et Tweety-02e-Preuves-Hilbert-Gentzen-Lean (BETA, kernels Python + Lean, tranche D de l’EPIC #15066 : axiomes de Hilbert vérifiés par deux oracles, preuve construite par chaînage avant, puis hauteur/taille d’une dérivation LK avant/après élimination des coupures par le Hauptsatz du noyau), puis Tweety-5b-Lean-Argumentation (BETA, kernel Lean 4, argumentation_lean/) et Tweety-5d-Stable-Synthesis-Lean (BETA, kernel Python + Z3, Loi II #12205 : spécification → générateur Z3 → témoin → certificat Lean by decide), ainsi que Tweety-5e-Propositional-Lab-Lean (BETA, kernels Python + Lean, tranche A de l’EPIC #15066 : trois formules-témoins lues par Tweety, recomptées en Python et certifiées sur Foundation (FFL) au commit épinglé) et Tweety-3b-Modal-Lab-Lean (BETA, kernel Python + Lean via WSL, tranche C de l’EPIC #15066 : schémas K/T/4/5 parsés par MlParser, énumérés sur les 512 cadres Kripke 3-mondes puis certifiés par le pont FormalLogic.ModalBridge #17017 — réponse sémantique au bug SPASS #1334), et Tweety-02f-Modal-Zoo-Lean-Python (BETA, kernels Python + Lean, tranche G de l’EPIC #15066 : le sous-cube FormalLogic.ModalZoo — profils, couvertures et paires incomparables exportés par lake env lean, ordre recalculé en Python, diagramme de Hasse dessiné et chaque trait certifié par le noyau).
  • C#/.NET (IKVM 8.14, 18 nb) : bytecode Java→.NET downgrade Java 15→8 (post-C190 JvmDowngrader), sans JVM. PROD=12, BETA=5 (Tweety-2b-Semantics-Csharp, Tweety-2c-FOL-Csharp, Tweety-4-Belief-Revision-Csharp, Tweety-4-Aspic-Csharp, Tweety-5-Abstract-Argumentation-Csharp), DRAFT=1 = BROKEN (Tweety-3-Advanced-Logics-Csharp, conflits de noms sur logics.ml + logics.cl + logics.qbf simultanés dans la même DLL).
  • Probe (_probes/Tweety-IKVM-Init-Probe, 1 nb) : IKVM init smoke-test BETA.

Conformité C.1 : les notebooks exposent des stubs conformes (pass / return None / print("Exercice à compléter") / jamais raise NotImplementedError) et restent exécutables end-to-end. Les dépendances sont gérées par requirements.txt racine (JPype1, tweety-translate, pandas, numpy, jdk-pywrap). Le port C#/.NET (EPIC #4667) cible .NET 9.0 + IKVM 8.14 (post-C190 JvmDowngrader Java 15→8) ; voir la chaîne de build dans .github/workflows/tweety-csharp.yml et l’inventaire détaillé dans la Section Tweety. Le seul notebook C# à maturité DRAFT est Tweety-3-Advanced-Logics-Csharp (statut BROKEN : héritage des conflits de noms de classes IKVM 8.14 sur logics.ml + logics.cl + logics.qbf simultanés).

Écosystème MCP et parenté cross-lane

Trois outils d’infrastructure MCP soutiennent l’exécution, la validation et la composition cross-séries de cette sous-série :

  1. MCP Jupyter (mcp__jupyter-papermill__*) — exécution programmée des notebooks via Papermill, capture des sorties, gestion du cycle de vie des kernels Python 3 et .net-csharp. Note : le mode async ignore kernel_name (bug #5211) — toujours passer par nbconvert --execute avec timeout pour les ré-exécutions.
  2. Validation pre-commit (.pre-commit-config.yaml) — gitleaks (anti-secrets inline, règle os.getenv("KEY", "<literal-fallback>") proscrit) + notebook validator (C.1/C.2 : pas de raise NotImplementedError, cellules code = execution_count + outputs cohérents) bloquent les PRs qui dégraderaient les contrats inter-séries.
  3. MCP QC Cloud (mcp__qc-mcp-lite__*) — backtest QuantConnect partagé pour les notebooks QC (Tw-9 vote Preferences éclaire les modèles de choix social, cf. cross-lane ci-dessous).

La sous-série Tweety s’inscrit dans un réseau cross-lane structuré autour de l’argumentation et de la logique formelle :

Cette sous-série Symétrie dans Pont pédagogique
Tweety-3 (logique de description) SemanticWeb (SW-6/SW-7 OWL) DL = moteur de raisonnement OWL ; même formalisme, deux écosystèmes
Tweety-3 (Dung frameworks) Argument_Analysis Détection de sophismes via cadres de Dung + Semantic Kernel (LLM-contrôle)
Tweety-3 (logique modale/QBF) Lean (mathlib4) Formalisation des logiques Tweety dans l’assistant de preuve Lean 4
Tweety-9 (préférences, vote) GameTheory Préférences individuelles → fonction de choix social (Borda, Condorcet, Arrow)
Tweety-4 (révision AGM) SmartContracts (SC-14) Mise à jour de croyances → invariants Solidity, logique de révision on-chain
Tweety-11 (Causalité, do-calculus) ML (inférence causale) do-calculus Pearl ↔︎ modèles causaux structurels (Pearl 2009)

Effet de composition : Tweety est le carrefour logique du dépôt — chaque sous-série partenaire (Lean, SemanticWeb, Argument_Analysis, GameTheory, SmartContracts, ML) y trouve un point d’entrée formel vers l’argumentation computationnelle. Le pipeline complet relie les notebooks (qui motivent la pertinence du raisonnement explicite) aux ports C#/.NET (qui rendent Tweety invocable sans JVM, via IKVM 8.14, EPIC #4667) et aux lakes (qui formalisent les théorèmes sous-jacents, ex. Arrow en Lean 4).

Licence

Les notebooks sont distribués sous licence MIT. TweetyProject est sous licence LGPL 3.0.

Retour au sommet