From 6c0171c279b9ec0d0c8106dab68a3cd64d6d2389 Mon Sep 17 00:00:00 2001 From: jsboige Date: Sun, 13 Sep 2026 18:01:50 +0200 Subject: [PATCH 1/5] renum(tweety,#11840): bande 1 padding zero + suffixe noyau canonique (15 git mv) Rollout serie Tweety sous #11840/#5081 : slots 1, 2, 2b, 2c, 6, 7a, 7b, 8, 9. Padding zero (1->01 ... 9->09), suffixe -Python ajoute sur les nus (kernel verifie metadata.kernelspec), casse -Csharp -> -CSharp (canon #11840 ; aligne sur la vague SW livree, cf UNIVERSE test_check_twin_parity_coverage). Aucun changement de contenu pedagogique (protocole renum section 5.6) -- sweep des referents uniquement : README serie + SymbolicAI, navlinks notebooks voisins (Tweety-3x/10/11/12, Argument_Analysis, Lean-3b), twin_pairs.d tweety-*.yaml (chemins ; blobs inchanges, attestations SHA valides), scripts referents Tweety + tests twin coverage, translations/tweety + symbolicai, slides/03 -logique + S6-tweety, _quarto.yml, pedagogy_density_baseline.json. Catalogue byte-identique a main. Tranche ratchet #13140 embarquee : les 13 text=True sans encoding du script de test touche par le sweep (retroactively-clean-by-design). Hors bande (nomme sur l'issue) : collisions Tweety-3 x5 / Tweety-4 x2 (tranche semantique dediee), slots 5x (gate sequencement PR #15980), slots 10/11/12 + IKVM probe (bande 2), branche 7 sans base (reporte). Gardes locaux : check_docs_links 0/7039, navlinks 0/1259, orphelins baseline 0/811, subprocess-encoding gate OK, twin parity a re-Verifier post-commit. See #11840 See #5081 Co-Authored-By: Claude Sonnet 5 --- .../Argument_Analysis_Executor.ipynb | 2 +- .../Argument_Analysis_Value_Based_AF.ipynb | 6 +- .../SymbolicAI/Argument_Analysis/README.md | 4 +- .../Lean-3b-Formalized-Formal-Logic.ipynb | 2 +- MyIA.AI.Notebooks/SymbolicAI/README.md | 22 +- MyIA.AI.Notebooks/SymbolicAI/Tweety/README.md | 70 +- ...tup.ipynb => Tweety-01-Setup-Python.ipynb} | 32 +- ...nb => Tweety-02-Basic-Logics-CSharp.ipynb} | 10 +- ...nb => Tweety-02-Basic-Logics-Python.ipynb} | 22 +- ...pynb => Tweety-02b-Semantics-CSharp.ipynb} | 14 +- ...harp.ipynb => Tweety-02c-FOL-CSharp.ipynb} | 8 +- ...-06-Structured-Argumentation-CSharp.ipynb} | 6 +- ...-06-Structured-Argumentation-Python.ipynb} | 28 +- ...eety-07a-Extended-Frameworks-CSharp.ipynb} | 14 +- ...eety-07a-Extended-Frameworks-Python.ipynb} | 18 +- ...ty-07b-Ranking-Probabilistic-CSharp.ipynb} | 10 +- ...ty-07b-Ranking-Probabilistic-Python.ipynb} | 26 +- ...=> Tweety-08-Agent-Dialogues-CSharp.ipynb} | 6 +- ...=> Tweety-08-Agent-Dialogues-Python.ipynb} | 18 +- ...ynb => Tweety-09-Preferences-CSharp.ipynb} | 12 +- ...ynb => Tweety-09-Preferences-Python.ipynb} | 24 +- .../Tweety/Tweety-10-MLN-Csharp.ipynb | 4 +- .../SymbolicAI/Tweety/Tweety-10-MLN.ipynb | 20 +- .../SymbolicAI/Tweety/Tweety-11-Causal.ipynb | 4 +- ...Tweety-12-Grounded-Via-TweetyProject.ipynb | 4 +- .../Tweety-3-Advanced-Logics-Csharp.ipynb | 12 +- .../Tweety/Tweety-3-Advanced-Logics.ipynb | 14 +- .../Tweety-3-Conditional-Logics-Csharp.ipynb | 10 +- .../Tweety/Tweety-3-Dung-Csharp.ipynb | 6 +- .../Tweety/Tweety-3-QBF-Csharp.ipynb | 8 +- .../Tweety/Tweety-4-Aspic-Csharp.ipynb | 12 +- .../Tweety/Tweety-4-Belief-Revision.ipynb | 6 +- .../Tweety-5-Abstract-Argumentation.ipynb | 8 +- .../Tweety-5e-Propositional-Lab-Lean.ipynb | 6 +- .../_probes/Tweety-IKVM-Init-Probe.ipynb | 2 +- .../SymbolicAI/Tweety/dotnet-build/README.md | 14 +- .../build-TweetyDialoguesShade.csproj | 2 +- .../scripts/_archive/reorganize_tweety.py | 16 +- .../Tweety/scripts/validate_syntax.py | 10 +- .../Tweety/scripts/verify_all_tweety.py | 24 +- .../SymbolicAI/_archive/README.md | 6 +- README.md | 2 +- _quarto.yml | 8 +- .../2026-07-11-h4-sweep-6021.md | 2 +- docs/archive/visitor-navigation-guide.md | 2 +- docs/curriculum/ia-symbolique.md | 30 +- .../ledgers/10678-interp-positioning-audit.md | 4 +- docs/ledgers/3801-sota-axe2.md | 2 +- docs/notebook-metadata/production-scope.md | 10 +- .../pedagogy_density_baseline.json | 28 +- .../test_check_outputs_text_fragmentation.py | 32 +- .../tests/test_check_twin_parity_coverage.py | 4 +- .../twin_pairs.d/tweety-2-basic-logics.yaml | 4 +- .../tweety-6-structured-argumentation.yaml | 4 +- .../tweety-7a-extended-frameworks.yaml | 4 +- .../tweety-7b-ranking-probabilistic.yaml | 4 +- .../tweety-8-agent-dialogues.yaml | 4 +- .../twin_pairs.d/tweety-9-preferences.yaml | 4 +- slides/03-logique/slides.md | 10 +- slides/S6-tweety/slides.md | 14 +- translations/symbolicai/argument_analysis.csv | 6 +- translations/tweety/tweety.csv | 1064 ++++++++--------- 62 files changed, 892 insertions(+), 892 deletions(-) rename MyIA.AI.Notebooks/SymbolicAI/Tweety/{Tweety-1-Setup.ipynb => Tweety-01-Setup-Python.ipynb} (98%) rename MyIA.AI.Notebooks/SymbolicAI/Tweety/{Tweety-2-Basic-Logics-Csharp.ipynb => Tweety-02-Basic-Logics-CSharp.ipynb} (96%) rename MyIA.AI.Notebooks/SymbolicAI/Tweety/{Tweety-2-Basic-Logics.ipynb => Tweety-02-Basic-Logics-Python.ipynb} (99%) rename MyIA.AI.Notebooks/SymbolicAI/Tweety/{Tweety-2b-Semantics-Csharp.ipynb => Tweety-02b-Semantics-CSharp.ipynb} (97%) rename MyIA.AI.Notebooks/SymbolicAI/Tweety/{Tweety-2c-FOL-Csharp.ipynb => Tweety-02c-FOL-CSharp.ipynb} (99%) rename MyIA.AI.Notebooks/SymbolicAI/Tweety/{Tweety-6-Structured-Argumentation-Csharp.ipynb => Tweety-06-Structured-Argumentation-CSharp.ipynb} (98%) rename MyIA.AI.Notebooks/SymbolicAI/Tweety/{Tweety-6-Structured-Argumentation.ipynb => Tweety-06-Structured-Argumentation-Python.ipynb} (98%) rename MyIA.AI.Notebooks/SymbolicAI/Tweety/{Tweety-7a-Extended-Frameworks-Csharp.ipynb => Tweety-07a-Extended-Frameworks-CSharp.ipynb} (99%) rename MyIA.AI.Notebooks/SymbolicAI/Tweety/{Tweety-7a-Extended-Frameworks.ipynb => Tweety-07a-Extended-Frameworks-Python.ipynb} (98%) rename MyIA.AI.Notebooks/SymbolicAI/Tweety/{Tweety-7b-Ranking-Probabilistic-Csharp.ipynb => Tweety-07b-Ranking-Probabilistic-CSharp.ipynb} (99%) rename MyIA.AI.Notebooks/SymbolicAI/Tweety/{Tweety-7b-Ranking-Probabilistic.ipynb => Tweety-07b-Ranking-Probabilistic-Python.ipynb} (97%) rename MyIA.AI.Notebooks/SymbolicAI/Tweety/{Tweety-8-Agent-Dialogues-Csharp.ipynb => Tweety-08-Agent-Dialogues-CSharp.ipynb} (99%) rename MyIA.AI.Notebooks/SymbolicAI/Tweety/{Tweety-8-Agent-Dialogues.ipynb => Tweety-08-Agent-Dialogues-Python.ipynb} (98%) rename MyIA.AI.Notebooks/SymbolicAI/Tweety/{Tweety-9-Preferences-Csharp.ipynb => Tweety-09-Preferences-CSharp.ipynb} (99%) rename MyIA.AI.Notebooks/SymbolicAI/Tweety/{Tweety-9-Preferences.ipynb => Tweety-09-Preferences-Python.ipynb} (97%) diff --git a/MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/Argument_Analysis_Executor.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/Argument_Analysis_Executor.ipynb index 77b338a457..0f9f0abc2c 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/Argument_Analysis_Executor.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/Argument_Analysis_Executor.ipynb @@ -253,7 +253,7 @@ "\n", "**Dépendances système**:\n", "- **JDK 11+** (pour Tweety via JPype): `JAVA_HOME` doit être configuré\n", - "- **Bibliothèque Tweety**: JARs dans `libs/` (téléchargement automatique via `Tweety-1-Setup.ipynb`)\n", + "- **Bibliothèque Tweety**: JARs dans `libs/` (téléchargement automatique via `Tweety-01-Setup-Python.ipynb`)\n", "\n", "**Fichiers requis**:\n", "\n", diff --git a/MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/Argument_Analysis_Value_Based_AF.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/Argument_Analysis_Value_Based_AF.ipynb index af90c31060..77528c7c6e 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/Argument_Analysis_Value_Based_AF.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/Argument_Analysis_Value_Based_AF.ipynb @@ -324,7 +324,7 @@ "\n", "**Lecture** : sur ce cycle, le grounded contient toujours **deux** arguments sur trois — mais l'argument *exclu* change avec l'audience ($b$, puis $c$, puis $a$). Le mécanisme : l'argument dont la valeur est **la plus préférée** voit l'attaque dirigée contre lui échouer (son attaquant est moins préféré), donc il survit ; et comme sa propre attaque *vers le suivant* réussit, il élimine ce suivant. Le troisième argument survit alors par défense (le survivant principal défait l'attaquant du troisième). En résumé : **mettre une valeur en tête d'audience condamne l'argument que cette valeur attaque dans le cycle**.\n", "\n", - "C'est le résultat central de Bench-Capon : **la conclusion d'un débat n'est pas déterminée par le graphe d'arguments seul, mais par le graphe ET les valeurs de l'audience**. Trois auditoires de valeurs différentes, confrontés aux *mêmes* arguments, excluent légitimement des arguments différents. Cela relie l'argumentation à la théorie du choix social : si plusieurs individus ont des audiences différentes, **agréger leurs préférences** (cf. [Tweety-9](../Tweety/Tweety-9-Preferences.ipynb), [GameTheory SocialChoice](../../GameTheory/)) devient la question centrale pour décider collectivement." + "C'est le résultat central de Bench-Capon : **la conclusion d'un débat n'est pas déterminée par le graphe d'arguments seul, mais par le graphe ET les valeurs de l'audience**. Trois auditoires de valeurs différentes, confrontés aux *mêmes* arguments, excluent légitimement des arguments différents. Cela relie l'argumentation à la théorie du choix social : si plusieurs individus ont des audiences différentes, **agréger leurs préférences** (cf. [Tweety-9](../Tweety/Tweety-09-Preferences-Python.ipynb), [GameTheory SocialChoice](../../GameTheory/)) devient la question centrale pour décider collectivement." ] }, { @@ -613,7 +613,7 @@ "\n", "### Prochaines étapes\n", "\n", - "- **Agrégation d'audiences → choix social** : si chaque individu a sa propre audience, comment décider collectivement ? C'est le pont vers [Tweety-9 (préférences)](../Tweety/Tweety-9-Preferences.ipynb) et [GameTheory / SocialChoice](../../GameTheory/) (théorèmes d'impossibilité d'Arrow, votations). La question « existe-t-il une agrégation d'audiences qui préserve la rationalité ? » est un analogue direct du paradoxe de Condorcet.\n", + "- **Agrégation d'audiences → choix social** : si chaque individu a sa propre audience, comment décider collectivement ? C'est le pont vers [Tweety-9 (préférences)](../Tweety/Tweety-09-Preferences-Python.ipynb) et [GameTheory / SocialChoice](../../GameTheory/) (théorèmes d'impossibilité d'Arrow, votations). La question « existe-t-il une agrégation d'audiences qui préserve la rationalité ? » est un analogue direct du paradoxe de Condorcet.\n", "- **Argumentation graduée** : plutôt qu'un ordre total sur les valeurs, [Ranking_Semantics](Argument_Analysis_Ranking_Semantics.ipynb) attribue une *force numérique* à chaque argument — une autre façon de départager ce que Dung laisse indécidé.\n", "- **Bipolarité** : les VAF gèrent les préférences, mais restent *attack-only*. Les cadres bipolaires (Cayrol & Lagasquie-Schiex, 2005) ajoutent une relation de **support** — un prolongement naturel au-delà de ce notebook.\n", "\n", @@ -621,7 +621,7 @@ "\n", "- Trevor J. M. Bench-Capon, *« A Value-Based Argumentation Framework »*, dans *Proceedings of the European Conference on Logics in Artificial Intelligence (JELIA)*, 2003 — le papier fondateur du cadre VAF reconstruit ici.\n", "\n", - "---\n", + "***\n", "\n", "*Notebook pédagogique — pur stdlib Python, déterministe, sans LLM ni solveur externe. Conforme C.1 (stubs sans erreur volontaire), C.2 (sorties réelles), exercices à compléter.*" ] diff --git a/MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/README.md b/MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/README.md index 66ff4d0537..6558047456 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/README.md +++ b/MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/README.md @@ -331,7 +331,7 @@ Lecture `CATALOG-STATUS` byte-identique (l. 3-8) : la valeur canonique `pedagogi | ----- | ---------- | ------- | | **[Tweety](../Tweety/)** | Backend argumentatif | Utilise directement TweetyProject (JPype) pour le raisonnement formel. Les sémantiques de Dung (Tweety-5) et la révision de croyances (Tweety-4) sont au cœur du pipeline. | | **[Lean](../Lean/)** | Preuves formelles | La formalisation logique des arguments (Agentic-2) suit le même paradigme que les tactiques Lean. La vérification de cohérence via SAT est analogue aux proof checkers. | -| **[Tweety-9](../Tweety/Tweety-9-Preferences.ipynb)** | Préférences et vote | L'analyse d'arguments de valeur croise les modèles de préférence et la théorie du choix social (GameTheory/game_theory_lean/SocialChoice/). | +| **[Tweety-9](../Tweety/Tweety-09-Preferences-Python.ipynb)** | Préférences et vote | L'analyse d'arguments de valeur croise les modèles de préférence et la théorie du choix social (GameTheory/game_theory_lean/SocialChoice/). | | **[SemanticWeb](../SemanticWeb/)** | Raisonneur OWL/SHACL | Pattern analogue pour la détection d'incohérence ; l'ontologie Argumentum partage les mêmes contraintes de parsing (axiom mal-formés, rdflib en échec) — le notebook `Ontology_AIF` charge `argumentum_fallacies.owl` via parseur regex dédié. | | **[Argumentum](../../../../Argumentum)** *(submodule, hors-repo)* | Ontologie source | L'ontologie `argumentum_fallacies.owl` (4,7 MB OWL2/XML, 10 976 NamedIndividual) est l'export formel de la taxonomie utilisée par le détecteur de sophismes (1-informal). Les 8 colonnes `crossLink_*` du CSV upstream complètent les relations OWL natives par des liens inter-noeuds (PredatesOn, Denounces, Leverages, Allows, Opposes, Inverts, Mirrors, IsRelatedTo). | @@ -354,7 +354,7 @@ Lecture `CATALOG-STATUS` byte-identique (l. 3-8) : la valeur canonique `pedagogi | `Agentic-1-informal` (taxonomie 1406 nœuds, 7 familles de sophismes) + `Agentic-2-formal` (Tweety) | [Tweety](../Tweety/) (JPype, sémantiques Dung, FOL, Modal) | TweetyProject = solveur formel unique, JPype = pont Python/Java ; Argument_Analysis consomme les API Tweety comme backend de validation | | `Agentic-2-formal` (PL/FOL/Modal/Dung) | [Lean](../Lean/) (preuves formelles, tactiques) | Formalisation logique = même paradigme que tactiques Lean ; frontière informel/formel analogue à proof/script | | `Dung_AF_Semantics`, `Ranking_Semantics` | [Tweety](../Tweety/) (Tweety-5 argumentation abstraite) + [GameTheory](../../GameTheory/) (`game_theory_lean/SocialChoice/` Voting.lean) | Sémantiques de Dung (grounded/preferred/stable) = même fondement mathématique que Voting (Banks sets, monotonie STV) | -| `Value_Based_AF` | [GameTheory](../../GameTheory/) (`game_theory_lean/SocialChoice/`) + [Tweety-9](../Tweety/Tweety-9-Preferences.ipynb) (préférences) | Audiences VAF = ordres de préférence sur les valeurs : agréger plusieurs audiences = problème de choix social (Condorcet, Arrow), pont direct vers la théorie du vote | +| `Value_Based_AF` | [GameTheory](../../GameTheory/) (`game_theory_lean/SocialChoice/`) + [Tweety-9](../Tweety/Tweety-09-Preferences-Python.ipynb) (préférences) | Audiences VAF = ordres de préférence sur les valeurs : agréger plusieurs audiences = problème de choix social (Condorcet, Arrow), pont direct vers la théorie du vote | | `Agentic-3-orchestration` (Semantic Kernel) | [Argumentum](Argumentum/) + [CoursIA-OwlAdapter](CoursIA-OwlAdapter/) (EPITA-IS verbatim ports, sous-dossiers locaux) | Orchestration agentique = même architecture que Semantic Kernel orchestrant prompts ; Argumentum = ports upstream byte-equal | | `Restitution_3_Actes` (narration LLM *gated*) | [GenAI](../../GenAI/) (Text/Image/Audio/Video, self-hosted + Cloud) | Restitution LLM = même besoin de **séparation lisibilité/honnêteté** que GenAI Text : le LLM génère, le scaffold déterministe garantit la grounding | | `Multi_Backend_Routing`, `Formal_Richness_Matrix` (sentinelle anti-théâtre) | [Search](../../Search/) (CSP/SMT/Z3) + [SemanticWeb](../SemanticWeb/) (OWL/SHACL raisonneurs) | Routage multi-solveur avec sentinelle « décider ou échouer bruyamment » analogue à CSP marathon EPIC #4956 ; classification 4-verdicts symétrique aux solveurs OWL (consistent / inconsistent / unknown / timeout) | diff --git a/MyIA.AI.Notebooks/SymbolicAI/Lean/Lean-3b-Formalized-Formal-Logic.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Lean/Lean-3b-Formalized-Formal-Logic.ipynb index 930d07fab0..94c24b0896 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Lean/Lean-3b-Formalized-Formal-Logic.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Lean/Lean-3b-Formalized-Formal-Logic.ipynb @@ -18,7 +18,7 @@ "\n", "**Navigation** : [Index](README.md) | [Lean-3 (Propositions) <<](Lean-3-Propositions-Proofs.ipynb) | [Lean-4 (Quantifiers) >>](Lean-4-Quantifiers.ipynb)\n", "\n", - "Companion transversal de [Tweety-2](../Tweety/Tweety-2-Basic-Logics.ipynb) et de\n", + "Companion transversal de [Tweety-2](../Tweety/Tweety-02-Basic-Logics-Python.ipynb) et de\n", "[Lean-3](Lean-3-Propositions-Proofs.ipynb) — premier maillon de l'Epic\n", "**#15066 (Formalized Formal Logic)**.\n", "\n", diff --git a/MyIA.AI.Notebooks/SymbolicAI/README.md b/MyIA.AI.Notebooks/SymbolicAI/README.md index 6bc77d4b46..23529001ea 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/README.md +++ b/MyIA.AI.Notebooks/SymbolicAI/README.md @@ -93,7 +93,7 @@ La série SymbolicLearning (21 notebooks : 12 Python + 8 jumeaux C# from-scratch | Série | Premier notebook | Commande rapide | |-------|-----------------|-----------------| -| **Tweety** | `Tweety/Tweety-1-Setup.ipynb` | Ouvrir dans Jupyter, exécuter toutes les cellules | +| **Tweety** | `Tweety/Tweety-01-Setup-Python.ipynb` | Ouvrir dans Jupyter, exécuter toutes les cellules | | **Lean** | `Lean/Lean-1-Setup.ipynb` | `wsl -d Ubuntu -- bash -c "jupyter notebook Lean-1-Setup.ipynb"` | | **SemanticWeb** | `SemanticWeb/SW-1-CSharp-Setup.ipynb` (.NET) ou `SW-2b-Python-RDFBasics.ipynb` (Python) | `pip install rdflib pySHACL` | | **Planners** | `Planners/00-Environment/Planners-0-Setup.ipynb` | `pip install ortools unified_planning` | @@ -130,8 +130,8 @@ Série sur [TweetyProject](https://tweetyproject.org/), bibliothèque Java pour | # | Notebook | Contenu | Exercices | Prérequis | |---|----------|---------|-----------|-----------| | **Fondations** | | | | | -| 1 | [Tweety-1-Setup](Tweety/Tweety-1-Setup.ipynb) | Configuration JVM via JPype, JARs (35 modules), outils externes | Setup | Java/JPype | -| 2 | [Tweety-2-Basic-Logics](Tweety/Tweety-2-Basic-Logics.ipynb) | Logique Propositionnelle, SAT4J, PySAT. FOL : prédicats, quantificateurs | 2 | Java/JPype | +| 1 | [Tweety-1-Setup](Tweety/Tweety-01-Setup-Python.ipynb) | Configuration JVM via JPype, JARs (35 modules), outils externes | Setup | Java/JPype | +| 2 | [Tweety-2-Basic-Logics](Tweety/Tweety-02-Basic-Logics-Python.ipynb) | Logique Propositionnelle, SAT4J, PySAT. FOL : prédicats, quantificateurs | 2 | Java/JPype | | 3 | [Tweety-3-Advanced-Logics](Tweety/Tweety-3-Advanced-Logics.ipynb) | Description Logic, Logique Modale (SPASS), QBF, Conditionnelle | 2 | Java/JPype, SPASS | | **Revision de Croyances** | | | | | | 4 | [Tweety-4-Belief-Revision](Tweety/Tweety-4-Belief-Revision.ipynb) | Postulats AGM, MUS, MaxSAT, mesures d'incohérence | 2 | Java/JPype | @@ -139,12 +139,12 @@ Série sur [TweetyProject](https://tweetyproject.org/), bibliothèque Java pour | 5 | [Tweety-5-Abstract-Argumentation](Tweety/Tweety-5-Abstract-Argumentation.ipynb) | Frameworks de Dung, sémantiques (grounded, preferred, stable, CF2) | 2 | Java/JPype | | 5b | [Tweety-5b-Lean-Argumentation](Tweety/Tweety-5b-Lean-Argumentation.ipynb) | Companion natif (kernel Lean) : preuve formelle 0-sorry de l'argumentation de Dung (grounded = point fixe Knaster–Tarski) dans le lake `argumentation_lean` | 3 | Lean 4 / WSL | | 5d | [Tweety-5d-Stable-Synthesis-Lean](Tweety/Tweety-5d-Stable-Synthesis-Lean.ipynb) | Synthèse certifiée d'extensions stables : Z3 → Lean (Loi II) | 4 | Java/JPype, Z3 | -| 6 | [Tweety-6-Structured-Argumentation](Tweety/Tweety-6-Structured-Argumentation.ipynb) | ASPIC+, DeLP, ABA, ASP avec Clingo | 2 | Java/JPype, Clingo | -| 7a | [Tweety-7a-Extended-Frameworks](Tweety/Tweety-7a-Extended-Frameworks.ipynb) | ADF, Bipolar, WAF, SAF, SetAF, EAF | 2 | Java/JPype | -| 7b | [Tweety-7b-Ranking-Probabilistic](Tweety/Tweety-7b-Ranking-Probabilistic.ipynb) | Ranking semantics, argumentation probabiliste | 2 | Java/JPype | +| 6 | [Tweety-6-Structured-Argumentation](Tweety/Tweety-06-Structured-Argumentation-Python.ipynb) | ASPIC+, DeLP, ABA, ASP avec Clingo | 2 | Java/JPype, Clingo | +| 7a | [Tweety-7a-Extended-Frameworks](Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb) | ADF, Bipolar, WAF, SAF, SetAF, EAF | 2 | Java/JPype | +| 7b | [Tweety-7b-Ranking-Probabilistic](Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb) | Ranking semantics, argumentation probabiliste | 2 | Java/JPype | | **Applications** | | | | | -| 8 | [Tweety-8-Agent-Dialogues](Tweety/Tweety-8-Agent-Dialogues.ipynb) | Agents argumentatifs, protocoles de dialogue, loteries | 2 | Java/JPype | -| 9 | [Tweety-9-Preferences](Tweety/Tweety-9-Preferences.ipynb) | Ordres de préférence, théorie du vote (Borda, Copeland) | 1 | Java/JPype | +| 8 | [Tweety-8-Agent-Dialogues](Tweety/Tweety-08-Agent-Dialogues-Python.ipynb) | Agents argumentatifs, protocoles de dialogue, loteries | 2 | Java/JPype | +| 9 | [Tweety-9-Preferences](Tweety/Tweety-09-Preferences-Python.ipynb) | Ordres de préférence, théorie du vote (Borda, Copeland) | 1 | Java/JPype | | **Raisonnement avancé** | | | | | | 10 | [Tweety-10-MLN](Tweety/Tweety-10-MLN.ipynb) | Markov Logic Networks : FOL pondérée, inférence probabiliste sur formules | 3 | Java/JPype | | 11 | [Tweety-11-Causal](Tweety/Tweety-11-Causal.ipynb) | Raisonnement causal : do-calculus (Pearl), interventions, contrefactuels | 3 | Java/JPype | @@ -508,7 +508,7 @@ Documentation complète : [SymbolicLearning/README.md](SymbolicLearning/README.m ``` SymbolicAI/ ├── Tweety/ # Serie TweetyProject (34 notebooks : 14 Python/JPype + 18 C#/IKVM — EPICs #4667 + #4956 — + 1 Lean Tweety-5b + 1 _probes) -│ ├── Tweety-1-Setup.ipynb ... Tweety-12-Grounded-Via-TweetyProject.ipynb +│ ├── Tweety-01-Setup-Python.ipynb ... Tweety-12-Grounded-Via-TweetyProject.ipynb │ ├── Tweety-*-Csharp.ipynb # Modules .NET mergés via IKVM 8.14/8.15 │ ├── tweety_init.py # Module d'initialisation partage │ ├── libs/ # JARs TweetyProject (35 modules) @@ -618,7 +618,7 @@ dotnet interactive jupyter install **Status exécution : 10/10 SUCCESS** (snapshot 15/08/2026 sur le périmètre Python d'alors ; la série compte désormais 14 notebooks Python — cf. marqueur `CATALOG-STATUS`) -Le setup est entièrement automatisé via `Tweety-1-Setup.ipynb` : +Le setup est entièrement automatisé via `Tweety-01-Setup-Python.ipynb` : 1. **JDK 17 portable** : Auto-télécharge dans `Tweety/jdk-17-portable/` (Azul Zulu, ~180MB). Aucune installation système requise, pas de UAC. 2. **JARs TweetyProject** : Auto-télécharges dans `Tweety/libs/` depuis Maven Central (35 modules, ~50MB total). @@ -813,7 +813,7 @@ L'IA symbolique repose sur la **manipulation explicite de symboles et de règles ### Comment installer l'environnement Tweety ? -Ouvrez le notebook `Tweety-1-Setup.ipynb` : il télécharge automatiquement JDK 17 et les 35 JARs TweetyProject. Vous pouvez aussi lancer `python Tweety/scripts/download_tweety_tools.py --all` en ligne de commande. Les dependances Python sont `jpype1 requests tqdm clingo z3-solver python-sat`. +Ouvrez le notebook `Tweety-01-Setup-Python.ipynb` : il télécharge automatiquement JDK 17 et les 35 JARs TweetyProject. Vous pouvez aussi lancer `python Tweety/scripts/download_tweety_tools.py --all` en ligne de commande. Les dependances Python sont `jpype1 requests tqdm clingo z3-solver python-sat`. ### Par quelle sous-série commencer si je n'ai pas de JDK installe ? diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/README.md b/MyIA.AI.Notebooks/SymbolicAI/Tweety/README.md index fd387218d4..d5ac61fcb1 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/README.md +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/README.md @@ -142,11 +142,11 @@ Pour les praticiens intéressés par les applications multi-agents : | # | Notebook | Thème | Durée | Stack | |---|-------------------------------------------|----------------------------------------------------------------|---------|--------| | **Fondations** | | | | | -| 1 | [Tweety-1-Setup](Tweety-1-Setup.ipynb) | Configuration JVM, JARs, outils externes | 20 min | Python | -| 2 | [Tweety-2-Basic-Logics](Tweety-2-Basic-Logics.ipynb) | Logique Propositionnelle et FOL | 45 min | Python | -| 2a | [Tweety-2-Basic-Logics-Csharp](Tweety-2-Basic-Logics-Csharp.ipynb) | Logique propositionnelle .NET (IKVM, port pilot #4792) | 30 min | C# PROD | -| 2b | [Tweety-2b-Semantics-Csharp](Tweety-2b-Semantics-Csharp.ipynb) | Sémantique propositionnelle .NET (mondes possibles) | 30 min | C# BETA | -| 2c | [Tweety-2c-FOL-Csharp](Tweety-2c-FOL-Csharp.ipynb) | FOL porté .NET (IKVM) | 30 min | C# BETA | +| 1 | [Tweety-1-Setup](Tweety-01-Setup-Python.ipynb) | Configuration JVM, JARs, outils externes | 20 min | Python | +| 2 | [Tweety-2-Basic-Logics](Tweety-02-Basic-Logics-Python.ipynb) | Logique Propositionnelle et FOL | 45 min | Python | +| 2a | [Tweety-2-Basic-Logics-Csharp](Tweety-02-Basic-Logics-CSharp.ipynb) | Logique propositionnelle .NET (IKVM, port pilot #4792) | 30 min | C# PROD | +| 2b | [Tweety-2b-Semantics-Csharp](Tweety-02b-Semantics-CSharp.ipynb) | Sémantique propositionnelle .NET (mondes possibles) | 30 min | C# BETA | +| 2c | [Tweety-2c-FOL-Csharp](Tweety-02c-FOL-CSharp.ipynb) | FOL porté .NET (IKVM) | 30 min | C# BETA | | 3 | [Tweety-3-Advanced-Logics](Tweety-3-Advanced-Logics.ipynb) | DL, Modale, QBF, Conditionnelle | 40 min | Python | | 3c-DL | [Tweety-3-Advanced-Logics-Csharp](Tweety-3-Advanced-Logics-Csharp.ipynb) | DL/ML/QBF/CL .NET (DRAFT - conflits DLL) | 30 min | C# DRAFT | | 3c-CL | [Tweety-3-Conditional-Logics-Csharp](Tweety-3-Conditional-Logics-Csharp.ipynb) | Logique conditionnelle .NET (IKVM) | 25 min | C# PROD | @@ -163,17 +163,17 @@ Pour les praticiens intéressés par les applications multi-agents : | 5c | [Tweety-5-Abstract-Argumentation-Csharp](Tweety-5-Abstract-Argumentation-Csharp.ipynb) | Twin C# Dung AF **from-scratch** (BCL .NET uniquement, 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 de cadres, 3 exercices. Complémentarité from-scratch ↔ Python/IKVM (marathon #4956, §3801) | 50 min | C# BETA | | 5d | [Tweety-5d-Stable-Synthesis-Lean](Tweety-5d-Stable-Synthesis-Lean.ipynb) | 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`) — dissociation enregistrée à la borne n = 3 | 40 min | Python+Lean BETA | | 5e | [Tweety-5e-Propositional-Lab-Lean](Tweety-5e-Propositional-Lab-Lean.ipynb) | Companion transversal (tranche A de l'EPIC [#15066](https://github.com/jsboige/CoursIA/issues/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) | 40 min | Python+Lean BETA | -| 6 | [Tweety-6-Structured-Argumentation](Tweety-6-Structured-Argumentation.ipynb) | ASPIC+, DeLP, ABA, ASP | 60 min | Python | -| 6c | [Tweety-6-Structured-Argumentation-Csharp](Tweety-6-Structured-Argumentation-Csharp.ipynb) | Twin C# ASPIC+ from-scratch (BCL, pas IKVM ; DeLP/ABA/ASP conceptuel) | 35 min | C# PROD | -| 7a | [Tweety-7a-Extended-Frameworks](Tweety-7a-Extended-Frameworks.ipynb) | ADF, Bipolar, WAF, SAF, SetAF, Extended | 50 min | Python | -| 7ac | [Tweety-7a-Extended-Frameworks-Csharp](Tweety-7a-Extended-Frameworks-Csharp.ipynb) | Twin C# hybride : ADF/SetAF/EAF/VAF from-scratch (BCL, Kleene 3-valued) + tranche 2 lib Tweety reelle via IKVM (DLL shade 7a versionnee a la racine, rebuildable dotnet-build/rebuild-7a.sh ; See #4956) | 55 min | C# PROD | -| 7b | [Tweety-7b-Ranking-Probabilistic](Tweety-7b-Ranking-Probabilistic.ipynb) | Ranking Semantics, Probabiliste | 40 min | Python | -| 7bc | [Tweety-7b-Ranking-Probabilistic-Csharp](Tweety-7b-Ranking-Probabilistic-Csharp.ipynb) | Ranking/Probabiliste .NET (IKVM, c.179 PR #5231) | 30 min | C# PROD | +| 6 | [Tweety-6-Structured-Argumentation](Tweety-06-Structured-Argumentation-Python.ipynb) | ASPIC+, DeLP, ABA, ASP | 60 min | Python | +| 6c | [Tweety-6-Structured-Argumentation-Csharp](Tweety-06-Structured-Argumentation-CSharp.ipynb) | Twin C# ASPIC+ from-scratch (BCL, pas IKVM ; DeLP/ABA/ASP conceptuel) | 35 min | C# PROD | +| 7a | [Tweety-7a-Extended-Frameworks](Tweety-07a-Extended-Frameworks-Python.ipynb) | ADF, Bipolar, WAF, SAF, SetAF, Extended | 50 min | Python | +| 7ac | [Tweety-7a-Extended-Frameworks-Csharp](Tweety-07a-Extended-Frameworks-CSharp.ipynb) | Twin C# hybride : ADF/SetAF/EAF/VAF from-scratch (BCL, Kleene 3-valued) + tranche 2 lib Tweety reelle via IKVM (DLL shade 7a versionnee a la racine, rebuildable dotnet-build/rebuild-7a.sh ; See #4956) | 55 min | C# PROD | +| 7b | [Tweety-7b-Ranking-Probabilistic](Tweety-07b-Ranking-Probabilistic-Python.ipynb) | Ranking Semantics, Probabiliste | 40 min | Python | +| 7bc | [Tweety-7b-Ranking-Probabilistic-Csharp](Tweety-07b-Ranking-Probabilistic-CSharp.ipynb) | Ranking/Probabiliste .NET (IKVM, c.179 PR #5231) | 30 min | C# PROD | | **Applications** | | | | | -| 8 | [Tweety-8-Agent-Dialogues](Tweety-8-Agent-Dialogues.ipynb) | Agents, Dialogues argumentatifs, Loteries | 35 min | Python | -| 8c | [Tweety-8-Agent-Dialogues-Csharp](Tweety-8-Agent-Dialogues-Csharp.ipynb) | Twin C# dialogues argumentatifs from-scratch (BCL .NET, pas IKVM/JVM ; Dung AF + agents + protocole Claim/Argue/Concede/Retract + loterie argumentative Monte-Carlo) | 35 min | C# PROD | -| 9 | [Tweety-9-Preferences](Tweety-9-Preferences.ipynb) | Préférences, Théorie du vote | 30 min | Python | -| 9c | [Tweety-9-Preferences-Csharp](Tweety-9-Preferences-Csharp.ipynb) | Préférences .NET (IKVM, c.180 PR #5268) | 30 min | C# PROD | +| 8 | [Tweety-8-Agent-Dialogues](Tweety-08-Agent-Dialogues-Python.ipynb) | Agents, Dialogues argumentatifs, Loteries | 35 min | Python | +| 8c | [Tweety-8-Agent-Dialogues-Csharp](Tweety-08-Agent-Dialogues-CSharp.ipynb) | Twin C# dialogues argumentatifs from-scratch (BCL .NET, pas IKVM/JVM ; Dung AF + agents + protocole Claim/Argue/Concede/Retract + loterie argumentative Monte-Carlo) | 35 min | C# PROD | +| 9 | [Tweety-9-Preferences](Tweety-09-Preferences-Python.ipynb) | Préférences, Théorie du vote | 30 min | Python | +| 9c | [Tweety-9-Preferences-Csharp](Tweety-09-Preferences-CSharp.ipynb) | Préférences .NET (IKVM, c.180 PR #5268) | 30 min | C# PROD | | **Synthèse** | | | | | | 10 | [Tweety-10-MLN](Tweety-10-MLN.ipynb) | Markov Logic Networks (FOL pondérée) | 50 min | Python | | 10c | [Tweety-10-MLN-Csharp](Tweety-10-MLN-Csharp.ipynb) | MLN porté .NET (IKVM, c.188 PR #5209) | 30 min | C# PROD | @@ -322,7 +322,7 @@ flowchart LR 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-1-Setup.ipynb +jupyter notebook Tweety-01-Setup-Python.ipynb # 3. Exécuter toutes les cellules, puis passer à Tweety-2 ``` @@ -380,7 +380,7 @@ pip install jpype1 requests tqdm clingo z3-solver python-sat ```bash # Lancer le notebook de setup -jupyter notebook Tweety-1-Setup.ipynb +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 @@ -394,11 +394,11 @@ JDK 17 et les 42 JARs (39 modules TweetyProject 1.30 + 3 dépendances externes : ``` Tweety/ -├── Tweety-1-Setup.ipynb # Configuration JVM/JPype -├── Tweety-2-Basic-Logics.ipynb # PL + FOL -├── Tweety-2-Basic-Logics-Csharp.ipynb # Logique propositionnelle .NET (IKVM, PROD) -├── Tweety-2b-Semantics-Csharp.ipynb # Sémantique propositionnelle .NET (IKVM, BETA) -├── Tweety-2c-FOL-Csharp.ipynb # FOL .NET (IKVM, BETA) +├── 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-3-Advanced-Logics.ipynb # DL, ML, QBF, CL ├── 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) @@ -413,16 +413,16 @@ Tweety/ ├── 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-6-Structured-Argumentation.ipynb # ASPIC+, DeLP, ABA, ASP -├── Tweety-6-Structured-Argumentation-Csharp.ipynb # Twin C# ASPIC+ from-scratch (BCL, PROD) -├── Tweety-7a-Extended-Frameworks.ipynb # ADF, Bipolar, WAF, SAF -├── Tweety-7a-Extended-Frameworks-Csharp.ipynb # Twin C# ADF/SetAF/EAF/VAF from-scratch (BCL, PROD) -├── Tweety-7b-Ranking-Probabilistic.ipynb # Ranking Semantics -├── Tweety-7b-Ranking-Probabilistic-Csharp.ipynb # Ranking/Probabiliste .NET (IKVM, PROD) -├── Tweety-8-Agent-Dialogues.ipynb # Agents, dialogues, loteries -├── Tweety-8-Agent-Dialogues-Csharp.ipynb # Twin C# dialogues from-scratch (BCL, PROD) -├── Tweety-9-Preferences.ipynb # Préférences, vote -├── Tweety-9-Preferences-Csharp.ipynb # Préférences .NET (IKVM, PROD) +├── 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 @@ -448,7 +448,7 @@ Tweety/ └── 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-1-Setup.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. +> **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. ## Outils Externes @@ -645,7 +645,7 @@ EProver peut bloquer sur des formules FOL complexes avec égalité. La solution ### Erreur de chargement d'un JAR Tweety -Vérifier que la version Tweety dans `Tweety-1-Setup.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. +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 @@ -667,7 +667,7 @@ Chaque notebook présuppose la configuration faite dans Tweety-1-Setup (JDK, JAR | **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-1-Setup.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. +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 diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb similarity index 98% rename from MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb rename to MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb index 34333983f3..ca9f8e0713 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb @@ -16,7 +16,7 @@ "source": [ "# Configuration et Installation TweetyProject\n", "\n", - "**Navigation**: Index | [Suivant: Tweety-2-Basic-Logics](Tweety-2-Basic-Logics.ipynb)\n", + "**Navigation**: Index | [Suivant: Tweety-2-Basic-Logics](Tweety-02-Basic-Logics-Python.ipynb)\n", "\n", "***\n", "\n", @@ -57,15 +57,15 @@ "| # | Notebook | Thème | Prérequis |\n", "|---|----------|-------|-----------|\n", "| 1 | **Ce notebook** | Configuration JVM/JPype | - |\n", - "| 2 | [Tweety-2-Basic-Logics](Tweety-2-Basic-Logics.ipynb) | Logique Propositionnelle, FOL | Setup |\n", + "| 2 | [Tweety-2-Basic-Logics](Tweety-02-Basic-Logics-Python.ipynb) | Logique Propositionnelle, FOL | Setup |\n", "| 3 | [Tweety-3-Advanced-Logics](Tweety-3-Advanced-Logics.ipynb) | DL, Modale, QBF, Conditional | Setup |\n", "| 4 | [Tweety-4-Belief-Revision](Tweety-4-Belief-Revision.ipynb) | CrMas, MUS, MaxSAT | Setup |\n", "| 5 | [Tweety-5-Abstract-Argumentation](Tweety-5-Abstract-Argumentation.ipynb) | Dung AF, CF2, Génération | Setup |\n", - "| 6 | [Tweety-6-Structured-Argumentation](Tweety-6-Structured-Argumentation.ipynb) | ASPIC+, DeLP, ABA, ASP | Setup + Clingo |\n", - "| 7a | [Tweety-7a-Extended-Frameworks](Tweety-7a-Extended-Frameworks.ipynb) | ADF, Bipolar, WAF, SAF, SetAF | Setup |\n", - "| 7b | [Tweety-7b-Ranking-Probabilistic](Tweety-7b-Ranking-Probabilistic.ipynb) | Ranking Semantics, Probabiliste | Setup |\n", - "| 8 | [Tweety-8-Agent-Dialogues](Tweety-8-Agent-Dialogues.ipynb) | Agents, Dialogues argumentatifs | Setup |\n", - "| 9 | [Tweety-9-Préférences](Tweety-9-Preferences.ipynb) | Préférences, Théorie du vote | Setup |\n", + "| 6 | [Tweety-6-Structured-Argumentation](Tweety-06-Structured-Argumentation-Python.ipynb) | ASPIC+, DeLP, ABA, ASP | Setup + Clingo |\n", + "| 7a | [Tweety-7a-Extended-Frameworks](Tweety-07a-Extended-Frameworks-Python.ipynb) | ADF, Bipolar, WAF, SAF, SetAF | Setup |\n", + "| 7b | [Tweety-7b-Ranking-Probabilistic](Tweety-07b-Ranking-Probabilistic-Python.ipynb) | Ranking Semantics, Probabiliste | Setup |\n", + "| 8 | [Tweety-8-Agent-Dialogues](Tweety-08-Agent-Dialogues-Python.ipynb) | Agents, Dialogues argumentatifs | Setup |\n", + "| 9 | [Tweety-9-Préférences](Tweety-09-Preferences-Python.ipynb) | Préférences, Théorie du vote | Setup |\n", "\n", "***\n", "\n", @@ -2174,19 +2174,19 @@ "\n", "| # | Notebook | Thème |\n", "|---|----------|-------|\n", - "| 2 | [Tweety-2-Basic-Logics](Tweety-2-Basic-Logics.ipynb) | Logique Propositionnelle et FOL |\n", + "| 2 | [Tweety-2-Basic-Logics](Tweety-02-Basic-Logics-Python.ipynb) | Logique Propositionnelle et FOL |\n", "| 3 | [Tweety-3-Advanced-Logics](Tweety-3-Advanced-Logics.ipynb) | DL, Modale, QBF, Conditional |\n", "| 4 | [Tweety-4-Belief-Revision](Tweety-4-Belief-Revision.ipynb) | Révision de croyances, MUS, MaxSAT |\n", "| 5 | [Tweety-5-Abstract-Argumentation](Tweety-5-Abstract-Argumentation.ipynb) | Dung, CF2, Génération |\n", - "| 6 | [Tweety-6-Structured-Argumentation](Tweety-6-Structured-Argumentation.ipynb) | ASPIC+, DeLP, ABA, ASP |\n", - "| 7a | [Tweety-7a-Extended-Frameworks](Tweety-7a-Extended-Frameworks.ipynb) | ADF, Bipolar, WAF, SAF, SetAF, Extended |\n", - "| 7b | [Tweety-7b-Ranking-Probabilistic](Tweety-7b-Ranking-Probabilistic.ipynb) | Ranking Semantics, Probabiliste |\n", - "| 8 | [Tweety-8-Agent-Dialogues](Tweety-8-Agent-Dialogues.ipynb) | Agents, Dialogues argumentatifs |\n", - "| 9 | [Tweety-9-Préférences](Tweety-9-Preferences.ipynb) | Préférences, Théorie du vote |\n", + "| 6 | [Tweety-6-Structured-Argumentation](Tweety-06-Structured-Argumentation-Python.ipynb) | ASPIC+, DeLP, ABA, ASP |\n", + "| 7a | [Tweety-7a-Extended-Frameworks](Tweety-07a-Extended-Frameworks-Python.ipynb) | ADF, Bipolar, WAF, SAF, SetAF, Extended |\n", + "| 7b | [Tweety-7b-Ranking-Probabilistic](Tweety-07b-Ranking-Probabilistic-Python.ipynb) | Ranking Semantics, Probabiliste |\n", + "| 8 | [Tweety-8-Agent-Dialogues](Tweety-08-Agent-Dialogues-Python.ipynb) | Agents, Dialogues argumentatifs |\n", + "| 9 | [Tweety-9-Préférences](Tweety-09-Preferences-Python.ipynb) | Préférences, Théorie du vote |\n", "\n", "***\n", "\n", - "**Navigation**: Index | [Suivant: Tweety-2-Basic-Logics →](Tweety-2-Basic-Logics.ipynb)" + "**Navigation**: Index | [Suivant: Tweety-2-Basic-Logics →](Tweety-02-Basic-Logics-Python.ipynb)" ] } ], @@ -2232,8 +2232,8 @@ "end_time": "2026-09-12T03:21:31.953942", "environment_variables": {}, "exception": null, - "input_path": "Tweety-1-Setup.ipynb", - "output_path": "Tweety-1-Setup.ipynb", + "input_path": "Tweety-01-Setup-Python.ipynb", + "output_path": "Tweety-01-Setup-Python.ipynb", "parameters": {}, "start_time": "2026-09-12T03:19:49.713929", "version": "2.6.0" diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb similarity index 96% rename from MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb rename to MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb index e20cd3d4db..a7ab06c488 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb @@ -7,9 +7,9 @@ "source": [ "# Tweety C# / IKVM - Logiques de Base (Port .NET du notebook Python)\n", "\n", - "**Navigation** : [<- Tweety-1-Setup](Tweety-1-Setup.ipynb) | [Index serie](Tweety-1-Setup.ipynb) | [Tweety-3-Advanced-Logics ->](Tweety-3-Advanced-Logics.ipynb)\n", + "**Navigation** : [<- Tweety-1-Setup](Tweety-01-Setup-Python.ipynb) | [Index serie](Tweety-01-Setup-Python.ipynb) | [Tweety-3-Advanced-Logics ->](Tweety-3-Advanced-Logics.ipynb)\n", "\n", - "> Ce notebook est le **port C# / .NET** de [Tweety-2-Basic-Logics.ipynb](Tweety-2-Basic-Logics.ipynb).\n", + "> Ce notebook est le **port C# / .NET** de [Tweety-02-Basic-Logics-Python.ipynb](Tweety-02-Basic-Logics-Python.ipynb).\n", "> Au lieu d'appeler Tweety depuis Python via JPype + JVM, on execute directement les\n", "> classes Tweety **recompilees en bytecode .NET via IKVM** - aucune JVM, aucun JDK requis\n", "> au runtime. Voir le notebook Python pour le contexte théorique complet.\n", @@ -23,7 +23,7 @@ "\n", "## Prerequis\n", "\n", - "- Le notebook Python `Tweety-2-Basic-Logics.ipynb` pour les notions (logique propositionnelle, mondes possibles)\n", + "- Le notebook Python `Tweety-02-Basic-Logics-Python.ipynb` pour les notions (logique propositionnelle, mondes possibles)\n", "- Le runtime est **tout .NET** : aucune installation Java/JDK n'est necessaire\n", "\n", "\n", @@ -445,9 +445,9 @@ "Reprenez ceux du notebook Python, adaptes a l'API C# (méthodes Java minuscules).\n", "\n", "\n", - "---\n", + "***\n", "\n", - "**Note de parite cross-langage** (EPIC #4956) : Le jumeau Python de ce notebook (voir `Tweety-2-Basic-Logics.ipynb`) utilise **jpype** pour demarrer une JVM in-process et appeler directement les classes Java de Tweety. Ce notebook C# utilise **IKVM** pour transpiler statiquement le bytecode Java de Tweety en DLL .NET native (7 Mo charges a l'init, voir cellule 7). Les deux strategies donnent acces au meme API Tweety. Particularite : ce notebook utilise le **vrai outil SOTA** (IKVM recompilation), contrairement a certains jumeaux Tweety-6/8 (cf PR #7913 c.736) qui reimplementaient Monte-Carlo from-scratch en BCL .NET suite a une DLL IKVM defectueuse. Audit c.739 (2026-07-22) : 0 doc-honesty finding corrigible des deux cotes.\n", + "**Note de parite cross-langage** (EPIC #4956) : Le jumeau Python de ce notebook (voir `Tweety-02-Basic-Logics-Python.ipynb`) utilise **jpype** pour demarrer une JVM in-process et appeler directement les classes Java de Tweety. Ce notebook C# utilise **IKVM** pour transpiler statiquement le bytecode Java de Tweety en DLL .NET native (7 Mo charges a l'init, voir cellule 7). Les deux strategies donnent acces au meme API Tweety. Particularite : ce notebook utilise le **vrai outil SOTA** (IKVM recompilation), contrairement a certains jumeaux Tweety-6/8 (cf PR #7913 c.736) qui reimplementaient Monte-Carlo from-scratch en BCL .NET suite a une DLL IKVM defectueuse. Audit c.739 (2026-07-22) : 0 doc-honesty finding corrigible des deux cotes.\n", "\n", "\n", "**Les chiffres du parcours** : un runtime IKVM 8.15.0 vérifié sain (`tzdb=True`), une DLL `org.tweetyproject.tweety-pl` v1.30.0.0 de 7,0 Mo chargée et lue, cinq constructions manuelles, deux parses round-trip, une KB de quatre formules — involontairement inconsistante, comme la lecture de la section 5 l'a établi. La chaîne .NET est complète : de la restauration NuGet à la requête logique, chaque maillon a sa preuve d'exécution committée. Les exercices suivants font franchir le dernier palier : de la *construction* de formules à l'*interrogation* d'une base." diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb similarity index 99% rename from MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb rename to MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb index 5835e10244..72e445a57f 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb @@ -16,9 +16,9 @@ "source": [ "# Logiques de Base - Propositionnelle et Premier Ordre\n", "\n", - "**Navigation**: [← Tweety-1-Setup](Tweety-1-Setup.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-3-Advanced-Logics →](Tweety-3-Advanced-Logics.ipynb)\n", + "**Navigation**: [← Tweety-1-Setup](Tweety-01-Setup-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-3-Advanced-Logics →](Tweety-3-Advanced-Logics.ipynb)\n", "\n", - "---\n", + "***\n", "\n", "## Objectifs pédagogiques\n", "\n", @@ -29,7 +29,7 @@ "\n", "## Prérequis\n", "\n", - "Exécutez d'abord [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb) pour configurer l'environnement JVM.\n", + "Exécutez d'abord [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb) pour configurer l'environnement JVM.\n", "\n", "### Durée estimée : 45 minutes\n", "\n", @@ -242,9 +242,9 @@ "\n", "> **Note** : Pour les notebooks suivants, EProver et pySAT seront particulierement utiles.\n", "\n", - "---\n", + "***\n", "\n", - "**Note de parite cross-langage** (EPIC #4956) : Le jumeau C# de ce notebook (voir `Tweety-2-Basic-Logics-Csharp.ipynb`) utilise une strategie differente : **IKVM** transpile statiquement le bytecode Java de Tweety en DLL .NET native (7 Mo), tandis que ce notebook Python utilise **jpype** pour demarrer une JVM in-process et appeler directement les classes Java. Les deux strategies donnent acces au meme API Tweety (Proposition, PlBeliefSet, PlParser, FolReasoner...). Audit c.739 (2026-07-22) : 0 doc-honesty finding corrigible des deux cotes." + "**Note de parite cross-langage** (EPIC #4956) : Le jumeau C# de ce notebook (voir `Tweety-02-Basic-Logics-CSharp.ipynb`) utilise une strategie differente : **IKVM** transpile statiquement le bytecode Java de Tweety en DLL .NET native (7 Mo), tandis que ce notebook Python utilise **jpype** pour demarrer une JVM in-process et appeler directement les classes Java. Les deux strategies donnent acces au meme API Tweety (Proposition, PlBeliefSet, PlParser, FolReasoner...). Audit c.739 (2026-07-22) : 0 doc-honesty finding corrigible des deux cotes." ] }, { @@ -1902,7 +1902,7 @@ "tags": [] }, "source": [ - "---\n", + "***\n", "\n", "## Transition : De la Logique Propositionnelle a la Logique du Premier Ordre\n", "\n", @@ -3060,7 +3060,7 @@ "tags": [] }, "source": [ - "---\n", + "***\n", "\n", "## Resume\n", "\n", @@ -3078,9 +3078,9 @@ "\n", "Le notebook suivant explore les logiques plus avancees: Description Logic, Logique Modale, QBF.\n", "\n", - "---\n", + "***\n", "\n", - "**Navigation**: [Tweety-1-Setup](Tweety-1-Setup.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-3-Advanced-Logics](Tweety-3-Advanced-Logics.ipynb)" + "**Navigation**: [Tweety-1-Setup](Tweety-01-Setup-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-3-Advanced-Logics](Tweety-3-Advanced-Logics.ipynb)" ] } ], @@ -3126,8 +3126,8 @@ "end_time": "2026-06-02T21:45:26.853191+00:00", "environment_variables": {}, "exception": null, - "input_path": "Tweety-2-Basic-Logics.ipynb", - "output_path": "Tweety-2-Basic-Logics.ipynb", + "input_path": "Tweety-02-Basic-Logics-Python.ipynb", + "output_path": "Tweety-02-Basic-Logics-Python.ipynb", "parameters": {}, "start_time": "2026-06-02T21:45:20.645023+00:00", "version": "2.6.0" diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb similarity index 97% rename from MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb rename to MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb index ff63b065f0..c729f1dbf0 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb @@ -7,13 +7,13 @@ "source": [ "# Tweety C# / IKVM - Sémantique propositionnelle : mondes possibles et raisonnement\n", "\n", - "**Navigation** : [<- Tweety-2-Basic-Logics](Tweety-2-Basic-Logics-Csharp.ipynb) | [Index serie](Tweety-1-Setup.ipynb) | [Tweety-3-Advanced-Logics ->](Tweety-3-Advanced-Logics.ipynb)\n", + "**Navigation** : [<- Tweety-2-Basic-Logics](Tweety-02-Basic-Logics-CSharp.ipynb) | [Index serie](Tweety-01-Setup-Python.ipynb) | [Tweety-3-Advanced-Logics ->](Tweety-3-Advanced-Logics.ipynb)\n", "\n", "> Ce notebook est le **second volet C# / .NET** de la serie Tweety. Il poursuit\n", - "> [Tweety-2-Basic-Logics-Csharp](Tweety-2-Basic-Logics-Csharp.ipynb) (construction de formules, parsing, base\n", + "> [Tweety-2-Basic-Logics-Csharp](Tweety-02-Basic-Logics-CSharp.ipynb) (construction de formules, parsing, base\n", "> de croyances) en abordant la **sémantique** : mondes possibles, satisfaction, et raisonnement\n", "> (entaînement). Comme le pilote, il execute les classes Tweety **recompilees en bytecode .NET via\n", - "> IKVM** - aucune JVM au runtime. Voir [le notebook Python](Tweety-2-Basic-Logics.ipynb) pour le contexte théorique complet.\n", + "> IKVM** - aucune JVM au runtime. Voir [le notebook Python](Tweety-02-Basic-Logics-Python.ipynb) pour le contexte théorique complet.\n", "\n", "## Objectifs pedagogiques\n", "\n", @@ -24,7 +24,7 @@ "\n", "## Prerequis\n", "\n", - "- [Tweety-2-Basic-Logics-Csharp](Tweety-2-Basic-Logics-Csharp.ipynb) (construction de formules, `PlBeliefSet`, `PlParser`)\n", + "- [Tweety-2-Basic-Logics-Csharp](Tweety-02-Basic-Logics-CSharp.ipynb) (construction de formules, `PlBeliefSet`, `PlParser`)\n", "- Notions de logique propositionnelle : valuation, modèle, consequence logique\n", "\n", "> **Rappel d'API (C# / IKVM)** : les classes Java Tweety sont exposees via IKVM avec la convention\n", @@ -39,7 +39,7 @@ "source": [ "## 1. Configuration du runtime IKVM\n", "\n", - "> Identique au [pilote](Tweety-2-Basic-Logics-Csharp.ipynb) : on restaure les paquets NuGet IKVM, on\n", + "> Identique au [pilote](Tweety-02-Basic-Logics-CSharp.ipynb) : on restaure les paquets NuGet IKVM, on\n", "> assemble le home IKVM (motrice d'exécution de la JVM en .NET), puis on charge la DLL Tweety. A executer\n", "> en premier. ~30-60 s la première fois.\n" ] @@ -702,7 +702,7 @@ "source": [ "## Conclusion\n", "\n", - "Ce notebook complete le pilote [Tweety-2-Basic-Logics-Csharp](Tweety-2-Basic-Logics-Csharp.ipynb)\n", + "Ce notebook complete le pilote [Tweety-2-Basic-Logics-Csharp](Tweety-02-Basic-Logics-CSharp.ipynb)\n", "avec la **sémantique** de la logique propositionnelle en .NET natif :\n", "\n", "| Concept | Classe Tweety (C#) | Méthode | Statut |\n", @@ -727,7 +727,7 @@ "\n", "### Exercices\n", "\n", - "Adaptez ceux du [notebook Python](Tweety-2-Basic-Logics.ipynb) a l'API C# (cast `PlFormula`, méthodes\n", + "Adaptez ceux du [notebook Python](Tweety-02-Basic-Logics-Python.ipynb) a l'API C# (cast `PlFormula`, méthodes\n", "Java minuscules). Rappel : les stubs doivent s'executer sans erreur (jamais `raise`/`assert`/`1/0`).\n" ] }, diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb similarity index 99% rename from MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb rename to MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb index 07fab3fc91..ba3b1e1885 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb @@ -12,15 +12,15 @@ "> sont compilés vers du bytecode Java puis exécutés sur le runtime .NET via [IKVM](https://github.com/ikvm-refined/ikvm).\n", "> Aucun `java` n'est requis à l'exécution — tout se passe dans le kernel `.net-csharp`.\n", "\n", - "Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-2-Basic-Logics-Csharp.ipynb) (logique propositionnelle) ·\n", - "[Tweety-2b-Semantics-Csharp](Tweety-2b-Semantics-Csharp.ipynb) (mondes possibles, conséquence sémantique) ·\n", + "Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-02-Basic-Logics-CSharp.ipynb) (logique propositionnelle) ·\n", + "[Tweety-2b-Semantics-Csharp](Tweety-02b-Semantics-CSharp.ipynb) (mondes possibles, conséquence sémantique) ·\n", "**Tweety-2c-FOL (ce notebook)**.\n", "\n", "***\n", "\n", "## Objectifs pédagogiques\n", "\n", - "La [logique propositionnelle](Tweety-2-Basic-Logics-Csharp.ipynb) raisonne sur des **propositions entières**\n", + "La [logique propositionnelle](Tweety-02-Basic-Logics-CSharp.ipynb) raisonne sur des **propositions entières**\n", "(`Man_Socrates`, `Mortal_Socrates`) reliées par connecteurs. Elle ne peut ni exprimer la **généralité**\n", "(« tous les hommes sont mortels ») ni le **lien interne** d'un énoncé (« Socrate est un homme »).\n", "\n", @@ -1038,7 +1038,7 @@ "\n", "- TweetyProject — [FOL module](https://tweetyproject.org/api/fol/) et [tutoriels](https://tweetyproject.org/).\n", "- Port C#/.NET via IKVM — EPIC [#4667](https://github.com/jsboige/CoursIA/issues/4667).\n", - "- Notebook compagnon propositionnel : [Tweety-2-Basic-Logics-Csharp](Tweety-2-Basic-Logics-Csharp.ipynb).\n", + "- Notebook compagnon propositionnel : [Tweety-2-Basic-Logics-Csharp](Tweety-02-Basic-Logics-CSharp.ipynb).\n", "\n" ] } diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb similarity index 98% rename from MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb rename to MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb index 2d31663b98..33903518ce 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb @@ -16,7 +16,7 @@ "source": [ "# Tweety-6 — Argumentation structuree (twin C# / .NET Interactive)\n", "\n", - "**Twin C#** du notebook Python [Tweety-6-Structured-Argumentation.ipynb](Tweety-6-Structured-Argumentation.ipynb) (marathon #4956, parite .NET <-> Python, axe-2 SOTA #3801 Prong B).\n", + "**Twin C#** du notebook Python [Tweety-06-Structured-Argumentation-Python.ipynb](Tweety-06-Structured-Argumentation-Python.ipynb) (marathon #4956, parite .NET <-> Python, axe-2 SOTA #3801 Prong B).\n", "\n", "Le notebook Python invoque la bibliotheque Java **TweetyProject** (via `jpype` + JVM) pour construire des arguments structurees : ASPIC+, DeLP, ABA, argumentation deductive, ASP. Ce twin **deroule le moteur ASPIC+ a la main** (BCL .NET 9, 0 NuGet, aucune JVM), dans la même lignee que le [Tweety-5-Csharp](Tweety-5-Abstract-Argumentation-Csharp.ipynb) qui implementait le cadre abstrait de Dung from-scratch.\n", "\n", @@ -30,7 +30,7 @@ "On verifie **mathematiquement** que la conversion ASPIC+ -> Dung redonne le bon cadre abstrait, et que la sémantique grounded isole les arguments defendus.\n", "\n", "\n", - "> **Note de parite cross-langage** : ce notebook est le **jumeau C# from-scratch BCL .NET 9** (0 NuGet, 0 JVM) du notebook Python [`Tweety-6-Structured-Argumentation.ipynb`](Tweety-6-Structured-Argumentation.ipynb) (JVM TweetyProject via `jpype`, ASPIC+ + DeLP + ABA + Deductive + ASP). Le twin C# couvre ASPIC+ from-scratch BCL (sections 1-5) et declare INTRINSIC les 4 autres formalismes (pas d'equivalent BCL .NET ; le notebook Python + JVM TweetyProject reste la reference d'execution pour DeLP/ABA/ASP). Audit G.1 cross-langage cell-by-cell c.743 : 22 cellules C# verifiees, grounded `{ -> b, -> c, b, c => a [ -> b, -> c] }` coherent avec cell[7] Python (5 memes arguments). Marathon parite .NET <-> Python : EPIC #4956." + "> **Note de parite cross-langage** : ce notebook est le **jumeau C# from-scratch BCL .NET 9** (0 NuGet, 0 JVM) du notebook Python [`Tweety-06-Structured-Argumentation-Python.ipynb`](Tweety-06-Structured-Argumentation-Python.ipynb) (JVM TweetyProject via `jpype`, ASPIC+ + DeLP + ABA + Deductive + ASP). Le twin C# couvre ASPIC+ from-scratch BCL (sections 1-5) et declare INTRINSIC les 4 autres formalismes (pas d'equivalent BCL .NET ; le notebook Python + JVM TweetyProject reste la reference d'execution pour DeLP/ABA/ASP). Audit G.1 cross-langage cell-by-cell c.743 : 22 cellules C# verifiees, grounded `{ -> b, -> c, b, c => a [ -> b, -> c] }` coherent avec cell[7] Python (5 memes arguments). Marathon parite .NET <-> Python : EPIC #4956." ] }, { @@ -1359,7 +1359,7 @@ "end_time": "2026-07-06T14:55:34.191983", "environment_variables": {}, "exception": null, - "input_path": "Tweety-6-Structured-Argumentation-Csharp.ipynb", + "input_path": "Tweety-06-Structured-Argumentation-CSharp.ipynb", "output_path": "tweety6_exec.ipynb", "parameters": {}, "start_time": "2026-07-06T14:55:27.629059", diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb similarity index 98% rename from MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb rename to MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb index 3290db5a1e..9ce2b66171 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb @@ -16,9 +16,9 @@ "source": [ "# Argumentation Structuree\n", "\n", - "**Navigation**: [<- Tweety-5-Abstract-Argumentation](Tweety-5-Abstract-Argumentation.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-7a-Extended-Frameworks ->](Tweety-7a-Extended-Frameworks.ipynb)\n", + "**Navigation**: [<- Tweety-5-Abstract-Argumentation](Tweety-5-Abstract-Argumentation.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-7a-Extended-Frameworks ->](Tweety-07a-Extended-Frameworks-Python.ipynb)\n", "\n", - "---\n", + "***\n", "\n", "## Introduction : De l'abstrait au structuré\n", "\n", @@ -60,13 +60,13 @@ "\n", "## Prerequis\n", "\n", - "Executez d'abord [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb) pour configurer l'environnement JVM.\n", + "Executez d'abord [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb) pour configurer l'environnement JVM.\n", "\n", "## Duree estimee : 35-45 minutes\n", "\n", "> **Note**: ASP necessite Clingo installe. Le notebook configure automatiquement le chemin si Clingo est disponible.\n", "\n", - "> **Note de parité cross-langage** : ce notebook est le **jumeau Python** de [`Tweety-6-Structured-Argumentation-Csharp.ipynb`](Tweety-6-Structured-Argumentation-Csharp.ipynb) (twin C# from-scratch BCL .NET, 0 JVM). Pour les concepts partagés (ASPIC+, DeLP, ABA, Argumentation Déductive, ASP), voir la cellule d'introduction ; le twin C# reconstruit les **concepts** (pas l'API JVM) pour rester exécutable end-to-end sur toute machine .NET 9+. Marathon parité .NET ⇄ Python : EPIC #4956.\n" + "> **Note de parité cross-langage** : ce notebook est le **jumeau Python** de [`Tweety-06-Structured-Argumentation-CSharp.ipynb`](Tweety-06-Structured-Argumentation-CSharp.ipynb) (twin C# from-scratch BCL .NET, 0 JVM). Pour les concepts partagés (ASPIC+, DeLP, ABA, Argumentation Déductive, ASP), voir la cellule d'introduction ; le twin C# reconstruit les **concepts** (pas l'API JVM) pour rester exécutable end-to-end sur toute machine .NET 9+. Marathon parité .NET ⇄ Python : EPIC #4956.\n" ] }, { @@ -586,7 +586,7 @@ "### 4.3 Defeasible Logic Programming (DeLP)\n", "\n", "\n", - "---\n", + "***\n", "\n", "**Transition depuis ASPIC+ :**\n", "\n", @@ -874,7 +874,7 @@ "### 4.4 Assumption-Based Argumentation (ABA)\n", "\n", "\n", - "---\n", + "***\n", "\n", "**Transition depuis DeLP :**\n", "\n", @@ -1160,7 +1160,7 @@ "### 4.5 Argumentation Déductive (PL)\n", "\n", "\n", - "---\n", + "***\n", "\n", "**Transition depuis ABA :**\n", "\n", @@ -1369,7 +1369,7 @@ "### 4.6 Answer Set Programming (ASP)\n", "\n", "\n", - "---\n", + "***\n", "\n", "**Rupture paradigmatique : de l'argumentation vers la programmation logique**\n", "\n", @@ -1749,7 +1749,7 @@ "tags": [] }, "source": [ - "---\n", + "***\n", "\n", "## Resume et Comparaison des Frameworks\n", "\n", @@ -1829,9 +1829,9 @@ "- **Ranking semantics** : Ordre total sur arguments (pas juste In/Out)\n", "- **Argumentation sociale** : Vote, agregation d'opinions\n", "\n", - "---\n", + "***\n", "\n", - "**Navigation**: [<- Tweety-5-Abstract-Argumentation](Tweety-5-Abstract-Argumentation.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-7a-Extended-Frameworks ->](Tweety-7a-Extended-Frameworks.ipynb)" + "**Navigation**: [<- Tweety-5-Abstract-Argumentation](Tweety-5-Abstract-Argumentation.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-7a-Extended-Frameworks ->](Tweety-07a-Extended-Frameworks-Python.ipynb)" ] }, { @@ -1989,7 +1989,7 @@ "tags": [] }, "source": [ - "---\n", + "***\n", "\n", "## Exercice de synthese : Comparer deux frameworks sur un domaine medical\n", "\n", @@ -2091,8 +2091,8 @@ "end_time": "2026-06-05T00:51:26.365663+00:00", "environment_variables": {}, "exception": null, - "input_path": "Tweety-6-Structured-Argumentation.ipynb", - "output_path": "Tweety-6-Structured-Argumentation.ipynb", + "input_path": "Tweety-06-Structured-Argumentation-Python.ipynb", + "output_path": "Tweety-06-Structured-Argumentation-Python.ipynb", "parameters": {}, "start_time": "2026-06-05T00:50:51.196838+00:00", "version": "2.6.0" diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb similarity index 99% rename from MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb rename to MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb index ac5f879662..12d67a2ab8 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb @@ -16,11 +16,11 @@ "source": [ "# Tweety-7a : Frameworks d'Argumentation Etendus (C#)\n", "\n", - "**Navigation** : [<< 6-Structured-Argumentation](Tweety-6-Structured-Argumentation.ipynb) | [Index](README.md) | [7b-Ranking-Probabilistic >>](Tweety-7b-Ranking-Probabilistic.ipynb)\n", + "**Navigation** : [<< 6-Structured-Argumentation](Tweety-06-Structured-Argumentation-Python.ipynb) | [Index](README.md) | [7b-Ranking-Probabilistic >>](Tweety-07b-Ranking-Probabilistic-Python.ipynb)\n", "\n", "## Frameworks d'Argumentation Etendus (jumeau .NET)\n", "\n", - "Ce notebook est le **jumeau C# (.NET Interactive)** de [Tweety-7a-Extended-Frameworks.ipynb](Tweety-7a-Extended-Frameworks.ipynb). Au-dela du cadre abstrait de Dung (Tweety-5), il explore les **frameworks etendus** : ADF (conditions d'acceptation), SetAF (attaques ensembles), EAF (attaques sur les attaques), VAF (argumentation value-based).\n", + "Ce notebook est le **jumeau C# (.NET Interactive)** de [Tweety-07a-Extended-Frameworks-Python.ipynb](Tweety-07a-Extended-Frameworks-Python.ipynb). Au-dela du cadre abstrait de Dung (Tweety-5), il explore les **frameworks etendus** : ADF (conditions d'acceptation), SetAF (attaques ensembles), EAF (attaques sur les attaques), VAF (argumentation value-based).\n", "\n", "### Value-add du jumeau C# (Prong B, EPIC #3801)\n", "\n", @@ -903,7 +903,7 @@ "\n", "***\n", "\n", - "**Notebook suivant** : [Tweety-7b-Ranking-Probabilistic](Tweety-7b-Ranking-Probabilistic.ipynb) | [Retour au sommaire](README.md)\n" + "**Notebook suivant** : [Tweety-7b-Ranking-Probabilistic](Tweety-07b-Ranking-Probabilistic-Python.ipynb) | [Retour au sommaire](README.md)\n" ] }, { @@ -931,7 +931,7 @@ "SimpleAdmissible, etc.). Cette **tranche 2** charge la DLL `org.tweetyproject.tweety-7a.dll` (compilee via IKVM 8.14\n", "a partir des sources Tweety 1.19) et execute les memes exemples pour valider la **parite comportementale**.\n", "\n", - "**Gabarit** : [Tweety-6 ASPIC+ tranche 2 IKVM](Tweety-6-Structured-Argumentation-Csharp.ipynb) (PR #10385, SOTA-OK). Meme pattern : `Assembly.LoadFrom`\n", + "**Gabarit** : [Tweety-6 ASPIC+ tranche 2 IKVM](Tweety-06-Structured-Argumentation-CSharp.ipynb) (PR #10385, SOTA-OK). Meme pattern : `Assembly.LoadFrom`\n", "+ `using org.tweetyproject.arg..syntax;`.\n", "\n", "**Verdict SOTA-OK** : la lib Tweety est un outil canonique reconnu par la communaute (ArgSem 2024), installee\n", @@ -2791,7 +2791,7 @@ "\n", "### Tranche 2 — lib-vs-lib via la librairie Tweety (pont IKVM)\n", "\n", - "La tranche 1 ci-dessus reimplante ADF / SetAF / EAF / VAF **from-scratch** (BCL .NET). La tranche 2 branche la **librairie Java Tweety** cote C# via le pont **IKVM** (runtime Java 8 pour .NET), sur le gabarit de [Tweety-6](Tweety-6-Structured-Argumentation-Csharp.ipynb) :\n", + "La tranche 1 ci-dessus reimplante ADF / SetAF / EAF / VAF **from-scratch** (BCL .NET). La tranche 2 branche la **librairie Java Tweety** cote C# via le pont **IKVM** (runtime Java 8 pour .NET), sur le gabarit de [Tweety-6](Tweety-06-Structured-Argumentation-CSharp.ipynb) :\n", "\n", "- **Dung = SOTA-OK** : le reasoner reel Tweety (`SimpleGroundedReasoner`) calcule l'extension fondee `{a,c}` sur la theorie `a->b, b->c` — algorithme du moteur, pas reimplementation.\n", "- **ADF = librairie chargee (SOTA-OK sur la syntaxe)** : le module `arg.adf` (125 types : 15 conditions d'acceptation + 59 types de reasoner SAT) est atteignable depuis C# via le shade fat `conditional-logics.dll`.\n", @@ -2800,7 +2800,7 @@ "\n", "*« From scratch c'est bien, lib vs lib c'est encore mieux ! »*\n", "\n", - "**Suite** : [Tweety-7b-Ranking-Probabilistic](Tweety-7b-Ranking-Probabilistic.ipynb) | [Retour au sommaire](README.md)\n" + "**Suite** : [Tweety-7b-Ranking-Probabilistic](Tweety-07b-Ranking-Probabilistic-Python.ipynb) | [Retour au sommaire](README.md)\n" ] } ], @@ -2823,7 +2823,7 @@ "end_time": "2026-09-02T02:09:43.560116+00:00", "environment_variables": {}, "exception": null, - "input_path": "Tweety-7a-Extended-Frameworks-Csharp.ipynb", + "input_path": "Tweety-07a-Extended-Frameworks-CSharp.ipynb", "output_path": "tweety7a_out.ipynb", "parameters": {}, "start_time": "2026-09-02T02:09:32.782606+00:00", diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb similarity index 98% rename from MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb rename to MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb index 1b396f143b..dea6b917d2 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb @@ -16,7 +16,7 @@ "source": [ "# Frameworks d'Argumentation Étendus\n", "\n", - "**Navigation**: [← Tweety-6-Structured-Argumentation](Tweety-6-Structured-Argumentation.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-7b-Ranking-Probabilistic →](Tweety-7b-Ranking-Probabilistic.ipynb)\n", + "**Navigation**: [← Tweety-6-Structured-Argumentation](Tweety-06-Structured-Argumentation-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-7b-Ranking-Probabilistic →](Tweety-07b-Ranking-Probabilistic-Python.ipynb)\n", "\n", "***\n", "\n", @@ -2171,7 +2171,7 @@ "\n", "## Note-de-parite cross-langage (cycle c.170 -- Tweety-7a jumeau Python <-> C#, tranche 2 IKVM)\n", "\n", - "Le notebook jumeau `Tweety-7a-Extended-Frameworks-Csharp.ipynb` couvre les memes frameworks que ce notebook-ci, mais selon une architecture **fondamentalement differente** au depart (tranche 1, from-scratch), puis selon une architecture **a nouveau differente** depuis la tranche 2 (lib-vs-lib via IKVM). Les chiffres ci-dessous sont **ancres sur les cellules qui les mesurent** : ils peuvent etre re-verifies par les commandes en fin de note ; cette note ne tient pas en l'air.\n", + "Le notebook jumeau `Tweety-07a-Extended-Frameworks-CSharp.ipynb` couvre les memes frameworks que ce notebook-ci, mais selon une architecture **fondamentalement differente** au depart (tranche 1, from-scratch), puis selon une architecture **a nouveau differente** depuis la tranche 2 (lib-vs-lib via IKVM). Les chiffres ci-dessous sont **ancres sur les cellules qui les mesurent** : ils peuvent etre re-verifies par les commandes en fin de note ; cette note ne tient pas en l'air.\n", "\n", "| Aspect | Python (ce notebook) | C# jumeau (tranche 1) | C# jumeau (tranche 2) |\n", "|--------|---------------------|-----------------------|------------------------|\n", @@ -2207,18 +2207,18 @@ "\n", "```sh\n", "# Comptes cellules : Python notebook\n", - "python -c \"import json; nb=json.load(open('MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb',encoding='utf-8')); print('Python total', len(nb['cells']), 'code', sum(1 for c in nb['cells'] if c['cell_type']=='code'))\"\n", + "python -c \"import json; nb=json.load(open('MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb',encoding='utf-8')); print('Python total', len(nb['cells']), 'code', sum(1 for c in nb['cells'] if c['cell_type']=='code'))\"\n", "# Comptes cellules : C# jumeau\n", - "python -c \"import json; nb=json.load(open('MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb',encoding='utf-8')); print('C# total', len(nb['cells']), 'code', sum(1 for c in nb['cells'] if c['cell_type']=='code'))\"\n", + "python -c \"import json; nb=json.load(open('MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb',encoding='utf-8')); print('C# total', len(nb['cells']), 'code', sum(1 for c in nb['cells'] if c['cell_type']=='code'))\"\n", "# Tranche 2 IKVM : lister les cellules qui chargent le shade via IKVM\n", - "grep -lE 'IKVM|tweety-7a\\.dll' MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb\n", + "grep -lE 'IKVM|tweety-7a\\.dll' MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb\n", "# Asymetrie SetAF/EAF/Bipolar : la sonde 7.7.3 (cell 39) + lecture 7.7.4 (cell 41)\n", - "grep -nE 'absent|0 type' MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb\n", + "grep -nE 'absent|0 type' MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb\n", "```\n", "\n", "Ces commandes sont **idempotentes** : les relancer ne modifie rien et reproduit les memes chiffres tant que les notebooks sources ne bougent pas. Si l'un des chiffres devient faux apres une evolution, c'est cette note qu'il faut re-actualiser (pas re-livrer un nombre fige).\n", "\n", - "Voir aussi : `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb` (jumeau C#), `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5-Bipolar-Argumentation.ipynb` (autre jumeau audite c.744), `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb` (autre jumeau audite c.743), `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb` (init JVM Tweety), `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks_output.ipynb` (output archive).\n", + "Voir aussi : `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb` (jumeau C#), `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5-Bipolar-Argumentation.ipynb` (autre jumeau audite c.744), `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb` (autre jumeau audite c.743), `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb` (init JVM Tweety), `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks_output.ipynb` (output archive).\n", "\n", "Issue : #14211. Précédent : #14143 (cote C#, jumeau tranche 2)." ], @@ -2270,7 +2270,7 @@ "\n", "***\n", "\n", - "**Navigation**: [← Tweety-6-Structured-Argumentation](Tweety-6-Structured-Argumentation.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-7b-Ranking-Probabilistic →](Tweety-7b-Ranking-Probabilistic.ipynb)" + "**Navigation**: [← Tweety-6-Structured-Argumentation](Tweety-06-Structured-Argumentation-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-7b-Ranking-Probabilistic →](Tweety-07b-Ranking-Probabilistic-Python.ipynb)" ] } ], @@ -2316,7 +2316,7 @@ "end_time": "2026-06-05T20:32:03.391279", "environment_variables": {}, "exception": null, - "input_path": "MyIA.AI.Notebooks\\SymbolicAI\\Tweety\\Tweety-7a-Extended-Frameworks.ipynb", + "input_path": "MyIA.AI.Notebooks\\SymbolicAI\\Tweety\\Tweety-07a-Extended-Frameworks-Python.ipynb", "output_path": "MyIA.AI.Notebooks\\SymbolicAI\\Tweety\\Tweety-7a-Extended-Frameworks_output.ipynb", "parameters": {}, "start_time": "2026-06-05T20:31:53.437129", diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb similarity index 99% rename from MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb rename to MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb index c0b0864772..d36ea9faa9 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb @@ -12,11 +12,11 @@ "> la librairie Java est compilee vers un fat-jar Maven shade puis executee sur le runtime .NET via\n", "> [IKVM](https://github.com/ikvm-refined/ikvm).\n", "\n", - "Navigation : [Tweety-7a-Extended-Frameworks](Tweety-7a-Extended-Frameworks.ipynb) (argumentation etendue) -\n", + "Navigation : [Tweety-7a-Extended-Frameworks](Tweety-07a-Extended-Frameworks-Python.ipynb) (argumentation etendue) -\n", " **Tweety-7b-Ranking-Probabilistic-Csharp (ce notebook - RP-CL avec Maximum Entropy)** -\n", - " [Tweety-8-Agent-Dialogues](Tweety-8-Agent-Dialogues.ipynb) (dialogue multi-agents).\n", + " [Tweety-8-Agent-Dialogues](Tweety-08-Agent-Dialogues-Python.ipynb) (dialogue multi-agents).\n", "\n", - "---\n", + "***\n", "\n", "## Objectifs pedagogiques\n", "\n", @@ -363,7 +363,7 @@ "id": "2efa5850", "metadata": {}, "source": [ - "---\n", + "***\n", "\n", "## Exercices\n", "\n", @@ -507,7 +507,7 @@ "id": "2f8c658c", "metadata": {}, "source": [ - "---\n", + "***\n", "\n", "## Conclusion\n", "\n", diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb similarity index 97% rename from MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb rename to MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb index 4e11877415..19290f2468 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb @@ -16,9 +16,9 @@ "source": [ "# Sémantiques de Classement et Argumentation Probabiliste\n", "\n", - "**Navigation**: [← Tweety-7a-Extended-Frameworks](Tweety-7a-Extended-Frameworks.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-8-Agent-Dialogues →](Tweety-8-Agent-Dialogues.ipynb)\n", + "**Navigation**: [← Tweety-7a-Extended-Frameworks](Tweety-07a-Extended-Frameworks-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-8-Agent-Dialogues →](Tweety-08-Agent-Dialogues-Python.ipynb)\n", "\n", - "---\n", + "***\n", "\n", "## Objectifs pédagogiques\n", "\n", @@ -29,7 +29,7 @@ "\n", "## Prérequis\n", "\n", - "Exécutez d'abord [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb) pour configurer l'environnement JVM.\n", + "Exécutez d'abord [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb) pour configurer l'environnement JVM.\n", "\n", "### Durée estimée : 40 minutes" ] @@ -78,7 +78,7 @@ } ], "source": [ - "# JPype1 doit être pré-provisionné dans l'environnement (cf Tweety-1-Setup.ipynb / requirements.txt).\n", + "# JPype1 doit être pré-provisionné dans l'environnement (cf Tweety-01-Setup-Python.ipynb / requirements.txt).\n", "# Installation conditionnelle en fallback uniquement si l'import échoue.\n", "try:\n", " import jpype # noqa: F401\n", @@ -303,7 +303,7 @@ "\n", "> **Note technique** : La sortie `JVM prete. Outils: 5/5` confirme que tous les outils requis pour ce notebook sont disponibles.\n", "\n", - "---" + "***" ] }, { @@ -383,7 +383,7 @@ "\n", "Les sémantiques de classement résolvent ce problème en calculant un **ordre partiel** ou **total** sur les arguments, ou en assignant des **scores numériques** reflétant leur force argumentative.\n", "\n", - "---" + "***" ] }, { @@ -1230,11 +1230,11 @@ { "cell_type": "markdown", "source": [ - "---\n", + "***\n", "\n", "## Note-de-parite cross-langage (c.757 — Tweety-7b jumeau Python ↔ C#)\n", "\n", - "Le notebook jumeau `Tweety-7b-Ranking-Probabilistic-Csharp.ipynb` (21 cells, .NET Interactive) couvre les memes fondements theoriques que ce notebook-ci (RP-CL = **Ranking Probabilistic Conditional Logic** avec Maximum Entropy sur conditionnels relationnels), mais selon une architecture **fondamentalement differente** de c.756 (Tweety-7a from-scratch) :\n", + "Le notebook jumeau `Tweety-07b-Ranking-Probabilistic-CSharp.ipynb` (21 cells, .NET Interactive) couvre les memes fondements theoriques que ce notebook-ci (RP-CL = **Ranking Probabilistic Conditional Logic** avec Maximum Entropy sur conditionnels relationnels), mais selon une architecture **fondamentalement differente** de c.756 (Tweety-7a from-scratch) :\n", "\n", "| Aspect | Python (ce notebook) | C# jumeau |\n", "|--------|---------------------|-----------|\n", @@ -1261,7 +1261,7 @@ "\n", "**Verification cross-langage (c.757 G.1 firsthand, 2026-07-22)** : les 8 cellules code Python Papermill-executees sur 2026-06-05 (9.95s, 0 erreur) ; les 10 cellules code C# .NET Interactive sur 2026-07-07 (5 cellules setup/diagnostic OK, 3 cellules exemples diagnostiquees IKVM avec code preserve en commentaire, 3 exercices stubs C.1-conformants `Console.WriteLine(... \"Exercice a completer\")`). Les 2 notebooks utilisent le **meme cadre theorique RP-CL** mais sur des **shapes** differents (Python = 22 cells Pedagogie Framework ; C# = 21 cells Diagnostic IKVM transparent) — la parite est sur l'**algorithme sous-jacent** (Maximum Entropy inference sur RP-CL belief sets), pas sur l'exemple execute.\n", "\n", - "Voir aussi : `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb` (jumeau C# IKVM), `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb` + `-Csharp.ipynb` (autre jumeau cross-langage audite c.756, from-scratch BCL .NET 9 vs IKVM), `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb` (init JVM Tweety), `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5-Abstract-Argumentation.ipynb` + `-Csharp.ipynb` (jumeau c.744 DEEP), `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb` + `-Csharp.ipynb` (jumeau c.743 DEEP).\n" + "Voir aussi : `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb` (jumeau C# IKVM), `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb` + `-Csharp.ipynb` (autre jumeau cross-langage audite c.756, from-scratch BCL .NET 9 vs IKVM), `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb` (init JVM Tweety), `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5-Abstract-Argumentation.ipynb` + `-Csharp.ipynb` (jumeau c.744 DEEP), `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb` + `-Csharp.ipynb` (jumeau c.743 DEEP).\n" ], "metadata": {} }, @@ -1279,7 +1279,7 @@ "tags": [] }, "source": [ - "---\n", + "***\n", "\n", "## Résumé\n", "\n", @@ -1317,9 +1317,9 @@ "\n", "Le notebook suivant explore les **dialogues argumentatifs multi-agents** avec le module `agents.dialogues`.\n", "\n", - "---\n", + "***\n", "\n", - "**Navigation**: [← Tweety-7a-Extended-Frameworks](Tweety-7a-Extended-Frameworks.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-8-Agent-Dialogues →](Tweety-8-Agent-Dialogues.ipynb)" + "**Navigation**: [← Tweety-7a-Extended-Frameworks](Tweety-07a-Extended-Frameworks-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-8-Agent-Dialogues →](Tweety-08-Agent-Dialogues-Python.ipynb)" ] }, { @@ -1477,7 +1477,7 @@ "end_time": "2026-06-05T20:27:36.144634", "environment_variables": {}, "exception": null, - "input_path": "MyIA.AI.Notebooks\\SymbolicAI\\Tweety\\Tweety-7b-Ranking-Probabilistic.ipynb", + "input_path": "MyIA.AI.Notebooks\\SymbolicAI\\Tweety\\Tweety-07b-Ranking-Probabilistic-Python.ipynb", "output_path": "MyIA.AI.Notebooks\\SymbolicAI\\Tweety\\Tweety-7b-Ranking-Probabilistic_output.ipynb", "parameters": {}, "start_time": "2026-06-05T20:27:31.970317", diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb similarity index 99% rename from MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb rename to MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb index ad9ce7c9ae..c1716dc545 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb @@ -7,7 +7,7 @@ "source": [ "# Dialogues Multi-Agents Argumentatifs (twin C#)\n", "\n", - "Ce notebook est le **jumeau C# (.NET Interactive)** du notebook Python `Tweety-8-Agent-Dialogues.ipynb`. Il réimplémente **from-scratch** (BCL .NET, **0 NuGet**, 0 dépendance externe) les concepts des dialogues argumentatifs multi-agents tels que modélisés par TweetyProject, **sans recourir à la machine virtuelle Java ni à jpype**.\n", + "Ce notebook est le **jumeau C# (.NET Interactive)** du notebook Python `Tweety-08-Agent-Dialogues-Python.ipynb`. Il réimplémente **from-scratch** (BCL .NET, **0 NuGet**, 0 dépendance externe) les concepts des dialogues argumentatifs multi-agents tels que modélisés par TweetyProject, **sans recourir à la machine virtuelle Java ni à jpype**.\n", "\n", "## Objectifs pédagogiques\n", "\n", @@ -1257,9 +1257,9 @@ "id": "d6cca1bf-2b26-4e6e-9bdb-d769bcadb477", "metadata": {}, "source": [ - "---\n", + "***\n", "\n", - "*Twin C# du notebook Python `Tweety-8-Agent-Dialogues.ipynb`. Marathon parité .NET ⇄ Python (#4956, Prong B). From-scratch BCL .NET, 0 NuGet, 0 JVM.*\n" + "*Twin C# du notebook Python `Tweety-08-Agent-Dialogues-Python.ipynb`. Marathon parité .NET ⇄ Python (#4956, Prong B). From-scratch BCL .NET, 0 NuGet, 0 JVM.*\n" ] } ], diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb similarity index 98% rename from MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb rename to MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb index 8c462ffda0..a7588986d1 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb @@ -16,9 +16,9 @@ "source": [ "# Dialogues Multi-Agents Argumentatifs\n", "\n", - "**Navigation**: [← Tweety-7b-Ranking-Probabilistic](Tweety-7b-Ranking-Probabilistic.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-9-Préférences →](Tweety-9-Preferences.ipynb)\n", + "**Navigation**: [← Tweety-7b-Ranking-Probabilistic](Tweety-07b-Ranking-Probabilistic-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-9-Préférences →](Tweety-09-Preferences-Python.ipynb)\n", "\n", - "---\n", + "***\n", "\n", "## Objectifs pédagogiques\n", "\n", @@ -29,7 +29,7 @@ "\n", "## Prérequis\n", "\n", - "Exécutez d'abord [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb) pour configurer l'environnement JVM.\n", + "Exécutez d'abord [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb) pour configurer l'environnement JVM.\n", "\n", "## Durée estimée : 35 minutes\n", "\n", @@ -38,7 +38,7 @@ "- `org.tweetyproject.agents` - Framework agents de base\n", "- `org.tweetyproject.agents.dialogues` - Simulation de dialogues argumentatifs\n", "\n", - "> **Note de parité cross-langage** : ce notebook est le **jumeau Python** de [`Tweety-8-Agent-Dialogues-Csharp.ipynb`](Tweety-8-Agent-Dialogues-Csharp.ipynb) (twin C# from-scratch BCL .NET, 0 JVM). Le jumeau Python utilise la **vraie API TweetyProject** (`SubgraphProbabilityFunction` sur la division exacte) via JVM/jpype, alors que le twin C# implémente un **Monte-Carlo pédagogique** (justifié : DLL Tweety .NET via IKVM défectueuse). L'écart est by design et c.736 a aligné la transparence côté C#. Marathon parité .NET ⇄ Python : EPIC #4956.\n" + "> **Note de parité cross-langage** : ce notebook est le **jumeau Python** de [`Tweety-08-Agent-Dialogues-CSharp.ipynb`](Tweety-08-Agent-Dialogues-CSharp.ipynb) (twin C# from-scratch BCL .NET, 0 JVM). Le jumeau Python utilise la **vraie API TweetyProject** (`SubgraphProbabilityFunction` sur la division exacte) via JVM/jpype, alors que le twin C# implémente un **Monte-Carlo pédagogique** (justifié : DLL Tweety .NET via IKVM défectueuse). L'écart est by design et c.736 a aligné la transparence côté C#. Marathon parité .NET ⇄ Python : EPIC #4956.\n" ] }, { @@ -776,7 +776,7 @@ "tags": [] }, "source": [ - "---\n", + "***\n", "\n", "## Résumé\n", "\n", @@ -821,9 +821,9 @@ "\n", "Le notebook suivant explore le module **Préférences** pour l'agrégation de préférences et la théorie du vote.\n", "\n", - "---\n", + "***\n", "\n", - "**Navigation**: [← Tweety-7b-Ranking-Probabilistic](Tweety-7b-Ranking-Probabilistic.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-9-Préférences →](Tweety-9-Preferences.ipynb)" + "**Navigation**: [← Tweety-7b-Ranking-Probabilistic](Tweety-07b-Ranking-Probabilistic-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-9-Préférences →](Tweety-09-Preferences-Python.ipynb)" ] }, { @@ -1550,8 +1550,8 @@ "end_time": "2026-06-02T23:49:33.772427+00:00", "environment_variables": {}, "exception": null, - "input_path": "Tweety-8-Agent-Dialogues.ipynb", - "output_path": "Tweety-8-Agent-Dialogues.ipynb", + "input_path": "Tweety-08-Agent-Dialogues-Python.ipynb", + "output_path": "Tweety-08-Agent-Dialogues-Python.ipynb", "parameters": {}, "start_time": "2026-06-02T23:49:29.918691+00:00", "version": "2.6.0" diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb similarity index 99% rename from MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb rename to MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb index 1fc5f036c2..02b0697df5 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb @@ -7,14 +7,14 @@ "source": [ "# Préférences et Théorie du Vote en C# / .NET (port natif IKVM)\n", "\n", - "**Navigation** : [<- Tweety-8-Agent-Dialogues](Tweety-8-Agent-Dialogues.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-10-MLN-Csharp ->](Tweety-10-MLN-Csharp.ipynb)\n", + "**Navigation** : [<- Tweety-8-Agent-Dialogues](Tweety-08-Agent-Dialogues-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-10-MLN-Csharp ->](Tweety-10-MLN-Csharp.ipynb)\n", "\n", "> **Serie Tweety -- port C#/.NET natif (EPIC [#4667](https://github.com/jsboige/CoursIA/issues/4667)).**\n", "> Ce notebook exploite le module **`org.tweetyproject.preferences`** de [TweetyProject](https://tweetyproject.org/) **sans JVM** :\n", "> la librairie Java est compilee vers un fat-jar Maven shade puis executee sur le runtime .NET via\n", "> [IKVM](https://github.com/ikvm-refined/ikvm).\n", "\n", - "---\n", + "***\n", "\n", "## Objectifs pedagogiques\n", "\n", @@ -1909,7 +1909,7 @@ "id": "t9cs-md-resume", "metadata": {}, "source": [ - "---\n", + "***\n", "\n", "## Resume\n", "\n", @@ -1931,7 +1931,7 @@ "3. **Copeland** est robuste quand il n'y a pas de gagnant de Condorcet\n", "4. Les **préférences sur arguments** permettent de resoudre les conflits dans les frameworks abstracts\n", "\n", - "---\n", + "***\n", "\n", "## Conclusion de la Serie Tweety (port C# / .NET natif)\n", "\n", @@ -1956,9 +1956,9 @@ "- **FOL avec egalite** : Utiliser EProver pour eviter les timeouts\n", "- **Generiques IKVM** : Les types paramètres `` sont effaces ; utiliser `dynamic` + reflexion\n", "\n", - "---\n", + "***\n", "\n", - "**Navigation** : [<- Tweety-8-Agent-Dialogues](Tweety-8-Agent-Dialogues.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-10-MLN-Csharp ->](Tweety-10-MLN-Csharp.ipynb)" + "**Navigation** : [<- Tweety-8-Agent-Dialogues](Tweety-08-Agent-Dialogues-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-10-MLN-Csharp ->](Tweety-10-MLN-Csharp.ipynb)" ] }, { diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb similarity index 97% rename from MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb rename to MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb index ce4d5b01fb..86833a9f7e 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb @@ -16,9 +16,9 @@ "source": [ "# Préférences et Théorie du Vote\n", "\n", - "**Navigation**: [← Tweety-8-Agent-Dialogues](Tweety-8-Agent-Dialogues.ipynb) | [Index](Tweety-1-Setup.ipynb)\n", + "**Navigation**: [← Tweety-8-Agent-Dialogues](Tweety-08-Agent-Dialogues-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb)\n", "\n", - "---\n", + "***\n", "\n", "## Objectifs pédagogiques\n", "\n", @@ -29,7 +29,7 @@ "\n", "## Prérequis\n", "\n", - "Exécutez d'abord [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb) pour configurer l'environnement JVM.\n", + "Exécutez d'abord [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb) pour configurer l'environnement JVM.\n", "\n", "## Durée estimée : 30 minutes\n", "\n", @@ -888,7 +888,7 @@ "tags": [] }, "source": [ - "---\n", + "***\n", "\n", "## Résumé\n", "\n", @@ -909,7 +909,7 @@ "3. **Copeland** est robuste quand il n'y a pas de gagnant de Condorcet\n", "4. Les **préférences sur arguments** permettent de résoudre les conflits dans les frameworks abstraits\n", "\n", - "---\n", + "***\n", "\n", "## Conclusion de la Série Tweety\n", "\n", @@ -940,9 +940,9 @@ "- Sources Java: https://github.com/TweetyProjectTeam/TweetyProject\n", "- JAR releases: Maven Central ou GitHub releases\n", "\n", - "---\n", + "***\n", "\n", - "**Navigation**: [← Tweety-8-Agent-Dialogues](Tweety-8-Agent-Dialogues.ipynb) | [Index](Tweety-1-Setup.ipynb)" + "**Navigation**: [← Tweety-8-Agent-Dialogues](Tweety-08-Agent-Dialogues-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb)" ] }, { @@ -1406,11 +1406,11 @@ { "cell_type": "markdown", "source": [ - "---\n", + "***\n", "\n", "## Note-de-parite cross-langage (c.759 — Tweety-9 jumeau Python ↔ C#)\n", "\n", - "Le notebook jumeau `Tweety-9-Preferences-Csharp.ipynb` (23 cells, .NET Interactive) couvre les memes fondements theoriques que ce notebook-ci (**theorie du choix social** : ordres de preference, regles d'agregation Borda 1781 / Condorcet 1785 / Copeland 1951, lien preferences-argumentation), mais selon une architecture **IKVM runtime** similaire a c.757 (Tweety-7b, shades transitifs BUG) et c.758 (Tweety-4, shades CLEAN), distincte de c.756 (Tweety-7a, from-scratch BCL .NET 9) :\n", + "Le notebook jumeau `Tweety-09-Preferences-CSharp.ipynb` (23 cells, .NET Interactive) couvre les memes fondements theoriques que ce notebook-ci (**theorie du choix social** : ordres de preference, regles d'agregation Borda 1781 / Condorcet 1785 / Copeland 1951, lien preferences-argumentation), mais selon une architecture **IKVM runtime** similaire a c.757 (Tweety-7b, shades transitifs BUG) et c.758 (Tweety-4, shades CLEAN), distincte de c.756 (Tweety-7a, from-scratch BCL .NET 9) :\n", "\n", "| Aspect | Python (ce notebook) | C# jumeau |\n", "|--------|---------------------|-----------|\n", @@ -1440,7 +1440,7 @@ "\n", "**Verification cross-langage (c.759 G.1 firsthand, 2026-07-22)** : les 9 cellules code Python Papermill-executees (0 erreur) — cells 1 (JVM init + verification), 5 (7.1 Ordres de preference), 8 (7.2 Regles d'agregation Borda/Condorcet/Copeland sur 4 candidats 5 votants), 11 (7.3 Lien preferences-argumentation), 14 (exemple guide jury 5 membres 4 projets), 18 (exemple guide systeme vote Paris/Berlin/Rome/Madrid), 20 (exercice stub systeme vote detection manipulation), 22 (exercice stub agregation Borda API native), 24 (exercice stub trancher conflit argumentatif) ; les 9 cellules code C# .NET Interactive (0 erreur) — cells 2 (IKVM setup 8.15.0), 3 (DLL preferences load 7,4 Mo + verification type exposure via reflection), 6 (7.1 enumeration types par reflection), 9 (7.2 Borda/Condorcet/Copeland executes), 12 (7.3 demo Dung preferences-argumentation), 15 (exemple guide systeme vote), 18-22 (3 exercices stubs C.1-conformants `Console.WriteLine(... \"Exercice a completer\")`). Les 2 notebooks utilisent le **meme cadre theorique** (theorie du choix social + regles d'agregation classiques) mais sur des **exemples** differents (Python = jury 5 membres 4 projets A/B/C/D + 4 candidats A/B/C/D ; C# = systeme de vote Paris/Berlin/Rome/Madrid) et des **methodes d'exploration** differentes (Python = code direct via jpype, C# = reflection .NET enumerant types exposes du JAR via IKVM). La parite est sur l'**algorithme d'agregation classique** (Borda/Condorcet/Copeland), pas sur les exemples executes.\n", "\n", - "Voir aussi : `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb` (jumeau C# IKVM), `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb` + `-Csharp.ipynb` (jumeau cross-langage c.756, from-scratch BCL .NET 9 vs IKVM), `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb` + `-Csharp.ipynb` (jumeau cross-langage c.757, IKVM RP-CL avec bug shades transitifs), `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-4-Belief-Revision.ipynb` + `-Csharp.ipynb` (jumeau cross-langage c.758, IKVM belief-revision shades clean), `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb` (init JVM Tweety, zulu17.50.19, libs natives CLINGO/SPASS/EPROVER/SAT_SOLVER_PYTHON/MARCO), `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5-Abstract-Argumentation.ipynb` + `-Csharp.ipynb` (jumeau c.744 DEEP), `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb` + `-Csharp.ipynb` (jumeau c.743 DEEP).\n" + "Voir aussi : `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb` (jumeau C# IKVM), `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb` + `-Csharp.ipynb` (jumeau cross-langage c.756, from-scratch BCL .NET 9 vs IKVM), `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb` + `-Csharp.ipynb` (jumeau cross-langage c.757, IKVM RP-CL avec bug shades transitifs), `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-4-Belief-Revision.ipynb` + `-Csharp.ipynb` (jumeau cross-langage c.758, IKVM belief-revision shades clean), `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb` (init JVM Tweety, zulu17.50.19, libs natives CLINGO/SPASS/EPROVER/SAT_SOLVER_PYTHON/MARCO), `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5-Abstract-Argumentation.ipynb` + `-Csharp.ipynb` (jumeau c.744 DEEP), `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb` + `-Csharp.ipynb` (jumeau c.743 DEEP).\n" ], "metadata": {} }, @@ -1622,8 +1622,8 @@ "end_time": "2026-06-02T23:49:41.741576+00:00", "environment_variables": {}, "exception": null, - "input_path": "Tweety-9-Preferences.ipynb", - "output_path": "Tweety-9-Preferences.ipynb", + "input_path": "Tweety-09-Preferences-Python.ipynb", + "output_path": "Tweety-09-Preferences-Python.ipynb", "parameters": {}, "start_time": "2026-06-02T23:49:38.395562+00:00", "version": "2.6.0" diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-10-MLN-Csharp.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-10-MLN-Csharp.ipynb index dc8e80181d..75d59ae784 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-10-MLN-Csharp.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-10-MLN-Csharp.ipynb @@ -6,7 +6,7 @@ "metadata": {}, "source": [ "# Tweety-10 — Markov Logic Networks (MLN) en .NET (C# / IKVM)\n", - "**Navigation** : [← Tweety-9-Préférences](Tweety-9-Preferences.ipynb) | [Index](./README.md) | [Tweety-11-Causal →](Tweety-11-Causal.ipynb)\n", + "**Navigation** : [← Tweety-9-Préférences](Tweety-09-Preferences-Python.ipynb) | [Index](./README.md) | [Tweety-11-Causal →](Tweety-11-Causal.ipynb)\n", "**Module** : `org.tweetyproject.logics.mln` (Tweety 1.30) — compilé via IKVM 8.15 + .NET 8.0\n", "**Clé** : `See #4667` (EPIC Tweety .NET — 11ème port C#)\n", "**Recette build** : `dotnet-build/build-tweety-mln-shade.pom.xml` (maven-shade-plugin 3.5.3) + `dotnet-build/build-TweetyMlnShade.csproj` (IKVM 8.15.0, net8.0)\n", @@ -17,7 +17,7 @@ "3. **Comprendre le spectre logique ↔ statistique** : un poids croissant rend la règle de plus en plus stricte\n", "4. **Diagnostiquer un domaine** : utiliser le réseau de Markov pour propager des croyances (ex. médical, social, fraude)\n", "## Prérequis\n", - "- Avoir exécuté [Tweety-2-Basic-Logics-Csharp.ipynb](Tweety-2-Basic-Logics-Csharp.ipynb) (notebook 2) p\n", + "- Avoir exécuté [Tweety-02-Basic-Logics-CSharp.ipynb](Tweety-02-Basic-Logics-CSharp.ipynb) (notebook 2) p\n", "our `FolSignature`/`FolParser`/`FolFormula`- Avoir exécuté [Tweety-3-ModalLogic-Csharp.ipynb](Tweety-3-ModalLogic-Csharp.ipynb) (notebook 3) p\n", "our la logique modale (transversale)- Notions de base en FOL et en réseaux de Markov (loi de Boltzmann sur les mondes possibles)" ] diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-10-MLN.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-10-MLN.ipynb index 7fd621efcd..a6bf19bf81 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-10-MLN.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-10-MLN.ipynb @@ -7,9 +7,9 @@ "source": [ "# Tweety-10 — Markov Logic Networks (MLN)\n", "\n", - "**Navigation** : [← Tweety-9-Préférences](Tweety-9-Preferences.ipynb) | [Index](Tweety-1-Setup.ipynb) | [README](README.md)\n", + "**Navigation** : [← Tweety-9-Préférences](Tweety-09-Preferences-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [README](README.md)\n", "\n", - "---\n", + "***\n", "\n", "## Objectifs pedagogiques\n", "\n", @@ -21,8 +21,8 @@ "\n", "## Prerequis\n", "\n", - "- Avoir execute [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb) (JVM, JARs, JPype)\n", - "- Notions de logique du premier ordre : [Tweety-2-Basic-Logics.ipynb](Tweety-2-Basic-Logics.ipynb) (predicats, quantificateurs, `FolParser`)\n", + "- Avoir execute [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb) (JVM, JARs, JPype)\n", + "- Notions de logique du premier ordre : [Tweety-02-Basic-Logics-Python.ipynb](Tweety-02-Basic-Logics-Python.ipynb) (predicats, quantificateurs, `FolParser`)\n", "- Notions de probabilite : probabilite conditionnelle, distribution\n", "\n", "### Duree estimee : 50 minutes\n", @@ -727,7 +727,7 @@ "\n", "> **Leçon** : les exceptions sont le talon d'Achille de la logique classique. Les MLN les absorbent\n", "> en faisant varier le **poids** des règles — un oiseau vole *en général* (poids), un pingouin *jamais*\n", - "> (strict). C'est aussi la graine de l'**argumentation defeasible** (cf. [Tweety-6](Tweety-6-Structured-Argumentation.ipynb)),\n", + "> (strict). C'est aussi la graine de l'**argumentation defeasible** (cf. [Tweety-6](Tweety-06-Structured-Argumentation-Python.ipynb)),\n", "> ou les règles ont des priorites." ] }, @@ -1012,7 +1012,7 @@ "id": "47e3fbba", "metadata": {}, "source": [ - "---\n", + "***\n", "\n", "## Resume\n", "\n", @@ -1034,17 +1034,17 @@ "## Prochaines étapes\n", "\n", "- **Argumentation defeasible** : le paradoxe du pingouin (exception stricte vs règle générale) est\n", - " exactement le terrain de l'argumentation structurée → [Tweety-6-Structured-Argumentation](Tweety-6-Structured-Argumentation.ipynb)\n", + " exactement le terrain de l'argumentation structurée → [Tweety-6-Structured-Argumentation](Tweety-06-Structured-Argumentation-Python.ipynb)\n", " (ASPIC+, DeLP)\n", "- **Argumentation probabiliste** : les MLN pondérent les formules ; l'argumentation probabiliste\n", - " (NB 7b) pondère les *arguments* — deux facettes de l'incertitude → [Tweety-7b-Ranking-Probabilistic](Tweety-7b-Ranking-Probabilistic.ipynb)\n", + " (NB 7b) pondère les *arguments* — deux facettes de l'incertitude → [Tweety-7b-Ranking-Probabilistic](Tweety-07b-Ranking-Probabilistic-Python.ipynb)\n", "- **Application au texte** : la serie [Argument_Analysis](../Argument_Analysis/) utilise Tweety comme\n", " backend ; les MLN y fourniraient un raisonnement plausible sur des faits extraits de texte (une\n", " porte d'entree « neuro-symbolique » au-dessus des LLMs)\n", "\n", - "---\n", + "***\n", "\n", - "**Navigation** : [← Tweety-9-Préférences](Tweety-9-Preferences.ipynb) | [Index](Tweety-1-Setup.ipynb) | [README](README.md)" + "**Navigation** : [← Tweety-9-Préférences](Tweety-09-Preferences-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [README](README.md)" ] } ], diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-11-Causal.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-11-Causal.ipynb index c9e32e5d78..d8abf3fce2 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-11-Causal.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-11-Causal.ipynb @@ -29,7 +29,7 @@ "## Prérequis\n", "\n", "- **[Tweety-5-Abstract-Argumentation](Tweety-5-Abstract-Argumentation.ipynb) §4.4** : le raisonnement causal par argumentation (couche *observationnelle* / diagnostique).\n", - "- **[Tweety-2-Basic-Logics](Tweety-2-Basic-Logics.ipynb)** : logique propositionnelle (syntaxe des formules PL).\n", + "- **[Tweety-2-Basic-Logics](Tweety-02-Basic-Logics-Python.ipynb)** : logique propositionnelle (syntaxe des formules PL).\n", "- Bases de probabilités (P(y|x), indépendance conditionnelle).\n", "\n", "## Positionnement dans la série\n", @@ -822,7 +822,7 @@ "- **[Tweety-5-Abstract-Argumentation](Tweety-5-Abstract-Argumentation.ipynb) §4.4** — la couche observationnelle / diagnostique, complémentaire de ce notebook.\n", "- **[Tweety-10-MLN](Tweety-10-MLN.ipynb)** — l'autre pont symbolique/statistique (FOL pondérée), au niveau 1 de l'échelle.\n", "\n", - "---\n", + "***\n", "\n", "*Notebook 11/11 de la série TweetyProject — capstone de synthèse sur le raisonnement causal.*" ] diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-12-Grounded-Via-TweetyProject.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-12-Grounded-Via-TweetyProject.ipynb index cdea0304d7..bb2b911bab 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-12-Grounded-Via-TweetyProject.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-12-Grounded-Via-TweetyProject.ipynb @@ -7,7 +7,7 @@ "source": [ "# Argumentation Abstraite : Grounded Extension - Pont Python/Tweety <=> Lean\n", "\n", - "**Navigation** : [<- Tweety-11-Causal](Tweety-11-Causal.ipynb) | [Index](Tweety-1-Setup.ipynb)\n", + "**Navigation** : [<- Tweety-11-Causal](Tweety-11-Causal.ipynb) | [Index](Tweety-01-Setup-Python.ipynb)\n", "\n", "***\n", "\n", @@ -743,7 +743,7 @@ "\n", "***\n", "\n", - "**Navigation** : [<- Tweety-11-Causal](Tweety-11-Causal.ipynb) | [Index](Tweety-1-Setup.ipynb)" + "**Navigation** : [<- Tweety-11-Causal](Tweety-11-Causal.ipynb) | [Index](Tweety-01-Setup-Python.ipynb)" ] } ], diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Advanced-Logics-Csharp.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Advanced-Logics-Csharp.ipynb index 52fd778d91..54f511f7ac 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Advanced-Logics-Csharp.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Advanced-Logics-Csharp.ipynb @@ -12,13 +12,13 @@ "> la librairie Java est compilee vers un fat-jar Maven shade puis executee sur le runtime .NET via\n", "> [IKVM](https://github.com/ikvm-refined/ikvm).\n", "\n", - "Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-2-Basic-Logics-Csharp.ipynb) (propositionnel) ·\n", - "[Tweety-2b-Semantics-Csharp](Tweety-2b-Semantics-Csharp.ipynb) (mondes possibles) ·\n", - "[Tweety-2c-FOL-Csharp](Tweety-2c-FOL-Csharp.ipynb) (premier ordre) ·\n", + "Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-02-Basic-Logics-CSharp.ipynb) (propositionnel) ·\n", + "[Tweety-2b-Semantics-Csharp](Tweety-02b-Semantics-CSharp.ipynb) (mondes possibles) ·\n", + "[Tweety-2c-FOL-Csharp](Tweety-02c-FOL-CSharp.ipynb) (premier ordre) ·\n", "[Tweety-3-Dung-Csharp](Tweety-3-Dung-Csharp.ipynb) (argumentation abstraite) ·\n", "**Tweety-3-Advanced-Logics (ce notebook — DL)**.\n", "\n", - "---\n", + "***\n", "\n", "## Objectifs pedagogiques\n", "\n", @@ -342,7 +342,7 @@ "id": "19f33a758167", "metadata": {}, "source": [ - "---\n", + "***\n", "\n", "## Exercices\n", "\n", @@ -508,7 +508,7 @@ "id": "4b71c541e959", "metadata": {}, "source": [ - "---\n", + "***\n", "\n", "## Conclusion\n", "\n", diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Advanced-Logics.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Advanced-Logics.ipynb index 7c99c82992..aebffde4c2 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Advanced-Logics.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Advanced-Logics.ipynb @@ -17,9 +17,9 @@ "source": [ "# Logiques Avancees - DL, Modale, QBF, Conditional\n", "\n", - "**Navigation**: [← Tweety-2-Basic-Logics](Tweety-2-Basic-Logics.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-4-Belief-Revision →](Tweety-4-Belief-Revision.ipynb)\n", + "**Navigation**: [← Tweety-2-Basic-Logics](Tweety-02-Basic-Logics-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-4-Belief-Revision →](Tweety-4-Belief-Revision.ipynb)\n", "\n", - "---\n", + "***\n", "\n", "## Objectifs pedagogiques\n", "\n", @@ -30,7 +30,7 @@ "\n", "## Prerequis\n", "\n", - "Executez d'abord [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb) pour configurer l'environnement JVM.\n", + "Executez d'abord [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb) pour configurer l'environnement JVM.\n", "\n", "### Duree estimee : 40 minutes\n", "\n", @@ -167,7 +167,7 @@ " os.environ[\"JAVA_HOME\"] = str(java_home)\n", " print(f\"JAVA_HOME detecte automatiquement : {java_home}\")\n", " else:\n", - " print(\"ATTENTION : java introuvable. Installez un JDK ou executez Tweety-1-Setup.ipynb.\")\n" + " print(\"ATTENTION : java introuvable. Installez un JDK ou executez Tweety-01-Setup-Python.ipynb.\")\n" ] }, { @@ -2201,7 +2201,7 @@ "tags": [] }, "source": [ - "---\n", + "***\n", "\n", "## Resume\n", "\n", @@ -2220,9 +2220,9 @@ "\n", "Le notebook suivant explore la **revision de croyances** et la gestion de l'incoherence.\n", "\n", - "---\n", + "***\n", "\n", - "**Navigation**: [Tweety-2-Basic-Logics](Tweety-2-Basic-Logics.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-4-Belief-Revision](Tweety-4-Belief-Revision.ipynb)" + "**Navigation**: [Tweety-2-Basic-Logics](Tweety-02-Basic-Logics-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-4-Belief-Revision](Tweety-4-Belief-Revision.ipynb)" ] }, { diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Conditional-Logics-Csharp.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Conditional-Logics-Csharp.ipynb index c98129bfa5..f710d70921 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Conditional-Logics-Csharp.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Conditional-Logics-Csharp.ipynb @@ -12,13 +12,13 @@ "> la librairie Java est compilee vers un fat-jar Maven shade puis executee sur le runtime .NET via\n", "> [IKVM](https://github.com/ikvm-refined/ikvm).\n", "\n", - "Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-2-Basic-Logics-Csharp.ipynb) (propositionnel) -\n", - " [Tweety-2c-FOL-Csharp](Tweety-2c-FOL-Csharp.ipynb) (premier ordre) -\n", + "Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-02-Basic-Logics-CSharp.ipynb) (propositionnel) -\n", + " [Tweety-2c-FOL-Csharp](Tweety-02c-FOL-CSharp.ipynb) (premier ordre) -\n", " [Tweety-3-Dung-Csharp](Tweety-3-Dung-Csharp.ipynb) (argumentation abstraite) -\n", " [Tweety-3-Advanced-Logics-Csharp](Tweety-3-Advanced-Logics-Csharp.ipynb) (Description Logics) -\n", " **Tweety-3-Conditional-Logics (ce notebook - CL)**.\n", "\n", - "---\n", + "***\n", "\n", "## Objectifs pedagogiques\n", "\n", @@ -300,7 +300,7 @@ "id": "a334d803", "metadata": {}, "source": [ - "---\n", + "***\n", "\n", "## Exercices\n", "\n", @@ -435,7 +435,7 @@ "id": "cc4c7ea8", "metadata": {}, "source": [ - "---\n", + "***\n", "\n", "## Conclusion\n", "\n", diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Dung-Csharp.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Dung-Csharp.ipynb index a90bf6f21f..4a48a87be8 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Dung-Csharp.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Dung-Csharp.ipynb @@ -12,9 +12,9 @@ "> la librairie Java est compilée vers un fat-jar Maven shade puis exécutée sur le runtime .NET via\n", "> [IKVM](https://github.com/ikvm-refined/ikvm).\n", "\n", - "Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-2-Basic-Logics-Csharp.ipynb) (propositionnel) ·\n", - "[Tweety-2b-Semantics-Csharp](Tweety-2b-Semantics-Csharp.ipynb) (mondes possibles) ·\n", - "[Tweety-2c-FOL-Csharp](Tweety-2c-FOL-Csharp.ipynb) (premier ordre) ·\n", + "Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-02-Basic-Logics-CSharp.ipynb) (propositionnel) ·\n", + "[Tweety-2b-Semantics-Csharp](Tweety-02b-Semantics-CSharp.ipynb) (mondes possibles) ·\n", + "[Tweety-2c-FOL-Csharp](Tweety-02c-FOL-CSharp.ipynb) (premier ordre) ·\n", "**Tweety-3-Dung (ce notebook)**.\n", "\n", "***\n", diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-QBF-Csharp.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-QBF-Csharp.ipynb index b8684b434e..8882562dcd 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-QBF-Csharp.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-QBF-Csharp.ipynb @@ -12,12 +12,12 @@ "> la librairie Java est compilee vers un fat-jar Maven shade puis executee sur le runtime .NET via\n", "> [IKVM](https://github.com/ikvm-refined/ikvm).\n", "\n", - "Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-2-Basic-Logics-Csharp.ipynb) (propositionnel) -\n", + "Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-02-Basic-Logics-CSharp.ipynb) (propositionnel) -\n", " [Tweety-3-Advanced-Logics-Csharp](Tweety-3-Advanced-Logics-Csharp.ipynb) (Description Logics) -\n", " [Tweety-3-Conditional-Logics-Csharp](Tweety-3-Conditional-Logics-Csharp.ipynb) (CL, defeasible) -\n", " **Tweety-3-QBF (ce notebook - Quantified Boolean Formulas)**.\n", "\n", - "---\n", + "***\n", "\n", "## Objectifs pedagogiques\n", "\n", @@ -314,7 +314,7 @@ "id": "f45a5ebd", "metadata": {}, "source": [ - "---\n", + "***\n", "\n", "## Exercices\n", "\n", @@ -449,7 +449,7 @@ "id": "24f9e6dc", "metadata": {}, "source": [ - "---\n", + "***\n", "\n", "## Conclusion\n", "\n", diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-4-Aspic-Csharp.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-4-Aspic-Csharp.ipynb index f850baf225..bf5dc90cdd 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-4-Aspic-Csharp.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-4-Aspic-Csharp.ipynb @@ -12,13 +12,13 @@ "> la librairie Java est compilée vers un fat-jar Maven shade puis exécutée sur le runtime .NET via\n", "> [IKVM](https://github.com/ikvm-refined/ikvm).\n", "\n", - "Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-2-Basic-Logics-Csharp.ipynb) (propositionnel) ·\n", - "[Tweety-2b-Semantics-Csharp](Tweety-2b-Semantics-Csharp.ipynb) (mondes possibles) ·\n", - "[Tweety-2c-FOL-Csharp](Tweety-2c-FOL-Csharp.ipynb) (premier ordre) ·\n", + "Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-02-Basic-Logics-CSharp.ipynb) (propositionnel) ·\n", + "[Tweety-2b-Semantics-Csharp](Tweety-02b-Semantics-CSharp.ipynb) (mondes possibles) ·\n", + "[Tweety-2c-FOL-Csharp](Tweety-02c-FOL-CSharp.ipynb) (premier ordre) ·\n", "[Tweety-3-Dung-Csharp](Tweety-3-Dung-Csharp.ipynb) (argumentation **abstraite**) ·\n", "**Tweety-4-Aspic (ce notebook)** (argumentation **structurée**).\n", "\n", - "---\n", + "***\n", "\n", "## Objectifs pédagogiques\n", "\n", @@ -660,7 +660,7 @@ "id": "m276161", "metadata": {}, "source": [ - "---\n", + "***\n", "\n", "## Exercices\n", "\n", @@ -828,7 +828,7 @@ "id": "m28626", "metadata": {}, "source": [ - "---\n", + "***\n", "\n", "## Conclusion\n", "\n", diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-4-Belief-Revision.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-4-Belief-Revision.ipynb index 09fd67eb64..b9f595b334 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-4-Belief-Revision.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-4-Belief-Revision.ipynb @@ -16,7 +16,7 @@ "source": [ "# Révision de Croyances et Incohérence\n", "\n", - "**Navigation**: [← Tweety-3-Advanced-Logics](Tweety-3-Advanced-Logics.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-5-Abstract-Argumentation →](Tweety-5-Abstract-Argumentation.ipynb)\n", + "**Navigation**: [← Tweety-3-Advanced-Logics](Tweety-3-Advanced-Logics.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-5-Abstract-Argumentation →](Tweety-5-Abstract-Argumentation.ipynb)\n", "\n", "***\n", "\n", @@ -29,7 +29,7 @@ "\n", "## Prérequis\n", "\n", - "Exécutez d'abord [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb) pour configurer l'environnement JVM.\n", + "Exécutez d'abord [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb) pour configurer l'environnement JVM.\n", "\n", "## Durée estimée : 30-40 minutes" ] @@ -2205,7 +2205,7 @@ "\n", "***\n", "\n", - "**Navigation**: [Tweety-3-Advanced-Logics](Tweety-3-Advanced-Logics.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-5-Abstract-Argumentation](Tweety-5-Abstract-Argumentation.ipynb)" + "**Navigation**: [Tweety-3-Advanced-Logics](Tweety-3-Advanced-Logics.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-5-Abstract-Argumentation](Tweety-5-Abstract-Argumentation.ipynb)" ] }, { diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5-Abstract-Argumentation.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5-Abstract-Argumentation.ipynb index 03b50e16e5..04da8bf64a 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5-Abstract-Argumentation.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5-Abstract-Argumentation.ipynb @@ -16,7 +16,7 @@ "source": [ "# Argumentation Abstraite (Dung)\n", "\n", - "**Navigation**: [<- Tweety-4-Belief-Revision](Tweety-4-Belief-Revision.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-6-Structured-Argumentation ->](Tweety-6-Structured-Argumentation.ipynb)\n", + "**Navigation**: [<- Tweety-4-Belief-Revision](Tweety-4-Belief-Revision.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-6-Structured-Argumentation ->](Tweety-06-Structured-Argumentation-Python.ipynb)\n", "\n", "***\n", "\n", @@ -30,7 +30,7 @@ "\n", "## Prerequis\n", "\n", - "Executez d'abord [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb) pour configurer l'environnement JVM.\n", + "Executez d'abord [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb) pour configurer l'environnement JVM.\n", "\n", "### Duree estimee : 60 minutes\n", "\n", @@ -1908,7 +1908,7 @@ "\n", "***\n", "\n", - "**Navigation**: [<- Tweety-4-Belief-Revision](Tweety-4-Belief-Revision.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-6-Structured-Argumentation ->](Tweety-6-Structured-Argumentation.ipynb)" + "**Navigation**: [<- Tweety-4-Belief-Revision](Tweety-4-Belief-Revision.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-6-Structured-Argumentation ->](Tweety-06-Structured-Argumentation-Python.ipynb)" ] }, { @@ -2974,7 +2974,7 @@ "\n", "***\n", "\n", - "**Navigation** : [<- Tweety-4-Belief-Revision](Tweety-4-Belief-Revision.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-6-Structured-Argumentation ->](Tweety-6-Structured-Argumentation.ipynb)" + "**Navigation** : [<- Tweety-4-Belief-Revision](Tweety-4-Belief-Revision.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-6-Structured-Argumentation ->](Tweety-06-Structured-Argumentation-Python.ipynb)" ] } ], diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5e-Propositional-Lab-Lean.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5e-Propositional-Lab-Lean.ipynb index f6625f4022..acb70276ba 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5e-Propositional-Lab-Lean.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5e-Propositional-Lab-Lean.ipynb @@ -16,9 +16,9 @@ "source": [ "# Tweety-5e — Laboratoire propositionnel : validité, preuve et contre-modèle\n", "\n", - "**Navigation**: [← Tweety-5d](Tweety-5d-Stable-Synthesis-Lean.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-2](Tweety-2-Basic-Logics.ipynb) | [Lean-3](../Lean/Lean-3-Propositions-Proofs.ipynb) |\n", + "**Navigation**: [← Tweety-5d](Tweety-5d-Stable-Synthesis-Lean.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-2](Tweety-02-Basic-Logics-Python.ipynb) | [Lean-3](../Lean/Lean-3-Propositions-Proofs.ipynb) |\n", "\n", - "Ce notebook est le **companion transversal** de [Tweety-2](Tweety-2-Basic-Logics.ipynb)\n", + "Ce notebook est le **companion transversal** de [Tweety-2](Tweety-02-Basic-Logics-Python.ipynb)\n", "(la pratique du raisonner propositionnel) et de\n", "[Lean-3](../Lean/Lean-3-Propositions-Proofs.ipynb) (les preuves interactives) :\n", "il fait traverser à **trois formules-témoins** les **quatre niveaux** d'articulation\n", @@ -41,7 +41,7 @@ "\n", "## Prérequis\n", "\n", - "- [Tweety-1-Setup](Tweety-1-Setup.ipynb) exécuté (JVM, `Tweety/libs`).\n", + "- [Tweety-1-Setup](Tweety-01-Setup-Python.ipynb) exécuté (JVM, `Tweety/libs`).\n", "- Le pilote FFL `Foundation` cloné dans WSL au commit épinglé\n", " `21318c7ee3b608c10366da82c4208b0d38a07402` (la cellule de la section 3 vérifie et documente l'installation).\n", "\n", diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/_probes/Tweety-IKVM-Init-Probe.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/_probes/Tweety-IKVM-Init-Probe.ipynb index 28edd23f39..a4127eb324 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/_probes/Tweety-IKVM-Init-Probe.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/_probes/Tweety-IKVM-Init-Probe.ipynb @@ -16,7 +16,7 @@ "source": [ "# Tweety .NET - Probe Phase 1 axe 2 : initialisation du runtime IKVM dans `dotnet-interactive`\n", "\n", - "**Navigation** : [<- Tweety-1-Setup](../Tweety-1-Setup.ipynb) | [Index serie](../Tweety-1-Setup.ipynb)\n", + "**Navigation** : [<- Tweety-1-Setup](../Tweety-01-Setup-Python.ipynb) | [Index serie](../Tweety-01-Setup-Python.ipynb)\n", "\n", "## Pourquoi ce notebook\n", "\n", diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/dotnet-build/README.md b/MyIA.AI.Notebooks/SymbolicAI/Tweety/dotnet-build/README.md index c92b7fcad4..46127c9e62 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/dotnet-build/README.md +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/dotnet-build/README.md @@ -4,7 +4,7 @@ Ce dossier contient les **recettes de build** (POM shade + csproj) des runtimes recompilés via IKVM 8.15.0. Chaque runtime compilé (`org.tweetyproject.tweety-.dll`) est placé **à côté du notebook** qui le charge. -## Fichiers — cluster `pl` (notebook [`../Tweety-2-Basic-Logics-Csharp.ipynb`](../Tweety-2-Basic-Logics-Csharp.ipynb)) +## Fichiers — cluster `pl` (notebook [`../Tweety-02-Basic-Logics-CSharp.ipynb`](../Tweety-02-Basic-Logics-CSharp.ipynb)) | Fichier | Rôle | Committé ? | |---------|------|-----------| @@ -58,7 +58,7 @@ cp bin/Release/net8.0/org.tweetyproject.tweety-pl.dll . en version 8.0 ; un DLL `net10.0` compile `Proposition` mais lève `FileNotFoundException: System.Runtime 10.0.0.0` au premier appel méthode. -Voir `Tweety-2-Basic-Logics-Csharp.ipynb` pour l'utilisation. Epic #4667. +Voir `Tweety-02-Basic-Logics-CSharp.ipynb` pour l'utilisation. Epic #4667. ## Fichiers — IKVM shade 5 modules (notebooks Tweety-5/7a/7b) @@ -69,11 +69,11 @@ committée (pattern #4711). Les cinq DLLs couvrent les modules argumentation | Module | Version | Notebook consommateur | Statut | |--------|---------|----------------------|--------| -| `bipolar` | 1.21 | `Tweety-7a-Extended-Frameworks-Csharp.ipynb` (cell 30+, ADF + Bipolar) | SOTA-OK | -| `social` | 1.21 | `Tweety-7a-Extended-Frameworks-Csharp.ipynb` (cell 28-29) | SOTA-OK | -| `setaf` | 1.21 | `Tweety-7a-Extended-Frameworks-Csharp.ipynb` (cell 30+, SetAF) | SOTA-OK | -| `extended` | 1.30 | `Tweety-7a-Extended-Frameworks-Csharp.ipynb` (EAF = Extended Argumentation Framework) | SOTA-OK | -| `weighted` | 1.30 | `Tweety-7a-Extended-Frameworks-Csharp.ipynb` (cell 26-27) | SOTA-OK | +| `bipolar` | 1.21 | `Tweety-07a-Extended-Frameworks-CSharp.ipynb` (cell 30+, ADF + Bipolar) | SOTA-OK | +| `social` | 1.21 | `Tweety-07a-Extended-Frameworks-CSharp.ipynb` (cell 28-29) | SOTA-OK | +| `setaf` | 1.21 | `Tweety-07a-Extended-Frameworks-CSharp.ipynb` (cell 30+, SetAF) | SOTA-OK | +| `extended` | 1.30 | `Tweety-07a-Extended-Frameworks-CSharp.ipynb` (EAF = Extended Argumentation Framework) | SOTA-OK | +| `weighted` | 1.30 | `Tweety-07a-Extended-Frameworks-CSharp.ipynb` (cell 26-27) | SOTA-OK | ### Pipeline de rebuild — `rebuild-5shades.sh` diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/dotnet-build/build-TweetyDialoguesShade.csproj b/MyIA.AI.Notebooks/SymbolicAI/Tweety/dotnet-build/build-TweetyDialoguesShade.csproj index 10b566db59..726fc790f6 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/dotnet-build/build-TweetyDialoguesShade.csproj +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/dotnet-build/build-TweetyDialoguesShade.csproj @@ -31,7 +31,7 @@ Output: ..\libs\org.tweetyproject.tweety-dialogues-java8-shade.jar (gitignored, rebuildable), then bin\Release\net8.0\org.tweetyproject.tweety-dialogues.dll - Consumed by Tweety-8-Agent-Dialogues-Csharp.ipynb Tranche 2: + Consumed by Tweety-08-Agent-Dialogues-CSharp.ipynb Tranche 2: #r "org.tweetyproject.tweety-dialogues.dll" org.tweetyproject.agents.dialogues.oppmodels.ArguingAgent org.tweetyproject.agents.dialogues.oppmodels.GroundedGameSystem diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/scripts/_archive/reorganize_tweety.py b/MyIA.AI.Notebooks/SymbolicAI/Tweety/scripts/_archive/reorganize_tweety.py index b36ac77600..0ce81f6adf 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/scripts/_archive/reorganize_tweety.py +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/scripts/_archive/reorganize_tweety.py @@ -88,8 +88,8 @@ def main(): "## Navigation\n", "\n", "- **Precedent**: [Tweety-4-Belief-Revision.ipynb](Tweety-4-Belief-Revision.ipynb)\n", - "- **Suivant**: [Tweety-6-Structured-Argumentation.ipynb](Tweety-6-Structured-Argumentation.ipynb)\n", - "- **Index**: [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb)\n" + "- **Suivant**: [Tweety-06-Structured-Argumentation-Python.ipynb](Tweety-06-Structured-Argumentation-Python.ipynb)\n", + "- **Index**: [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb)\n" ] } new_tweety5_cells.append(nav_tweety5) @@ -103,9 +103,9 @@ def main(): "\n", "Ce notebook couvre les cadres d'argumentation abstraits de Dung.\n", "\n", - "**Pre-requis**: Executez d'abord [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb) pour configurer l'environnement.\n", + "**Pre-requis**: Executez d'abord [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb) pour configurer l'environnement.\n", "\n", - "**Navigation**: [Precedent](Tweety-4-Belief-Revision.ipynb) | [Suivant](Tweety-6-Structured-Argumentation.ipynb)\n" + "**Navigation**: [Precedent](Tweety-4-Belief-Revision.ipynb) | [Suivant](Tweety-06-Structured-Argumentation-Python.ipynb)\n" ] write_notebook(tweety5_path, new_tweety5) @@ -122,7 +122,7 @@ def main(): "\n", "Ce notebook couvre les frameworks d'argumentation structuree : ASPIC+, DeLP, ABA, Argumentation Deductive et ASP.\n", "\n", - "**Pre-requis**: Executez d'abord [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb) pour configurer l'environnement.\n", + "**Pre-requis**: Executez d'abord [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb) pour configurer l'environnement.\n", "\n", "**Navigation**: [Precedent](Tweety-5-Abstract-Argumentation.ipynb) | [Suivant](Tweety-7-Advanced-Argumentation.ipynb)\n" ] @@ -142,13 +142,13 @@ def main(): "\n", "- **Precedent**: [Tweety-5-Abstract-Argumentation.ipynb](Tweety-5-Abstract-Argumentation.ipynb)\n", "- **Suivant**: [Tweety-7-Advanced-Argumentation.ipynb](Tweety-7-Advanced-Argumentation.ipynb)\n", - "- **Index**: [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb)\n" + "- **Index**: [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb)\n" ] } tweety6_cells.append(nav_tweety6) new_tweety6 = create_notebook_from_cells(tweety6_cells, metadata) - tweety6_path = base_dir / "Tweety-6-Structured-Argumentation.ipynb" + tweety6_path = base_dir / "Tweety-06-Structured-Argumentation-Python.ipynb" write_notebook(tweety6_path, new_tweety6) # 5. Renommer ancien Tweety-6 en Tweety-7 @@ -187,7 +187,7 @@ def main(): print("="*60) print(f"\nNouvelle structure :") print(f" - Tweety-5-Abstract-Argumentation.ipynb (Dung uniquement)") - print(f" - Tweety-6-Structured-Argumentation.ipynb (ASPIC+, DeLP, ABA, etc.)") + print(f" - Tweety-06-Structured-Argumentation-Python.ipynb (ASPIC+, DeLP, ABA, etc.)") print(f" - Tweety-7-Advanced-Argumentation.ipynb (ancien Tweety-6)") print(f"\nBackup conservé : {backup_path}") diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/scripts/validate_syntax.py b/MyIA.AI.Notebooks/SymbolicAI/Tweety/scripts/validate_syntax.py index 58b0671513..09cd107755 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/scripts/validate_syntax.py +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/scripts/validate_syntax.py @@ -12,15 +12,15 @@ # Notebooks to validate TWEETY_NOTEBOOKS = [ - "Tweety-1-Setup.ipynb", - "Tweety-2-Basic-Logics.ipynb", + "Tweety-01-Setup-Python.ipynb", + "Tweety-02-Basic-Logics-Python.ipynb", "Tweety-3-Advanced-Logics.ipynb", "Tweety-4-Belief-Revision.ipynb", "Tweety-5-Abstract-Argumentation.ipynb", - "Tweety-6-Structured-Argumentation.ipynb", + "Tweety-06-Structured-Argumentation-Python.ipynb", "Tweety-7-Advanced-Argumentation.ipynb", - "Tweety-7a-Extended-Frameworks.ipynb", - "Tweety-7b-Ranking-Probabilistic.ipynb", + "Tweety-07a-Extended-Frameworks-Python.ipynb", + "Tweety-07b-Ranking-Probabilistic-Python.ipynb", ] diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/scripts/verify_all_tweety.py b/MyIA.AI.Notebooks/SymbolicAI/Tweety/scripts/verify_all_tweety.py index 8589956a7c..4f91bcbeb6 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/scripts/verify_all_tweety.py +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/scripts/verify_all_tweety.py @@ -52,17 +52,17 @@ # Expected Tweety notebooks in order TWEETY_NOTEBOOKS = [ - "Tweety-1-Setup.ipynb", - "Tweety-2-Basic-Logics.ipynb", + "Tweety-01-Setup-Python.ipynb", + "Tweety-02-Basic-Logics-Python.ipynb", "Tweety-3-Advanced-Logics.ipynb", "Tweety-4-Belief-Revision.ipynb", "Tweety-5-Abstract-Argumentation.ipynb", - "Tweety-6-Structured-Argumentation.ipynb", + "Tweety-06-Structured-Argumentation-Python.ipynb", # Tweety-7 divided into 7a and 7b - "Tweety-7a-Extended-Frameworks.ipynb", - "Tweety-7b-Ranking-Probabilistic.ipynb", - "Tweety-8-Agent-Dialogues.ipynb", - "Tweety-9-Preferences.ipynb", + "Tweety-07a-Extended-Frameworks-Python.ipynb", + "Tweety-07b-Ranking-Probabilistic-Python.ipynb", + "Tweety-08-Agent-Dialogues-Python.ipynb", + "Tweety-09-Preferences-Python.ipynb", ] # Expected support directories and files @@ -113,18 +113,18 @@ "AF Learning disabled - ClassCastException (Tautology cannot be cast to AssociativePlFormula)", "Limitation: Internal Tweety bug, section commented out" ], - "Tweety-7a-Extended-Frameworks.ipynb": [ + "Tweety-07a-Extended-Frameworks-Python.ipynb": [ "ADF section may fail - requires native SAT solver", "Other sections (Bipolar, WAF, SAF, SetAF, Extended) work correctly" ], - "Tweety-7b-Ranking-Probabilistic.ipynb": [ + "Tweety-07b-Ranking-Probabilistic-Python.ipynb": [ "All sections should work correctly" ], - "Tweety-8-Agent-Dialogues.ipynb": [ + "Tweety-08-Agent-Dialogues-Python.ipynb": [ "Module coverage limited - agents.dialogues is relatively undocumented", "Lottery examples from arg.prob work correctly" ], - "Tweety-9-Preferences.ipynb": [ + "Tweety-09-Preferences-Python.ipynb": [ "preferences module may have limited API exposure", "Python simulation of voting rules provided as alternative" ], @@ -456,7 +456,7 @@ def check_environment(tweety_dir: Path) -> EnvironmentCheck: env.jars_found = len(jars) env.jars_path = str(libs_path) else: - env.errors.append("Tweety JARs not found - run Tweety-1-Setup.ipynb first") + env.errors.append("Tweety JARs not found - run Tweety-01-Setup-Python.ipynb first") # Check Clingo (optional) clingo_path = shutil.which("clingo") diff --git a/MyIA.AI.Notebooks/SymbolicAI/_archive/README.md b/MyIA.AI.Notebooks/SymbolicAI/_archive/README.md index eb8581cbe2..50896dd5d2 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/_archive/README.md +++ b/MyIA.AI.Notebooks/SymbolicAI/_archive/README.md @@ -17,12 +17,12 @@ Ce répertoire contient les anciennes versions et fichiers historiques de la sé - Argumentation avancée (ADF, Bipolaire, Ranking, Probabiliste) **Nouvelle structure** (7 notebooks séparés): -1. **Tweety-1-Setup.ipynb** - Configuration environnement uniquement -2. **Tweety-2-Basic-Logics.ipynb** - PL et FOL +1. **Tweety-01-Setup-Python.ipynb** - Configuration environnement uniquement +2. **Tweety-02-Basic-Logics-Python.ipynb** - PL et FOL 3. **Tweety-3-Advanced-Logics.ipynb** - DL, Modale, QBF 4. **Tweety-4-Belief-Revision.ipynb** - Révision de croyances, MUS 5. **Tweety-5-Abstract-Argumentation.ipynb** - Cadres de Dung -6. **Tweety-6-Structured-Argumentation.ipynb** - ASPIC+, DeLP, ABA, ASP +6. **Tweety-06-Structured-Argumentation-Python.ipynb** - ASPIC+, DeLP, ABA, ASP 7. **Tweety-7-Advanced-Argumentation.ipynb** - ADF, Ranking, Probabiliste **Avantages de la nouvelle structure**: diff --git a/README.md b/README.md index 80e143883e..b8d6568afa 100644 --- a/README.md +++ b/README.md @@ -486,7 +486,7 @@ s'installent directement via leur `requirements.txt`. | Planners | `SymbolicAI/Planners/00-Environment/Planners-0-Setup.ipynb` | `requirements.txt` ; `SymbolicAI/scripts/install_clingo.py` | | SemanticWeb | `SymbolicAI/SemanticWeb/SW-1-CSharp-Setup.ipynb` | kernel .NET Interactive | | SmartContracts | `SymbolicAI/SmartContracts/00-Foundations/SC-1-Setup-Foundry.ipynb`, `SC-2-Setup-Web3py.ipynb` | `SymbolicAI/SmartContracts/setup_env.py`, `SymbolicAI/SmartContracts/scripts/setup_wsl_smartcontracts.sh` | -| Tweety | `SymbolicAI/Tweety/Tweety-1-Setup.ipynb` | `tweety_init.py` (JDK auto-télécharge) | +| Tweety | `SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb` | `tweety_init.py` (JDK auto-télécharge) | | Argument Analysis | `SymbolicAI/Argument_Analysis/Argument_Analysis_UI_configuration.ipynb` | `install_jdk_portable.py` | | IIT | `requirements.txt` | `IIT/scripts/setup_pyphi_env.ps1` | | GenAI / Aspire | `GenAI/Integrations-DotNet/Aspire/01-Aspire-Orchestration-GenAi.ipynb` | SDK .NET 10 + CLI Aspire (`dotnet tool install -g Aspire.Cli`) ; Docker démarré | diff --git a/_quarto.yml b/_quarto.yml index 668abff19c..9e1ad73c26 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -1240,14 +1240,14 @@ project: - "MyIA.AI.Notebooks/SymbolicAI/Tweety/_probes/Tweety-IKVM-Init-Probe.ipynb" - "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-10-MLN-Csharp.ipynb" - "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-12-Grounded-Via-TweetyProject.ipynb" - - "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb" + - "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb" - "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-4-Belief-Revision-Csharp.ipynb" - "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5-Abstract-Argumentation.ipynb" - "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5b-Lean-Argumentation.ipynb" - "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5d-Stable-Synthesis-Lean.ipynb" - - "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb" - - "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb" - - "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb" + - "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb" + - "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb" + - "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb" site: title: "CoursIA" description: "Apprendre l'intelligence artificielle par la pratique, des fondements théoriques aux applications avancées." diff --git a/docs/archive/ledgers-reviews/2026-07-11-h4-sweep-6021.md b/docs/archive/ledgers-reviews/2026-07-11-h4-sweep-6021.md index 9244ab0ce0..ac69a8e461 100644 --- a/docs/archive/ledgers-reviews/2026-07-11-h4-sweep-6021.md +++ b/docs/archive/ledgers-reviews/2026-07-11-h4-sweep-6021.md @@ -14,7 +14,7 @@ Sweep L143 SAFE cross-owner (jsboige owner-lane axe-1 PR-po C#-rest vs po-2023 r | 2 | `GameTheory/GameTheory-02-NormalForm-Csharp-Part2.ipynb` | `## 8. Conclusion (tranche 1)` | `## Conclusion (tranche 1)` | **EXEC_PROVED** keyword-gated, tranche préservée | | 3 | `Sudoku/Sudoku-06-Benchmark-Wave-25-csharp.ipynb` | `## 12. Récapitulatif` | `## Récapitulatif` | **EXEC_PROVED** keyword-gated, UTF-8 accent préservé | | 4 | `Planners/Planners-4-Advanced-H tsp-csharp.ipynb` | `## 10. Conclusion` | `## Conclusion` | **EXEC_PROVED** keyword-gated | -| 5 | `SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb` | `## 9. Conclusion (tranche 1)` | `## Conclusion (tranche 1)` | **EXEC_PROVED** keyword-gated, tranche préservée | +| 5 | `SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb` | `## 9. Conclusion (tranche 1)` | `## Conclusion (tranche 1)` | **EXEC_PROVED** keyword-gated, tranche préservée | **Pattern keyword-gated vérifié** : regex `^#{1,6}\s+\d+\.\s+(Conclusion|Synthèse|R[ée]cap|Bilan)` → `^#{1,6}\s+(Conclusion|...)` ; `tranche N` suffixée préservée verbatim. Encodage UTF-8 accent `Synthèse` préservé (pas de mojibake, pas d'entité HTML `é` substituée). Aucune réécriture de cellules code, aucune fusion/split de sections. diff --git a/docs/archive/visitor-navigation-guide.md b/docs/archive/visitor-navigation-guide.md index d9bd0efa77..ecb057d925 100644 --- a/docs/archive/visitor-navigation-guide.md +++ b/docs/archive/visitor-navigation-guide.md @@ -68,7 +68,7 @@ Les notebooks utilisent principalement **Python 3.10+** (PyTorch, OR-Tools, PyMC **Fil conducteur** : prouver des theoremes classiques (Arrow, Conway, Kochen-Specker) en Lean 4, utiliser des solveurs (Z3, OR-Tools), et explorer les logiques non-classiques. -**Entree recommandee** : [Lean-1-Setup](../MyIA.AI.Notebooks/SymbolicAI/Lean/Lean-1-Setup.ipynb) configure l'environnement Lean 4 (kernel WSL). Puis [Tweety-2](../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb) pour les fondamentaux logiques. +**Entree recommandee** : [Lean-1-Setup](../MyIA.AI.Notebooks/SymbolicAI/Lean/Lean-1-Setup.ipynb) configure l'environnement Lean 4 (kernel WSL). Puis [Tweety-2](../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb) pour les fondamentaux logiques. **Etapes cles** : Lean 4 (16 nb, theoremes portes) → Tweety (logiques, argumentation) → Planners (PDDL, Fast-Downward) → SmartContracts (Solidity, verification formelle). Les series Lean et SymbolicAI sont partagees avec le **Parcours A** ; ici on les lit comme le coeur de la verification formelle (la preuve comme garantie, pas comme exploration). diff --git a/docs/curriculum/ia-symbolique.md b/docs/curriculum/ia-symbolique.md index 7beb1c68bd..bcbd081311 100644 --- a/docs/curriculum/ia-symbolique.md +++ b/docs/curriculum/ia-symbolique.md @@ -299,16 +299,16 @@ Preuves formelles en Lean 4, logique probabiliste avec Tweety, web sémantique, | # | Notebook | Maturité | Exécutable | |---|----------|----------|------------| -| 1 | [Configuration et Installation TweetyProject](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb) | BETA | Oui | +| 1 | [Configuration et Installation TweetyProject](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb) | BETA | Oui | | 2 | [Tweety-10 — Markov Logic Networks (MLN) en .NET (C# /…](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-10-MLN-Csharp.ipynb) | BETA | Oui | | 3 | [Tweety-10 — Markov Logic Networks (MLN)](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-10-MLN.ipynb) | BETA | Oui | | 4 | [Tweety-11 — Inférence causale & do-calculus (twin C#…](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-11-Causal-Csharp.ipynb) | BETA | Oui | | 5 | [Tweety-11 — Raisonnement Causal : du do-calculus aux…](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-11-Causal.ipynb) | BETA | Oui | | 6 | [Argumentation Abstraite : Grounded Extension - Pont…](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-12-Grounded-Via-TweetyProject.ipynb) | BETA | Oui | -| 7 | [Tweety C# / IKVM - Logiques de Base (Port .NET du…](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb) | BETA | Oui | -| 8 | [Logiques de Base - Propositionnelle et Premier Ordre](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb) | BETA | Oui | -| 9 | [Tweety C# / IKVM - Sémantique propositionnelle : mondes…](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb) | BETA | Oui | -| 10 | [Tweety-2c — Logique du premier ordre en C#/.NET (port…](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb) | BETA | Oui | +| 7 | [Tweety C# / IKVM - Logiques de Base (Port .NET du…](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb) | BETA | Oui | +| 8 | [Logiques de Base - Propositionnelle et Premier Ordre](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb) | BETA | Oui | +| 9 | [Tweety C# / IKVM - Sémantique propositionnelle : mondes…](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb) | BETA | Oui | +| 10 | [Tweety-2c — Logique du premier ordre en C#/.NET (port…](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb) | BETA | Oui | | 11 | [Tweety-3 — Description Logics en C#/.NET (port natif…](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Advanced-Logics-Csharp.ipynb) | BETA | Oui | | 12 | [Logiques Avancees - DL, Modale, QBF, Conditional](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Advanced-Logics.ipynb) | BETA | Oui | | 13 | [Tweety-3 — Conditional Logics en C#/.NET (port natif…](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Conditional-Logics-Csharp.ipynb) | BETA | Oui | @@ -322,14 +322,14 @@ Preuves formelles en Lean 4, logique probabiliste avec Tweety, web sémantique, | 21 | [Argumentation Abstraite (Dung)](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5-Abstract-Argumentation.ipynb) | BETA | Oui | | 22 | [Tweety-5b — Théorie de l'argumentation de Dung…](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5b-Lean-Argumentation.ipynb) | BETA | Non | | 23 | [Tweety-5d — Synthèse certifiée d'extensions stables :…](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5d-Stable-Synthesis-Lean.ipynb) | BETA | Non | -| 24 | [Tweety-6 — Argumentation structuree (twin C# / .NET…](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb) | BETA | Oui | -| 25 | [Argumentation Structuree](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb) | BETA | Oui | -| 26 | [Tweety-7a : Frameworks d'Argumentation Etendus (C#)](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb) | BETA | Oui | -| 27 | [Frameworks d'Argumentation Étendus](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb) | BETA | Oui | -| 28 | [Tweety-7b - Ranking Probabilistic Conditional Logic en…](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb) | BETA | Oui | -| 29 | [Sémantiques de Classement et Argumentation Probabiliste](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb) | BETA | Oui | -| 30 | [Dialogues Multi-Agents Argumentatifs (twin C#)](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb) | BETA | Oui | -| 31 | [Dialogues Multi-Agents Argumentatifs](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb) | BETA | Oui | -| 32 | [Préférences et Théorie du Vote en C# / .NET (port natif…](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb) | ALPHA | Oui | -| 33 | [Préférences et Théorie du Vote](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb) | ALPHA | Oui | +| 24 | [Tweety-6 — Argumentation structuree (twin C# / .NET…](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb) | BETA | Oui | +| 25 | [Argumentation Structuree](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb) | BETA | Oui | +| 26 | [Tweety-7a : Frameworks d'Argumentation Etendus (C#)](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb) | BETA | Oui | +| 27 | [Frameworks d'Argumentation Étendus](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb) | BETA | Oui | +| 28 | [Tweety-7b - Ranking Probabilistic Conditional Logic en…](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb) | BETA | Oui | +| 29 | [Sémantiques de Classement et Argumentation Probabiliste](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb) | BETA | Oui | +| 30 | [Dialogues Multi-Agents Argumentatifs (twin C#)](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb) | BETA | Oui | +| 31 | [Dialogues Multi-Agents Argumentatifs](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb) | BETA | Oui | +| 32 | [Préférences et Théorie du Vote en C# / .NET (port natif…](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb) | ALPHA | Oui | +| 33 | [Préférences et Théorie du Vote](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb) | ALPHA | Oui | | 34 | [Tweety .NET - Probe Phase 1 axe 2 : initialisation du…](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/_probes/Tweety-IKVM-Init-Probe.ipynb) | BETA | Oui | diff --git a/docs/ledgers/10678-interp-positioning-audit.md b/docs/ledgers/10678-interp-positioning-audit.md index 8228b57a9a..8166125951 100644 --- a/docs/ledgers/10678-interp-positioning-audit.md +++ b/docs/ledgers/10678-interp-positioning-audit.md @@ -37,7 +37,7 @@ Pour chaque cellule markdown d'interpretation (pattern `### Lecture du resultat` | `Search-03-Informed.ipynb` | 1/8 | MISPLACED | | `Sudoku-14-BDD-Csharp.ipynb` | 1/3 | MISPLACED | | `Lean-7b-Examples.ipynb` | 1/7 | MISPLACED | -| `Tweety-8-Agent-Dialogues.ipynb` | 1/1 | MISPLACED | +| `Tweety-08-Agent-Dialogues-Python.ipynb` | 1/1 | MISPLACED | ## Detail des 24 cellules MISPLACED @@ -195,7 +195,7 @@ Pour chaque cellule markdown d'interpretation (pattern `### Lecture du resultat` - **next_code[19]** : `// TODO: Définissez le problème de portefeuille / // - 4 actifs disponibles avec rendements attendus / // - Contrainte : budget total de 100 000€ / // - Contrainte : risque maximum par catégorie / // - Object` - reason : gap_b=3, gap_a=4 (interp is in MD-only zone between code blocks) -### `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb` (1 cellules) +### `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb` (1 cellules) #### cell[2] gap_b=1 gap_a=5 - **interp** : `### Interprétation de la configuration / / Les résultats ci-dessus confirment que l'environnement est correctement configuré pour simuler des dialogues multi-agents: / / **Configuration JVM validée:** / - **JDK portable**: Zulu 17 détecté et configuré automa` - **prev_code[1]** : `# --- Initialisation JVM Tweety + Outils Externes --- / print("--- Verification JVM Tweety + Outils ---") / jvm_ready = False / / import jpype / import jpype.imports / import os / import pathlib / import shutil / impo` diff --git a/docs/ledgers/3801-sota-axe2.md b/docs/ledgers/3801-sota-axe2.md index f229b4fa37..3aeda7bcc0 100644 --- a/docs/ledgers/3801-sota-axe2.md +++ b/docs/ledgers/3801-sota-axe2.md @@ -125,7 +125,7 @@ Chaque entry = 1 audit de famille/source, avec : - **Tweety .NET via .NET Interactive** (15 nb .net-csharp) — kernelspec `.net-csharp`, vrais appels NuGet - **Lean 4 via WSL** (1 nb Tweety-5b-Lean-Argumentation companion formel au lake `argumentation_lean`) — kernelspec `lean4-wsl` -- **Workaround dégradé** : **0/31** (2 occurrences du mot « workaround » : (a) `Tweety-2-Basic-Logics-Csharp.ipynb` cell 18 = commentaire référençant leçon C171 PR #5147 + RECOVERABLE-MACHINE disclosure honnête VS Code Interactive pour .NET + Stop & Repair appliqué ; (b) `Tweety-3-Advanced-Logics.ipynb` cell 24 = disclosure honnête limitation SPASS parsing modal avec fallback sémantique Kripke. **Aucune dégradation cachée**, **disclosure authentique** comme attendu par sota-not-workaround.md). +- **Workaround dégradé** : **0/31** (2 occurrences du mot « workaround » : (a) `Tweety-02-Basic-Logics-CSharp.ipynb` cell 18 = commentaire référençant leçon C171 PR #5147 + RECOVERABLE-MACHINE disclosure honnête VS Code Interactive pour .NET + Stop & Repair appliqué ; (b) `Tweety-3-Advanced-Logics.ipynb` cell 24 = disclosure honnête limitation SPASS parsing modal avec fallback sémantique Kripke. **Aucune dégradation cachée**, **disclosure authentique** comme attendu par sota-not-workaround.md). - **Problème non-trivial** (Prong B) : 31/31 OK — chaque notebook pose un problème Tweety avancé : - Tweety-1-Setup : bootstrap JVM/JPype + 76 jars Tweety diff --git a/docs/notebook-metadata/production-scope.md b/docs/notebook-metadata/production-scope.md index 06c9245bd4..db39587f95 100644 --- a/docs/notebook-metadata/production-scope.md +++ b/docs/notebook-metadata/production-scope.md @@ -46,7 +46,7 @@ Le détail par notebook suit en strate A ci-dessous : consultation, plus décisi | Search — Part 1 Foundations | EPITA Programmation par Contraintes | `Search-01-StateSpace.ipynb` | 13 | | | Search — Part 2 CSP | EPITA Programmation par Contraintes | `CSP-1-Fundamentals.ipynb` | 9 | | | Argument Analysis | EPITA IA Symbolique | `Argument_Analysis_Toulmin_Model.ipynb` | 4 | | -| Tweety | EPITA IA Symbolique | `Tweety-2-Basic-Logics.ipynb` | 6 | | +| Tweety | EPITA IA Symbolique | `Tweety-02-Basic-Logics-Python.ipynb` | 6 | | | Lean | EPITA IA Symbolique | `Lean-2-Dependent-Types.ipynb` | 2 | | | Semantic Web | EPITA IA Symbolique | `SW-2-CSharp-RDFBasics.ipynb` | 2 | | | Planners (01-02) | EPITA IA Symbolique | `Planners-1-Introduction.ipynb` | 3 | | @@ -170,7 +170,7 @@ Le détail par notebook suit en strate A ci-dessous : consultation, plus décisi - [ ] `MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/Argument_Analysis_Toulmin_Model.ipynb` -- [ ] `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb` +- [ ] `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb` - [ ] `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Advanced-Logics.ipynb` - [ ] `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Conditional-Logics-Csharp.ipynb` - [ ] `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Dung-Csharp.ipynb` @@ -293,9 +293,9 @@ l'Epic) ; un dossier de revue est alors préparé (T2).* - [ ] `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-4-Aspic-Csharp.ipynb` - [ ] `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-4-Belief-Revision.ipynb` - [ ] `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5-Abstract-Argumentation.ipynb` -- [ ] `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb` -- [ ] `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb` -- [ ] `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb` +- [ ] `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb` +- [ ] `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb` +- [ ] `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb` - [ ] `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-10-MLN.ipynb` - [ ] `MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-11-Causal.ipynb` diff --git a/scripts/notebook_tools/pedagogy_density_baseline.json b/scripts/notebook_tools/pedagogy_density_baseline.json index 364658f4a3..632f4515f1 100644 --- a/scripts/notebook_tools/pedagogy_density_baseline.json +++ b/scripts/notebook_tools/pedagogy_density_baseline.json @@ -787,10 +787,10 @@ "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-10-MLN.ipynb": 2198.222, "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-11-Causal-Csharp.ipynb": 650.143, "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-11-Causal.ipynb": 1336.417, - "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb": 567.2, - "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb": 1773.211, - "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb": 730.417, - "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb": 687.2, + "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb": 567.2, + "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb": 1773.211, + "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb": 730.417, + "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb": 687.2, "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Advanced-Logics-Csharp.ipynb": 883.4, "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Advanced-Logics.ipynb": 1564.125, "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Conditional-Logics-Csharp.ipynb": 1166.556, @@ -803,16 +803,16 @@ "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5-Abstract-Argumentation-Csharp.ipynb": 1461.0, "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5-Abstract-Argumentation.ipynb": 2168.737, "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5b-Lean-Argumentation.ipynb": 1163.857, - "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb": 859.8, - "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb": 3134.7, - "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb": 1264.118, - "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb": 2456.083, - "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb": 1073.8, - "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb": 2377.25, - "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb": 784.455, - "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb": 1658.5, - "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb": 1670.667, - "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb": 2518.667, + "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb": 859.8, + "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb": 3134.7, + "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb": 1264.118, + "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb": 2456.083, + "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb": 1073.8, + "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb": 2377.25, + "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb": 784.455, + "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb": 1658.5, + "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb": 1670.667, + "MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb": 2518.667, "MyIA.AI.Notebooks/cross-series/socle-metadata-driven/Socle-MetadataDriven-Csharp.ipynb": 594.1 } } diff --git a/scripts/notebook_tools/tests/test_check_outputs_text_fragmentation.py b/scripts/notebook_tools/tests/test_check_outputs_text_fragmentation.py index 953389e3c0..e83ac0f24e 100644 --- a/scripts/notebook_tools/tests/test_check_outputs_text_fragmentation.py +++ b/scripts/notebook_tools/tests/test_check_outputs_text_fragmentation.py @@ -69,7 +69,7 @@ def test_founder_case_flagged(tmp_path: Path) -> None: res = subprocess.run( [sys.executable, str(SCRIPT), str(p), "--check"], capture_output=True, - text=True, + text=True, encoding="utf-8", errors="replace", ) assert res.returncode == 1, f"devrait flagger, exit={res.returncode}, stderr={res.stderr}" assert "FRAGMENTED" in res.stdout @@ -92,7 +92,7 @@ def test_normal_multiline_output_passes(tmp_path: Path) -> None: res = subprocess.run( [sys.executable, str(SCRIPT), str(p), "--check"], capture_output=True, - text=True, + text=True, encoding="utf-8", errors="replace", ) assert res.returncode == 0, f"ne devrait PAS flagger, stderr={res.stderr}" @@ -105,7 +105,7 @@ def test_short_output_under_threshold_passes(tmp_path: Path) -> None: res = subprocess.run( [sys.executable, str(SCRIPT), str(p), "--check"], capture_output=True, - text=True, + text=True, encoding="utf-8", errors="replace", ) assert res.returncode == 0, f"court OK, stderr={res.stderr}" @@ -117,7 +117,7 @@ def test_single_long_line_passes(tmp_path: Path) -> None: res = subprocess.run( [sys.executable, str(SCRIPT), str(p), "--check"], capture_output=True, - text=True, + text=True, encoding="utf-8", errors="replace", ) assert res.returncode == 0 @@ -133,7 +133,7 @@ def test_display_data_output_ignored(tmp_path: Path) -> None: res = subprocess.run( [sys.executable, str(SCRIPT), str(p), "--check"], capture_output=True, - text=True, + text=True, encoding="utf-8", errors="replace", ) assert res.returncode == 0, f"display_data ignore, stderr={res.stderr}" @@ -157,7 +157,7 @@ def test_markdown_cells_ignored(tmp_path: Path) -> None: res = subprocess.run( [sys.executable, str(SCRIPT), str(p), "--check"], capture_output=True, - text=True, + text=True, encoding="utf-8", errors="replace", ) assert res.returncode == 0 @@ -169,7 +169,7 @@ def test_json_output_stable(tmp_path: Path) -> None: res = subprocess.run( [sys.executable, str(SCRIPT), str(p), "--json"], capture_output=True, - text=True, + text=True, encoding="utf-8", errors="replace", ) assert res.returncode == 0 payload = json.loads(res.stdout) @@ -191,7 +191,7 @@ def test_multiple_outputs_mixed(tmp_path: Path) -> None: res = subprocess.run( [sys.executable, str(SCRIPT), str(p), "--check"], capture_output=True, - text=True, + text=True, encoding="utf-8", errors="replace", ) assert res.returncode == 1, "au moins 1 fragmented -> exit 1" # 1 seul finding (l'output OK n'est pas flague) @@ -215,7 +215,7 @@ def test_mutation_disable_threshold_caught(tmp_path: Path) -> None: res = subprocess.run( [sys.executable, str(SCRIPT), str(p), "--check"], capture_output=True, - text=True, + text=True, encoding="utf-8", errors="replace", ) # mediane = 3 > seuil 2 -> PAS flagger (sinon MEDIAN_THRESHOLD serait mort) assert res.returncode == 0, f"mediane 3 > seuil 2 -> OK, stderr={res.stderr}" @@ -235,7 +235,7 @@ def test_mutation_disable_max_threshold_caught(tmp_path: Path) -> None: res = subprocess.run( [sys.executable, str(SCRIPT), str(p), "--check"], capture_output=True, - text=True, + text=True, encoding="utf-8", errors="replace", ) # max=50 > 2 -> conjonction leve l'exemption -> OK (pas de finding) assert res.returncode == 0, f"max=50 > seuil max=2 -> OK, stderr={res.stderr}" @@ -254,7 +254,7 @@ def test_min_items_below_threshold_passes(tmp_path: Path) -> None: res = subprocess.run( [sys.executable, str(SCRIPT), str(p), "--check"], capture_output=True, - text=True, + text=True, encoding="utf-8", errors="replace", ) # n_items=3 < MIN_TEXT_ITEMS=10 -> early-exit, exit=0 assert res.returncode == 0 @@ -289,9 +289,9 @@ def test_min_items_below_threshold_passes(tmp_path: Path) -> None: ("MyIA.AI.Notebooks/SymbolicAI/SemanticWeb/SW-9-CSharp-JSONLD.ipynb", 25, 1, "stderr SW-9 cell25"), ("MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-Linq2Z3/08_Meal_Planner_Patient_Capstone.ipynb", 20, 9, "stderr Z3-Linq2Z3 meal planner"), ("MyIA.AI.Notebooks/SymbolicAI/SymbolicLearning/SL-4-InductiveLogicProgramming-Csharp.ipynb", 3, 10, "stderr SL-4"), - ("MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb", 27, 3, "stderr Tweety-7a Dung via lib"), - ("MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb", 30, 3, "stderr Tweety-7a Weighted via lib"), - ("MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb", 33, 6, "stderr Tweety-7a Social via lib"), + ("MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb", 27, 3, "stderr Tweety-7a Dung via lib"), + ("MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb", 30, 3, "stderr Tweety-7a Weighted via lib"), + ("MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb", 33, 6, "stderr Tweety-7a Social via lib"), ] @@ -311,7 +311,7 @@ def test_fp_case_not_flagged(rel_path: str, cell_idx: int, out_idx: int, desc: s res = subprocess.run( [sys.executable, str(SCRIPT), str(nb_path), "--check"], capture_output=True, - text=True, + text=True, encoding="utf-8", errors="replace", ) assert res.returncode == 0, ( f"FP regression sur {rel_path} cell#{cell_idx} output#{out_idx} " @@ -325,7 +325,7 @@ def test_explain_mode() -> None: res = subprocess.run( [sys.executable, str(SCRIPT), "--explain"], capture_output=True, - text=True, + text=True, encoding="utf-8", errors="replace", ) assert res.returncode == 0 assert "fragmentation" in res.stdout.lower() or "fragment" in res.stdout.lower() diff --git a/scripts/notebook_tools/tests/test_check_twin_parity_coverage.py b/scripts/notebook_tools/tests/test_check_twin_parity_coverage.py index b441c458fb..75e63dd6ab 100644 --- a/scripts/notebook_tools/tests/test_check_twin_parity_coverage.py +++ b/scripts/notebook_tools/tests/test_check_twin_parity_coverage.py @@ -47,7 +47,7 @@ f"{SW}/SW-10-CSharp-RDFStar.ipynb", f"{SW}/SW-10-Python-RDFStar.ipynb", # genuinely C#-only - f"{TW}/Tweety-2c-FOL-Csharp.ipynb", + f"{TW}/Tweety-02c-FOL-CSharp.ipynb", f"{SUD}/Sudoku-00-Environment-Csharp.ipynb", f"{SW}/SW-1-CSharp-Setup.ipynb", f"{GT}/GameTheory-02-NormalForm-Csharp-Part2.ipynb", @@ -76,7 +76,7 @@ def test_convention_medial_token(): def test_csharp_only_has_no_candidate(): """No Python sibling on disk -> legitimately C#-only, not a registry gap.""" for cs in ( - f"{TW}/Tweety-2c-FOL-Csharp.ipynb", + f"{TW}/Tweety-02c-FOL-CSharp.ipynb", f"{SUD}/Sudoku-00-Environment-Csharp.ipynb", f"{SW}/SW-1-CSharp-Setup.ipynb", ): diff --git a/scripts/notebook_tools/twin_pairs.d/tweety-2-basic-logics.yaml b/scripts/notebook_tools/twin_pairs.d/tweety-2-basic-logics.yaml index e69b7fcba1..ac78888991 100644 --- a/scripts/notebook_tools/twin_pairs.d/tweety-2-basic-logics.yaml +++ b/scripts/notebook_tools/twin_pairs.d/tweety-2-basic-logics.yaml @@ -1,7 +1,7 @@ - name: "Tweety-2 Basic-Logics" family: Tweety/IKVM-JPype - python: MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb - csharp: MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb + python: MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb + csharp: MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb parity_level: native-both bridge_verdict: SOTA-OK bridge_verdict_reason: "Lib-vs-lib meme moteur Java TweetyProject (Thimm 2012) : C# branche IKVM 8.15.0 + tweety-pl.dll (tracked 0,55 Mo) + 7 refs `org.tweetyproject.*` actifs (using + classes instantiatees), bytecode Java traduit en .NET sans JVM au runtime. Python branche JPype + `from org.tweetyproject.logics.pl.* import` + `from org.tweetyproject.logics.fol.* import`. Verifie firsthand (c.227, 2026-08-12, po-2023:CoursIA-2) : les deux cotes invoquent la meme bibliotheque Java TweetyProject (sat solvers FOL, parser FOPL, raisonneur), seules les idioms de pont different (bytecode .NET vs JVM runtime). DLL source-recompilee (release 8) selon pattern c.220 IKVM causal causal rebuild — pas de maven-shade bytecode 59." diff --git a/scripts/notebook_tools/twin_pairs.d/tweety-6-structured-argumentation.yaml b/scripts/notebook_tools/twin_pairs.d/tweety-6-structured-argumentation.yaml index 4dfcd79216..68c6863d57 100644 --- a/scripts/notebook_tools/twin_pairs.d/tweety-6-structured-argumentation.yaml +++ b/scripts/notebook_tools/twin_pairs.d/tweety-6-structured-argumentation.yaml @@ -1,7 +1,7 @@ - name: "Tweety-6 Structured-Argumentation" family: Tweety/IKVM-JPype - python: MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb - csharp: MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb + python: MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb + csharp: MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb parity_level: native-both bridge_verdict: SOTA-OK bridge_verdict_reason: "Lib-vs-lib meme moteur Java TweetyProject (argumentation structuree ASPIC+) : C# branche IKVM 8.15.0 + tweety-aspic.dll (tracked) + 8 refs `org.tweetyproject.arg.aspic.*` actifs (2 cellules avec using explicite + `AspicArgumentationTheory.asDungTheory()` invoquee). Python branche JPype + `from org.tweetyproject.arg.aspic.* import` + meme bibliotheque Java. Verifie firsthand (c.227, 2026-08-12, po-2023:CoursIA-2) : la paire est deja documentee native-both (PR #10385, 2026-08-11) avec parite 3-voies PROUVEE (C# from-scratch <=> C# IKVM <=> Python JPype convergent sur le meme AAF). Verdict SOTA-OK : lib-vs-lib meme moteur, le C# preserve en plus la tranche from-scratch pedagogique (gabarit Tweety-5-Csharp)." diff --git a/scripts/notebook_tools/twin_pairs.d/tweety-7a-extended-frameworks.yaml b/scripts/notebook_tools/twin_pairs.d/tweety-7a-extended-frameworks.yaml index bfcd1568f4..f5e41d1276 100644 --- a/scripts/notebook_tools/twin_pairs.d/tweety-7a-extended-frameworks.yaml +++ b/scripts/notebook_tools/twin_pairs.d/tweety-7a-extended-frameworks.yaml @@ -1,7 +1,7 @@ - name: "Tweety-7a Extended-Frameworks" family: Tweety/IKVM-JPype - python: MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb - csharp: MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb + python: MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb + csharp: MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb parity_level: semantic bridge_verdict: SOTA-OK bridge_verdict_reason: "Lib-vs-lib MEME moteur Java TweetyProject, pipeline REBUILD REPRODUCTIBLE atteste sur worker le 2026-08-28 (myia-po-2024:CoursIA, Windows, JDK 17) : rebuild-7a.sh end-to-end (9 modules sources, javac --release 8, 795 classes, bytecode 100 pourcent major 52, suite de patches Java 9->8 tous appliques), shade jar 1053742 octets produit, puis dotnet build build-Tweety7aShade.csproj -c Release (IKVM 8.14, 0 erreur, 31 warnings IKVM0100 benins). DLL rebatie 1130496 octets non byte-identique a la precedente (MVID/timestamps embarques par build) mais fonctionnellement equivalente : execution fraiche du notebook contre la DLL rebatie (papermill kernel .net-csharp, cwd = dir du notebook) 17/17 cellules code, 0 erreur, valeurs attestees reproduites a l'identique -- Dung {a,c} (cell 23), Weighted {} (cell 24), Social {a=0.8571428571428571, b=0.0, c=0.0} (cell 25), sonde ADF 341 types + 8 reasoners concrets + NativeLingelingSolver NRE. La DLL commitee est REMPLACEE par la rebatie dans la meme PR : les outputs frais citent 'DLL size : 1104 KB' coherent avec le binaire commite. Historique du verdict precedent (RECOVERABLE-MACHINE, PR #10410/#10499, constat c.229 2026-08-12 po-2023:CoursIA-2) : la DLL finale n'etait pas sur disque worker, action nommee = dotnet build sur po-2023 ou po-2024 avec JAVA_HOME -- action executee. Sub-grain ADF SAT reste INTRINSIC (NativeLingelingSolver exige un IncrementalSatSolver natif, meme prerequis que le jumeau Python)." diff --git a/scripts/notebook_tools/twin_pairs.d/tweety-7b-ranking-probabilistic.yaml b/scripts/notebook_tools/twin_pairs.d/tweety-7b-ranking-probabilistic.yaml index a299974645..660d66e570 100644 --- a/scripts/notebook_tools/twin_pairs.d/tweety-7b-ranking-probabilistic.yaml +++ b/scripts/notebook_tools/twin_pairs.d/tweety-7b-ranking-probabilistic.yaml @@ -1,7 +1,7 @@ - name: "Tweety-7b Ranking-Probabilistic" family: Tweety/IKVM-JPype - python: MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb - csharp: MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb + python: MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb + csharp: MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb parity_level: native-both bridge_verdict: SOTA-OK bridge_verdict_reason: "Lib-vs-lib meme moteur Java TweetyProject (semantiques de rangement ranking + probabilistes + division) : C# branche IKVM 8.14.0 + tweety-rpcl.dll (tracked) + 23 refs `org.tweetyproject.*` actifs (3 cellules avec using explicite, classes Dung Division, RankingSemantics Java invoquees). Python branche JPype + `from org.tweetyproject.arg.dung.divisions import Division` + meme moteur Java. Verifie firsthand (c.227, 2026-08-12, po-2023:CoursIA-2) : 23 refs = la plus grosse utilisation TweetyProject parmi les paires Tweety du registre (audited individu M-XX), les deux cotes operent sur les memes semantiques ranking (Categorizer-based, Burden-based) avec les memes theorems de comparaison." diff --git a/scripts/notebook_tools/twin_pairs.d/tweety-8-agent-dialogues.yaml b/scripts/notebook_tools/twin_pairs.d/tweety-8-agent-dialogues.yaml index f4168de57d..7e36b4ef88 100644 --- a/scripts/notebook_tools/twin_pairs.d/tweety-8-agent-dialogues.yaml +++ b/scripts/notebook_tools/twin_pairs.d/tweety-8-agent-dialogues.yaml @@ -1,7 +1,7 @@ - name: Tweety-8 Agent-Dialogues family: Tweety/IKVM-JPype - python: MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb - csharp: MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb + python: MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb + csharp: MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb parity_level: semantic bridge_verdict: SOTA-OK bridge_verdict_reason: 'Lib-vs-lib meme moteur Java TweetyProject (agents/dialogues/oppmodels + ExecutableExtension de Thimm 2012) : C# branche IKVM 8.14.0 avec org.tweetyproject.tweety-dialogues.dll (source-recompilee depuis agents/dialogues-1.30, Java 8 pur, javac --release 8) invoquee via Assembly.LoadFrom + GetType(''org.tweetyproject.agents.dialogues.ExecutableExtension'') ; Python branche JPype + from org.tweetyproject.agents.dialogues import ExecutableExtension, meme moteur Java runtime. Verdict SOTA-OK (flip 2026-08-22, c.1301+335, myia-po-2025:CoursIA-2, issue #10382) : le pont est LIVRE ET VERIFIE -- PR #10544 MERGED 2026-08-12 (commit e3aa1150a), DLLs trackees sur disque, kernel .NET Interactive execute le twin C# avec vraie instantiation du type ExecutableExtension et debat grounded, sorties reelles commitees. Le RECOVERABLE-LOCAL anterieur datait du moment ou il refutait l''INTRINSIC de #10537 : la livraison a eu lieu depuis, le verdict n''avait pas suivi (stale post-delivery). Residuel (known_difference) : la recompilation de la DLL depuis les sources Java exige un JDK 8+ local (javac --release 8, build documente dans dotnet-build/rebuild-dialogues.sh) -- note de maintenance, pas un gap de bridge.' diff --git a/scripts/notebook_tools/twin_pairs.d/tweety-9-preferences.yaml b/scripts/notebook_tools/twin_pairs.d/tweety-9-preferences.yaml index f60f581d9a..b70c0a2d00 100644 --- a/scripts/notebook_tools/twin_pairs.d/tweety-9-preferences.yaml +++ b/scripts/notebook_tools/twin_pairs.d/tweety-9-preferences.yaml @@ -1,7 +1,7 @@ - name: "Tweety-9 Preferences" family: Tweety/IKVM-JPype - python: MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb - csharp: MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb + python: MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb + csharp: MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb parity_level: native-both bridge_verdict: SOTA-OK bridge_verdict_reason: "Pont livre et verifie firsthand (po-2024, 2026-08-18) : rebuild-preferences.sh recompile la chaine math-1.21 -> commons-1.21 (patchee Java 8 : Files.readString/Path.of/isBlank/strip) -> plugin-1.30 -> preferences-1.30 en javac --release 8 (bytecode major 52, plafond IKVM 8.x = Java SE 8), shade + jspf-core-1.0.2 (major 50, sinon IKVM0100 drope PreferencesPlugin : 43 au lieu de 44 types), dotnet build IKVM 8.15 -> DLL 641 Ko commitee a la racine Tweety/ avec fallback de chargement dans le notebook. Re-exec reel kernel .net-csharp : 9/9 cellules CLEAN, 44 types exposes, BordaScoringPreferenceAggregator(3) instancie. RACINE DE L'ECHEC PRECEDENT : les artefacts Maven Central Tweety sont bytecode major 59 (Java 15, toutes versions y compris 1.21) et les sources v1.30 entieres exigent javac --release 11 (major 55) car commons utilise des APIs Java 11 -- les deux sont silently droppes par IKVM 8.x (warning IKVM0101 'class format error', invisible au rebuild si le cache %TEMP%/ikvm/cache/1 sert une DLL stale). L'ancien pom Maven shade (build-tweety-preferences-shade.pom.xml, supprime) produisait exactement ce major-55 : DLL de 7,4 Mo compilee avec 0 type org.tweetyproject.*. Recette canonique = rebuild-preferences.sh (miroir de rebuild-5shades.sh issue #10411)." diff --git a/slides/03-logique/slides.md b/slides/03-logique/slides.md index 4644d6608f..8a15710420 100644 --- a/slides/03-logique/slides.md +++ b/slides/03-logique/slides.md @@ -221,7 +221,7 @@ layout: default | Ordre superieur (HOL) | Relations, fonctions | Relations | Non | | Modale | + mondes possibles | Necessaire/possible | Selon variante | -*Notebooks : [Tweety-2-Basic-Logics](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb) (propositionnelle et premier ordre) · [Tweety-3-Advanced-Logics-Csharp](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Advanced-Logics-Csharp.ipynb) (description, modale, QBF, conditionnelle) · [Lean-1-Setup](../../MyIA.AI.Notebooks/SymbolicAI/Lean/Lean-1-Setup.ipynb) (ordre superieur).* +*Notebooks : [Tweety-2-Basic-Logics](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb) (propositionnelle et premier ordre) · [Tweety-3-Advanced-Logics-Csharp](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Advanced-Logics-Csharp.ipynb) (description, modale, QBF, conditionnelle) · [Lean-1-Setup](../../MyIA.AI.Notebooks/SymbolicAI/Lean/Lean-1-Setup.ipynb) (ordre superieur).* --- layout: section @@ -1242,7 +1242,7 @@ h2 { margin-top: 0.3em !important; margin-bottom: 0.1em !important; } - Substitution: {x/Jean} - Resolvante: (Q(Jean) OU R(y)) -*Notebooks : [Tweety-2c-FOL-Csharp](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb) (FOL avec EProver) · [Z3-Python-05-Quantifiers-Proofs](../../MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/Z3-Python-05-Quantifiers-Proofs.ipynb) (quantificateurs et preuves).* +*Notebooks : [Tweety-2c-FOL-Csharp](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb) (FOL avec EProver) · [Z3-Python-05-Quantifiers-Proofs](../../MyIA.AI.Notebooks/SymbolicAI/SMT/Z3-API/Z3-Python-05-Quantifiers-Proofs.ipynb) (quantificateurs et preuves).* --- layout: default @@ -1305,7 +1305,7 @@ h2 { margin-top: 0.3em !important; margin-bottom: 0.1em !important; } - **E-prover** : demonstrateur automatique pour FOL - **Lean** : assistant de preuve interactif, très actif en mathematiques -*Notebooks : [Tweety-2c-FOL-Csharp](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb) (EProver pilote depuis Python) · [Lean-1-Setup](../../MyIA.AI.Notebooks/SymbolicAI/Lean/Lean-1-Setup.ipynb) (ordre superieur en Lean 4).* +*Notebooks : [Tweety-2c-FOL-Csharp](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb) (EProver pilote depuis Python) · [Lean-1-Setup](../../MyIA.AI.Notebooks/SymbolicAI/Lean/Lean-1-Setup.ipynb) (ordre superieur en Lean 4).* --- layout: default @@ -1382,7 +1382,7 @@ layout: default - Coherence des ensembles et forces contextuels des arguments - **Argumentum** -*Notebooks : [Tweety-5-Abstract-Argumentation](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5-Abstract-Argumentation.ipynb) (Dung, semantiques, CF2) · [Tweety-6-Structured-Argumentation](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb) (ASPIC+, ABA) · [Argument_Analysis_Dung_AF_Semantics](../../MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/Argument_Analysis_Dung_AF_Semantics.ipynb).* +*Notebooks : [Tweety-5-Abstract-Argumentation](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5-Abstract-Argumentation.ipynb) (Dung, semantiques, CF2) · [Tweety-6-Structured-Argumentation](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb) (ASPIC+, ABA) · [Argument_Analysis_Dung_AF_Semantics](../../MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/Argument_Analysis_Dung_AF_Semantics.ipynb).* --- layout: default @@ -2783,7 +2783,7 @@ pip install jpype1 requests tqdm clingo z3-solver python-sat # 2. Ouvrir le notebook de setup (auto-telecharge JDK + JARs) cd MyIA.AI.Notebooks/SymbolicAI/Tweety -jupyter notebook Tweety-1-Setup.ipynb +jupyter notebook Tweety-01-Setup-Python.ipynb # 3. Executer toutes les cellules, puis passer a Tweety-2 ``` diff --git a/slides/S6-tweety/slides.md b/slides/S6-tweety/slides.md index 97673a15d6..ca88240cb7 100644 --- a/slides/S6-tweety/slides.md +++ b/slides/S6-tweety/slides.md @@ -75,7 +75,7 @@ from org.tweetyproject.logics.pl.syntax import * from org.tweetyproject.logics.fol.syntax import * ``` -> **Notebook** : `Tweety-1-Setup.ipynb` — 20 min +> **Notebook** : `Tweety-01-Setup-Python.ipynb` — 20 min --- @@ -101,7 +101,7 @@ sig.add(Predicate("Mortal", [sig.getSort("Person")])) - Quantificateurs universels et existentiels - Unification et resolution FOL -> **Notebook** : `Tweety-2-Basic-Logics.ipynb` — 45 min +> **Notebook** : `Tweety-02-Basic-Logics-Python.ipynb` — 45 min --- @@ -217,7 +217,7 @@ reasoner = SimpleAspicReasoner(PreferredSemantics()) - **DeLP** (Defeasible Logic Programming) : integration Prolog - **ABA** (Assumption-Based Argumentation) : hypotheses et contrariness -> **Notebook** : `Tweety-6-Structured-Argumentation.ipynb` — 60 min +> **Notebook** : `Tweety-06-Structured-Argumentation-Python.ipynb` — 60 min --- @@ -241,7 +241,7 @@ from org.tweetyproject.arg.bipolar.syntax import BipolarArgFramework - **SAF** (Social AF) : agregation de vote sur les attaques - **CF2** : sémantique pour frameworks avec cycles pairs -> **Notebook** : `Tweety-7a-Extended-Frameworks.ipynb` — 50 min +> **Notebook** : `Tweety-07a-Extended-Frameworks-Python.ipynb` — 50 min --- @@ -266,7 +266,7 @@ paf = ProbabilisticArgumentationFramework() paf.setProbability(arg_a, 0.8) # prob. que l'argument est present ``` -> **Notebook** : `Tweety-7b-Ranking-Probabilistic.ipynb` — 40 min +> **Notebook** : `Tweety-07b-Ranking-Probabilistic-Python.ipynb` — 40 min --- layout: section @@ -296,7 +296,7 @@ session = DialogueSession(agent1, agent2, protocol) session.run() ``` -> **Notebook** : `Tweety-8-Agent-Dialogues.ipynb` — 35 min +> **Notebook** : `Tweety-08-Agent-Dialogues-Python.ipynb` — 35 min --- @@ -319,7 +319,7 @@ winner = BordaAggregator().aggregate(prefs) - **Arrow's theorem** : impossibilite du choix social rationnel - Lien avec `GameTheory/social_choice_lean/` (preuves formelles en Lean 4) -> **Notebook** : `Tweety-9-Preferences.ipynb` — 30 min +> **Notebook** : `Tweety-09-Preferences-Python.ipynb` — 30 min --- layout: section diff --git a/translations/symbolicai/argument_analysis.csv b/translations/symbolicai/argument_analysis.csv index 62cd3294c4..cb2d917638 100644 --- a/translations/symbolicai/argument_analysis.csv +++ b/translations/symbolicai/argument_analysis.csv @@ -3393,7 +3393,7 @@ pip install ipywidgets requests jupyter-ui-poll # Pour mode interactif **Dépendances système**: - **JDK 11+** (pour Tweety via JPype): `JAVA_HOME` doit être configuré -- **Bibliothèque Tweety**: JARs dans `libs/` (téléchargement automatique via `Tweety-1-Setup.ipynb`) +- **Bibliothèque Tweety**: JARs dans `libs/` (téléchargement automatique via `Tweety-01-Setup-Python.ipynb`) **Fichiers requis**: @@ -9647,7 +9647,7 @@ Les trois audiences produisent **trois extensions grounded différentes** sur le **Lecture** : sur ce cycle, le grounded contient toujours **deux** arguments sur trois — mais l'argument *exclu* change avec l'audience ($b$, puis $c$, puis $a$). Le mécanisme : l'argument dont la valeur est **la plus préférée** voit l'attaque dirigée contre lui échouer (son attaquant est moins préféré), donc il survit ; et comme sa propre attaque *vers le suivant* réussit, il élimine ce suivant. Le troisième argument survit alors par défense (le survivant principal défait l'attaquant du troisième). En résumé : **mettre une valeur en tête d'audience condamne l'argument que cette valeur attaque dans le cycle**. -C'est le résultat central de Bench-Capon : **la conclusion d'un débat n'est pas déterminée par le graphe d'arguments seul, mais par le graphe ET les valeurs de l'audience**. Trois auditoires de valeurs différentes, confrontés aux *mêmes* arguments, excluent légitimement des arguments différents. Cela relie l'argumentation à la théorie du choix social : si plusieurs individus ont des audiences différentes, **agréger leurs préférences** (cf. [Tweety-9](../Tweety/Tweety-9-Preferences.ipynb), [GameTheory SocialChoice](../../GameTheory/)) devient la question centrale pour décider collectivement.",,,,,,,,9c3b519fc2a3fc84,,,,,,,, +C'est le résultat central de Bench-Capon : **la conclusion d'un débat n'est pas déterminée par le graphe d'arguments seul, mais par le graphe ET les valeurs de l'audience**. Trois auditoires de valeurs différentes, confrontés aux *mêmes* arguments, excluent légitimement des arguments différents. Cela relie l'argumentation à la théorie du choix social : si plusieurs individus ont des audiences différentes, **agréger leurs préférences** (cf. [Tweety-9](../Tweety/Tweety-09-Preferences-Python.ipynb), [GameTheory SocialChoice](../../GameTheory/)) devient la question centrale pour décider collectivement.",,,,,,,,9c3b519fc2a3fc84,,,,,,,, MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/Argument_Analysis_Value_Based_AF.ipynb,0506af63,markdown,fr,e112eda91b5858f2,"## Sweep d'audiences : combien de conclusions distinctes ? Sur un VAF à $|V|$ valeurs, il y a $|V|!$ audiences possibles (tous les ordres totaux). Une question naturelle : parmi toutes ces audiences, **combien d'extensions grounded distinctes** obtient-on ? Si la réponse est 1, les valeurs sont décoratives (elles ne changent rien). Si la réponse est grande, le débat est *sensible* à l'audience — ce qui est précisément la situation où l'argumentation basée sur les valeurs apporte quelque chose que Dung pur ne peut pas exprimer. @@ -9779,7 +9779,7 @@ Le cadre de Dung (1995) dit *qui attaque qui*. Le cadre de Bench-Capon (2003) aj ### Prochaines étapes -- **Agrégation d'audiences → choix social** : si chaque individu a sa propre audience, comment décider collectivement ? C'est le pont vers [Tweety-9 (préférences)](../Tweety/Tweety-9-Preferences.ipynb) et [GameTheory / SocialChoice](../../GameTheory/) (théorèmes d'impossibilité d'Arrow, votations). La question « existe-t-il une agrégation d'audiences qui préserve la rationalité ? » est un analogue direct du paradoxe de Condorcet. +- **Agrégation d'audiences → choix social** : si chaque individu a sa propre audience, comment décider collectivement ? C'est le pont vers [Tweety-9 (préférences)](../Tweety/Tweety-09-Preferences-Python.ipynb) et [GameTheory / SocialChoice](../../GameTheory/) (théorèmes d'impossibilité d'Arrow, votations). La question « existe-t-il une agrégation d'audiences qui préserve la rationalité ? » est un analogue direct du paradoxe de Condorcet. - **Argumentation graduée** : plutôt qu'un ordre total sur les valeurs, [Ranking_Semantics](Argument_Analysis_Ranking_Semantics.ipynb) attribue une *force numérique* à chaque argument — une autre façon de départager ce que Dung laisse indécidé. - **Bipolarité** : les VAF gèrent les préférences, mais restent *attack-only*. Les cadres bipolaires (Cayrol & Lagasquie-Schiex, 2005) ajoutent une relation de **support** — un prolongement naturel au-delà de ce notebook. diff --git a/translations/tweety/tweety.csv b/translations/tweety/tweety.csv index 7faea53d44..45de3020bc 100644 --- a/translations/tweety/tweety.csv +++ b/translations/tweety/tweety.csv @@ -1,7 +1,7 @@ notebook,cell_id,cell_type,src_lang,src_hash,text_fr,text_en,text_es,text_ar,text_fa,text_zh,text_ru,text_pt,hash_fr,hash_en,hash_es,hash_ar,hash_fa,hash_zh,hash_ru,hash_pt,translate_policy MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-10-MLN.ipynb,8cbaf7ae,markdown,fr,c78ac9964c814d07,"# Tweety-10 — Markov Logic Networks (MLN) -**Navigation** : [← Tweety-9-Préférences](Tweety-9-Preferences.ipynb) | [Index](Tweety-1-Setup.ipynb) | [README](README.md) +**Navigation** : [← Tweety-9-Préférences](Tweety-09-Preferences-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [README](README.md) --- @@ -15,8 +15,8 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-10-MLN.ipynb,8cbaf7ae,markdown,fr,c78 ## Prerequis -- Avoir execute [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb) (JVM, JARs, JPype) -- Notions de logique du premier ordre : [Tweety-2-Basic-Logics.ipynb](Tweety-2-Basic-Logics.ipynb) (predicats, quantificateurs, `FolParser`) +- Avoir execute [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb) (JVM, JARs, JPype) +- Notions de logique du premier ordre : [Tweety-02-Basic-Logics-Python.ipynb](Tweety-02-Basic-Logics-Python.ipynb) (predicats, quantificateurs, `FolParser`) - Notions de probabilite : probabilite conditionnelle, distribution ### Duree estimee : 50 minutes @@ -438,7 +438,7 @@ les oiseaux volent. > **Leçon** : les exceptions sont le talon d'Achille de la logique classique. Les MLN les absorbent > en faisant varier le **poids** des règles — un oiseau vole *en général* (poids), un pingouin *jamais* -> (strict). C'est aussi la graine de l'**argumentation defeasible** (cf. [Tweety-6](Tweety-6-Structured-Argumentation.ipynb)), +> (strict). C'est aussi la graine de l'**argumentation defeasible** (cf. [Tweety-6](Tweety-06-Structured-Argumentation-Python.ipynb)), > ou les règles ont des priorites.",,,,,,,,99ee66a0113f58e7,,,,,,,, MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-10-MLN.ipynb,bf2ebbac,markdown,fr,712f0d9629ce064c,"## Partie 5 : Trois familles de reasoners MLN @@ -600,18 +600,18 @@ Ce notebook a couvert : ## Prochaines étapes - **Argumentation defeasible** : le paradoxe du pingouin (exception stricte vs règle générale) est - exactement le terrain de l'argumentation structurée → [Tweety-6-Structured-Argumentation](Tweety-6-Structured-Argumentation.ipynb) + exactement le terrain de l'argumentation structurée → [Tweety-6-Structured-Argumentation](Tweety-06-Structured-Argumentation-Python.ipynb) (ASPIC+, DeLP) - **Argumentation probabiliste** : les MLN pondérent les formules ; l'argumentation probabiliste - (NB 7b) pondère les *arguments* — deux facettes de l'incertitude → [Tweety-7b-Ranking-Probabilistic](Tweety-7b-Ranking-Probabilistic.ipynb) + (NB 7b) pondère les *arguments* — deux facettes de l'incertitude → [Tweety-7b-Ranking-Probabilistic](Tweety-07b-Ranking-Probabilistic-Python.ipynb) - **Application au texte** : la serie [Argument_Analysis](../Argument_Analysis/) utilise Tweety comme backend ; les MLN y fourniraient un raisonnement plausible sur des faits extraits de texte (une porte d'entree « neuro-symbolique » au-dessus des LLMs) --- -**Navigation** : [← Tweety-9-Préférences](Tweety-9-Preferences.ipynb) | [Index](Tweety-1-Setup.ipynb) | [README](README.md)",,,,,,,,c704c71e75db859d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-10-MLN-Csharp.ipynb,4b764a33,markdown,fr,4a501ef48aa6e9b5,"# Tweety-10 — Markov Logic Networks (MLN) en .NET (C# / IKVM)**Navigation** : [← Tweety-9-Préférences](Tweety-9-Preferences.ipynb) | [Index](./README.md) | [Tweety-11-Causal →](Tweety-11-Causal.ipynb)**Module** : `org.tweetyproject.logics.mln` (Tweety 1.30) — compilé via IKVM 8.15 + .NET 8.0**Clé** : `See #4667` (EPIC Tweety .NET — 11ème port C#)**Recette build** : `dotnet-build/build-tweety-mln-shade.pom.xml` (maven-shade-plugin 3.5.3) + `dotnet-build/build-TweetyMlnShade.csproj` (IKVM 8.15.0, net8.0)## Objectifs pedagogiquesA la fin de ce notebook, vous saurez :1. **Construire un MLN** : faits stricts (poids = infini) et règles pondérées (poids fini) à partir de formules FOL2. **Interroger un MLN** : `query(mln, formula)` retourne une probabilité marginale3. **Comprendre le spectre logique ↔ statistique** : un poids croissant rend la règle de plus en plus stricte4. **Diagnostiquer un domaine** : utiliser le réseau de Markov pour propager des croyances (ex. médical, social, fraude)## Prérequis- Avoir exécuté [Tweety-2-Basic-Logics-Csharp.ipynb](Tweety-2-Basic-Logics-Csharp.ipynb) (notebook 2) pour `FolSignature`/`FolParser`/`FolFormula`- Avoir exécuté [Tweety-3-ModalLogic-Csharp.ipynb](Tweety-3-ModalLogic-Csharp.ipynb) (notebook 3) pour la logique modale (transversale)- Notions de base en FOL et en réseaux de Markov (loi de Boltzmann sur les mondes possibles)",,,,,,,,4a501ef48aa6e9b5,,,,,,,, +**Navigation** : [← Tweety-9-Préférences](Tweety-09-Preferences-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [README](README.md)",,,,,,,,c704c71e75db859d,,,,,,,, +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-10-MLN-Csharp.ipynb,4b764a33,markdown,fr,4a501ef48aa6e9b5,"# Tweety-10 — Markov Logic Networks (MLN) en .NET (C# / IKVM)**Navigation** : [← Tweety-9-Préférences](Tweety-09-Preferences-Python.ipynb) | [Index](./README.md) | [Tweety-11-Causal →](Tweety-11-Causal.ipynb)**Module** : `org.tweetyproject.logics.mln` (Tweety 1.30) — compilé via IKVM 8.15 + .NET 8.0**Clé** : `See #4667` (EPIC Tweety .NET — 11ème port C#)**Recette build** : `dotnet-build/build-tweety-mln-shade.pom.xml` (maven-shade-plugin 3.5.3) + `dotnet-build/build-TweetyMlnShade.csproj` (IKVM 8.15.0, net8.0)## Objectifs pedagogiquesA la fin de ce notebook, vous saurez :1. **Construire un MLN** : faits stricts (poids = infini) et règles pondérées (poids fini) à partir de formules FOL2. **Interroger un MLN** : `query(mln, formula)` retourne une probabilité marginale3. **Comprendre le spectre logique ↔ statistique** : un poids croissant rend la règle de plus en plus stricte4. **Diagnostiquer un domaine** : utiliser le réseau de Markov pour propager des croyances (ex. médical, social, fraude)## Prérequis- Avoir exécuté [Tweety-02-Basic-Logics-CSharp.ipynb](Tweety-02-Basic-Logics-CSharp.ipynb) (notebook 2) pour `FolSignature`/`FolParser`/`FolFormula`- Avoir exécuté [Tweety-3-ModalLogic-Csharp.ipynb](Tweety-3-ModalLogic-Csharp.ipynb) (notebook 3) pour la logique modale (transversale)- Notions de base en FOL et en réseaux de Markov (loi de Boltzmann sur les mondes possibles)",,,,,,,,4a501ef48aa6e9b5,,,,,,,, MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-10-MLN-Csharp.ipynb,4f5ecc42,code,fr,3929c19c98d59e9c,"// --- Initialisation runtime IKVM + chargement DLL MLN (rebuild C190 IKVM 8.14) --- #r ""nuget: IKVM, 8.14.0"" #r ""org.tweetyproject.tweety-mln.dll"" @@ -1109,7 +1109,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-11-Causal.ipynb,9735acd3,markdown,fr, ## Prérequis - **[Tweety-5-Abstract-Argumentation](Tweety-5-Abstract-Argumentation.ipynb) §4.4** : le raisonnement causal par argumentation (couche *observationnelle* / diagnostique). -- **[Tweety-2-Basic-Logics](Tweety-2-Basic-Logics.ipynb)** : logique propositionnelle (syntaxe des formules PL). +- **[Tweety-2-Basic-Logics](Tweety-02-Basic-Logics-Python.ipynb)** : logique propositionnelle (syntaxe des formules PL). - Bases de probabilités (P(y|x), indépendance conditionnelle). ## Positionnement dans la série @@ -1884,9 +1884,9 @@ l'implémentation from-scratch rend **visible** pourquoi l'intervention isole l' ### Pour aller plus loin - **[Notebook-pont — du graphe causal au do-calculus](../../Probas/DecisionTheory/Causal-Bridges/Do-Calculus-Bridge.ipynb)** : la chirurgie de graphe implémentée from-scratch ici (remplacer l'équation de `X` par une constante) est la **sémantique** du do-operator ; le pont en montre le **calcul** — l'échelle de causalité et les 3 règles de Pearl exécutées sur l'outil de référence `dowhy` (identification backdoor/front-door + estimation + réfutation), en **quantitatif** là où ce twin décide en booléen. Il relie cette série à Infer-5, PyMC-5 et ICT-5.",,,,,,,,93a6086885ca426d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,a6835139,markdown,fr,f6299a8607020d74,"# Configuration et Installation TweetyProject +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,a6835139,markdown,fr,f6299a8607020d74,"# Configuration et Installation TweetyProject -**Navigation**: Index | [Suivant: Tweety-2-Basic-Logics](Tweety-2-Basic-Logics.ipynb) +**Navigation**: Index | [Suivant: Tweety-2-Basic-Logics](Tweety-02-Basic-Logics-Python.ipynb) --- @@ -1927,15 +1927,15 @@ Ce notebook configure l'environnement pour la série de notebooks TweetyProject | # | Notebook | Thème | Prérequis | |---|----------|-------|-----------| | 1 | **Ce notebook** | Configuration JVM/JPype | - | -| 2 | [Tweety-2-Basic-Logics](Tweety-2-Basic-Logics.ipynb) | Logique Propositionnelle, FOL | Setup | +| 2 | [Tweety-2-Basic-Logics](Tweety-02-Basic-Logics-Python.ipynb) | Logique Propositionnelle, FOL | Setup | | 3 | [Tweety-3-Advanced-Logics](Tweety-3-Advanced-Logics.ipynb) | DL, Modale, QBF, Conditional | Setup | | 4 | [Tweety-4-Belief-Revision](Tweety-4-Belief-Revision.ipynb) | CrMas, MUS, MaxSAT | Setup | | 5 | [Tweety-5-Abstract-Argumentation](Tweety-5-Abstract-Argumentation.ipynb) | Dung AF, CF2, Génération | Setup | -| 6 | [Tweety-6-Structured-Argumentation](Tweety-6-Structured-Argumentation.ipynb) | ASPIC+, DeLP, ABA, ASP | Setup + Clingo | -| 7a | [Tweety-7a-Extended-Frameworks](Tweety-7a-Extended-Frameworks.ipynb) | ADF, Bipolar, WAF, SAF, SetAF | Setup | -| 7b | [Tweety-7b-Ranking-Probabilistic](Tweety-7b-Ranking-Probabilistic.ipynb) | Ranking Semantics, Probabiliste | Setup | -| 8 | [Tweety-8-Agent-Dialogues](Tweety-8-Agent-Dialogues.ipynb) | Agents, Dialogues argumentatifs | Setup | -| 9 | [Tweety-9-Préférences](Tweety-9-Preferences.ipynb) | Préférences, Théorie du vote | Setup | +| 6 | [Tweety-6-Structured-Argumentation](Tweety-06-Structured-Argumentation-Python.ipynb) | ASPIC+, DeLP, ABA, ASP | Setup + Clingo | +| 7a | [Tweety-7a-Extended-Frameworks](Tweety-07a-Extended-Frameworks-Python.ipynb) | ADF, Bipolar, WAF, SAF, SetAF | Setup | +| 7b | [Tweety-7b-Ranking-Probabilistic](Tweety-07b-Ranking-Probabilistic-Python.ipynb) | Ranking Semantics, Probabiliste | Setup | +| 8 | [Tweety-8-Agent-Dialogues](Tweety-08-Agent-Dialogues-Python.ipynb) | Agents, Dialogues argumentatifs | Setup | +| 9 | [Tweety-9-Préférences](Tweety-09-Preferences-Python.ipynb) | Préférences, Théorie du vote | Setup | --- @@ -1950,11 +1950,11 @@ Ce notebook configure l'environnement pour la série de notebooks TweetyProject * 1.7 [Concepts Clés](#1.7) ---",,,,,,,,f6299a8607020d74,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,857b4633,markdown,fr,88024987ec347c0c,"## Partie 1 : Introduction et Configuration +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,857b4633,markdown,fr,88024987ec347c0c,"## Partie 1 : Introduction et Configuration Cette section couvre la mise en place de l'environnement nécessaire pour exécuter les exemples de ce notebook.",,,,,,,,88024987ec347c0c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,2cf92c1d,markdown,fr,def173389cb93bd7,"### 1.2 Pré-requis +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,2cf92c1d,markdown,fr,def173389cb93bd7,"### 1.2 Pré-requis * **Python 3.x** : Assurez-vous d'avoir une installation Python fonctionnelle (testé avec 3.10+). @@ -1964,11 +1964,11 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,2cf92c1d,markdown,fr,de * Si `JAVA_HOME` n'est pas définie, le script de démarrage de la JVM (section 1.6) essaiera de trouver un JDK automatiquement, mais il est préférable de la définir explicitement. * **(Optionnel) Outils Externes** : Pour certaines fonctionnalités avancées (voir section [1.5](#1.5)), vous devrez installer des outils spécifiques et configurer leurs chemins d'accès plus loin dans le notebook. * **(Optionnel) Graphviz**: Pour visualiser certains graphes d'argumentation (non implémenté dans ce tutoriel mais possible).",,,,,,,,def173389cb93bd7,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,cf65605f,markdown,fr,ae1ca89a8886fab7,"### 1.3 Installation des Packages Python +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,cf65605f,markdown,fr,ae1ca89a8886fab7,"### 1.3 Installation des Packages Python Nous utilisons `jpype1` pour le pont Java-Python. Les autres packages (`requests`, `tqdm`) sont des utilitaires pour le téléchargement des JARs.",,,,,,,,ae1ca89a8886fab7,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,36b4464c,code,fr,4d7306b25b357be0,"# Vérification/Installation des packages Python nécessaires +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,36b4464c,code,fr,4d7306b25b357be0,"# Vérification/Installation des packages Python nécessaires import importlib import sys import subprocess @@ -2024,7 +2024,7 @@ except ImportError: print(""\n⚠️ Erreur d'import inattendue. Vérifiez votre environnement Python."") # Si on a installé, le message d'erreur est déjà affiché. pass",,,,,,,,4d7306b25b357be0,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,a0072a42,markdown,fr,8ec7adbf84d5b757,"### 1.4 Téléchargement des JARs Tweety et Dépendances +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,a0072a42,markdown,fr,8ec7adbf84d5b757,"### 1.4 Téléchargement des JARs Tweety et Dépendances TweetyProject est une collection de bibliothèques Java distribuées sous forme de fichiers JAR. Pour utiliser Tweety avec JPype, nous devons télécharger ces JARs et les rendre accessibles à la JVM. @@ -2036,7 +2036,7 @@ Le script suivant va : 4. Télécharger (ou vérifier la présence) des JARs **spécifiques aux modules** utilisés dans ce notebook (argumentation, logiques spécifiques, etc.). La liste `REQUIRED_MODULES` définit les modules nécessaires. *Note : Le téléchargement peut prendre quelques minutes lors de la première exécution. Assurez-vous que tous les JARs nécessaires sont bien présents dans le dossier `libs/` avant de démarrer la JVM, car des JARs manquants causeront des erreurs d'import plus loin.*",,,,,,,,8ec7adbf84d5b757,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,qe006rjkdgd,markdown,fr,8c268a968c9278ee,"### Interprétation de la vérification des packages +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,qe006rjkdgd,markdown,fr,8c268a968c9278ee,"### Interprétation de la vérification des packages **Résultat attendu** : Si tous les packages sont déjà installés, vous verrez un message confirmant leur présence. Si des packages manquent, le script tente une installation automatique. @@ -2054,7 +2054,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,qe006rjkdgd,markdown,fr | `python-sat` | Solveurs SAT modernes (CaDiCaL, Glucose, RC2 MaxSAT) | **Prochaine étape** : Téléchargement des bibliothèques Java de TweetyProject.",,,,,,,,8c268a968c9278ee,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,f7d5d7c7,code,fr,0e027fb443f3a327,"# --- Telechargement des JARs TweetyProject --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,f7d5d7c7,code,fr,0e027fb443f3a327,"# --- Telechargement des JARs TweetyProject --- print(""\n"" + ""=""*70) print(""TELECHARGEMENT DES JARS TWEETYPROJECT"") print(""=""*70) @@ -2093,7 +2093,7 @@ if LIB_DIR.exists(): print(""Premiers JARs:"") for jar in sorted(jars)[:5]: print(f"" - {jar.name}"")",,,,,,,,0e027fb443f3a327,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,w94x02kbjt8,markdown,fr,d8a68e10ff19b770,"#### Fichiers de Données Complémentaires +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,w94x02kbjt8,markdown,fr,d8a68e10ff19b770,"#### Fichiers de Données Complémentaires En plus des JARs, TweetyProject utilise des fichiers de données d'exemple pour les différentes logiques et systèmes d'argumentation : @@ -2103,7 +2103,7 @@ En plus des JARs, TweetyProject utilise des fichiers de données d'exemple pour - **Logiques** : fichiers `.proplogic`, `.fologic`, `.mlogic`, `.qbf` Ces fichiers sont téléchargés depuis le dépôt GitHub officiel de TweetyProject.",,,,,,,,d8a68e10ff19b770,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,27c4b5e1,code,fr,c1b0829c9b486efe,"# --- Téléchargement des Fichiers de Données --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,27c4b5e1,code,fr,c1b0829c9b486efe,"# --- Téléchargement des Fichiers de Données --- print(""\n--- Téléchargement des Ressources ---"") import subprocess @@ -2127,7 +2127,7 @@ if RESOURCE_DIR.exists(): files = list(RESOURCE_DIR.glob(""*.*"")) print(f""\nFichiers de donnees: {len(files)}"") ",,,,,,,,c1b0829c9b486efe,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,f889fe79,markdown,fr,99404b2868534d94,"### 1.5 Configuration des Outils Externes (Optionnel) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,f889fe79,markdown,fr,99404b2868534d94,"### 1.5 Configuration des Outils Externes (Optionnel) Certaines fonctionnalités avancées de Tweety s'appuient sur des outils externes (solveurs SAT/MaxSAT, prouveurs FOL/ML, énumérateurs MUS, solveurs ASP). Pour utiliser ces fonctionnalités, vous devez : @@ -2157,7 +2157,7 @@ Certaines fonctionnalités avancées de Tweety s'appuient sur des outils externe * Modifiez les variables `*_PATH` dans la cellule suivante avec les chemins corrects sur **votre** système. * Si un outil n'est pas installé ou si vous ne souhaitez pas l'utiliser, laissez le chemin vide (`""""`) ou commentez la ligne correspondante. Le notebook essaiera d'utiliser des alternatives internes (plus lentes) ou sautera les sections concernées. * Sous Windows, n'oubliez pas l'extension `.exe` et utilisez des anti-slashs (`\\`) ou des slashs (`/`) pour les chemins.",,,,,,,,99404b2868534d94,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,14aqhsl2suo,markdown,fr,84ac5b83993c0720,"### Interprétation du téléchargement des fichiers +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,14aqhsl2suo,markdown,fr,84ac5b83993c0720,"### Interprétation du téléchargement des fichiers **Résultat obtenu** : Le script affiche un résumé indiquant combien de fichiers ont été téléchargés, combien étaient déjà présents, et s'il y a eu des échecs. @@ -2176,7 +2176,7 @@ Les fichiers téléchargés sont organisés par type de logique/argumentation : > **Conseil** : Explorez le dossier `resources/` pour voir les exemples disponibles. Ces fichiers seront utilisés dans les notebooks suivants de la série. **Prochaine étape** : Configuration des outils externes (solveurs SAT, prouveurs, etc.).",,,,,,,,84ac5b83993c0720,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,c9ee4eec,code,fr,fd1bcff59234db2a,"# --- Configuration de base pour les outils externes --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,c9ee4eec,code,fr,fd1bcff59234db2a,"# --- Configuration de base pour les outils externes --- import os import pathlib import platform @@ -2225,7 +2225,7 @@ system = platform.system() print(f""Configuration des outils externes pour {system}"") print(f""Repertoire ext_tools: {EXT_TOOLS_DIR.resolve()}"") print(f""Repertoire libs/native: {NATIVE_LIBS_DIR.resolve() if NATIVE_LIBS_DIR.exists() else 'Non trouve'}"")",,,,,,,,fd1bcff59234db2a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,d22006e8,markdown,fr,434d495c53e6cceb,"#### 1.5.1 Clingo - Solveur ASP (Answer Set Programming) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,d22006e8,markdown,fr,434d495c53e6cceb,"#### 1.5.1 Clingo - Solveur ASP (Answer Set Programming) **Clingo** est le solveur ASP de reference du projet [Potassco](https://potassco.org/). Il combine le grounder *gringo* et le solveur *clasp*. @@ -2235,7 +2235,7 @@ Il combine le grounder *gringo* et le solveur *clasp*. - Support des programmes avec defauts et contraintes d'integrite **Installation** : Si non present, telechargement automatique depuis GitHub.",,,,,,,,434d495c53e6cceb,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,d18f916b,code,fr,54c5b4fb3122d932,"# === Configuration de Clingo === +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,d18f916b,code,fr,54c5b4fb3122d932,"# === Configuration de Clingo === print(""=== 1. Configuration de Clingo ==="") clingo_dir = EXT_TOOLS_DIR / ""clingo"" @@ -2290,7 +2290,7 @@ else: clingo_archive.unlink(missing_ok=True) except Exception as e: print(f"" Erreur installation Clingo: {e}"")",,,,,,,,54c5b4fb3122d932,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,4536b3b5,markdown,fr,1a1e1f2f56039702,"#### 1.5.2 SPASS - Prouveur de Logique Modale +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,4536b3b5,markdown,fr,1a1e1f2f56039702,"#### 1.5.2 SPASS - Prouveur de Logique Modale **SPASS** est un prouveur automatique de theoremes pour la logique du premier ordre avec support pour la logique modale. @@ -2300,7 +2300,7 @@ avec support pour la logique modale. **Note** : Sans SPASS, `SimpleMlReasoner` peut bloquer indefiniment. SPASS est donc fortement recommande pour les notebooks sur la logique modale.",,,,,,,,1a1e1f2f56039702,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,61e784aa,code,fr,4be67674b932f239,"# === Configuration de SPASS === +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,61e784aa,code,fr,4be67674b932f239,"# === Configuration de SPASS === print(""=== 2. Configuration de SPASS ==="") spass_dir = EXT_TOOLS_DIR / ""spass"" @@ -2360,7 +2360,7 @@ else: elif system == ""Darwin"": print("" INFO SPASS non disponible en telechargement automatique pour macOS."") print("" Installez manuellement depuis: https://www.spass-prover.org/"")",,,,,,,,4be67674b932f239,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,f065a74c,markdown,fr,082eab2d6ae6a292,"#### 1.5.3 EProver - Prouveur FOL de Haute Performance +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,f065a74c,markdown,fr,082eab2d6ae6a292,"#### 1.5.3 EProver - Prouveur FOL de Haute Performance **E Prover** est un prouveur automatique de theoremes pour la logique du premier ordre (FOL). C'est l'un des prouveurs les plus performants, regulierement gagnant des competitions CASC. @@ -2370,7 +2370,7 @@ C'est l'un des prouveurs les plus performants, regulierement gagnant des competi - Alternative a `SimpleFolReasoner` qui peut avoir des problemes de memoire **Note** : EProver est fourni dans le depot (ext_tools/EProver/).",,,,,,,,082eab2d6ae6a292,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,65bf6cf3,code,fr,eba1dd2498d52666,"# === Configuration de EProver (prouveur FOL) === +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,65bf6cf3,code,fr,eba1dd2498d52666,"# === Configuration de EProver (prouveur FOL) === print(""=== 3. Configuration de EProver ==="") eprover_search_paths = [ @@ -2394,7 +2394,7 @@ else: else: print("" EProver non trouve dans les chemins standards."") print("" Telecharger depuis https://eprover.org/"")",,,,,,,,eba1dd2498d52666,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,ec99d8a5,markdown,fr,27d77d425517e204,"#### 1.5.4 Solveurs SAT - Satisfaction Booleenne +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,ec99d8a5,markdown,fr,27d77d425517e204,"#### 1.5.4 Solveurs SAT - Satisfaction Booleenne Les **solveurs SAT** sont au coeur de nombreuses fonctionnalites de Tweety : - Raisonnement en logique propositionnelle @@ -2412,7 +2412,7 @@ Les **solveurs SAT** sont au coeur de nombreuses fonctionnalites de Tweety : | Sat4j | Pure Java | Modere | Multi-plateforme | **Nouveau** : Le wrapper `sat_solver.py` donne acces aux solveurs modernes via pySAT.",,,,,,,,27d77d425517e204,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,ba13bd46,code,fr,a16265f7b1b8903c,"# === Configuration des solveurs SAT === +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,ba13bd46,code,fr,a16265f7b1b8903c,"# === Configuration des solveurs SAT === print(""=== 4. Configuration des solveurs SAT ==="") # 4.1 Bibliotheques SAT natives (pour ADF via JNI) @@ -2457,7 +2457,7 @@ for sp in sat_solver_paths: break else: print("" sat_solver.py non trouve"")",,,,,,,,a16265f7b1b8903c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,27cbde26,markdown,fr,6184342d2f75b760,"#### 1.5.5 MARCO et MaxSAT - Analyse d'Incoherence +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,27cbde26,markdown,fr,6184342d2f75b760,"#### 1.5.5 MARCO et MaxSAT - Analyse d'Incoherence Ces outils sont utilises pour l'analyse des bases de croyances incoherentes : @@ -2470,7 +2470,7 @@ Ces outils sont utilises pour l'analyse des bases de croyances incoherentes : - Resout le problème d'optimisation : maximiser le nombre de clauses satisfaites - Wrapper Python utilisant l'algorithme RC2 (gagnant MaxSAT Evaluation 2018) - Utilise par les mesures d'incoherence basees sur MinSum",,,,,,,,6184342d2f75b760,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,d71c4120,code,fr,8c00e6e0e697bf0b,"# === Configuration de MARCO et MaxSAT === +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,d71c4120,code,fr,8c00e6e0e697bf0b,"# === Configuration de MARCO et MaxSAT === print(""=== 5. Configuration de MARCO (MUS enumerator) ==="") marco_search_paths = [ @@ -2517,7 +2517,7 @@ for tool, path in EXTERNAL_TOOLS.items(): display_path = path[:50] + ""..."" if path and len(path) > 50 else (path or ""-"") print(f"" {tool:<18}: [{status:^12}] {display_path}"") print(""=""*50)",,,,,,,,8c00e6e0e697bf0b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,2be324f0,markdown,fr,8a6d0203f92e2bc8,"### 1.6 Démarrage de la JVM via JPype +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,2be324f0,markdown,fr,8a6d0203f92e2bc8,"### 1.6 Démarrage de la JVM via JPype JPype permet à Python d'interagir directement avec le code Java. Nous devons démarrer une Machine Virtuelle Java (JVM) et lui indiquer où trouver les fichiers JAR de Tweety que nous venons de télécharger. @@ -2526,7 +2526,7 @@ JPype permet à Python d'interagir directement avec le code Java. Nous devons d * Il construit le `classpath` Java en listant tous les `.jar` dans le dossier `libs/`. * `jpype.startJVM()` lance la JVM. Si elle est déjà lancée (ex: après redémarrage du noyau), l'appel est ignoré. * **Crucial**: `jpype.imports.registerDomain(...)` doit être appelé **après** le démarrage de la JVM pour permettre les imports courts (ex: `from org.tweetyproject...`).",,,,,,,,8a6d0203f92e2bc8,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,q2ljvlflrw,markdown,fr,1495b1437a6ac882,"### Récapitulatif de la configuration des outils externes +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,q2ljvlflrw,markdown,fr,1495b1437a6ac882,"### Récapitulatif de la configuration des outils externes **État de l'environnement** : Si vous avez exécuté toutes les cellules de configuration des outils, vous disposez maintenant de : @@ -2548,7 +2548,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,q2ljvlflrw,markdown,fr, > **Note** : La plupart des exemples de la série Tweety fonctionnent avec la configuration minimale (Sat4j). Les outils externes sont requis uniquement pour les sections avancées spécifiques. **Prochaine étape** : Démarrage de la Machine Virtuelle Java (JVM) pour accéder aux classes TweetyProject.",,,,,,,,1495b1437a6ac882,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,ea155f33,markdown,fr,755d5bc55fc4b341,"#### 1.6.1 Fonctions Utilitaires JDK +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,ea155f33,markdown,fr,755d5bc55fc4b341,"#### 1.6.1 Fonctions Utilitaires JDK Avant de demarrer la JVM, nous definissons des fonctions pour localiser ou telecharger automatiquement un JDK compatible. @@ -2557,7 +2557,7 @@ Avant de demarrer la JVM, nous definissons des fonctions pour localiser ou telec 2. Telechargement automatique de Zulu JDK 17 (Azul) 3. Variable d'environnement `JAVA_HOME` 4. Detection automatique des JDKs système",,,,,,,,755d5bc55fc4b341,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,cbc68495,code,fr,32e698374519279d,"# --- 1.6.1 Fonctions Utilitaires JDK --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,cbc68495,code,fr,32e698374519279d,"# --- 1.6.1 Fonctions Utilitaires JDK --- import jpype import jpype.imports import os @@ -2627,12 +2627,12 @@ def download_portable_jdk(): return None print(""Fonctions JDK definies: find_portable_jdk(), download_portable_jdk()"")",,,,,,,,32e698374519279d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,51c82356,markdown,fr,4eee8296703d3f9a,"#### 1.6.2 Detection et Configuration du JDK +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,51c82356,markdown,fr,4eee8296703d3f9a,"#### 1.6.2 Detection et Configuration du JDK Cette cellule detecte le JDK disponible et le telecharge si necessaire. **Important** : JPype necessite un JDK 11+ (JDK 17 recommande pour Tweety 1.30).",,,,,,,,4eee8296703d3f9a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,26af745f,code,fr,2ce30a8d52a9b586,"# --- 1.6.2 Detection du JDK --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,26af745f,code,fr,2ce30a8d52a9b586,"# --- 1.6.2 Detection du JDK --- def find_java_home(): """"""Trouve JAVA_HOME selon la strategie de priorite."""""" @@ -2683,11 +2683,11 @@ def find_java_home(): java_home_path = find_java_home() if java_home_path: print(f""\nJAVA_HOME configure: {java_home_path}"")",,,,,,,,2ce30a8d52a9b586,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,d882797b,markdown,fr,df34162d25aad573,"#### 1.6.3 Construction du Classpath +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,d882797b,markdown,fr,df34162d25aad573,"#### 1.6.3 Construction du Classpath Le **classpath** indique a la JVM ou trouver les classes Java. Nous assemblons tous les JARs Tweety du dossier `libs/`.",,,,,,,,df34162d25aad573,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,ff2328b8,code,fr,aebbcc5036656f92,"# --- 1.6.3 Construction du Classpath --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,ff2328b8,code,fr,aebbcc5036656f92,"# --- 1.6.3 Construction du Classpath --- classpath_separator = os.pathsep if 'LIB_DIR' not in globals(): LIB_DIR = pathlib.Path(""libs"") @@ -2708,14 +2708,14 @@ else: print("" OK JAR beliefdynamics present"") else: print("" ATTENTION: JAR beliefdynamics non trouve"")",,,,,,,,aebbcc5036656f92,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,37b9cf22,markdown,fr,22608acfd573bd82,"#### 1.6.4 Demarrage de la JVM +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,37b9cf22,markdown,fr,22608acfd573bd82,"#### 1.6.4 Demarrage de la JVM **Important** : Si des JARs ont ete telecharges dans les cellules précédentes, **redemarrez le noyau** avant d'executer cette cellule. La JVM est demarree une seule fois par session Python. Une fois demarree, toutes les classes Java sont accessibles via les imports Python.",,,,,,,,22608acfd573bd82,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,c3122934,code,fr,623dfa13b83b5ba0,"# --- 1.6.4 Demarrage de la JVM --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,c3122934,code,fr,623dfa13b83b5ba0,"# --- 1.6.4 Demarrage de la JVM --- if not jpype.isJVMStarted(): if not java_home_path: @@ -2741,14 +2741,14 @@ if not jpype.isJVMStarted(): print(f""ERREUR demarrage JVM: {e}"") else: print(""JVM deja en cours d'execution"")",,,,,,,,623dfa13b83b5ba0,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,bdb7428d,markdown,fr,512bad8814043d18,"#### 1.6.5 Verification des Imports Java +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,bdb7428d,markdown,fr,512bad8814043d18,"#### 1.6.5 Verification des Imports Java Verification que les classes Tweety essentielles sont accessibles. **Note sur InformationObject** : Dans Tweety 1.30, cette classe se trouve dans `org.tweetyproject.beliefdynamics.mas.InformationObject` (package `mas`). CrMas et la Revision de Croyances multi-agents fonctionnent normalement.",,,,,,,,512bad8814043d18,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,4c334f6f,code,fr,947dd0520494db44,"# --- 1.6.5 Verification des Imports --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,4c334f6f,code,fr,947dd0520494db44,"# --- 1.6.5 Verification des Imports --- print(""Test des imports Java essentiels..."") CrMas_Imports_OK = False # Variable utilisee par les autres notebooks @@ -2814,7 +2814,7 @@ if jpype.isJVMStarted(): print(""(Les sections CrMas seront sautees automatiquement)"") else: print(""JVM non demarree - impossible de tester les imports"")",,,,,,,,947dd0520494db44,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,84e8b5b3,markdown,fr,3ff678a9be3c34ed,"### 1.7 Concepts Clés de Tweety et JPype +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,84e8b5b3,markdown,fr,3ff678a9be3c34ed,"### 1.7 Concepts Clés de Tweety et JPype Avant de plonger dans les exemples, comprenons quelques concepts fondamentaux de Tweety et comment nous interagissons avec eux via JPype : @@ -2843,7 +2843,7 @@ Avant de plonger dans les exemples, comprenons quelques concepts fondamentaux de * **Collections Java**: Utiliser les types Java explicites (`ArrayList`, `HashSet` depuis `java.util`). * **Surcharge (Overloading)**: Si ambiguïté, caster avec `JObject(variable, ClasseJava)` ou `JInt()`, `JString()`, etc. (depuis `jpype.types`). * **Exceptions Java**: Attraper avec `except jpype.JException as e_java:`. Accéder au message avec `e_java.message()` et à la trace avec `e_java.stacktrace()`.",,,,,,,,3ff678a9be3c34ed,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,6vgvqjdz3z8,markdown,fr,7a4e882d26505658,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,6vgvqjdz3z8,markdown,fr,7a4e882d26505658,"--- ## Resume @@ -2915,7 +2915,7 @@ L'environnement etant configure, vous pouvez maintenant explorer : 4. **Tweety-6-Structured-Argumentation** : ASPIC+, DeLP, ABA, ASP Chaque notebook utilise les composants installes ici et ne necessite pas de configuration supplementaire.",,,,,,,,7a4e882d26505658,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,451bd551,markdown,fr,ef33da6e1d6edec4,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,451bd551,markdown,fr,ef33da6e1d6edec4,"--- ## Exercice : Validez votre installation Tweety @@ -2932,7 +2932,7 @@ Ecrivez une cellule de diagnostic qui : Completez le squelette ci-dessous. > **Indice** : reprenez les imports de la section 1.6.5 (Verification des Imports). Si la JVM n'est pas demarree, re-executez d'abord la cellule 1.6.4 (Demarrage de la JVM).",,,,,,,,ef33da6e1d6edec4,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,4ed0600a,code,fr,84101c2f2271629c,"# Exercice de validation - Diagnostic de l'environnement Tweety +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,4ed0600a,code,fr,84101c2f2271629c,"# Exercice de validation - Diagnostic de l'environnement Tweety # Completez les TODO ci-dessous pour verifier votre installation. # TODO etudiant : importer jpype et afficher sa version @@ -2940,7 +2940,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,4ed0600a,code,fr,84101c # TODO etudiant : importer une classe Tweety (ex: PlBeliefSet) et l'instancier print(""Exercice a completer"")",,,,,,,,84101c2f2271629c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,2b6db053,markdown,fr,73ac0770671ffc66,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,2b6db053,markdown,fr,73ac0770671ffc66,"--- ## Notebooks de la série Tweety @@ -2948,22 +2948,22 @@ Après avoir exécuté ce notebook de configuration, vous pouvez explorer: | # | Notebook | Thème | |---|----------|-------| -| 2 | [Tweety-2-Basic-Logics](Tweety-2-Basic-Logics.ipynb) | Logique Propositionnelle et FOL | +| 2 | [Tweety-2-Basic-Logics](Tweety-02-Basic-Logics-Python.ipynb) | Logique Propositionnelle et FOL | | 3 | [Tweety-3-Advanced-Logics](Tweety-3-Advanced-Logics.ipynb) | DL, Modale, QBF, Conditional | | 4 | [Tweety-4-Belief-Revision](Tweety-4-Belief-Revision.ipynb) | Révision de croyances, MUS, MaxSAT | | 5 | [Tweety-5-Abstract-Argumentation](Tweety-5-Abstract-Argumentation.ipynb) | Dung, CF2, Génération | -| 6 | [Tweety-6-Structured-Argumentation](Tweety-6-Structured-Argumentation.ipynb) | ASPIC+, DeLP, ABA, ASP | -| 7a | [Tweety-7a-Extended-Frameworks](Tweety-7a-Extended-Frameworks.ipynb) | ADF, Bipolar, WAF, SAF, SetAF, Extended | -| 7b | [Tweety-7b-Ranking-Probabilistic](Tweety-7b-Ranking-Probabilistic.ipynb) | Ranking Semantics, Probabiliste | -| 8 | [Tweety-8-Agent-Dialogues](Tweety-8-Agent-Dialogues.ipynb) | Agents, Dialogues argumentatifs | -| 9 | [Tweety-9-Préférences](Tweety-9-Preferences.ipynb) | Préférences, Théorie du vote | +| 6 | [Tweety-6-Structured-Argumentation](Tweety-06-Structured-Argumentation-Python.ipynb) | ASPIC+, DeLP, ABA, ASP | +| 7a | [Tweety-7a-Extended-Frameworks](Tweety-07a-Extended-Frameworks-Python.ipynb) | ADF, Bipolar, WAF, SAF, SetAF, Extended | +| 7b | [Tweety-7b-Ranking-Probabilistic](Tweety-07b-Ranking-Probabilistic-Python.ipynb) | Ranking Semantics, Probabiliste | +| 8 | [Tweety-8-Agent-Dialogues](Tweety-08-Agent-Dialogues-Python.ipynb) | Agents, Dialogues argumentatifs | +| 9 | [Tweety-9-Préférences](Tweety-09-Preferences-Python.ipynb) | Préférences, Théorie du vote | --- -**Navigation**: Index | [Suivant: Tweety-2-Basic-Logics →](Tweety-2-Basic-Logics.ipynb)",,,,,,,,73ac0770671ffc66,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,f7aaf847,markdown,fr,3b26a9685ccb821a,"# Logiques de Base - Propositionnelle et Premier Ordre +**Navigation**: Index | [Suivant: Tweety-2-Basic-Logics →](Tweety-02-Basic-Logics-Python.ipynb)",,,,,,,,73ac0770671ffc66,,,,,,,, +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,f7aaf847,markdown,fr,3b26a9685ccb821a,"# Logiques de Base - Propositionnelle et Premier Ordre -**Navigation**: [← Tweety-1-Setup](Tweety-1-Setup.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-3-Advanced-Logics →](Tweety-3-Advanced-Logics.ipynb) +**Navigation**: [← Tweety-1-Setup](Tweety-01-Setup-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-3-Advanced-Logics →](Tweety-3-Advanced-Logics.ipynb) --- @@ -2976,14 +2976,14 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,f7aaf847,markdow ## Prérequis -Exécutez d'abord [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb) pour configurer l'environnement JVM. +Exécutez d'abord [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb) pour configurer l'environnement JVM. ### Durée estimée : 45 minutes > **Limitations connues (Tweety 1.28):** > - FOL avec égalité peut causer des problèmes de heap space avec `SimpleFolReasoner` > - Préférer EProver pour les requêtes FOL complexes",,,,,,,,3b26a9685ccb821a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,6f6136ad,code,fr,fa4b84aa578d779c,"# --- Initialisation JVM Tweety + Outils Externes --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,6f6136ad,code,fr,fa4b84aa578d779c,"# --- Initialisation JVM Tweety + Outils Externes --- print(""--- Verification JVM Tweety + Outils ---"") jvm_ready = False @@ -3102,7 +3102,7 @@ if jvm_ready: else: tools_status.append(f""{tool}: -"") print(f""\nJVM prete. Outils: {sum(1 for t,p in EXTERNAL_TOOLS.items() if p)}/{len(EXTERNAL_TOOLS)}"")",,,,,,,,fa4b84aa578d779c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,4je7rlg5f9h,markdown,fr,bd2a211a65355d5a,"### Interpretation de l'initialisation JVM +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,4je7rlg5f9h,markdown,fr,bd2a211a65355d5a,"### Interpretation de l'initialisation JVM **Succes de l'initialisation** : - JVM demarree avec **10 JARs** charges @@ -3128,8 +3128,8 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,4je7rlg5f9h,mark --- -**Note de parite cross-langage** (EPIC #4956) : Le jumeau C# de ce notebook (voir `Tweety-2-Basic-Logics-Csharp.ipynb`) utilise une strategie differente : **IKVM** transpile statiquement le bytecode Java de Tweety en DLL .NET native (7 Mo), tandis que ce notebook Python utilise **jpype** pour demarrer une JVM in-process et appeler directement les classes Java. Les deux strategies donnent acces au meme API Tweety (Proposition, PlBeliefSet, PlParser, FolReasoner...). Audit c.739 (2026-07-22) : 0 doc-honesty finding corrigible des deux cotes.",,,,,,,,bd2a211a65355d5a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,cd3ec64f,markdown,fr,0db067e576595e27,"## Partie 2 : Logiques Fondamentales dans Tweety +**Note de parite cross-langage** (EPIC #4956) : Le jumeau C# de ce notebook (voir `Tweety-02-Basic-Logics-CSharp.ipynb`) utilise une strategie differente : **IKVM** transpile statiquement le bytecode Java de Tweety en DLL .NET native (7 Mo), tandis que ce notebook Python utilise **jpype** pour demarrer une JVM in-process et appeler directement les classes Java. Les deux strategies donnent acces au meme API Tweety (Proposition, PlBeliefSet, PlParser, FolReasoner...). Audit c.739 (2026-07-22) : 0 doc-honesty finding corrigible des deux cotes.",,,,,,,,bd2a211a65355d5a,,,,,,,, +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,cd3ec64f,markdown,fr,0db067e576595e27,"## Partie 2 : Logiques Fondamentales dans Tweety Explorons comment représenter et raisonner avec certaines logiques de base en utilisant Tweety via JPype. @@ -3177,7 +3177,7 @@ a | b | a && b | a || b | a => b | !a Voyons comment créer, parser et évaluer des formules PL.",,,,,,,,0db067e576595e27,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,1a766440,code,fr,89815a1335672304,"# --- 2.1.1a Imports et verification JVM --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,1a766440,code,fr,89815a1335672304,"# --- 2.1.1a Imports et verification JVM --- print(""--- 2.1.1 Logique Propositionnelle : Setup ---"") # Verification de la JVM @@ -3217,7 +3217,7 @@ else: print(""Imports PL reussis. Classes disponibles:"") print("" - Proposition, Negation, Conjunction, Disjunction, Implication"") print("" - PlBeliefSet, PlParser, PossibleWorld"")",,,,,,,,89815a1335672304,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,56esk9ttltu,markdown,fr,6453fafe430bf288,"### Interpretation de l'initialisation PL +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,56esk9ttltu,markdown,fr,6453fafe430bf288,"### Interpretation de l'initialisation PL **Succes** : La JVM est prete et les classes PL ont ete chargees. @@ -3240,14 +3240,14 @@ PlReasoner (sémantique : inference logique) > **Note** : Le package `org.tweetyproject.logics.pl.*` contient toute la logique propositionnelle. > Pour d'autres logiques (FOL, Description Logic), les packages changent mais la structure reste similaire.",,,,,,,,6453fafe430bf288,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,d8f9ee9b,markdown,fr,4ed49c1de9b71c91,"#### Construction manuelle de formules +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,d8f9ee9b,markdown,fr,4ed49c1de9b71c91,"#### Construction manuelle de formules On peut construire des formules de deux facons: 1. **Par API Java**: en creant des objets `Proposition`, `Negation`, etc. 2. **Par parsing**: en utilisant `PlParser` pour parser une chaîne **Exemple de construction manuelle:**",,,,,,,,4ed49c1de9b71c91,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,c0aa5094,code,fr,9fc777bcfc60b577,"# --- 2.1.1b Construction manuelle de formules --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,c0aa5094,code,fr,9fc777bcfc60b577,"# --- 2.1.1b Construction manuelle de formules --- if jvm_ready: # Creer des propositions atomiques a = Proposition(""a"") @@ -3286,7 +3286,7 @@ if jvm_ready: else: print(""Cellule sautee : JVM Tweety non disponible"") ",,,,,,,,9fc777bcfc60b577,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,n370dw9zgt,markdown,fr,b16d1ae1f088052e,"### Interpretation de la KB construite manuellement +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,n370dw9zgt,markdown,fr,b16d1ae1f088052e,"### Interpretation de la KB construite manuellement **Sortie obtenue** : ``` @@ -3313,7 +3313,7 @@ Formules de la KB : - Un solveur SAT retournerait `UNSAT` pour cette KB > **Astuce** : Toujours verifier la consistance d'une KB avec `solver.isSatisfiable(kb)` avant de faire des requêtes.",,,,,,,,b16d1ae1f088052e,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,3977b528,markdown,fr,d0a31ebc59e0b256,"#### Parsing de formules +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,3977b528,markdown,fr,d0a31ebc59e0b256,"#### Parsing de formules Le `PlParser` permet de parser des formules depuis des chaînes de caractères. La syntaxe utilise les opérateurs: @@ -3323,7 +3323,7 @@ La syntaxe utilise les opérateurs: - `=>` pour l'implication - `<=>` pour l'equivalence - `^^` pour le XOR (ou exclusif)",,,,,,,,d0a31ebc59e0b256,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,e5e9ed18,code,fr,78899b49786e1b53,"# --- 2.1.1c Parsing de formules --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,e5e9ed18,code,fr,78899b49786e1b53,"# --- 2.1.1c Parsing de formules --- if jvm_ready: # Parser une base de connaissances depuis une chaine # IMPORTANT: Le parser Tweety est sensible aux espaces de debut de ligne. @@ -3347,7 +3347,7 @@ if jvm_ready: # - a=T, b=T, c=T else: print(""JVM non demarree - cellule sautee"")",,,,,,,,78899b49786e1b53,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,ddgrdkdjz6,markdown,fr,751ea9d384f78aaa,"### Interpretation du parsing et de la DNF +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,ddgrdkdjz6,markdown,fr,751ea9d384f78aaa,"### Interpretation du parsing et de la DNF **KB parsee** : `{ !a||b, !b||c, a||b||c }` @@ -3376,12 +3376,12 @@ La DNF liste explicitement tous les cas ou la formule est vraie : - XOR binaire (`a ^^ b`) n'a que 2 modèles (1 vraie) > **Astuce** : La méthode `toDnf()` est utile pour visualiser les modèles d'une formule complexe.",,,,,,,,751ea9d384f78aaa,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,3de93456,markdown,fr,910167edc6bdba13,"#### Sémantique : Mondes possibles et satisfaction +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,3de93456,markdown,fr,910167edc6bdba13,"#### Sémantique : Mondes possibles et satisfaction Un **monde possible** (`PossibleWorld`) est une interpretation qui assigne une valeur de verite a chaque proposition. Une formule est **satisfaite** par un monde si elle est vraie dans ce monde.",,,,,,,,910167edc6bdba13,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,e5d744d5,code,fr,21ed0cb95eae1378,"# --- 2.1.1d Semantique : mondes possibles --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,e5d744d5,code,fr,21ed0cb95eae1378,"# --- 2.1.1d Semantique : mondes possibles --- if jvm_ready: # Creer un monde possible ou a=True et b=True world1 = PossibleWorld() @@ -3410,7 +3410,7 @@ if jvm_ready: else: print(""Cellule sautee : JVM Tweety non disponible"") ",,,,,,,,21ed0cb95eae1378,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,i56fpuvcf4,markdown,fr,b5ff86f312c1a095,"### Interpretation des mondes possibles et modèles +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,i56fpuvcf4,markdown,fr,b5ff86f312c1a095,"### Interpretation des mondes possibles et modèles **Monde possible w1 = [a, b]** @@ -3441,7 +3441,7 @@ Les 4 modèles obtenus : > **Distinction importante** : > - **Monde possible** : Une interpretation (assignation de verite) > - **Modèle** : Un monde qui **satisfait** une formule donnee",,,,,,,,b5ff86f312c1a095,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,8b5790f8,markdown,fr,7e3b3b29f948570f,"#### Conversion DIMACS +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,8b5790f8,markdown,fr,7e3b3b29f948570f,"#### Conversion DIMACS Le format **DIMACS CNF** est le format standard pour les solveurs SAT. Tweety peut convertir une KB en DIMACS pour l'utiliser avec des solveurs externes. @@ -3454,7 +3454,7 @@ p cnf ``` Chaque variable est un entier positif, la negation est representee par un entier negatif.",,,,,,,,7e3b3b29f948570f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,3c48b5e5,code,fr,4c48f273bea3566c,"# --- 2.1.1e Conversion DIMACS --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,3c48b5e5,code,fr,4c48f273bea3566c,"# --- 2.1.1e Conversion DIMACS --- if jvm_ready: # Creer une KB pour la conversion kb_dimacs = PlBeliefSet() @@ -3480,7 +3480,7 @@ if jvm_ready: else: print(""Cellule sautee : JVM Tweety non disponible"") ",,,,,,,,4c48f273bea3566c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,36tedv7zi7p,markdown,fr,44bdb9931ec5d323,"### Interpretation du format DIMACS +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,36tedv7zi7p,markdown,fr,44bdb9931ec5d323,"### Interpretation du format DIMACS **Sortie obtenue** : ``` @@ -3518,7 +3518,7 @@ La formule `!a || (b && d)` devient 2 clauses : - Format universel pour tous les solveurs SAT (CaDiCaL, Glucose, MiniSat, Z3) - Permet d'utiliser des solveurs externes sans wrapper Java - Standard de facto depuis les SAT Competitions (1990s)",,,,,,,,44bdb9931ec5d323,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,044f5ef1,markdown,fr,ec1f2ca66059c1ad,"#### 2.1.2 Raisonnement Simple et Solveurs SAT (SAT4J interne) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,044f5ef1,markdown,fr,ec1f2ca66059c1ad,"#### 2.1.2 Raisonnement Simple et Solveurs SAT (SAT4J interne) Une fois les formules et bases définies, on peut effectuer des raisonnements : @@ -3532,7 +3532,7 @@ Tweety propose : * `SatSolver` : Une interface pour les solveurs SAT. `Sat4jSolver` est une implémentation Java intégrée. `SatSolver.setDefaultSolver(...)` permet de choisir le solveur à utiliser globalement. * `isSatisfiable(kb)`: Vérifie la satisfiabilité. * `getWitness(kb)`: Retourne un `PossibleWorld` modèle si la KB est satisfiable, sinon `None`.",,,,,,,,ec1f2ca66059c1ad,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,020bc6a0,code,fr,0fee356ea14f5bdd,"# --- 2.1.2 Logique Propositionnelle : Raisonnement et SAT4J --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,020bc6a0,code,fr,0fee356ea14f5bdd,"# --- 2.1.2 Logique Propositionnelle : Raisonnement et SAT4J --- print(""--- 2.1.2 Raisonnement PL et SAT4J ---"") if not jvm_ready: @@ -3606,7 +3606,7 @@ else: print(f""Erreur: {e}"") import traceback traceback.print_exc()",,,,,,,,0fee356ea14f5bdd,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,ggg4o74rfkb,markdown,fr,5ff3880fb93b06bb,"### Interpretation des résultats SAT4J +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,ggg4o74rfkb,markdown,fr,5ff3880fb93b06bb,"### Interpretation des résultats SAT4J **Exemple 1 : SimplePlReasoner (Consequence Logique)** @@ -3647,7 +3647,7 @@ Formule : `a XOR b` **Remarque** : XOR a exactement 2 modèles, comme attendu par la table de verite. > **SAT4J vs solveurs modernes** : SAT4J est **portable** (Java pur) mais ~10-20x plus lent que CaDiCaL/Glucose sur des problemes >1000 variables.",,,,,,,,5ff3880fb93b06bb,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,0c8ac0b9,markdown,fr,527cbb67bf265792,"#### 2.1.3 Solveurs SAT Modernes (pySAT / CaDiCaL) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,0c8ac0b9,markdown,fr,527cbb67bf265792,"#### 2.1.3 Solveurs SAT Modernes (pySAT / CaDiCaL) Sat4j est un excellent solveur SAT en Java pur, mais pour des problèmes industriels complexes, les **solveurs natifs modernes** offrent des performances nettement supérieures. @@ -3680,7 +3680,7 @@ from pysat.formula import CNF - Sat4j: ~10 secondes - CaDiCaL: ~0.5 secondes - Ratio: 20x plus rapide",,,,,,,,527cbb67bf265792,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,bf242c03,code,fr,df73fc61d5bf0067,"# --- 2.1.3a Solveurs SAT Modernes: Comparaison sur Problemes Varies --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,bf242c03,code,fr,df73fc61d5bf0067,"# --- 2.1.3a Solveurs SAT Modernes: Comparaison sur Problemes Varies --- print(""--- 2.1.3a Solveurs SAT Modernes (pySAT / CaDiCaL) ---"") pysat_available = False @@ -3814,7 +3814,7 @@ if pysat_available: print(f""=> Victoires: CaDiCaL={wins['cadical195']}, Glucose={wins['glucose42']}, MiniSat={wins['minisat22']}"") else: print(""Pour utiliser les solveurs modernes: pip install python-sat"")",,,,,,,,df73fc61d5bf0067,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,pj537rrj8y,markdown,fr,47cc58de1c2330c5,"## Interpretation des benchmarks pySAT +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,pj537rrj8y,markdown,fr,47cc58de1c2330c5,"## Interpretation des benchmarks pySAT **Résultats obtenus** (sortie de la cellule précédente) : @@ -3859,7 +3859,7 @@ Les **temps absolus** mesurés par chaque solveur sont le *résultat live* de la > **Honnêteté sur la mesure.** Les temps produits par la cellule de benchmark ci-dessus sont un *instantané* d'une exécution sur une machine donnée — **ils ne sont pas figés dans cette prose** (règle #9434) : seuls les vainqueurs et les ordres de grandeur structurels sont reportés ici, car ce sont les seuls stables d'une machine à l'autre. À l'échelle de la milliseconde (Latin Square), le classement d'un test peut même basculer d'une exécution à l'autre — par exemple une exécution précédente donnait MiniSat vainqueur sur Latin Square (Glucose à 0 victoire). C'est précisément pour cela que la cellule de code **calcule le vainqueur de chaque test** (`min(..., key=...)`) et **déduit sa conclusion du comptage de victoires** plutôt que d'afficher des spécialités figées : la narration suit toujours les résultats réels, sans dérive. ",,,,,,,,47cc58de1c2330c5,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,b9856fbd,markdown,fr,108c232b63571883,"### Enumeration de solutions et integration Tweety +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,b9856fbd,markdown,fr,108c232b63571883,"### Enumeration de solutions et integration Tweety Au-dela de trouver UNE solution, pySAT permet d'**enumerer toutes les solutions** d'un problème SAT en ajoutant des **clauses de blocage**. @@ -3868,7 +3868,7 @@ L'integration avec Tweety est simple: 2. Convertir en DIMACS avec DimacsSatSolver.convertToDimacs() 3. Parser le DIMACS pour pySAT 4. Resoudre avec CaDiCaL ou autre solveur moderne",,,,,,,,108c232b63571883,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,04714a6b,code,fr,2ddb3452498c647a,"# --- 2.1.3b Enumeration et Integration Tweety --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,04714a6b,code,fr,2ddb3452498c647a,"# --- 2.1.3b Enumeration et Integration Tweety --- print(""--- 2.1.3b Enumeration de solutions et Integration Tweety ---"") if not pysat_available: @@ -3937,7 +3937,7 @@ else: print(f"" Erreur integration: {e}"") print(""\n==> pySAT est un excellent complement a Tweety pour le SAT."")",,,,,,,,2ddb3452498c647a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,vg8u9ha0fh,markdown,fr,e88c994ba34215df,"### Interpretation : Enumeration et integration Tweety -> pySAT +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,vg8u9ha0fh,markdown,fr,e88c994ba34215df,"### Interpretation : Enumeration et integration Tweety -> pySAT **Exemple 3 : Enumeration de solutions** @@ -3968,7 +3968,7 @@ Workflow complet : - Meilleur des deux mondes : expressivite + vitesse > **Use case reel** : Verification formelle, planning, configuration de produits",,,,,,,,e88c994ba34215df,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,96314913,markdown,fr,799b62b15886d4f8,"## Exercice : Coloration de graphe avec SAT +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,96314913,markdown,fr,799b62b15886d4f8,"## Exercice : Coloration de graphe avec SAT ### Contexte @@ -3989,7 +3989,7 @@ de sorte que deux sommets adjacents n'aient jamais la même couleur. - ""Au moins une couleur"" : `a_r || a_v || a_b` - ""Au plus une couleur"" : `!(a_r && a_v) && !(a_r && a_b) && !(a_v && a_b)` - ""Pas même couleur sur arête A-B"" : `!(a_r && b_r) && !(a_v && b_v) && !(a_b && b_b)`",,,,,,,,799b62b15886d4f8,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,75687f51,code,fr,5e36abac35ed7a64,"# --- Exercice : Coloration de graphe (4 sommets, 3 couleurs) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,75687f51,code,fr,5e36abac35ed7a64,"# --- Exercice : Coloration de graphe (4 sommets, 3 couleurs) --- # TODO etudiant : Construisez la KB avec les 12 variables et les contraintes # Etape 1 : Creer les 12 propositions (a_r, a_v, a_b, b_r, ...) # Etape 2 : Pour chaque sommet, ajouter ""au moins une couleur"" et ""au plus une couleur"" @@ -3998,7 +3998,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,75687f51,code,fr # Etape 5 : Retirer une couleur et verifier que le probleme devient UNSAT print(""Exercice a completer"")",,,,,,,,5e36abac35ed7a64,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,cfcbe2ff,markdown,fr,34765f0762d212a4,"### 2.2 Logique du Premier Ordre (FOL) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,cfcbe2ff,markdown,fr,34765f0762d212a4,"### 2.2 Logique du Premier Ordre (FOL) La logique du premier ordre (First-Order Logic, FOL) étend la logique propositionnelle avec des **prédicats**, **constantes**, **variables** et **quantificateurs**. @@ -4043,7 +4043,7 @@ Humain(socrate) // Socrate est humain * **`FolReasoner`**: Interface pour les prouveurs (EProver, SPASS, SimpleFolReasoner) > **Limitation connue:** `SimpleFolReasoner` peut causer des problèmes de heap space sur des requêtes complexes avec égalité. Pour un raisonnement FOL robuste, utilisez EProver.",,,,,,,,34765f0762d212a4,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,39v1vjnf3pd,markdown,fr,e8c1672126a5e0bd,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,39v1vjnf3pd,markdown,fr,e8c1672126a5e0bd,"--- ## Transition : De la Logique Propositionnelle a la Logique du Premier Ordre @@ -4076,7 +4076,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,39v1vjnf3pd,mark - PL est **decidable** (SAT est NP-complet, mais resolvable) - FOL est **semi-decidable** (peut boucler indefiniment sur certaines requêtes) - Les solveurs FOL (EProver, SPASS) utilisent des **heuristiques** pour terminer en pratique",,,,,,,,e8c1672126a5e0bd,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,0b7135d9,code,fr,08314e1d6ec367ba,"# --- 2.2.1 Imports et verification JVM pour FOL --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,0b7135d9,code,fr,08314e1d6ec367ba,"# --- 2.2.1 Imports et verification JVM pour FOL --- print(""--- 2.2.1 Imports FOL ---"") if not jvm_ready: @@ -4115,7 +4115,7 @@ else: print(f""Erreur Java generale FOL: {e_java.message()}"") except Exception as e_gen: print(f""Erreur Python inattendue FOL: {e_gen}"")",,,,,,,,08314e1d6ec367ba,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,9ul34mty3,markdown,fr,d79a624af90baf77,"### Interpretation des imports FOL +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,9ul34mty3,markdown,fr,d79a624af90baf77,"### Interpretation des imports FOL **Succes** : Tous les imports FOL ont ete charges correctement. @@ -4132,7 +4132,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,9ul34mty3,markdo > **Astuce** : Les classes `*Reasoner` sont des **facades** pour les solveurs externes (EProver, SPASS). > Le pattern reste le même : `reasoner.query(kb, formula)` retourne True/False.",,,,,,,,d79a624af90baf77,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,ca3a38e9,markdown,fr,8c3c5006836d14f0,"#### Creation de la Signature FOL +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,ca3a38e9,markdown,fr,8c3c5006836d14f0,"#### Creation de la Signature FOL Une **signature** définit le vocabulaire de notre domaine : - **Sorts** : Les types d'objets (`Person`, `City`) @@ -4148,7 +4148,7 @@ Signature: mortal(Person) isHappy(Person) ```",,,,,,,,8c3c5006836d14f0,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,b3fc694c,code,fr,130fd4596ca5546b,"# --- 2.2.2 Creation de la Signature FOL --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,b3fc694c,code,fr,130fd4596ca5546b,"# --- 2.2.2 Creation de la Signature FOL --- if fol_imports_ok: # Creer une signature avec predicats d'egalite integres sig_fol = FolSignature(True) @@ -4191,7 +4191,7 @@ if fol_imports_ok: print(sig_fol) else: print(""Imports FOL non disponibles - signature non creee."")",,,,,,,,130fd4596ca5546b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,i6qdult2tk,markdown,fr,eb1066d174f1540b,"### Interpretation de la signature créée +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,i6qdult2tk,markdown,fr,eb1066d174f1540b,"### Interpretation de la signature créée **Sortie obtenue** : La signature contient 3 sorts, 5 predicats, et 0 fonctions. @@ -4216,7 +4216,7 @@ Predicats: - Utiles pour le **typage statique** des théories formelles > **Note** : Le type `_Any` est ajoute automatiquement pour les predicats d'egalite polymorphes.",,,,,,,,eb1066d174f1540b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,317352eb,markdown,fr,f8f1db03ae492cea,"#### Parsing de formules FOL +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,317352eb,markdown,fr,f8f1db03ae492cea,"#### Parsing de formules FOL Le `FolParser` permet de parser des formules textuelles vers des objets `FolFormula`. @@ -4232,7 +4232,7 @@ Quantif.: forall X: (Humain(X) => Mortel(X)) > **Limitation Tweety 1.28:** Le parsing de quantificateurs complexes peut echouer. > Nous utilisons des faits atomiques simples pour cet exemple.",,,,,,,,f8f1db03ae492cea,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,2bbee30b,code,fr,6db575b65d1ec897,"# --- 2.2.3 Parsing et Base de Croyances FOL --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,2bbee30b,code,fr,6db575b65d1ec897,"# --- 2.2.3 Parsing et Base de Croyances FOL --- if fol_imports_ok: # Creer le parser avec notre signature parser_fol = FolParser() @@ -4267,7 +4267,7 @@ if fol_imports_ok: print(f""\nKB FOL contient {kb_fol.size()} formules."") else: print(""Imports FOL non disponibles - parsing ignore."")",,,,,,,,6db575b65d1ec897,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,dw10zd1ipfl,markdown,fr,b0c20a6aedb2ecd2,"### Interpretation du parsing FOL +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,dw10zd1ipfl,markdown,fr,b0c20a6aedb2ecd2,"### Interpretation du parsing FOL **Succes** : Les 4 formules ont ete parsees correctement dans la KB. @@ -4288,7 +4288,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,dw10zd1ipfl,mark - Les formules ci-dessus sont des **faits atomiques** (ground atoms) - Pour des quantificateurs comme `forall X: livesIn(X, paris)`, le parsing Tweety 1.28 peut echouer - Solution : construire manuellement avec `ForallQuantifiedFormula` ou utiliser EProver en mode TPTP",,,,,,,,b0c20a6aedb2ecd2,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,e9a924ba,markdown,fr,2ff9b5bd039d1f92,"#### Raisonnement FOL : Choix du Raisonneur +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,e9a924ba,markdown,fr,2ff9b5bd039d1f92,"#### Raisonnement FOL : Choix du Raisonneur Tweety propose plusieurs raisonneurs FOL : @@ -4300,7 +4300,7 @@ Tweety propose plusieurs raisonneurs FOL : > **Recommandation:** Utilisez **EProver** pour un raisonnement FOL robuste. > SimpleFolReasoner est acceptable pour des KB très petites sans requêtes d'egalite.",,,,,,,,2ff9b5bd039d1f92,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,afdc78c3,code,fr,4a4e87b2102e9e4e,"# --- 2.2.4 Configuration du Raisonneur et Requetes --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,afdc78c3,code,fr,4a4e87b2102e9e4e,"# --- 2.2.4 Configuration du Raisonneur et Requetes --- if fol_imports_ok and kb_fol.size() > 0: fol_reasoner = None @@ -4327,7 +4327,7 @@ if fol_imports_ok and kb_fol.size() > 0: print(f""\nRaisonneur actif: {current_reasoner.getClass().getSimpleName()}"") else: print(""KB vide ou imports manquants - raisonnement ignore."")",,,,,,,,4a4e87b2102e9e4e,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,1h27q4xqbeu,markdown,fr,f380711046965690,"### Interpretation de la configuration du raisonneur +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,1h27q4xqbeu,markdown,fr,f380711046965690,"### Interpretation de la configuration du raisonneur **Résultat** : EProver a ete configure avec succes comme raisonneur par defaut. @@ -4342,7 +4342,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,1h27q4xqbeu,mark | **Cas d'usage** | Tests basiques | Production | Logique modale | > **Astuce** : EProver est le choix recommande pour tout raisonnement FOL au-dela des tests triviaux.",,,,,,,,f380711046965690,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,4109949f,markdown,fr,411617cffd8ef0c9,"#### Exécution de Requêtes FOL +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,4109949f,markdown,fr,411617cffd8ef0c9,"#### Exécution de Requêtes FOL Testons l'inference logique sur notre base de connaissances : - `livesIn(alice, paris)` - Presente dans KB → **True** @@ -4352,7 +4352,7 @@ Testons l'inference logique sur notre base de connaissances : > **Note:** La requête `paris == london` est retiree car elle provoque un heap space > avec SimpleFolReasoner (enumeration exhaustive de tous les mondes possibles).",,,,,,,,411617cffd8ef0c9,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,81657d0f,code,fr,047c169353b9467b,"# --- 2.2.5 Execution des Requetes --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,81657d0f,code,fr,047c169353b9467b,"# --- 2.2.5 Execution des Requetes --- if fol_imports_ok and kb_fol.size() > 0: # Requetes simples (sans egalite de constantes) queries_fol_str = [ @@ -4377,7 +4377,7 @@ if fol_imports_ok and kb_fol.size() > 0: print(""\n[Note] Requete 'paris == london' retiree - voir section 2.2.1 pour EProver."") else: print(""Raisonnement FOL ignore (KB vide ou imports manquants)."")",,,,,,,,047c169353b9467b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,aikrj0yxrrp,markdown,fr,79a350a561ea12b7,"### Interpretation des résultats FOL +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,aikrj0yxrrp,markdown,fr,79a350a561ea12b7,"### Interpretation des résultats FOL **Analyse des résultats** : @@ -4397,7 +4397,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,aikrj0yxrrp,mark - En PL, on manipule des propositions atomiques (`a`, `b`, `c`) - En FOL, on manipule des **relations** entre objets (`livesIn(alice, paris)`) - La FOL permet de factoriser avec des quantificateurs : `forall X: (Humain(X) => Mortel(X))`",,,,,,,,79a350a561ea12b7,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,71c222d9,markdown,fr,b066d6e9ce2e54bf,"## Exercice : Modélisation FOL d'un domaine géographique +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,71c222d9,markdown,fr,b066d6e9ce2e54bf,"## Exercice : Modélisation FOL d'un domaine géographique ### Contexte @@ -4418,7 +4418,7 @@ Vous disposez d'une base de connaissances géographique simplifiée : - Suivez le même pattern que la section 2.2 : créer `FolSignature`, ajouter sorts, constantes, prédicats - Utilisez `FolParser` avec la signature pour parser les faits - Pour les règles avec quantificateurs, utilisez EProver (SimpleFolReasoner ne les gère pas bien)",,,,,,,,b066d6e9ce2e54bf,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,0865459b,code,fr,d0196766ec3e4942,"# --- Exercice : Modelisation FOL d'un domaine geographique --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,0865459b,code,fr,d0196766ec3e4942,"# --- Exercice : Modelisation FOL d'un domaine geographique --- # TODO etudiant : Creez la signature, la KB et executez les requetes # Etape 1 : Definir les sorts (City, Country, Region) et les constantes (paris, lyon, london, france, uk, europe) # Etape 2 : Definir les predicats (capitalOf/2, locatedIn/2, sameCountry/2) @@ -4426,14 +4426,14 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,0865459b,code,fr # Etape 4 : Executer les requetes avec EProver ou SimpleFolReasoner print(""Exercice a completer"")",,,,,,,,d0196766ec3e4942,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,894cd31d,markdown,fr,b5f9c19e3469fba4,"#### 2.2.6 Test EProver (Optionnel) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,894cd31d,markdown,fr,b5f9c19e3469fba4,"#### 2.2.6 Test EProver (Optionnel) EProver est un prouveur automatique de theoremes pour la logique du premier ordre. Il est beaucoup plus efficace que `SimpleFolReasoner` pour les requêtes complexes, notamment celles impliquant l'egalite. > **Note**: EProver est auto-detecte depuis `ext_tools/EProver/eprover.exe` si present. Sinon, telechargez-le depuis [eprover.org](https://eprover.org/). La cellule suivante teste EProver avec des requêtes qui feraient crasher SimpleFolReasoner (heap space).",,,,,,,,b5f9c19e3469fba4,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,8d287b87,code,fr,786f198f4f72caaf,"# --- 2.2.6 Test EProver pour requetes FOL avancees --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,8d287b87,code,fr,786f198f4f72caaf,"# --- 2.2.6 Test EProver pour requetes FOL avancees --- print(""--- 2.2.6 Test EProver (Optionnel) ---"") if not jvm_ready: @@ -4501,7 +4501,7 @@ else: except Exception as e: print(f""Erreur: {e}"")",,,,,,,,786f198f4f72caaf,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,ski3x2bbd7g,markdown,fr,6683e83019263e45,"### Interpretation des résultats EProver +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,ski3x2bbd7g,markdown,fr,6683e83019263e45,"### Interpretation des résultats EProver **Observations** : - EProver **confirme** `human(a)` car presente dans la KB @@ -4513,7 +4513,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,ski3x2bbd7g,mark 3. **Expressivite** : Supporte FOL complete avec fonctions et egalite > **Production** : Pour des applications reelles, privilegiez EProver ou SPASS plutot que SimpleFolReasoner.",,,,,,,,6683e83019263e45,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,21ejyu27m0t,markdown,fr,b1db5eb73aa0ae80,"## Exemple guide : Modelisation d'un problème de planification en logique propositionnelle +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,21ejyu27m0t,markdown,fr,b1db5eb73aa0ae80,"## Exemple guide : Modelisation d'un problème de planification en logique propositionnelle ### Contexte @@ -4536,7 +4536,7 @@ Les contraintes sont : - ""Exactement un creneau"" = `(x_am || x_pm) && !(x_am && x_pm)` - ""Pas au même creneau"" = `!(maths_am && phys_am) && !(maths_pm && phys_pm)` - Reutilisez le pattern de parsing du notebook : `parser_pl.parseFormula(""..."")`",,,,,,,,b1db5eb73aa0ae80,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,l8jm9v7af8,code,fr,f5f4966e6fe61189,"# --- Exemple guide : Planification en Logique Propositionnelle --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,l8jm9v7af8,code,fr,f5f4966e6fe61189,"# --- Exemple guide : Planification en Logique Propositionnelle --- # Solution complete : modelisation et resolution d'un probleme de planification if jvm_ready: @@ -4596,7 +4596,7 @@ if jvm_ready: else: print(""Exemple saute : JVM Tweety non disponible"") ",,,,,,,,f5f4966e6fe61189,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,4aea0dc5,markdown,fr,8d8d57195041220c,"## Exercice : Planification avec contraintes supplementaires +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,4aea0dc5,markdown,fr,8d8d57195041220c,"## Exercice : Planification avec contraintes supplementaires En vous basant sur l'exemple guide ci-dessus, etendez le problème de planification avec les contraintes suivantes : @@ -4610,7 +4610,7 @@ En vous basant sur l'exemple guide ci-dessus, etendez le problème de planificat - Utilisez 12 propositions : `{maths,info,phys,chimie}_{am,pm,soir}` - ""Exactement un creneau"" pour chaque cours - Reutilisez le pattern de construction KB de l'exemple guide",,,,,,,,8d8d57195041220c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,f6b8a480,code,fr,a68392853772c667,"# --- Exercice : Planification etendue (4 cours, 3 creneaux) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,f6b8a480,code,fr,a68392853772c667,"# --- Exercice : Planification etendue (4 cours, 3 creneaux) --- # TODO etudiant : Construisez la KB avec les 12 propositions et les contraintes # Etape 1 : Creer les propositions (maths_am, maths_pm, maths_soir, info_am, ...) # Etape 2 : Ajouter les contraintes ""exactement un creneau"" pour chaque cours @@ -4618,7 +4618,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,f6b8a480,code,fr # Etape 4 : Resoudre avec Sat4jSolver et afficher l'emploi du temps print(""Exercice a completer"")",,,,,,,,a68392853772c667,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,8511a380,markdown,fr,b7d693f4217c1513,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,8511a380,markdown,fr,b7d693f4217c1513,"--- ## Resume @@ -4638,12 +4638,12 @@ Le notebook suivant explore les logiques plus avancees: Description Logic, Logiq --- -**Navigation**: [Tweety-1-Setup](Tweety-1-Setup.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-3-Advanced-Logics](Tweety-3-Advanced-Logics.ipynb)",,,,,,,,b7d693f4217c1513,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,m13718,markdown,fr,9f56a79b57e068bb,"# Tweety C# / IKVM - Logiques de Base (Port .NET du notebook Python) +**Navigation**: [Tweety-1-Setup](Tweety-01-Setup-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-3-Advanced-Logics](Tweety-3-Advanced-Logics.ipynb)",,,,,,,,b7d693f4217c1513,,,,,,,, +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,m13718,markdown,fr,9f56a79b57e068bb,"# Tweety C# / IKVM - Logiques de Base (Port .NET du notebook Python) -**Navigation** : [<- Tweety-1-Setup](Tweety-1-Setup.ipynb) | [Index serie](Tweety-1-Setup.ipynb) | [Tweety-3-Advanced-Logics ->](Tweety-3-Advanced-Logics.ipynb) +**Navigation** : [<- Tweety-1-Setup](Tweety-01-Setup-Python.ipynb) | [Index serie](Tweety-01-Setup-Python.ipynb) | [Tweety-3-Advanced-Logics ->](Tweety-3-Advanced-Logics.ipynb) -> Ce notebook est le **port C# / .NET** de [Tweety-2-Basic-Logics.ipynb](Tweety-2-Basic-Logics.ipynb). +> Ce notebook est le **port C# / .NET** de [Tweety-02-Basic-Logics-Python.ipynb](Tweety-02-Basic-Logics-Python.ipynb). > Au lieu d'appeler Tweety depuis Python via JPype + JVM, on execute directement les > classes Tweety **recompilees en bytecode .NET via IKVM** - aucune JVM, aucun JDK requis > au runtime. Voir le notebook Python pour le contexte théorique complet. @@ -4657,12 +4657,12 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,m13718,ma ## Prerequis -- Le notebook Python `Tweety-2-Basic-Logics.ipynb` pour les notions (logique propositionnelle, mondes possibles) +- Le notebook Python `Tweety-02-Basic-Logics-Python.ipynb` pour les notions (logique propositionnelle, mondes possibles) - Le runtime est **tout .NET** : aucune installation Java/JDK n'est necessaire **Plan de route** : cinq étapes balisées, toutes exécutées et committées — (1) le runtime IKVM 8.15.0 restauré et vérifié, (2) la DLL Tweety chargée (`org.tweetyproject.tweety-pl` v1.30.0.0, 7,0 Mo), (3) la construction manuelle de cinq formules propositionnelles par constructeurs, (4) le parsing de la même syntaxe infixée via `PlParser`, (5) une base de croyances `PlBeliefSet` de quatre formules — dont vous montrerez qu'elle est *involontairement* inconsistante. Trois exercices closent le notebook, du DNF à la conséquence logique via `SimplePlReasoner`. Le fil rouge : **le même arbre de formule se construit par l'API C# ou se lit par le DSL texte** — deux portes, un AST.",,,,,,,,9f56a79b57e068bb,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,m51407,markdown,fr,edb436257d7d4f6c,"## Comment Tweety tourne en .NET (sans JVM) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,m51407,markdown,fr,edb436257d7d4f6c,"## Comment Tweety tourne en .NET (sans JVM) Tweety est une bibliotheque **Java**. Pour l'utiliser depuis C#, on recompile son bytecode Java en **bytecode .NET** grace a [IKVM](https://github.com/ikvm-revived/ikvm) : @@ -4675,17 +4675,17 @@ La cellule suivante configure ce runtime - **a executer avant toute utilisation **Ce que « tzdb=True » confirme** : la sortie du setup affiche `IKVM 8.15.0 pret (home=ikvm-home-8.15.0-win-x64, tzdb=True)` — la base de données des fuseaux horaires IANA est embarquée et indexée, signe que la couche d'exécution Java est complète et pas seulementCompilee au strict minimum. Ce détail compte pour Tweety : certaines fonctionnalités des librairies Java (sérialisation, localisation) exigent des ressources embarquées que IKVM doit exposer. Le pont n'est pas gratuit pour autant : chaque appel traverse la frontière CLR/JVM — invisible sur des formules unitaires comme ici, mais à garder en tête avant de lancer un solveur sur des milliers d'instances.",,,,,,,,edb436257d7d4f6c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,m74154,markdown,fr,d822a6d1b06a3e2c,"### 1. Configuration du runtime IKVM +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,m74154,markdown,fr,d822a6d1b06a3e2c,"### 1. Configuration du runtime IKVM > Cette cellule restaure les paquets NuGet IKVM et assemble le home IKVM. ~30-60 s la première fois. **Lecture de la sortie committée** : la ligne `IKVM 8.15.0 pret (home=ikvm-home-8.15.0-win-x64, tzdb=True)` est le signal de santé du runtime — version résolue, domicile d'exécution dédié (`ikvm-home-8.15.0-win-x64`, ce qui évite les collisions entre versions cohabitantes), fuseaux disponibles. C'est la première chose à vérifier quand une cellule Tweety échoue : un IKVM à moitié restauré produit des erreurs trompeuses (types introuvables) qui n'ont rien à voir avec votre logique.",,,,,,,,d822a6d1b06a3e2c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,c23932,code,fr,04a60793720d6329,"#r ""nuget: IKVM, 8.15.0"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,c23932,code,fr,04a60793720d6329,"#r ""nuget: IKVM, 8.15.0"" #r ""nuget: IKVM.Image, 8.15.0"" #r ""nuget: IKVM.Image.runtime.win-x64, 8.15.0"" ",,,,,,,,04a60793720d6329,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,c41366,code,fr,3884e03b0d199ba7,"using System.IO; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,c41366,code,fr,3884e03b0d199ba7,"using System.IO; string ikvmVer = ""8.15.0"", ikvmRid = ""win-x64""; string nugetRoot = Environment.GetEnvironmentVariable(""NUGET_PACKAGES"") @@ -4717,29 +4717,29 @@ AppContext.SetData(""IKVM.Home"", ikvmHome); bool tzdbOk = File.Exists(Path.Combine(ikvmHome, ""lib"", ""tzdb.dat"")); Console.WriteLine($""IKVM 8.15.0 pret (home=ikvm-home-{ikvmVer}-{ikvmRid}, tzdb={tzdbOk})""); ",,,,,,,,3884e03b0d199ba7,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,m74269,markdown,fr,5b346164956cf5e2,"### 2. Chargement de la DLL Tweety +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,m74269,markdown,fr,5b346164956cf5e2,"### 2. Chargement de la DLL Tweety On reference la DLL recompilee. Le cluster `pl` expose les espaces de noms `org.tweetyproject.logics.pl.syntax`, `org.tweetyproject.logics.pl.parser`, etc. **Pourquoi la cellule suivante vérifie ce que `#r` ne dit pas** : le commentaire du code invoque le constat #5039 — en .NET Interactive, la directive `#r` est **silencieuse par défaut** : elle n'affiche ni succès ni échec de chargement. Une référence cassée (chemin faux, DLL absente) ne se manifeste qu'à la première utilisation, parfois plusieurs cellules plus loin, avec un message d'erreur éloigné de la cause. D'où la cellule de vérification explicite : la sortie `Tweety (IKVM) reference chargee : org.tweetyproject.tweety-pl v1.30.0.0 (7,0 Mo)` prouve que l'assemblage est présent **et lisible** — vérifier tôt plutôt que diagnostiquer tard.",,,,,,,,5b346164956cf5e2,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,c1036,code,fr,b8acd74bc68683b4,"#r ""org.tweetyproject.tweety-pl.dll"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,c1036,code,fr,b8acd74bc68683b4,"#r ""org.tweetyproject.tweety-pl.dll"" ",,,,,,,,b8acd74bc68683b4,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,fc526651,code,fr,b44783029e4035af,"// Constat 3 (#5039) : la directive #r est silencieuse par defaut en .NET Interactive. +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,fc526651,code,fr,b44783029e4035af,"// Constat 3 (#5039) : la directive #r est silencieuse par defaut en .NET Interactive. // On verifie que la DLL IKVM/Tweety referencee est bien presente et lisible (metadata). using System.Reflection; var tweetyDll = ""org.tweetyproject.tweety-pl.dll""; var an = AssemblyName.GetAssemblyName(tweetyDll); Console.WriteLine($""Tweety (IKVM) reference chargee : {an.Name} v{an.Version} ({new FileInfo(tweetyDll).Length / 1024 / 1024:F1} Mo)."");",,,,,,,,b44783029e4035af,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,m58656,markdown,fr,92e4fcae69436d5a,"### 3. Logique propositionnelle - construction manuelle de formules +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,m58656,markdown,fr,92e4fcae69436d5a,"### 3. Logique propositionnelle - construction manuelle de formules On construit des formules comme dans le notebook Python, via l'API des classes `Proposition`, `Negation`, `Conjunction`, `Disjunction`, `Implication`. **Lecture des cinq constructions committées** : la sortie affiche le round-trip `saisie → toString()` — `a`, `!b`, `a&&!c`, `a||b`, `(a=>b)`. Deux observations. D'abord le mécanisme : en C#, `&&` et `||` **ne sont pas surchargeables** — les formules se construisent donc par constructeurs explicites (`new Negation(b)`, `new Conjunction(a, new Negation(c))`, `new Disjunction(a, b)`, `new Implication(a, b)`), et c'est le `toString()` de Tweety qui restitue la syntaxe infixée. Ensuite la normalisation : l'implication seule garde ses parenthèses (`(a=>b)`) — la précédence de `=>` étant la plus faible, Tweety les conserve par sécurité ; une conjonction au sein d'une conjon n'aurait pas besoin. Ces cinq formules forment l'alphabet structuré du notebook : chaque construction ultérieure (parse, KB, requêtes) les réutilise.",,,,,,,,92e4fcae69436d5a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,c16522,code,fr,b2a9274171fc5ca6,"using org.tweetyproject.logics.pl.syntax; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,c16522,code,fr,b2a9274171fc5ca6,"using org.tweetyproject.logics.pl.syntax; var a = new Proposition(""a""); var b = new Proposition(""b""); @@ -4757,14 +4757,14 @@ Console.WriteLine($""a && !c = {f3}""); Console.WriteLine($""a || b = {f4}""); Console.WriteLine($""a => b = {f5}""); ",,,,,,,,b2a9274171fc5ca6,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,m24048,markdown,fr,ccd4476b37d2dcf8,"### 4. Parsing de formules avec `PlParser` +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,m24048,markdown,fr,ccd4476b37d2dcf8,"### 4. Parsing de formules avec `PlParser` Le `PlParser` lit des formules depuis une chaîne : `!` (negation), `&&` (conjonction), `||` (disjonction), `=>` (implication), `<=>` (equivalence), `^^` (XOR). **Lecture du round-trip du parseur** : `(a || b) && !c` saisie avec espaces et majuscules de lisibilité ressort `(a||b)&&!c` — le parseur produit **exactement le même AST** que la construction manuelle de la section précédente (`new Conjunction(new Disjunction(a,b), new Negation(c))`), seul le rendu textuel diffère. C'est la démonstration qu'il existe deux portes d'entrée vers le même objet : l'API C# typée (verrue : verbeuse) et le DSL texte (concis mais faillible — une parenthèse oubliée devient une exception au lieu d'une erreur de compilation). La seconde ligne introduit l'opérateur `a^^b` : le **XOR exclusif**, signature syntaxique propre à Tweety (`^^`), que la logique propositionnelle classique exprime sinon par `(a||b)&&!(a&&b)`. Retenez la règle pratique : constructions manuelles pour les exemples pédagogiques, parseur pour tout ce qui vient d'une source texte (fichier, saisie utilisateur).",,,,,,,,ccd4476b37d2dcf8,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,c54393,code,fr,a5b24a247d2505ad,"var parser = new org.tweetyproject.logics.pl.parser.PlParser(); +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,c54393,code,fr,a5b24a247d2505ad,"var parser = new org.tweetyproject.logics.pl.parser.PlParser(); var fParsed = parser.parseFormula(""(a || b) && !c""); Console.WriteLine($""Parse de '(a || b) && !c' = {fParsed}""); @@ -4772,7 +4772,7 @@ Console.WriteLine($""Parse de '(a || b) && !c' = {fParsed}""); var fXor = parser.parseFormula(""a ^^ b""); Console.WriteLine($""XOR 'a ^^ b' = {fXor}""); ",,,,,,,,a5b24a247d2505ad,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,m95461,markdown,fr,df8b7b7d768efa57,"### 5. Base de croyances (`PlBeliefSet`) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,m95461,markdown,fr,df8b7b7d768efa57,"### 5. Base de croyances (`PlBeliefSet`) Une `PlBeliefSet` est un ensemble de formules (base de connaissances). On reproduit la KB du notebook Python. **Note d'API** : IKVM expose les méthodes Java en minuscules @@ -4780,7 +4780,7 @@ du notebook Python. **Note d'API** : IKVM expose les méthodes Java en minuscule **Lecture de la KB committée — et son piège** : la sortie affiche `KB = { a&&!c, (a=>b), a, !b }`, quatre formules. Regardez-la de près : elle est **inconsistante**, et probablement à l'insu de l'auteur. De `a` et `(a=>b)` le modus ponens tire `b` ; or `!b` est présent — la base affirme `b` et `non-b` à la fois. Ce n'est pas un bug du code mais une propriété logique de la base : en logique classique, une KB inconsistante entraîne *n'importe quelle* formule (*ex falso quodlibet*). C'est précisément le problème que Tweety-4 (révision de croyances) et Tweety-3 (mesure d'inconsistance) outillent : détecter, mesurer, réparer. Notez aussi l'ordre d'affichage `{ a&&!c, (a=>b), a, !b }` — celui de l'insertion, un `PlBeliefSet` est un ensemble, pas une séquence : aucune sémantique d'ordre à lui prêter.",,,,,,,,df8b7b7d768efa57,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,c59450,code,fr,17df0deb21cbd431,"using org.tweetyproject.logics.pl.syntax; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,c59450,code,fr,17df0deb21cbd431,"using org.tweetyproject.logics.pl.syntax; var kb = new PlBeliefSet(); var p = new org.tweetyproject.logics.pl.parser.PlParser(); @@ -4792,7 +4792,7 @@ kb.add(p.parseFormula(""a => b"")); Console.WriteLine($""Base de croyances KB = {kb}""); Console.WriteLine($""Nombre de formules : {kb.size()}""); ",,,,,,,,17df0deb21cbd431,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,m62216,markdown,fr,ea3cda6394535e5a,"## Conclusion +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,m62216,markdown,fr,ea3cda6394535e5a,"## Conclusion Ce notebook demontre le **port .NET fonctionnel** de Tweety pour la logique propositionnelle : @@ -4816,20 +4816,20 @@ Reprenez ceux du notebook Python, adaptes a l'API C# (méthodes Java minuscules) --- -**Note de parite cross-langage** (EPIC #4956) : Le jumeau Python de ce notebook (voir `Tweety-2-Basic-Logics.ipynb`) utilise **jpype** pour demarrer une JVM in-process et appeler directement les classes Java de Tweety. Ce notebook C# utilise **IKVM** pour transpiler statiquement le bytecode Java de Tweety en DLL .NET native (7 Mo charges a l'init, voir cellule 7). Les deux strategies donnent acces au meme API Tweety. Particularite : ce notebook utilise le **vrai outil SOTA** (IKVM recompilation), contrairement a certains jumeaux Tweety-6/8 (cf PR #7913 c.736) qui reimplementaient Monte-Carlo from-scratch en BCL .NET suite a une DLL IKVM defectueuse. Audit c.739 (2026-07-22) : 0 doc-honesty finding corrigible des deux cotes. +**Note de parite cross-langage** (EPIC #4956) : Le jumeau Python de ce notebook (voir `Tweety-02-Basic-Logics-Python.ipynb`) utilise **jpype** pour demarrer une JVM in-process et appeler directement les classes Java de Tweety. Ce notebook C# utilise **IKVM** pour transpiler statiquement le bytecode Java de Tweety en DLL .NET native (7 Mo charges a l'init, voir cellule 7). Les deux strategies donnent acces au meme API Tweety. Particularite : ce notebook utilise le **vrai outil SOTA** (IKVM recompilation), contrairement a certains jumeaux Tweety-6/8 (cf PR #7913 c.736) qui reimplementaient Monte-Carlo from-scratch en BCL .NET suite a une DLL IKVM defectueuse. Audit c.739 (2026-07-22) : 0 doc-honesty finding corrigible des deux cotes. **Les chiffres du parcours** : un runtime IKVM 8.15.0 vérifié sain (`tzdb=True`), une DLL `org.tweetyproject.tweety-pl` v1.30.0.0 de 7,0 Mo chargée et lue, cinq constructions manuelles, deux parses round-trip, une KB de quatre formules — involontairement inconsistante, comme la lecture de la section 5 l'a établi. La chaîne .NET est complète : de la restauration NuGet à la requête logique, chaque maillon a sa preuve d'exécution committée. Les exercices suivants font franchir le dernier palier : de la *construction* de formules à l'*interrogation* d'une base.",,,,,,,,ea3cda6394535e5a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,c30432,code,fr,33959189c5233fc4,"// Exercice 1 : Construisez la formule (a => b) && (b => a) et affichez sa forme DNF. +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,c30432,code,fr,33959189c5233fc4,"// Exercice 1 : Construisez la formule (a => b) && (b => a) et affichez sa forme DNF. // Indice : PlParser + .toNnf() ou construction manuelle. // TODO etudiant : completez ici Console.WriteLine(""Exercice 1 a completer""); ",,,,,,,,33959189c5233fc4,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,c52534,code,fr,c13c5b878218c66c,"// Exercice 2 : Parsez une KB de 4 formules et affichez sa taille + contenu. +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,c52534,code,fr,c13c5b878218c66c,"// Exercice 2 : Parsez une KB de 4 formules et affichez sa taille + contenu. // TODO etudiant : completez ici Console.WriteLine(""Exercice 2 a completer""); ",,,,,,,,c13c5b878218c66c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,b9717ab2984e,markdown,fr,33fb0cbc8f645949,"### Exercice 3 : Conséquence logique via SimplePlReasoner +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,b9717ab2984e,markdown,fr,33fb0cbc8f645949,"### Exercice 3 : Conséquence logique via SimplePlReasoner **Progression pédagogique** : les exercices 1 et 2 ont introduit `PlParser` (parsing de formules) et `PlBeliefSet` (base de croyances). Cet exercice ajoute le **raisonneur** : etant donne une KB, determiner si une formule est consequence logique (model-theoretic entailment). @@ -4839,7 +4839,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,b9717ab29 **Critère de validation détaillé** : la question posée est « la formule `c` est-elle conséquence de `KB = {a, a=>b, b=>c}` ? » — la réponse attendue est **oui**, par double modus ponens : `a` avec `a=>b` donne `b`, puis `b` avec `b=>c` donne `c`. Concrètement, `SimplePlReasoner.query(kb, f)` parcourt les interpretations et vérifie que chaque modèle de la KB satisfait `f` ; sur une KB de trois formules à trois propositions, l'espace est de 2³ = 8 interpretations — exhaustif et instantané. L'erreur classique à éviter : conclure « non » parce que `c` n'est pas *syntaxiquement* dans la KB — la conséquence est *sémantique* (vérité dans tous les modèles), pas de l'appartenance. Test de bord utile en passant : `query(kb, new Negation(new Proposition(""a"")))` doit retourner faux (a est dans la KB).",,,,,,,,33fb0cbc8f645949,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,6c64944b1d4d,code,fr,576e4f9de53fe3d5,"// Exercice 3 : Conséquence logique via SimplePlReasoner. +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,6c64944b1d4d,code,fr,576e4f9de53fe3d5,"// Exercice 3 : Conséquence logique via SimplePlReasoner. // // Paysage : KB propositionnelle = { a, a => b, b => c }. // Question : la formule `c` est-elle consequence logique de KB ? @@ -4876,15 +4876,15 @@ Console.WriteLine(""Exercice 3 a completer — SimplePlReasoner.query(KB, c) sur // // Variante : tester aussi KB entail (a & b) → false (KB ne dit pas que a et b sont vrais simultanement). ",,,,,,,,576e4f9de53fe3d5,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,m63273,markdown,fr,7ce1d6913fc4f168,"# Tweety C# / IKVM - Sémantique propositionnelle : mondes possibles et raisonnement +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,m63273,markdown,fr,7ce1d6913fc4f168,"# Tweety C# / IKVM - Sémantique propositionnelle : mondes possibles et raisonnement -**Navigation** : [<- Tweety-2-Basic-Logics](Tweety-2-Basic-Logics-Csharp.ipynb) | [Index serie](Tweety-1-Setup.ipynb) | [Tweety-3-Advanced-Logics ->](Tweety-3-Advanced-Logics.ipynb) +**Navigation** : [<- Tweety-2-Basic-Logics](Tweety-02-Basic-Logics-CSharp.ipynb) | [Index serie](Tweety-01-Setup-Python.ipynb) | [Tweety-3-Advanced-Logics ->](Tweety-3-Advanced-Logics.ipynb) > Ce notebook est le **second volet C# / .NET** de la serie Tweety. Il poursuit -> [Tweety-2-Basic-Logics-Csharp](Tweety-2-Basic-Logics-Csharp.ipynb) (construction de formules, parsing, base +> [Tweety-2-Basic-Logics-Csharp](Tweety-02-Basic-Logics-CSharp.ipynb) (construction de formules, parsing, base > de croyances) en abordant la **sémantique** : mondes possibles, satisfaction, et raisonnement > (entaînement). Comme le pilote, il execute les classes Tweety **recompilees en bytecode .NET via -> IKVM** - aucune JVM au runtime. Voir [le notebook Python](Tweety-2-Basic-Logics.ipynb) pour le contexte théorique complet. +> IKVM** - aucune JVM au runtime. Voir [le notebook Python](Tweety-02-Basic-Logics-Python.ipynb) pour le contexte théorique complet. ## Objectifs pedagogiques @@ -4895,24 +4895,24 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,m63273,mark ## Prerequis -- [Tweety-2-Basic-Logics-Csharp](Tweety-2-Basic-Logics-Csharp.ipynb) (construction de formules, `PlBeliefSet`, `PlParser`) +- [Tweety-2-Basic-Logics-Csharp](Tweety-02-Basic-Logics-CSharp.ipynb) (construction de formules, `PlBeliefSet`, `PlParser`) - Notions de logique propositionnelle : valuation, modèle, consequence logique > **Rappel d'API (C# / IKVM)** : les classes Java Tweety sont exposees via IKVM avec la convention > Java minuscule (`.add()`, `.size()`, `.hasNext()`...). Le `PlParser.parseFormula()` retourne le type > de base `commons.Formula` ; on le **cast en `PlFormula`** pour les méthodes sémantiques. ",,,,,,,,7ce1d6913fc4f168,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,m51083,markdown,fr,943b95a32a177e0e,"## 1. Configuration du runtime IKVM +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,m51083,markdown,fr,943b95a32a177e0e,"## 1. Configuration du runtime IKVM -> Identique au [pilote](Tweety-2-Basic-Logics-Csharp.ipynb) : on restaure les paquets NuGet IKVM, on +> Identique au [pilote](Tweety-02-Basic-Logics-CSharp.ipynb) : on restaure les paquets NuGet IKVM, on > assemble le home IKVM (motrice d'exécution de la JVM en .NET), puis on charge la DLL Tweety. A executer > en premier. ~30-60 s la première fois. ",,,,,,,,943b95a32a177e0e,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,c390571,code,fr,04a60793720d6329,"#r ""nuget: IKVM, 8.15.0"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,c390571,code,fr,04a60793720d6329,"#r ""nuget: IKVM, 8.15.0"" #r ""nuget: IKVM.Image, 8.15.0"" #r ""nuget: IKVM.Image.runtime.win-x64, 8.15.0"" ",,,,,,,,04a60793720d6329,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,c317339,code,fr,7e343b51721af167,"using System.IO; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,c317339,code,fr,7e343b51721af167,"using System.IO; string ikvmVer = ""8.15.0"", ikvmRid = ""win-x64""; string nugetRoot = Environment.GetEnvironmentVariable(""NUGET_PACKAGES"") ?? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "".nuget"", ""packages""); @@ -4943,15 +4943,15 @@ AppContext.SetData(""IKVM.Home"", ikvmHome); bool tzdbOk = File.Exists(Path.Combine(ikvmHome, ""lib"", ""tzdb.dat"")); Console.WriteLine($""IKVM 8.15.0 pret (home=ikvm-home-{ikvmVer}-{ikvmRid}, tzdb={tzdbOk})""); ",,,,,,,,7e343b51721af167,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,c603247,code,fr,b8acd74bc68683b4,"#r ""org.tweetyproject.tweety-pl.dll"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,c603247,code,fr,b8acd74bc68683b4,"#r ""org.tweetyproject.tweety-pl.dll"" ",,,,,,,,b8acd74bc68683b4,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,88646a94,code,fr,b44783029e4035af,"// Constat 3 (#5039) : la directive #r est silencieuse par defaut en .NET Interactive. +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,88646a94,code,fr,b44783029e4035af,"// Constat 3 (#5039) : la directive #r est silencieuse par defaut en .NET Interactive. // On verifie que la DLL IKVM/Tweety referencee est bien presente et lisible (metadata). using System.Reflection; var tweetyDll = ""org.tweetyproject.tweety-pl.dll""; var an = AssemblyName.GetAssemblyName(tweetyDll); Console.WriteLine($""Tweety (IKVM) reference chargee : {an.Name} v{an.Version} ({new FileInfo(tweetyDll).Length / 1024 / 1024:F1} Mo)."");",,,,,,,,b44783029e4035af,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,m22726,markdown,fr,ee8332d7f35006b3,"## 2. Signature et mondes possibles +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,m22726,markdown,fr,ee8332d7f35006b3,"## 2. Signature et mondes possibles Une **signature** propositionnelle (`PlSignature`) est l'ensemble des atomes (propositions) du langage. Pour *n* atomes, il existe **2^n mondes possibles** (valuations) : chaque atome @@ -4962,7 +4962,7 @@ Le `PossibleWorldIterator` enumerera automatiquement tous les mondes d'une signa > Exemple : signature `{a, b}` -> 4 mondes : `[]` (aucun), `[a]`, `[b]`, `[a, b]`. ",,,,,,,,ee8332d7f35006b3,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,c418284,code,fr,a50b0707f285d7bb,"using org.tweetyproject.logics.pl.syntax; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,c418284,code,fr,a50b0707f285d7bb,"using org.tweetyproject.logics.pl.syntax; using org.tweetyproject.logics.pl.semantics; using org.tweetyproject.logics.pl.parser; @@ -4984,14 +4984,14 @@ while (it.hasNext()) } Console.WriteLine($""=> {n} mondes pour 2 atomes (2^2 = 4).""); ",,,,,,,,a50b0707f285d7bb,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,m33502,markdown,fr,43162f1b1e891ee4,"### Interpretation : mondes possibles et sémantique +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,m33502,markdown,fr,43162f1b1e891ee4,"### Interpretation : mondes possibles et sémantique Chaque monde correspond a une **interpretation** (valuation de verite) : `{a}` signifie *a est vrai, b est faux*. Le monde vide `[]` = tous les atomes faux. L'itération couvre exhaustivement les **2^n cas** de la table de verite. Cette enumeration est la base de la **sémantique de Tarski** : une formule est vraie dans un monde si sa valuation la satisfait. ",,,,,,,,43162f1b1e891ee4,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,m66831,markdown,fr,eca6a81a85285cd4,"## 3. Satisfaction : un monde est-il modèle d'une formule ? +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,m66831,markdown,fr,eca6a81a85285cd4,"## 3. Satisfaction : un monde est-il modèle d'une formule ? La méthode **`PossibleWorld.satisfies(PlFormula)`** repond : ce monde rend-il la formule vraie ? Une formule est **satisfiable** s'il existe au moins un monde qui la satisfait ; elle @@ -5002,7 +5002,7 @@ aucun monde ne la satisfait. > la satisfaction. Notez le **cast `(PlFormula)`** : `parseFormula` retourne le type generique > `Formula`, que les méthodes sémantiques precisent en `PlFormula`. ",,,,,,,,eca6a81a85285cd4,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,c338411,code,fr,f56e24494c5c620c,"using org.tweetyproject.logics.pl.syntax; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,c338411,code,fr,f56e24494c5c620c,"using org.tweetyproject.logics.pl.syntax; using org.tweetyproject.logics.pl.semantics; using org.tweetyproject.logics.pl.parser; @@ -5025,13 +5025,13 @@ Console.WriteLine($"" w satisfait a && b = {w.satisfies(fAND)}""); // faux (b Console.WriteLine($"" w satisfait a || b = {w.satisfies(fOR)}""); // vrai (a vrai) Console.WriteLine($"" w satisfait a => b = {w.satisfies(fIMP)}""); // faux (a vrai, b faux) ",,,,,,,,f56e24494c5c620c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,m5545,markdown,fr,fb42e2664860572f,"### Representation canonique d'un monde +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,m5545,markdown,fr,fb42e2664860572f,"### Representation canonique d'un monde La méthode **`getCompleteConjunction(PlSignature)`** produit la conjonction complete representant un monde dans une signature donnee (un litteral positif par atome vrai, negatif par atome faux). C'est la **forme normale disjonctive** canonique d'une valuation. ",,,,,,,,fb42e2664860572f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,c77422,code,fr,31afeb9b391defe2,"using org.tweetyproject.logics.pl.syntax; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,c77422,code,fr,31afeb9b391defe2,"using org.tweetyproject.logics.pl.syntax; using org.tweetyproject.logics.pl.semantics; using org.tweetyproject.logics.pl.parser; @@ -5048,7 +5048,7 @@ w.add(new Proposition(""c"")); Console.WriteLine($""Monde = {w}""); Console.WriteLine($""Conjonction complete dans {{a,b,c}} = {w.getCompleteConjunction(sig)}""); ",,,,,,,,31afeb9b391defe2,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,m88739,markdown,fr,068b14aa84506cb1,"## 4. Raisonnement : consequence logique (entaînement) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,m88739,markdown,fr,068b14aa84506cb1,"## 4. Raisonnement : consequence logique (entaînement) Enumerer les mondes est exact mais couteux (2^n). Pour le **raisonnement** - une base de croyances `KB` entaîne-t-elle une formule `phi` (note `KB |= phi`) ? - on delegue a un @@ -5059,7 +5059,7 @@ verifie cela sans enumerer exhaustivement. La méthode retourne un booléen. > Exemple : avec `KB = { a, a => b }`, on a `KB |= b` (modus ponens) mais `KB |= c` est faux. ",,,,,,,,068b14aa84506cb1,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,c374005,code,fr,0c672c79e5f429da,"using org.tweetyproject.logics.pl.syntax; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,c374005,code,fr,0c672c79e5f429da,"using org.tweetyproject.logics.pl.syntax; using org.tweetyproject.logics.pl.reasoner; using org.tweetyproject.logics.pl.parser; @@ -5075,7 +5075,7 @@ Console.WriteLine($""KB |= c ? {r.query(kb, (PlFormula)p.parseFormula(""c"")) Console.WriteLine($""KB |= a||c ? {r.query(kb, (PlFormula)p.parseFormula(""a || c""))}""); // vrai : a vrai => disjonction Console.WriteLine($""KB |= !a ? {r.query(kb, (PlFormula)p.parseFormula(""!a""))}""); // faux : KB contient a ",,,,,,,,0c672c79e5f429da,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,m72867,markdown,fr,39c498be66a73d3f,"### Interpretation : les deux faces de la verite +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,m72867,markdown,fr,39c498be66a73d3f,"### Interpretation : les deux faces de la verite Deux approches equivalentes pour `KB |= phi` : - **Sémantique** (enumerateur) : parcourir tous les modèles de KB et verifier que chacun satisfait `phi`. @@ -5085,13 +5085,13 @@ Deux approches equivalentes pour `KB |= phi` : Le `SatReasoner` emploie la seconde (DPLL/CDCL via Sat4j), bien plus efficace que l'enumeration des 2^n mondes des que *n* grandit. C'est le coeur des moteurs modernes de raisonnement. ",,,,,,,,39c498be66a73d3f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,m64411,markdown,fr,b3c9f4a6a642841a,"## Exemple guide : modèles d'une base de croyances +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,m64411,markdown,fr,b3c9f4a6a642841a,"## Exemple guide : modèles d'une base de croyances Croisons les deux approches : trouvons **les mondes qui satisfont toute la KB** (ses modèles). Un monde est modèle de KB s'il satisfait chaque formule. `PossibleWorld.satisfies` accepte directement un `PlBeliefSet`. ",,,,,,,,b3c9f4a6a642841a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,c629890,code,fr,2676dc374e5a0249,"using org.tweetyproject.logics.pl.syntax; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,c629890,code,fr,2676dc374e5a0249,"using org.tweetyproject.logics.pl.syntax; using org.tweetyproject.logics.pl.semantics; using org.tweetyproject.logics.pl.parser; @@ -5121,7 +5121,7 @@ while (it.hasNext()) } Console.WriteLine($""=> {models} modele(s) sur 8.""); ",,,,,,,,2676dc374e5a0249,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,m96153,markdown,fr,bee94854aacc34ad,"### Interpretation +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,m96153,markdown,fr,bee94854aacc34ad,"### Interpretation KB impose `c` des que `a` est vrai (chainage `a => b => c`). Les modèles respectent donc l'ordre : si `a` est present, `b` et `c` doivent l'etre aussi. Verifiez sur la liste : aucun @@ -5131,9 +5131,9 @@ des implications, vue semantiquement. > On retrouve ici le lien profond : la consequence logique `KB |= phi` equivaut a dire que > `phi` est vraie dans **tous** les modèles de KB - c'est le **theorem de Tarski**. ",,,,,,,,bee94854aacc34ad,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,m34593,markdown,fr,ad4e1c0eaaa79327,"## Conclusion +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,m34593,markdown,fr,ad4e1c0eaaa79327,"## Conclusion -Ce notebook complete le pilote [Tweety-2-Basic-Logics-Csharp](Tweety-2-Basic-Logics-Csharp.ipynb) +Ce notebook complete le pilote [Tweety-2-Basic-Logics-Csharp](Tweety-02-Basic-Logics-CSharp.ipynb) avec la **sémantique** de la logique propositionnelle en .NET natif : | Concept | Classe Tweety (C#) | Méthode | Statut | @@ -5158,10 +5158,10 @@ logiques markoviens (notebook 10). ### Exercices -Adaptez ceux du [notebook Python](Tweety-2-Basic-Logics.ipynb) a l'API C# (cast `PlFormula`, méthodes +Adaptez ceux du [notebook Python](Tweety-02-Basic-Logics-Python.ipynb) a l'API C# (cast `PlFormula`, méthodes Java minuscules). Rappel : les stubs doivent s'executer sans erreur (jamais `raise`/`assert`/`1/0`). ",,,,,,,,ad4e1c0eaaa79327,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,m45853,markdown,fr,1e63dcd1d7b413aa,"#### Exercice 1 : Tautologie, contradiction ou contingence ? +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,m45853,markdown,fr,1e63dcd1d7b413aa,"#### Exercice 1 : Tautologie, contradiction ou contingence ? Ecrivez une fonction qui, etant donne une formule et une signature, determine si elle est **tautologie** (tous les mondes la satisfont), **contradiction** (aucun), ou **contingente**. @@ -5170,7 +5170,7 @@ Testez sur `a || !a`, `a && !a`, et `a => b`. **Indice** : enumerer les mondes via `PossibleWorldIterator`, compter ceux qui satisfont la formule, comparer au total `2^n`. ",,,,,,,,1e63dcd1d7b413aa,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,c236170,code,fr,acf4e0cd25df3c7d,"using org.tweetyproject.logics.pl.syntax; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,c236170,code,fr,acf4e0cd25df3c7d,"using org.tweetyproject.logics.pl.syntax; using org.tweetyproject.logics.pl.semantics; using org.tweetyproject.logics.pl.parser; @@ -5191,7 +5191,7 @@ Console.WriteLine(Classify(p, sig, ""a || !a"")); // attendu : tautologie Console.WriteLine(Classify(p, sig, ""a && !a"")); // attendu : contradiction Console.WriteLine(Classify(p, sig, ""a => b"")); // attendu : contingente ",,,,,,,,acf4e0cd25df3c7d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,m84967,markdown,fr,2428e634713ed129,"#### Exercice 2 : Equivalence logique via l'entaînement +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,m84967,markdown,fr,2428e634713ed129,"#### Exercice 2 : Equivalence logique via l'entaînement Deux formules `f1` et `f2` sont **logiquement equivalentes** ssi `f1 |= f2` ET `f2 |= f1`. Verifiez que `a => b` est equivalent a `!a || b`, et que `!(a && b)` est equivalent a `!a || !b` @@ -5200,7 +5200,7 @@ Verifiez que `a => b` est equivalent a `!a || b`, et que `!(a && b)` est equival **Indice** : construire un `PlBeliefSet` contenant `f1`, puis `SatReasoner.query(kb, f2)` ; recommencer en inversant. Equivalent ssi les deux sens sont vrais. ",,,,,,,,2428e634713ed129,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,c417912,code,fr,13d150fa9f2baba4,"using org.tweetyproject.logics.pl.syntax; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,c417912,code,fr,13d150fa9f2baba4,"using org.tweetyproject.logics.pl.syntax; using org.tweetyproject.logics.pl.reasoner; using org.tweetyproject.logics.pl.parser; @@ -5219,7 +5219,7 @@ Console.WriteLine(AreEquivalent(p, ""a => b"", ""!a || b"")); // attendu Console.WriteLine(AreEquivalent(p, ""!(a && b)"", ""!a || !b"")); // attendu : True (De Morgan) Console.WriteLine(AreEquivalent(p, ""a => b"", ""b => a"")); // attendu : False ",,,,,,,,13d150fa9f2baba4,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,m18873,markdown,fr,5ff212ee818cfe17,"#### Exercice 3 : Deduire une consequence cachee +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,m18873,markdown,fr,5ff212ee818cfe17,"#### Exercice 3 : Deduire une consequence cachee Soit la base `KB = { (a || b) => c, c => d, a }`. Quelles propositions parmi `{a, b, c, d, e}` sont entaînees par KB ? Utilisez `SatReasoner.query` pour tester chaque proposition et afficher celles @@ -5229,7 +5229,7 @@ dans aucune premisse contenant directement `a` ? **Indice** : `a` vrai + `(a||b)=>c` donne `c` vrai, puis `c=>d` donne `d` vrai. C'est le **chainage avant** des implications - verifiez-le machinelement. ",,,,,,,,5ff212ee818cfe17,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,c539956,code,fr,80918ae76bb29aac,"using org.tweetyproject.logics.pl.syntax; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,c539956,code,fr,80918ae76bb29aac,"using org.tweetyproject.logics.pl.syntax; using org.tweetyproject.logics.pl.reasoner; using org.tweetyproject.logics.pl.parser; @@ -5246,22 +5246,22 @@ foreach (var atom in new[]{ ""a"", ""b"", ""c"", ""d"", ""e"" }) Console.WriteLine($""KB |= {atom} ? (Exercice 3 a completer)""); } ",,,,,,,,80918ae76bb29aac,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,m328317,markdown,fr,6d34c96156d32afe,"# Tweety-2c — Logique du premier ordre en C#/.NET (port natif IKVM) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,m328317,markdown,fr,6d34c96156d32afe,"# Tweety-2c — Logique du premier ordre en C#/.NET (port natif IKVM) > **Série Tweety — port C#/.NET natif (EPIC [#4667](https://github.com/jsboige/CoursIA/issues/4667)).** > Ce notebook exploite la librairie Java [TweetyProject](https://tweetyproject.org/) **sans JVM** : les modules > sont compilés vers du bytecode Java puis exécutés sur le runtime .NET via [IKVM](https://github.com/ikvm-refined/ikvm). > Aucun `java` n'est requis à l'exécution — tout se passe dans le kernel `.net-csharp`. -Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-2-Basic-Logics-Csharp.ipynb) (logique propositionnelle) · -[Tweety-2b-Semantics-Csharp](Tweety-2b-Semantics-Csharp.ipynb) (mondes possibles, conséquence sémantique) · +Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-02-Basic-Logics-CSharp.ipynb) (logique propositionnelle) · +[Tweety-2b-Semantics-Csharp](Tweety-02b-Semantics-CSharp.ipynb) (mondes possibles, conséquence sémantique) · **Tweety-2c-FOL (ce notebook)**. --- ## Objectifs pédagogiques -La [logique propositionnelle](Tweety-2-Basic-Logics-Csharp.ipynb) raisonne sur des **propositions entières** +La [logique propositionnelle](Tweety-02-Basic-Logics-CSharp.ipynb) raisonne sur des **propositions entières** (`Man_Socrates`, `Mortal_Socrates`) reliées par connecteurs. Elle ne peut ni exprimer la **généralité** (« tous les hommes sont mortels ») ni le **lien interne** d'un énoncé (« Socrate est un homme »). @@ -5280,7 +5280,7 @@ puis **raisonner** dessus avec le raisonneur d'énumération de Tweety (`SimpleF le célèbre **syllogisme** de la mortalité de Socrate, jusqu'à la **généralisation existentielle**. ",,,,,,,,6d34c96156d32afe,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,m412865,markdown,fr,70565c93168bcb3f,"## 1 — Runtime IKVM : exécuter Tweety sur .NET +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,m412865,markdown,fr,70565c93168bcb3f,"## 1 — Runtime IKVM : exécuter Tweety sur .NET On installe le runtime IKVM (machine virtuelle Java réimplémentée en .NET) à partir des paquets NuGet, puis on pointe `IKVM.Home` vers une image fusionnée (base `any` + runtime spécifique `win-x64`). @@ -5288,12 +5288,12 @@ La librairie `org.tweetyproject.tweety-pl.dll` (compilée côté build) se charg **transitivement** le module `fol` (logique du premier ordre), aucun module supplémentaire à compiler ici. ",,,,,,,,70565c93168bcb3f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,c344536,code,fr,04a60793720d6329,"#r ""nuget: IKVM, 8.15.0"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,c344536,code,fr,04a60793720d6329,"#r ""nuget: IKVM, 8.15.0"" #r ""nuget: IKVM.Image, 8.15.0"" #r ""nuget: IKVM.Image.runtime.win-x64, 8.15.0"" ",,,,,,,,04a60793720d6329,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,c154534,code,fr,b4cada2c1c2b428b,"using System.IO; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,c154534,code,fr,b4cada2c1c2b428b,"using System.IO; string ikvmVer = ""8.15.0"", ikvmRid = ""win-x64""; string nugetRoot = Environment.GetEnvironmentVariable(""NUGET_PACKAGES"") ?? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "".nuget"", ""packages""); @@ -5321,16 +5321,16 @@ AppContext.SetData(""IKVM.Home"", ikvmHome); Console.WriteLine(""IKVM home="" + (File.Exists(Path.Combine(ikvmHome, ""lib"", ""tzdb.dat"")) ? ""OK"" : ""MISSING"")); ",,,,,,,,b4cada2c1c2b428b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,c505006,code,fr,b8acd74bc68683b4,"#r ""org.tweetyproject.tweety-pl.dll"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,c505006,code,fr,b8acd74bc68683b4,"#r ""org.tweetyproject.tweety-pl.dll"" ",,,,,,,,b8acd74bc68683b4,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,95309f07,code,fr,b44783029e4035af,"// Constat 3 (#5039) : la directive #r est silencieuse par defaut en .NET Interactive. +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,95309f07,code,fr,b44783029e4035af,"// Constat 3 (#5039) : la directive #r est silencieuse par defaut en .NET Interactive. // On verifie que la DLL IKVM/Tweety referencee est bien presente et lisible (metadata). using System.Reflection; var tweetyDll = ""org.tweetyproject.tweety-pl.dll""; var an = AssemblyName.GetAssemblyName(tweetyDll); Console.WriteLine($""Tweety (IKVM) reference chargee : {an.Name} v{an.Version} ({new FileInfo(tweetyDll).Length / 1024 / 1024:F1} Mo)."");",,,,,,,,b44783029e4035af,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,m971748,markdown,fr,86a0bebcdcf4d235,"## 2 — Signature, termes et atomes +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,m971748,markdown,fr,86a0bebcdcf4d235,"## 2 — Signature, termes et atomes Une **signature** FOL fixe le vocabulaire : quels **prédicats** (avec leur arité) et quelles **constantes** représentent les objets nommés. Les **variables** (`X`, `Y`) dénotent des objets arbitraires ; les **constantes** @@ -5343,7 +5343,7 @@ L'API C# expose les classes Java en PascalCase mais conserve **les méthodes Jav (`.add`, `.size`) — c'est la convention de port IKVM. ",,,,,,,,86a0bebcdcf4d235,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,c297868,code,fr,87e8c56eea6c3b14,"using org.tweetyproject.logics.commons.syntax; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,c297868,code,fr,87e8c56eea6c3b14,"using org.tweetyproject.logics.commons.syntax; using org.tweetyproject.logics.commons.syntax.interfaces; using org.tweetyproject.logics.fol.syntax; using org.tweetyproject.logics.fol.reasoner; @@ -5363,7 +5363,7 @@ var hommeSocrate = new FolAtom(Homme, socrate); Console.WriteLine(""Homme(Socrate) = "" + hommeSocrate); ",,,,,,,,87e8c56eea6c3b14,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,m618654,markdown,fr,4fcbbedb6e912604,"### 2.2 Atomes, prédicats et types de termes +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,m618654,markdown,fr,4fcbbedb6e912604,"### 2.2 Atomes, prédicats et types de termes `FolAtom` accepte une liste variable de termes (`Predicate`, `params Term[]`) — l'arité du prédicat doit correspondre au nombre de termes fournis. `Term` est une **interface** (`...syntax.interfaces.Term`) @@ -5372,7 +5372,7 @@ implémentée à la fois par `Variable` et `Constant` : un atome est donc polymo **Pourquoi distinguer `Variable` et `Constant` via une interface commune ?** C'est ce polymorphisme qui rend l'**unification** possible — le mécanisme au cœur du raisonnement FOL. Face à la règle `Homme(X) ⇒ Mortel(X)` et au fait `Homme(Socrate)`, le raisonneur *unifie* la variable `X` avec la constante `Socrate` : il substitue `X` partout où elle apparaît dans la règle, puis déduit `Mortel(Socrate)`. Une `Variable` est un *trou à remplir* (liée par un quantificateur, instanciée à l'unification) ; une `Constant` est un *individu figé* (`Socrate`, `Platon`). Exposer les deux derrière la même interface `Term` permet au moteur de manipuler atomes et substitutions sans distinguer les cas : c'est exactement ce que ferait un Prolog ou le raisonner de Tweety en interne. ",,,,,,,,4fcbbedb6e912604,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,c697660,code,fr,90591b59490882b3,"// Prédicat binaire : Parent(·,·) — arité 2 +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,c697660,code,fr,90591b59490882b3,"// Prédicat binaire : Parent(·,·) — arité 2 var Parent = new Predicate(""Parent"", 2); var anne = new Constant(""Anne""); var bob = new Constant(""Bob""); @@ -5385,7 +5385,7 @@ var parentAnneY = new FolAtom(Parent, anne, Y); Console.WriteLine(""Parent(Anne,Y) = "" + parentAnneY); ",,,,,,,,90591b59490882b3,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,m585777,markdown,fr,4d4be51b205aaf0d,"## 3 — Connecteurs et quantificateurs +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,m585777,markdown,fr,4d4be51b205aaf0d,"## 3 — Connecteurs et quantificateurs Les connecteurs propositionnels (`Implication`, `Conjunction`, `Disjunction`, `Negation`) s'appliquent aux formules FOL exactement comme en logique propositionnelle. La nouveauté est le **quantificateur**, @@ -5399,7 +5399,7 @@ qui lie une variable à l'intérieur d'une formule : `∀X (Homme(X) ⇒ Mortel(X))` se construit en emboîtant un `Implication` dans un `ForallQuantifiedFormula`. ",,,,,,,,4d4be51b205aaf0d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,c159435,code,fr,8a8dee45c3a0ffbe,"var Mortel = new Predicate(""Mortel"", 1); +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,c159435,code,fr,8a8dee45c3a0ffbe,"var Mortel = new Predicate(""Mortel"", 1); // Homme(X) ⇒ Mortel(X) var hommeX = new FolAtom(Homme, X); @@ -5412,14 +5412,14 @@ var tousMortels = new ForallQuantifiedFormula(impl, X); Console.WriteLine(""∀X (Homme(X)=>Mortel(X)) = "" + tousMortels); ",,,,,,,,8a8dee45c3a0ffbe,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,m908739,markdown,fr,01950e5805b052eb,"### 3.2 Existential : « il existe un mortel » +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,m908739,markdown,fr,01950e5805b052eb,"### 3.2 Existential : « il existe un mortel » `∃X Mortel(X)` ne quantifie qu'un atome. On réutilise le même atome `mortelX` (qui porte la variable `X`). **Pourquoi le quantificateur existentiel compte-t-il ?** `∃X Mortel(X)` affirme qu'**au moins un** mortel existe, *sans nommer qui*. C'est précisément ce gain d'expressiveness qui distingue la logique du premier ordre de la logique propositionnelle : en propositionnel, il faudrait énumérer `Mortel(Socrate) ∨ Mortel(Platon) ∨ …` — une disjunction finie qui ne capture jamais l'existence en général. L'existential, lui, porte sur le domaine tout entier. Deux conséquences concrètes pour le raisonnement : (1) **généralisation existentielle** — de `Mortel(Socrate)` on déduit `∃X Mortel(X)` sans connaître les autres mortels ; (2) **dualité avec le universel** (De Morgan) : `¬∀X P(X)` équivaut à `∃X ¬P(X)`, et `¬∃X P(X)` à `∀X ¬P(X)`. Le raisonneur exploite ces équivalences pour réécrire les négations et déduire des existentiels à partir d'universels. ",,,,,,,,01950e5805b052eb,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,c375540,code,fr,5d2c6b93c7de8498,"var existeMortel = new ExistsQuantifiedFormula(mortelX, X); +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,c375540,code,fr,5d2c6b93c7de8498,"var existeMortel = new ExistsQuantifiedFormula(mortelX, X); Console.WriteLine(""∃X Mortel(X) = "" + existeMortel); // Négation d'une formule quantifiée : ¬∃X Mortel(X) (""personne n'est mortel"") @@ -5427,7 +5427,7 @@ var personneMortel = new Negation(existeMortel); Console.WriteLine(""¬∃X Mortel(X) = "" + personneMortel); ",,,,,,,,5d2c6b93c7de8498,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,m633793,markdown,fr,2ab155615d5dc81f,"## 4 — Raisonnement : le syllogisme +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,m633793,markdown,fr,2ab155615d5dc81f,"## 4 — Raisonnement : le syllogisme On rassemble les axiomes dans un **ensemble de croyances** (`FolBeliefSet`, équivalent FOL du `PlBeliefSet` propositionnel) puis on interroge le raisonneur. @@ -5440,7 +5440,7 @@ interprétations possibles. C'est complet mais exponentiel — adapté à de pet > on infère `Mortel(Socrate)`. En termes de conséquence logique : **KB ⊨ Mortal(Socrates)**. ",,,,,,,,2ab155615d5dc81f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,c880179,code,fr,2b35febc1649a371,"// Base de croyances : l'axiome universel + le fait Homme(Socrate) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,c880179,code,fr,2b35febc1649a371,"// Base de croyances : l'axiome universel + le fait Homme(Socrate) var kb = new FolBeliefSet(); kb.add(tousMortels); kb.add(new FolAtom(Homme, socrate)); @@ -5453,14 +5453,14 @@ var mortelSocrate = new FolAtom(Mortel, socrate); Console.WriteLine(""\nKB ⊨ Mortel(Socrate) ? "" + r.query(kb, mortelSocrate)); ",,,,,,,,2b35febc1649a371,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,m846460,markdown,fr,4d6d834a76de646c,"### 4.1 Contrôle négatif : ce qui n'est **pas** impliqué +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,m846460,markdown,fr,4d6d834a76de646c,"### 4.1 Contrôle négatif : ce qui n'est **pas** impliqué `Platon` n'apparaît dans aucune prémisse : `Homme(Platon)` n'est ni affirmé ni inférable. Le raisonneur répond donc `false` à `KB ⊨ Mortel(Platon)` — la base est **sous-déterminée** pour Platon. Ce `false` signifie « pas conséquence logique », **pas** « conséquence logique du contraire ». ",,,,,,,,4d6d834a76de646c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,c743358,code,fr,18f43d3f3d65cb69,"var platon = new Constant(""Platon""); +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,c743358,code,fr,18f43d3f3d65cb69,"var platon = new Constant(""Platon""); var mortelPlaton = new FolAtom(Mortel, platon); Console.WriteLine(""KB ⊨ Mortel(Platon) ? "" + r.query(kb, mortelPlaton)); @@ -5468,28 +5468,28 @@ Console.WriteLine(""KB ⊨ Mortel(Platon) ? "" + r.query(kb, mortelPlaton)); Console.WriteLine(""KB ⊨ Homme(Platon) ? "" + r.query(kb, new FolAtom(Homme, platon))); ",,,,,,,,18f43d3f3d65cb69,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,m991269,markdown,fr,40594cc270dbaff9,"### 4.2 Généralisation existentielle +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,m991269,markdown,fr,40594cc270dbaff9,"### 4.2 Généralisation existentielle Si `Mortel(Socrate)` est conséquence, alors `∃X Mortel(X)` l'est aussi : il **existe** au moins un mortel (Socrate). C'est la règle d'**introduction du quantificateur existentiel**. Le raisonneur le confirme directement sur la formule quantifiée. ",,,,,,,,40594cc270dbaff9,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,c46812,code,fr,35d2a4ca17149bb6,"Console.WriteLine(""KB ⊨ ∃X Mortel(X) ? "" + r.query(kb, existeMortel)); +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,c46812,code,fr,35d2a4ca17149bb6,"Console.WriteLine(""KB ⊨ ∃X Mortel(X) ? "" + r.query(kb, existeMortel)); // Symétriquement, ∀X Mortel(X) n'est PAS impliqué : seuls les hommes connus le sont var tousMortels2 = new ForallQuantifiedFormula(mortelX, X); Console.WriteLine(""KB ⊨ ∀X Mortel(X) ? "" + r.query(kb, tousMortels2)); ",,,,,,,,35d2a4ca17149bb6,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,m359571,markdown,fr,0e35e66ed8c7138b,"### 4.3 Une KB plus riche : raisonnement sur plusieurs faits +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,m359571,markdown,fr,0e35e66ed8c7138b,"### 4.3 Une KB plus riche : raisonnement sur plusieurs faits Ajoutons un second fait `Homme(Platon)` et un prédicat `Grec`. On vérifie que le syllogisme se propage à tous les hommes connus, et qu'un énoncé mixte `∃X (Grec(X) ∧ Mortel(X))` devient conséquence dès qu'au moins un Grec mortel est dans la base. ",,,,,,,,0e35e66ed8c7138b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,c615894,code,fr,cbc365ac7b1e19b3,"var Grec = new Predicate(""Grec"", 1); +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,c615894,code,fr,cbc365ac7b1e19b3,"var Grec = new Predicate(""Grec"", 1); var kb2 = new FolBeliefSet(); kb2.add(tousMortels); // ∀X (Homme(X) => Mortel(X)) kb2.add(new FolAtom(Homme, socrate)); // Homme(Socrate) @@ -5506,7 +5506,7 @@ var existeGrecMortel = new ExistsQuantifiedFormula( Console.WriteLine(""KB2 ⊨ ∃X (Grec(X) ∧ Mortel(X)) ? "" + r.query(kb2, existeGrecMortel)); ",,,,,,,,cbc365ac7b1e19b3,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,m967528,markdown,fr,a9fb92925fbff0c2,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,m967528,markdown,fr,a9fb92925fbff0c2,"--- ## Exercices @@ -5515,14 +5515,14 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,m967528,markdown, > s'exécute donc de bout en bout même non complété. ",,,,,,,,a9fb92925fbff0c2,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,m283487,markdown,fr,5652eb4643420ad2,"### Exercice 1 — Le chat mammifère +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,m283487,markdown,fr,5652eb4643420ad2,"### Exercice 1 — Le chat mammifère Construisez programmatiquement l'axiome `∀X (Chat(X) ⇒ Mammifère(X))`, ajoutez le fait `Chat(Felix)`, puis vérifiez que `KB ⊨ Mammifère(Felix)` vaut `true`. Créez les prédicats `Chat` et `Mammifère` (arité 1) et la constante `Felix`. ",,,,,,,,5652eb4643420ad2,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,c525316,code,fr,22f3935df339aaf5,"// TODO etudiant : construire la base et le raisonneur +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,c525316,code,fr,22f3935df339aaf5,"// TODO etudiant : construire la base et le raisonneur // Indice : suivez la structure de la section 4 (Predicate, Constant, FolAtom, Implication, // ForallQuantifiedFormula, FolBeliefSet.add, SimpleFolReasoner.query). // Etape 1 : déclarer les prédicats Chat / Mammifere et la constante Felix. @@ -5532,7 +5532,7 @@ bool? reponse = null; // TODO etudiant : affecter le resultat de la requete Console.WriteLine(""KB ⊨ Mammifere(Felix) ? "" + (reponse?.ToString() ?? ""Exercice a completer"")); ",,,,,,,,22f3935df339aaf5,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,m561725,markdown,fr,fe8a91194c4dc68c,"### Exercice 2 — Transitivité : grand-parent +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,m561725,markdown,fr,fe8a91194c4dc68c,"### Exercice 2 — Transitivité : grand-parent Avec un prédicat binaire `Parent(·,·)`, on veut définir « grand-parent » sans nouveau prédicat : `∀X ∀Y ∀Z (Parent(X,Y) ∧ Parent(Y,Z) ⇒ GrandParent(X,Z))`. Construisez cette formule à partir de @@ -5542,14 +5542,14 @@ deux quantificateurs universels emboîtés et affichez-la. emboîter **trois** constructeurs (le plus externe lie `Z`, l'intermédiaire lie `Y`, l'interne lie `X`). ",,,,,,,,fe8a91194c4dc68c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,c712763,code,fr,b138086842175404,"// TODO etudiant : construire la formule GrandParent +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,c712763,code,fr,b138086842175404,"// TODO etudiant : construire la formule GrandParent // Indice : declarez Z = new Variable(""Z""); construisez l'implication, // puis ForallQuantifiedFormula(... X) dans ForallQuantifiedFormula(... Y) dans ForallQuantifiedFormula(... Z). object formuleGrandParent = null; // TODO etudiant Console.WriteLine(""GrandParent = "" + (formuleGrandParent?.ToString() ?? ""Exercice a completer"")); ",,,,,,,,b138086842175404,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,m104860,markdown,fr,b816c3572856fd40,"### Exercice 3 — Détection d'inconsistance +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,m104860,markdown,fr,b816c3572856fd40,"### Exercice 3 — Détection d'inconsistance Une base est **inconsistante** si elle implique une contradiction (ex. à la fois `P(a)` et `¬P(a)`). Avec `SimpleFolReasoner`, une KB inconsistante implique **toute** formule (*ex falso quodlibet*). @@ -5558,14 +5558,14 @@ Ajoutez à une KB les faits `Mortel(Socrate)` et `¬Mortel(Socrate)`, puis véri `KB ⊨ Homme(Socrate)` vaut `true` (principe d'explosion) — bien qu'aucun axiome ne parle d'`Homme`. ",,,,,,,,b816c3572856fd40,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,c545430,code,fr,207e5164a804b559,"// TODO etudiant : mettre en evidence le principe d'explosion +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,c545430,code,fr,207e5164a804b559,"// TODO etudiant : mettre en evidence le principe d'explosion // Indice : kb.add(FolAtom Mortel(Socrate)) ; kb.add(new Negation(FolAtom Mortel(Socrate))). // Puis interrogez KB |= Homme(Socrate) sur un prédicat Homme non lie par vos axiomes. bool? explosion = null; // TODO etudiant Console.WriteLine(""KB inconsistante ⊨ Homme(Socrate) ? "" + (explosion?.ToString() ?? ""Exercice a completer"")); ",,,,,,,,207e5164a804b559,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,m641676,markdown,fr,49f776cc0a50143d,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,m641676,markdown,fr,49f776cc0a50143d,"--- ## Conclusion @@ -5592,12 +5592,12 @@ On a porté en C#/.NET natif (sans JVM) le raisonnement **du premier ordre** via - TweetyProject — [FOL module](https://tweetyproject.org/api/fol/) et [tutoriels](https://tweetyproject.org/). - Port C#/.NET via IKVM — EPIC [#4667](https://github.com/jsboige/CoursIA/issues/4667). -- Notebook compagnon propositionnel : [Tweety-2-Basic-Logics-Csharp](Tweety-2-Basic-Logics-Csharp.ipynb). +- Notebook compagnon propositionnel : [Tweety-2-Basic-Logics-Csharp](Tweety-02-Basic-Logics-CSharp.ipynb). ",,,,,,,,49f776cc0a50143d,,,,,,,, MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Advanced-Logics.ipynb,e69e7c37,markdown,fr,8c6663779a734be9,"# Logiques Avancees - DL, Modale, QBF, Conditional -**Navigation**: [← Tweety-2-Basic-Logics](Tweety-2-Basic-Logics.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-4-Belief-Revision →](Tweety-4-Belief-Revision.ipynb) +**Navigation**: [← Tweety-2-Basic-Logics](Tweety-02-Basic-Logics-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-4-Belief-Revision →](Tweety-4-Belief-Revision.ipynb) --- @@ -5610,7 +5610,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Advanced-Logics.ipynb,e69e7c37,mark ## Prerequis -Executez d'abord [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb) pour configurer l'environnement JVM. +Executez d'abord [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb) pour configurer l'environnement JVM. ### Duree estimee : 40 minutes @@ -5698,7 +5698,7 @@ if not os.environ.get(""JAVA_HOME""): os.environ[""JAVA_HOME""] = str(java_home) print(f""JAVA_HOME detecte automatiquement : {java_home}"") else: - print(""ATTENTION : java introuvable. Installez un JDK ou executez Tweety-1-Setup.ipynb."") + print(""ATTENTION : java introuvable. Installez un JDK ou executez Tweety-01-Setup-Python.ipynb."") ",,,,,,,,69446d20f8822b8f,,,,,,,, MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Advanced-Logics.ipynb,12deb5a4,markdown,fr,ddb6428a2f5de974,"### Initialisation de la JVM et chargement des modules @@ -6665,7 +6665,7 @@ Le notebook suivant explore la **revision de croyances** et la gestion de l'inco --- -**Navigation**: [Tweety-2-Basic-Logics](Tweety-2-Basic-Logics.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-4-Belief-Revision](Tweety-4-Belief-Revision.ipynb)",,,,,,,,85534c113565efdc,,,,,,,, +**Navigation**: [Tweety-2-Basic-Logics](Tweety-02-Basic-Logics-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-4-Belief-Revision](Tweety-4-Belief-Revision.ipynb)",,,,,,,,85534c113565efdc,,,,,,,, MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Advanced-Logics.ipynb,760e58ab,markdown,fr,794d28c385ba6025,"## Exercice : Ontologie DL avec contraintes supplementaires Etendez l'ontologie universitaire de l'exemple guide : @@ -6693,9 +6693,9 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Advanced-Logics-Csharp.ipynb,be0c0d > la librairie Java est compilee vers un fat-jar Maven shade puis executee sur le runtime .NET via > [IKVM](https://github.com/ikvm-refined/ikvm). -Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-2-Basic-Logics-Csharp.ipynb) (propositionnel) · -[Tweety-2b-Semantics-Csharp](Tweety-2b-Semantics-Csharp.ipynb) (mondes possibles) · -[Tweety-2c-FOL-Csharp](Tweety-2c-FOL-Csharp.ipynb) (premier ordre) · +Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-02-Basic-Logics-CSharp.ipynb) (propositionnel) · +[Tweety-2b-Semantics-Csharp](Tweety-02b-Semantics-CSharp.ipynb) (mondes possibles) · +[Tweety-2c-FOL-Csharp](Tweety-02c-FOL-CSharp.ipynb) (premier ordre) · [Tweety-3-Dung-Csharp](Tweety-3-Dung-Csharp.ipynb) (argumentation abstraite) · **Tweety-3-Advanced-Logics (ce notebook — DL)**. @@ -6968,8 +6968,8 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Conditional-Logics-Csharp.ipynb,c9b > la librairie Java est compilee vers un fat-jar Maven shade puis executee sur le runtime .NET via > [IKVM](https://github.com/ikvm-refined/ikvm). -Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-2-Basic-Logics-Csharp.ipynb) (propositionnel) - - [Tweety-2c-FOL-Csharp](Tweety-2c-FOL-Csharp.ipynb) (premier ordre) - +Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-02-Basic-Logics-CSharp.ipynb) (propositionnel) - + [Tweety-2c-FOL-Csharp](Tweety-02c-FOL-CSharp.ipynb) (premier ordre) - [Tweety-3-Dung-Csharp](Tweety-3-Dung-Csharp.ipynb) (argumentation abstraite) - [Tweety-3-Advanced-Logics-Csharp](Tweety-3-Advanced-Logics-Csharp.ipynb) (Description Logics) - **Tweety-3-Conditional-Logics (ce notebook - CL)**. @@ -7208,9 +7208,9 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Dung-Csharp.ipynb,m601032,markdown, > la librairie Java est compilée vers un fat-jar Maven shade puis exécutée sur le runtime .NET via > [IKVM](https://github.com/ikvm-refined/ikvm). -Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-2-Basic-Logics-Csharp.ipynb) (propositionnel) · -[Tweety-2b-Semantics-Csharp](Tweety-2b-Semantics-Csharp.ipynb) (mondes possibles) · -[Tweety-2c-FOL-Csharp](Tweety-2c-FOL-Csharp.ipynb) (premier ordre) · +Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-02-Basic-Logics-CSharp.ipynb) (propositionnel) · +[Tweety-2b-Semantics-Csharp](Tweety-02b-Semantics-CSharp.ipynb) (mondes possibles) · +[Tweety-2c-FOL-Csharp](Tweety-02c-FOL-CSharp.ipynb) (premier ordre) · **Tweety-3-Dung (ce notebook)**. --- @@ -7852,7 +7852,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-QBF-Csharp.ipynb,2bdcd76a,markdown, > la librairie Java est compilee vers un fat-jar Maven shade puis executee sur le runtime .NET via > [IKVM](https://github.com/ikvm-refined/ikvm). -Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-2-Basic-Logics-Csharp.ipynb) (propositionnel) - +Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-02-Basic-Logics-CSharp.ipynb) (propositionnel) - [Tweety-3-Advanced-Logics-Csharp](Tweety-3-Advanced-Logics-Csharp.ipynb) (Description Logics) - [Tweety-3-Conditional-Logics-Csharp](Tweety-3-Conditional-Logics-Csharp.ipynb) (CL, defeasible) - **Tweety-3-QBF (ce notebook - Quantified Boolean Formulas)**. @@ -8108,9 +8108,9 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-4-Aspic-Csharp.ipynb,m572265,markdown > la librairie Java est compilée vers un fat-jar Maven shade puis exécutée sur le runtime .NET via > [IKVM](https://github.com/ikvm-refined/ikvm). -Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-2-Basic-Logics-Csharp.ipynb) (propositionnel) · -[Tweety-2b-Semantics-Csharp](Tweety-2b-Semantics-Csharp.ipynb) (mondes possibles) · -[Tweety-2c-FOL-Csharp](Tweety-2c-FOL-Csharp.ipynb) (premier ordre) · +Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-02-Basic-Logics-CSharp.ipynb) (propositionnel) · +[Tweety-2b-Semantics-Csharp](Tweety-02b-Semantics-CSharp.ipynb) (mondes possibles) · +[Tweety-2c-FOL-Csharp](Tweety-02c-FOL-CSharp.ipynb) (premier ordre) · [Tweety-3-Dung-Csharp](Tweety-3-Dung-Csharp.ipynb) (argumentation **abstraite**) · **Tweety-4-Aspic (ce notebook)** (argumentation **structurée**). @@ -8462,7 +8462,7 @@ et IKVM, en montrant le pont vers l'argumentation **abstraite** de Dung : ",,,,,,,,7b3fec4dee3a8cfc,,,,,,,, MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-4-Belief-Revision.ipynb,532d3c39,markdown,fr,d54aa64e75a7c6a6,"# Révision de Croyances et Incohérence -**Navigation**: [← Tweety-3-Advanced-Logics](Tweety-3-Advanced-Logics.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-5-Abstract-Argumentation →](Tweety-5-Abstract-Argumentation.ipynb) +**Navigation**: [← Tweety-3-Advanced-Logics](Tweety-3-Advanced-Logics.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-5-Abstract-Argumentation →](Tweety-5-Abstract-Argumentation.ipynb) --- @@ -8475,7 +8475,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-4-Belief-Revision.ipynb,532d3c39,mark ## Prérequis -Exécutez d'abord [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb) pour configurer l'environnement JVM. +Exécutez d'abord [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb) pour configurer l'environnement JVM. ## Durée estimée : 30-40 minutes",,,,,,,,d54aa64e75a7c6a6,,,,,,,, MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-4-Belief-Revision.ipynb,eff88e6b,code,fr,6d9a502e53ba5bb7,"# --- Initialisation JVM Tweety + Outils Externes --- @@ -9717,7 +9717,7 @@ Le notebook suivant explore l'**argumentation abstraite** (frameworks de Dung). --- -**Navigation**: [Tweety-3-Advanced-Logics](Tweety-3-Advanced-Logics.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-5-Abstract-Argumentation](Tweety-5-Abstract-Argumentation.ipynb)",,,,,,,,523b506c97f1d892,,,,,,,, +**Navigation**: [Tweety-3-Advanced-Logics](Tweety-3-Advanced-Logics.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-5-Abstract-Argumentation](Tweety-5-Abstract-Argumentation.ipynb)",,,,,,,,523b506c97f1d892,,,,,,,, MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-4-Belief-Revision.ipynb,403d934c,markdown,fr,04ecc3bf9601cc0b,"## Exercice : Diagnostic d'incoherence dans un système de diagnostic medical Un système expert medical contient les règles suivantes : @@ -10090,7 +10090,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-4-Belief-Revision-Csharp.ipynb,ex3,co Console.WriteLine(""Exercice 3 a completer"");",,,,,,,,648a3a803f08373d,,,,,,,, MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5-Abstract-Argumentation.ipynb,84b1e9fb,markdown,fr,9ad67e13cad3be16,"# Argumentation Abstraite (Dung) -**Navigation**: [<- Tweety-4-Belief-Revision](Tweety-4-Belief-Revision.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-6-Structured-Argumentation ->](Tweety-6-Structured-Argumentation.ipynb) +**Navigation**: [<- Tweety-4-Belief-Revision](Tweety-4-Belief-Revision.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-6-Structured-Argumentation ->](Tweety-06-Structured-Argumentation-Python.ipynb) --- @@ -10103,7 +10103,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5-Abstract-Argumentation.ipynb,84b1e9 ## Prerequis -Executez d'abord [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb) pour configurer l'environnement JVM. +Executez d'abord [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb) pour configurer l'environnement JVM. ### Duree estimee : 55 minutes @@ -11206,7 +11206,7 @@ Le notebook suivant explore l'**argumentation structuree** avec ASPIC+, DeLP, AB --- -**Navigation**: [<- Tweety-4-Belief-Revision](Tweety-4-Belief-Revision.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-6-Structured-Argumentation ->](Tweety-6-Structured-Argumentation.ipynb)",,,,,,,,baab21e5f4cac49e,,,,,,,, +**Navigation**: [<- Tweety-4-Belief-Revision](Tweety-4-Belief-Revision.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-6-Structured-Argumentation ->](Tweety-06-Structured-Argumentation-Python.ipynb)",,,,,,,,baab21e5f4cac49e,,,,,,,, MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5-Abstract-Argumentation.ipynb,nd21d2gksor,markdown,fr,f968d908beef5994,"--- ## Exemples guides et Exercices @@ -11488,7 +11488,7 @@ Ces approches combinent la puissance des sémantiques de Dung avec la richesse d --- -**Navigation** : [<- Tweety-4-Belief-Revision](Tweety-4-Belief-Revision.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-6-Structured-Argumentation ->](Tweety-6-Structured-Argumentation.ipynb)",,,,,,,,9514b95f917731bb,,,,,,,, +**Navigation** : [<- Tweety-4-Belief-Revision](Tweety-4-Belief-Revision.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-6-Structured-Argumentation ->](Tweety-06-Structured-Argumentation-Python.ipynb)",,,,,,,,9514b95f917731bb,,,,,,,, MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5-Abstract-Argumentation-Csharp.ipynb,tw5c01,markdown,fr,69ee14debc7498b8,"# Tweety-5 : Argumentation Abstraite de Dung (C# / .NET) — Tranche 1 : Moteur from-scratch **Navigation** : [<< Tweety-4 BeliefRevision-Csharp](Tweety-4-Belief-Revision-Csharp.ipynb) | [Tweety-5 Python](Tweety-5-Abstract-Argumentation.ipynb) | [Index](../README.md) @@ -12116,9 +12116,9 @@ via Knaster–Tarski (`OrderHom.map_lfp`). **Jalon ouvert** : l'existence des extensions preferred (via la Fundamental Lemma + Zorn) n'est qu'esquissée dans le lake ; la lib reste sorry-free.",,,,,,,,15f8f342bf1d3d5b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,37f22048,markdown,fr,48cc59735a1b7146,"# Argumentation Structuree +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,37f22048,markdown,fr,48cc59735a1b7146,"# Argumentation Structuree -**Navigation**: [<- Tweety-5-Abstract-Argumentation](Tweety-5-Abstract-Argumentation.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-7a-Extended-Frameworks ->](Tweety-7a-Extended-Frameworks.ipynb) +**Navigation**: [<- Tweety-5-Abstract-Argumentation](Tweety-5-Abstract-Argumentation.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-7a-Extended-Frameworks ->](Tweety-07a-Extended-Frameworks-Python.ipynb) --- @@ -12162,15 +12162,15 @@ Après avoir étudié l'**argumentation abstraite** (Dung) dans le notebook pré ## Prerequis -Executez d'abord [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb) pour configurer l'environnement JVM. +Executez d'abord [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb) pour configurer l'environnement JVM. ## Duree estimee : 35-45 minutes > **Note**: ASP necessite Clingo installe. Le notebook configure automatiquement le chemin si Clingo est disponible. -> **Note de parité cross-langage** : ce notebook est le **jumeau Python** de [`Tweety-6-Structured-Argumentation-Csharp.ipynb`](Tweety-6-Structured-Argumentation-Csharp.ipynb) (twin C# from-scratch BCL .NET, 0 JVM). Pour les concepts partagés (ASPIC+, DeLP, ABA, Argumentation Déductive, ASP), voir la cellule d'introduction ; le twin C# reconstruit les **concepts** (pas l'API JVM) pour rester exécutable end-to-end sur toute machine .NET 9+. Marathon parité .NET ⇄ Python : EPIC #4956. +> **Note de parité cross-langage** : ce notebook est le **jumeau Python** de [`Tweety-06-Structured-Argumentation-CSharp.ipynb`](Tweety-06-Structured-Argumentation-CSharp.ipynb) (twin C# from-scratch BCL .NET, 0 JVM). Pour les concepts partagés (ASPIC+, DeLP, ABA, Argumentation Déductive, ASP), voir la cellule d'introduction ; le twin C# reconstruit les **concepts** (pas l'API JVM) pour rester exécutable end-to-end sur toute machine .NET 9+. Marathon parité .NET ⇄ Python : EPIC #4956. ",,,,,,,,48cc59735a1b7146,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,d10c7bef,code,fr,0cbc807da2f7612f,"# --- Initialisation JVM Tweety + Outils Externes --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,d10c7bef,code,fr,0cbc807da2f7612f,"# --- Initialisation JVM Tweety + Outils Externes --- print(""--- Verification JVM Tweety + Outils ---"") jvm_ready = False @@ -12285,7 +12285,7 @@ if jvm_ready: short_path = path.split(os.sep)[-1] if len(path) > 30 else path print(f"" {tool}: {short_path}"") print(f""\nJVM prete. Outils: {sum(1 for t,p in EXTERNAL_TOOLS.items() if p)}/{len(EXTERNAL_TOOLS)}"")",,,,,,,,0cbc807da2f7612f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,675ee0f8,markdown,fr,ad24a6a8667a58c7,"### 4.2 ASPIC+ +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,675ee0f8,markdown,fr,ad24a6a8667a58c7,"### 4.2 ASPIC+ ASPIC+ est un framework mature et largement utilisé pour l'argumentation **structurée**. @@ -12303,7 +12303,7 @@ ASPIC+ est un framework mature et largement utilisé pour l'argumentation **stru * **Conversion vers Dung (`asDungTheory`)**: Permet d'analyser la théorie ASPIC+ en la transformant en un AAF standard, sur lequel on peut appliquer les sémantiques de Dung (Grounded, Preferred, etc.). L'exemple suivant utilise la logique propositionnelle comme langage sous-jacent, basé sur `AspicExample.java`.",,,,,,,,ad24a6a8667a58c7,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,6340ab53,code,fr,860e85eba14514b8,"# --- 4.2.1 ASPIC+ : Construction et Conversion en Dung (PL) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,6340ab53,code,fr,860e85eba14514b8,"# --- 4.2.1 ASPIC+ : Construction et Conversion en Dung (PL) --- print(""\n--- 4.2.1 ASPIC+ : Construction et Conversion en Dung (PL) ---"") if not jvm_ready: @@ -12395,7 +12395,7 @@ else: print(f""Erreur Python inattendue dans l'exemple ASPIC+: {e_gen}"") import traceback traceback.print_exc()",,,,,,,,860e85eba14514b8,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,ky20dkhpima,markdown,fr,dad0aaefa16e0fa6,"#### Interpretation des résultats ASPIC+ +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,ky20dkhpima,markdown,fr,dad0aaefa16e0fa6,"#### Interpretation des résultats ASPIC+ L'exemple construit une théorie ASPIC+ avec conflit entre conclusions opposees. @@ -12428,7 +12428,7 @@ Les axiomes `b` et `c` sont acceptes, ainsi que l'argument pour `a`. Les argumen **Point cle ASPIC+ :** La conversion vers Dung permet d'appliquer toutes les sémantiques classiques (Grounded, Preferred, Stable) sur des arguments structures.",,,,,,,,dad0aaefa16e0fa6,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,73d6def2,markdown,fr,8160b90a83807312,"### Exercice : Debat contradictoire avec ASPIC+ +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,73d6def2,markdown,fr,8160b90a83807312,"### Exercice : Debat contradictoire avec ASPIC+ La section 4.2 a montre comment ASPIC+ convertit une théorie structuree en cadre de Dung. Construisez votre propre théorie ASPIC+ pour modeliser un debat contradictoire sur l'approbation d'un projet. @@ -12453,7 +12453,7 @@ Le conflit : si `risque_eleve` etait aussi un axiome, les arguments pour `approu #### Bonus Ajoutez `risque_eleve` comme axiome supplementaire et observez comment le conflit modifie l'extension grounded. Comparez avec l'exemple de la section 4.2.1 ou `d` et `!d` s'annulent mutuellement.",,,,,,,,8160b90a83807312,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,30c5b4bc,code,fr,3fb76ce5e6a13703,"# --- Exercice : Debat contradictoire avec ASPIC+ --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,30c5b4bc,code,fr,3fb76ce5e6a13703,"# --- Exercice : Debat contradictoire avec ASPIC+ --- # TODO etudiant : construisez une theorie ASPIC+ et analysez les conflits # # Etape 1 : importer les classes ASPIC+ (cf section 4.2.1) @@ -12482,7 +12482,7 @@ else: aspic_theory_ex = None # TODO etudiant : remplacer par la theorie ASPIC+ construite grounded_ext = None # TODO etudiant : remplacer par l'extension grounded print(""Exercice a completer"")",,,,,,,,3fb76ce5e6a13703,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,06220aec,markdown,fr,82853380898eb9ed,"### 4.3 Defeasible Logic Programming (DeLP) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,06220aec,markdown,fr,82853380898eb9ed,"### 4.3 Defeasible Logic Programming (DeLP) --- @@ -12521,7 +12521,7 @@ Le critère clé de DeLP pour trancher entre arguments conflictuels : **Avantage de DeLP :** Raisonnement plus **intuitif** pour des domaines où les exceptions sont hiérarchisées naturellement (droit, médecine, sens commun).",,,,,,,,82853380898eb9ed,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,f573f125,code,fr,cb8bdc20e63ec94f,"# --- 4.3 Defeasible Logic Programming (DeLP) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,f573f125,code,fr,cb8bdc20e63ec94f,"# --- 4.3 Defeasible Logic Programming (DeLP) --- print(""\n--- 4.3 Defeasible Logic Programming (DeLP) ---"") if not jvm_ready: @@ -12646,7 +12646,7 @@ else: except ImportError as e: print(f""Erreur d'import pour DeLP/Commons/FOL : {e}."") except jpype.JException as e_java: print(f""Erreur Java generale: {e_java.message()}"") except Exception as e_gen: print(f""Erreur Python inattendue: {e_gen}""); import traceback; traceback.print_exc()",,,,,,,,cb8bdc20e63ec94f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,sm8wtxr3nyi,markdown,fr,11748ecf0bdaa031,"#### Interpretation des résultats DeLP +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,sm8wtxr3nyi,markdown,fr,11748ecf0bdaa031,"#### Interpretation des résultats DeLP Le raisonnement defaisable DeLP produit des reponses basees sur la **specificite generalisee** : @@ -12674,7 +12674,7 @@ Pour `Fly(opus)` : **Différence avec ASPIC+ :** - DeLP utilise la specificite pour comparer arguments - ASPIC+ utilise un ordre explicite sur les règles ou les conclusions",,,,,,,,11748ecf0bdaa031,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,44e355de,markdown,fr,7ac9de5090044baa,"### 4.4 Assumption-Based Argumentation (ABA) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,44e355de,markdown,fr,7ac9de5090044baa,"### 4.4 Assumption-Based Argumentation (ABA) --- @@ -12722,7 +12722,7 @@ Règles : fièvre <- grippe ``` Un argument pour ""grippe"" attaque un argument utilisant l'hypothèse ""non_grippe"".",,,,,,,,7ac9de5090044baa,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,5f0785a8,code,fr,5a3814ec10f92c4e,"# --- 4.4 Assumption-Based Argumentation (ABA) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,5f0785a8,code,fr,5a3814ec10f92c4e,"# --- 4.4 Assumption-Based Argumentation (ABA) --- print(""\n--- 4.4 Assumption-Based Argumentation (ABA) ---"") if not jvm_ready: @@ -12820,7 +12820,7 @@ else: except ImportError as e: print(f""Erreur d'import pour ABA : {e}."") except jpype.JException as e_java: print(f""Erreur Java generale: {e_java.message()}"") except Exception as e_gen: print(f""Erreur Python inattendue: {e_gen}""); import traceback; traceback.print_exc()",,,,,,,,5a3814ec10f92c4e,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,bbm5trm8ybt,markdown,fr,9215fd26fcc8555f,"#### Interpretation des résultats ABA +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,bbm5trm8ybt,markdown,fr,9215fd26fcc8555f,"#### Interpretation des résultats ABA **Exemple 1 : Logique Propositionnelle** @@ -12852,7 +12852,7 @@ Le couple `(a, d)` n'est PAS dans l'extension preferee car : **Point cle ABA :** Les hypotheses sont ""attaquables"" via leurs contraires. C'est la principale différence avec ASPIC+ ou les attaques ciblent des règles ou conclusions.",,,,,,,,9215fd26fcc8555f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,06de9718,markdown,fr,099241718640d432,"### 4.5 Argumentation Déductive (PL) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,06de9718,markdown,fr,099241718640d432,"### 4.5 Argumentation Déductive (PL) --- @@ -12904,7 +12904,7 @@ Cette approche est utile pour des domaines où on veut **mesurer** la force des - **Analyse de risque** : Niveau de menace **Exemple :** Un suspect accusé par 1 témoin vs. 2 témoins innocentant → score -1 (plutôt innocent)",,,,,,,,099241718640d432,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,0c9ba855,code,fr,74f80334a183cf78,"# --- 4.5 Argumentation Déductive (PL) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,0c9ba855,code,fr,74f80334a183cf78,"# --- 4.5 Argumentation Déductive (PL) --- print(""\n--- 4.5 Argumentation Deductive (PL) ---"") try: @@ -12949,7 +12949,7 @@ except Exception as e: print(f""Erreur lors de l'execution de l'exemple Deductif: {e}"") import traceback traceback.print_exc()",,,,,,,,74f80334a183cf78,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,5loxyfjbhxa,markdown,fr,bc9366365007444c,"#### Interpretation du résultat Deductif +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,5loxyfjbhxa,markdown,fr,bc9366365007444c,"#### Interpretation du résultat Deductif **Score de la requête `h` (coupable) : -2.0** @@ -12975,7 +12975,7 @@ Le suspect est accuse (`s` implique `h`), mais deux sources independantes (le te - Ici, pas de notion de specificite ou de préférence entre arguments - Le `SimpleAccumulator` agrege quantitativement les valeurs de categorisation pour / contre - ASPIC+/DeLP raisonnent plutot **qualitativement** (relations de defaite, préférences entre arguments)",,,,,,,,bc9366365007444c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,57d237ec,markdown,fr,0857c4e4d5c28c04,"### 4.6 Answer Set Programming (ASP) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,57d237ec,markdown,fr,0857c4e4d5c28c04,"### 4.6 Answer Set Programming (ASP) --- @@ -13047,7 +13047,7 @@ ASP partage avec l'argumentation structurée : - L'**approche déclarative** (dire ""quoi"" pas ""comment"") Mais ASP est plus orienté **résolution de problèmes** que **justification d'arguments**.",,,,,,,,0857c4e4d5c28c04,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,83ff79c6,code,fr,2123f51fa7e557ad,"# --- 4.6 Answer Set Programming (ASP) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,83ff79c6,code,fr,2123f51fa7e557ad,"# --- 4.6 Answer Set Programming (ASP) --- print(""\n--- 4.6 Answer Set Programming (ASP) ---"") if not jvm_ready: @@ -13150,7 +13150,7 @@ else: except ImportError as e: print(f""Erreur d'import pour ASP : {e}. Verifiez le JAR 'lp.asp'."") except jpype.JException as e_java: print(f""Erreur Java generale ASP: {e_java.message()}"") except Exception as e_gen: print(f""Erreur Python inattendue ASP: {e_gen}""); import traceback; traceback.print_exc()",,,,,,,,2123f51fa7e557ad,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,9bdl1rhpgrn,markdown,fr,6fbfb27df0b4e77d,"#### Interpretation de l'Answer Set +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,9bdl1rhpgrn,markdown,fr,6fbfb27df0b4e77d,"#### Interpretation de l'Answer Set Clingo a trouve **un seul Answer Set** pour le programme ""Suspects"" : @@ -13178,7 +13178,7 @@ Clingo a trouve **un seul Answer Set** pour le programme ""Suspects"" : **Unicite du modèle :** - Un seul Answer Set car pas de choix non-déterministe dans le programme - Avec des règles de choix (`{a ; b}`), on aurait plusieurs Answer Sets",,,,,,,,6fbfb27df0b4e77d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,687f0852,markdown,fr,67daa52862ec3254,"## Exercice : Diagnostic de système avec Answer Set Programming (ASP) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,687f0852,markdown,fr,67daa52862ec3254,"## Exercice : Diagnostic de système avec Answer Set Programming (ASP) La section 4.6 a montre les **Answer Sets** (modèles stables) avec negation par defaut. Mettez en pratique pour modeliser un diagnostic de pannes. @@ -13201,7 +13201,7 @@ Un système a 3 composants : `alimentation`, `carte_mere`, `disque`. Un composan - `DefaultNegation(atom)` pour `not atom` - Attendu : un seul answer set avec `suspect(alimentation)` mais PAS `suspect(disque)` ",,,,,,,,67daa52862ec3254,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,dd630e38,code,fr,fade672cc4f1bd60,"# --- Exercice : Diagnostic de pannes avec ASP --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,dd630e38,code,fr,fade672cc4f1bd60,"# --- Exercice : Diagnostic de pannes avec ASP --- # TODO etudiant : modelisez un diagnostic de pannes avec Answer Set Programming # # Etape 1 : importer les classes ASP (cf section 4.6) @@ -13222,7 +13222,7 @@ else: answer_sets = None # TODO etudiant : remplacer par solver.getModels(program) print(""Exercice a completer"") ",,,,,,,,fade672cc4f1bd60,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,efadf93c,markdown,fr,505ad93c95558c32,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,efadf93c,markdown,fr,505ad93c95558c32,"--- ## Resume et Comparaison des Frameworks @@ -13304,8 +13304,8 @@ Le notebook suivant (**Tweety-7a-Extended-Frameworks**) explore les **extensions --- -**Navigation**: [<- Tweety-5-Abstract-Argumentation](Tweety-5-Abstract-Argumentation.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-7a-Extended-Frameworks ->](Tweety-7a-Extended-Frameworks.ipynb)",,,,,,,,505ad93c95558c32,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,82gbc1fyhk3,markdown,fr,909ca80170dbbf45,"## Exemple guide : Argumentation pour un Système de Recommandation +**Navigation**: [<- Tweety-5-Abstract-Argumentation](Tweety-5-Abstract-Argumentation.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-7a-Extended-Frameworks ->](Tweety-07a-Extended-Frameworks-Python.ipynb)",,,,,,,,505ad93c95558c32,,,,,,,, +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,82gbc1fyhk3,markdown,fr,909ca80170dbbf45,"## Exemple guide : Argumentation pour un Système de Recommandation Appliquez l'un des frameworks d'argumentation structurée pour construire un système de recommandation simple. @@ -13334,7 +13334,7 @@ Appliquez l'un des frameworks d'argumentation structurée pour construire un sys - [ ] Arguments generes et analyses - [ ] Recommandations justifiees - [ ] (Bonus) Extensions implementees",,,,,,,,909ca80170dbbf45,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,9554123421b1,code,fr,bc6e8196bc1ced0d,"# Exercice: Choisissez un framework (ASPIC+, DeLP, ou ABA) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,9554123421b1,code,fr,bc6e8196bc1ced0d,"# Exercice: Choisissez un framework (ASPIC+, DeLP, ou ABA) # Exemple avec DeLP (le plus intuitif pour les recommandations) from org.tweetyproject.arg.delp.syntax import * @@ -13373,7 +13373,7 @@ film(matrix) <- true. # Exemple: ""inception est trop complexe pour certains"" print(""Exercice : DeLP pour recommandation de films a completer"")",,,,,,,,bc6e8196bc1ced0d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,796def0a,markdown,fr,e454698d00a5d4b3,"## Conclusion +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,796def0a,markdown,fr,e454698d00a5d4b3,"## Conclusion Ce notebook a permis d'explorer les aspects essentiels de tweety 6 structured argumentation. Les points cles : @@ -13382,7 +13382,7 @@ Ce notebook a permis d'explorer les aspects essentiels de tweety 6 structured ar - Les résultats obtenus permettent de valider la comprehension **Pour aller plus loin** : approfondir les aspects avances du sujet et explorer les liens avec d'autres domaines.",,,,,,,,e454698d00a5d4b3,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,dffcaa57,markdown,fr,7559999bfab1d226,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,dffcaa57,markdown,fr,7559999bfab1d226,"--- ## Exercice de synthese : Comparer deux frameworks sur un domaine medical @@ -13399,7 +13399,7 @@ Modelisez un debat medical (ex: faut-il administrer un traitement risque ?) en u 2. Construire les arguments et leurs relations d attaque 3. Calculer l acceptabilite avec ASPIC+ puis avec DeLP 4. (Bonus) Identifier un cas ou les deux frameworks divergent",,,,,,,,7559999bfab1d226,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,696d679b,code,fr,1df2fdfa2c5e2080,"# TODO etudiant : comparer ASPIC+ et DeLP sur un domaine medical +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,696d679b,code,fr,1df2fdfa2c5e2080,"# TODO etudiant : comparer ASPIC+ et DeLP sur un domaine medical # # Etape 1 : definir les arguments (pro et contre un traitement) # Etape 2 : definir les attaques entre arguments @@ -13407,9 +13407,9 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,696d # Etape 4 (bonus) : identifier une divergence entre les deux semantiques print(""Exercice a completer"") # TODO etudiant : remplacer par votre implementation",,,,,,,,1df2fdfa2c5e2080,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,d1dc9363,markdown,fr,930ec3d802f2713d,"# Tweety-6 — Argumentation structuree (twin C# / .NET Interactive) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,d1dc9363,markdown,fr,930ec3d802f2713d,"# Tweety-6 — Argumentation structuree (twin C# / .NET Interactive) -**Twin C#** du notebook Python [Tweety-6-Structured-Argumentation.ipynb](Tweety-6-Structured-Argumentation.ipynb) (marathon #4956, parite .NET <-> Python, axe-2 SOTA #3801 Prong B). +**Twin C#** du notebook Python [Tweety-06-Structured-Argumentation-Python.ipynb](Tweety-06-Structured-Argumentation-Python.ipynb) (marathon #4956, parite .NET <-> Python, axe-2 SOTA #3801 Prong B). Le notebook Python invoque la bibliotheque Java **TweetyProject** (via `jpype` + JVM) pour construire des arguments structurees : ASPIC+, DeLP, ABA, argumentation deductive, ASP. Ce twin **deroule le moteur ASPIC+ a la main** (BCL .NET 9, 0 NuGet, aucune JVM), dans la même lignee que le [Tweety-5-Csharp](Tweety-5-Abstract-Argumentation-Csharp.ipynb) qui implementait le cadre abstrait de Dung from-scratch. @@ -13423,8 +13423,8 @@ L'argumentation **abstraite** de Dung (Tweety-5) traite les arguments comme des On verifie **mathematiquement** que la conversion ASPIC+ -> Dung redonne le bon cadre abstrait, et que la sémantique grounded isole les arguments defendus. -> **Note de parite cross-langage** : ce notebook est le **jumeau C# from-scratch BCL .NET 9** (0 NuGet, 0 JVM) du notebook Python [`Tweety-6-Structured-Argumentation.ipynb`](Tweety-6-Structured-Argumentation.ipynb) (JVM TweetyProject via `jpype`, ASPIC+ + DeLP + ABA + Deductive + ASP). Le twin C# couvre ASPIC+ from-scratch BCL (sections 1-5) et declare INTRINSIC les 4 autres formalismes (pas d'equivalent BCL .NET ; le notebook Python + JVM TweetyProject reste la reference d'execution pour DeLP/ABA/ASP). Audit G.1 cross-langage cell-by-cell c.743 : 22 cellules C# verifiees, grounded `{ -> b, -> c, b, c => a [ -> b, -> c] }` coherent avec cell[7] Python (5 memes arguments). Marathon parite .NET <-> Python : EPIC #4956.",,,,,,,,930ec3d802f2713d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,ae983e52,code,fr,d612202d3362c0d9,"// Setup : aucune dependance externe — moteur ASPIC+ from-scratch, uniquement la BCL .NET. +> **Note de parite cross-langage** : ce notebook est le **jumeau C# from-scratch BCL .NET 9** (0 NuGet, 0 JVM) du notebook Python [`Tweety-06-Structured-Argumentation-Python.ipynb`](Tweety-06-Structured-Argumentation-Python.ipynb) (JVM TweetyProject via `jpype`, ASPIC+ + DeLP + ABA + Deductive + ASP). Le twin C# couvre ASPIC+ from-scratch BCL (sections 1-5) et declare INTRINSIC les 4 autres formalismes (pas d'equivalent BCL .NET ; le notebook Python + JVM TweetyProject reste la reference d'execution pour DeLP/ABA/ASP). Audit G.1 cross-langage cell-by-cell c.743 : 22 cellules C# verifiees, grounded `{ -> b, -> c, b, c => a [ -> b, -> c] }` coherent avec cell[7] Python (5 memes arguments). Marathon parite .NET <-> Python : EPIC #4956.",,,,,,,,930ec3d802f2713d,,,,,,,, +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,ae983e52,code,fr,d612202d3362c0d9,"// Setup : aucune dependance externe — moteur ASPIC+ from-scratch, uniquement la BCL .NET. // Meme convention que Tweety-5-Csharp (Dung from-scratch). using Microsoft.DotNet.Interactive; using System; @@ -13446,7 +13446,7 @@ static void Show(string s) { s.Display(); } ""Environnement pret — moteur ASPIC+ from-scratch (BCL .NET seule, 0 NuGet, 0 JVM)."".Display(); ",,,,,,,,d612202d3362c0d9,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,32384654,markdown,fr,16d8c9c5804ad5c8,"## 1. Théorie ASPIC+ : règles et axiomes +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,32384654,markdown,fr,16d8c9c5804ad5c8,"## 1. Théorie ASPIC+ : règles et axiomes Une théorie ASPIC+ (en logique propositionnelle) comporte : @@ -13456,7 +13456,7 @@ Une théorie ASPIC+ (en logique propositionnelle) comporte : Une **formule** est une proposition (`d`) ou sa negation (`!d`). Deux formules sont **contradictoires** si l'une est la negation de l'autre : `Compl(d) = !d`, `Compl(!d) = d`. ",,,,,,,,16d8c9c5804ad5c8,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,47701331,code,fr,7be32afeb57fe109,"// Representation d'une theorie ASPIC+ : axiomes + regles (strictes / defaisables). +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,47701331,code,fr,7be32afeb57fe109,"// Representation d'une theorie ASPIC+ : axiomes + regles (strictes / defaisables). // Les formules sont des chaines (""d"", ""!d"") ; la negation est prefixee par '!'. static string Compl(string f) => f.StartsWith(""!"") ? f.Substring(1) : ""!"" + f; @@ -13490,7 +13490,7 @@ class AspicTheory Show(""Classes pretes : AspicRule (stricte/defaisable), AspicTheory (axiomes + regles).""); ",,,,,,,,7be32afeb57fe109,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,c5233106,markdown,fr,5adafb8e2e890bcf,"## 2. Construction récursive des arguments +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,c5233106,markdown,fr,5adafb8e2e890bcf,"## 2. Construction récursive des arguments Un **argument** est soit : - un **axiome** (feuille) : ` -> c` (conclusion c tiree directement d'un axiome) ; @@ -13500,7 +13500,7 @@ On construit tous les arguments par **point fixe** : on part des axiomes, puis o > Chaque conclusion n'etant ici produite que par une seule règle, on obtient exactement un argument par conclusion derivee (pas d'explosion combinatoire). ",,,,,,,,5adafb8e2e890bcf,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,a95de405,code,fr,1ca367bed270553c,"// Argument ASPIC+ : structure recursive (conclusion + regle sommitale + sous-arguments). +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,a95de405,code,fr,1ca367bed270553c,"// Argument ASPIC+ : structure recursive (conclusion + regle sommitale + sous-arguments). // ToString reproduit la convention Tweety : -> c (axiome) | p1, p2 => c [sub1, sub2] (regle). class AspicArgument @@ -13565,7 +13565,7 @@ static class AspicBuilder Show(""AspicArgument + AspicBuilder prets (construction recursive par point fixe).""); ",,,,,,,,1ca367bed270553c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,ded28d27,markdown,fr,3c0734f028988023,"## 3. Exemple : théorie avec contradiction sur `d` +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,ded28d27,markdown,fr,3c0734f028988023,"## 3. Exemple : théorie avec contradiction sur `d` Théorie (une seule règle par conclusion, une contradiction sur `d`) : @@ -13577,7 +13577,7 @@ Théorie (une seule règle par conclusion, une contradiction sur `d`) : On derive `a` (via r1), puis `d` (via r2) et `!d` (via r3) : `d` et `!d` sont contradictoires -> conflit. ",,,,,,,,3c0734f028988023,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,9858e9a7,code,fr,a888b87869ce55cd,"// Construction de l'exemple ASPIC+ et enumeration des arguments. +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,9858e9a7,code,fr,a888b87869ce55cd,"// Construction de l'exemple ASPIC+ et enumeration des arguments. var t = new AspicTheory(); t.AddAxiom(""b""); t.AddAxiom(""c""); @@ -13596,7 +13596,7 @@ foreach (var a in args) sb.AppendLine("" - "" + a.Display()); Show(sb.ToString()); ",,,,,,,,a888b87869ce55cd,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,94fbfb65,markdown,fr,72ab662a7fcb2892,"On obtient **5 arguments** : +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,94fbfb65,markdown,fr,72ab662a7fcb2892,"On obtient **5 arguments** : | Argument | Conclusion | Structure | |----------|-----------|-----------| @@ -13614,7 +13614,7 @@ En ASPIC+, un argument defaisable A **rebut** un argument defaisable B si la con > **Simplification honnete** : on modelise le **rebut sur la conclusion sommitale** entre arguments defaisables. L'ASPIC+ complet ajoute l'*undermine* (attaque d'une premisse) et l'*undercut* (attaque directe d'une règle defaisable) — non necessaire pour cet exemple (pur conflit de conclusion), et signale ici pour transparence. ",,,,,,,,72ab662a7fcb2892,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,07e1da2a,code,fr,6500fd8fceacd70c,"// Generation des attaques (rebut symetrique entre arguments defaisables). +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,07e1da2a,code,fr,6500fd8fceacd70c,"// Generation des attaques (rebut symetrique entre arguments defaisables). // A rebut B <=> A defaisable ET B defaisable ET Conclusion(A) = Compl(Conclusion(B)). static List<(AspicArgument, AspicArgument)> Rebuttals(List args) @@ -13640,7 +13640,7 @@ foreach (var (a, b) in attacks) sb2.AppendLine("" - ("" + a.Display() + "", "" + b.Display() + "")""); Show(sb2.ToString()); ",,,,,,,,6500fd8fceacd70c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,a3ea9a35,markdown,fr,a2c45ace41b32166,"Deux attaques symetriques : +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,a3ea9a35,markdown,fr,a2c45ace41b32166,"Deux attaques symetriques : - `arg_d` (conclut `d`) rebut `arg_!d` (conclut `!d`) - `arg_!d` rebut `arg_d` @@ -13654,7 +13654,7 @@ On projette les arguments en noeuds et les attaques en aretes : on retrouve un * - $F(\emptyset)$ = arguments sans attaquant ; - on itere $F$ jusqu'au point fixe = **extension grounded** (sceptique). ",,,,,,,,a2c45ace41b32166,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,91699731,code,fr,fbbf3de6b34685cc,"// Cadre de Dung abstrait (repris de Tweety-5-Csharp) + fonction caracteristique. +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,91699731,code,fr,fbbf3de6b34685cc,"// Cadre de Dung abstrait (repris de Tweety-5-Csharp) + fonction caracteristique. class DungAF { public HashSet Args { get; } = new(); @@ -13696,7 +13696,7 @@ sb3.AppendLine(""--- Extension grounded ---""); sb3.AppendLine(""{ "" + string.Join("", "", grounded.OrderBy(x => x)) + "" }""); Show(sb3.ToString()); ",,,,,,,,fbbf3de6b34685cc,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,8d1a78b2,markdown,fr,1e4459ab0f1da035,"**Lecture du résultat** : +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,8d1a78b2,markdown,fr,1e4459ab0f1da035,"**Lecture du résultat** : - Les arguments ` -> b`, ` -> c` et `b, c => a [...]` sont **acceptes** (sans attaquant, ou defendus). - Les arguments `b => d [...]` et `a => !d [...]` sont **rejetes** : ils se rebutent mutuellement, et **aucun** tiers ne defend l'un contre l'autre. Le doute l'emporte : ni `d` ni `!d` n'est conclu. @@ -13717,7 +13717,7 @@ Le notebook Python illustre quatre autres formalismes structurees via TweetyProj **Pourquoi ce plafond est honnete** : ASPIC+ est le formalisme le plus expressif dont le **moteur** (construction d'arguments + rebut + Dung) se reconstruit proprement en BCL. DeLP/ABA/ASP reposent sur des infrastructures dediees (moteurs d'inférence, solveurs) qui n'ont pas d'equivalent .NET leger — invoquer une JVM ou un solver externe depasserait le cadre d'un twin pedagogique BCL. La valeur du twin reside dans l'**explication du moteur** ASPIC+ (ce que TweetyProject cache), pas dans la reproduction exhaustive des cinq formalismes. ",,,,,,,,1e4459ab0f1da035,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,ac3186b9,code,fr,f6ec8ec7f7309233,"// Synthese comparative des formalismes d'argumentation structuree (conceptuel). +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,ac3186b9,code,fr,f6ec8ec7f7309233,"// Synthese comparative des formalismes d'argumentation structuree (conceptuel). var rows = new[] { (""ASPIC+"", ""Regles strictes/defaisables, rebut/undercut/undermine -> Dung"", ""From-scratch (sections 1-5)""), (""DeLP"", ""Programmation logique defaisable + arbre dialectique"", ""Intrinseque (moteur Java arg.delp)""), @@ -13737,11 +13737,11 @@ sb4.AppendLine(""Verdict #3801 : ASPIC+ = SOTA-OK (moteur from-scratch). DeLP/AB sb4.AppendLine(""(pas d'equivalent BCL .NET ; le notebook Python + JVM TweetyProject reste la reference d'execution).""); Show(sb4.ToString()); ",,,,,,,,f6ec8ec7f7309233,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,63611905,markdown,fr,73ba4637fb24e26d,"## Exercices (#2161) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,63611905,markdown,fr,73ba4637fb24e26d,"## Exercices (#2161) Trois exercices pour manipuler le moteur ASPIC+. ",,,,,,,,73ba4637fb24e26d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,aac6e2c5,markdown,fr,f12992ee66ad3588,"### Exercice 1 — Une quatrieme règle defaisable +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,aac6e2c5,markdown,fr,f12992ee66ad3588,"### Exercice 1 — Une quatrieme règle defaisable Ajoutez une règle `r4 : c => !a` a la théorie de la section 3 (en plus de r1, r2, r3). @@ -13751,7 +13751,7 @@ Ajoutez une règle `r4 : c => !a` a la théorie de la section 3 (en plus de r1, **Indice** : un nouveau cycle symetrique apparait au niveau de `a`. Observez comment l'effet se *propage* aux arguments qui utilisent `a` comme premisse. ",,,,,,,,f12992ee66ad3588,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,25156861,code,fr,57300a3afbbad6f5,"// Exercice 1 : a completer +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,25156861,code,fr,57300a3afbbad6f5,"// Exercice 1 : a completer // Etape 1 : reconstruire la theorie avec r4 (c => !a). // Etape 2 : enumerer les arguments et identifier les rebuttals supplementaires. // Etape 3 : calculer l'extension grounded et comparer avec la section 5. @@ -13762,7 +13762,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipy // var argsEx1 = AspicBuilder.Build(tex1); ""Exercice 1 a completer : observer la propagation du conflit sur 'a' vers 'd'."".Display(); ",,,,,,,,57300a3afbbad6f5,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,e3949f49,markdown,fr,9eb744ba823ab5de,"### Exercice 2 — Attaque undercut (extension du modèle) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,e3949f49,markdown,fr,9eb744ba823ab5de,"### Exercice 2 — Attaque undercut (extension du modèle) L'ASPIC+ complet définit l'**undercut** : un argument peut attaquer *directement une règle defaisable* de l'autre (et non sa conclusion). On ajoute pour cela des formules `!r_i` signifiant « la règle r_i n'est pas fiable ». @@ -13772,13 +13772,13 @@ L'ASPIC+ complet définit l'**undercut** : un argument peut attaquer *directemen **Indice** : contrairement au rebut (symetrique), l'undercut est **directif** (A undercut B ne signifie pas que B undercut A). Il faut distinguer les deux types d'aretes dans le cadre de Dung. ",,,,,,,,9eb744ba823ab5de,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,c4ac640c,code,fr,39b1ef7b344024d6,"// Exercice 2 : a completer +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,c4ac640c,code,fr,39b1ef7b344024d6,"// Exercice 2 : a completer // Etape 1 : etendre la theorie avec un axiome !r2. // Etape 2 : ecrire la regle d'undercut (un argument conclusant !r_i undercut l'argument de top-rule r_i). // Indice : il faudra peut-etre suivre le Name de la regle sommitale de chaque argument. ""Exercice 2 a completer : modeliser l'undercut (attaque directive d'une regle)."".Display(); ",,,,,,,,39b1ef7b344024d6,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,b040d65c,markdown,fr,aed14a20e197f747,"### Exercice 3 — Comparaison ASPIC+ vs ABA sur un exemple medical +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,b040d65c,markdown,fr,aed14a20e197f747,"### Exercice 3 — Comparaison ASPIC+ vs ABA sur un exemple medical On veut modeliser un debat medical : « Le patient a la maladie M (symptome S => M). Mais le traitement T provoque aussi S (T => S). Le patient suit T. » @@ -13788,13 +13788,13 @@ On veut modeliser un debat medical : « Le patient a la maladie M (symptome S => **Indice** : ABA inverse des assumptions (`assume(S)`) dont le contraire (`S -> conflict`) peut etre attaqué. ASPIC+ raisonne en avant (règles), ABA en arriere (assumptions). ",,,,,,,,aed14a20e197f747,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,13b54263,code,fr,1ce1b95b96c46bba,"// Exercice 3 : a completer +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,13b54263,code,fr,1ce1b95b96c46bba,"// Exercice 3 : a completer // Etape 1 : modeliser en ASPIC+ (axiome 'T', regles 'S => M' et 'T => S', plus une regle 'S => ...'). // Etape 2 : decrire en commentaire la representation ABA equivalent (assumptions + contraires). // Etape 3 : argumenter (en commentaire) le choix du formalisme. ""Exercice 3 a completer : comparer ASPIC+ (avant) et ABA (arriere, assumptions) sur un cas medical."".Display(); ",,,,,,,,1ce1b95b96c46bba,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,74f90ebc,markdown,fr,4c6863ff5b6692b1,"## Conclusion +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,74f90ebc,markdown,fr,4c6863ff5b6692b1,"## Conclusion Ce twin C# a **deroule le moteur ASPIC+ from-scratch** (BCL .NET 9, 0 NuGet, 0 JVM) : @@ -13807,9 +13807,9 @@ Ce twin C# a **deroule le moteur ASPIC+ from-scratch** (BCL .NET 9, 0 NuGet, 0 J See #4956, #3801. ",,,,,,,,4c6863ff5b6692b1,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,14fac472,markdown,fr,5cef8a935f84a90d,"# Frameworks d'Argumentation Étendus +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,14fac472,markdown,fr,5cef8a935f84a90d,"# Frameworks d'Argumentation Étendus -**Navigation**: [← Tweety-6-Structured-Argumentation](Tweety-6-Structured-Argumentation.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-7b-Ranking-Probabilistic →](Tweety-7b-Ranking-Probabilistic.ipynb) +**Navigation**: [← Tweety-6-Structured-Argumentation](Tweety-06-Structured-Argumentation-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-7b-Ranking-Probabilistic →](Tweety-07b-Ranking-Probabilistic-Python.ipynb) --- @@ -13829,12 +13829,12 @@ Ce notebook utilise le module partagé `tweety_init.py` pour l'initialisation JV > **Note technique** : Les solveurs SAT natifs (NativeMinisatSolver, NativeLingelingSolver, NativePicosatSolver) > sont automatiquement chargés grâce au dossier `libs/native/` configuré dans le classpath.",,,,,,,,5cef8a935f84a90d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,8716b36a,code,fr,d9f2d075fb18475f,"# --- Initialisation JVM Tweety via module partagé --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,8716b36a,code,fr,d9f2d075fb18475f,"# --- Initialisation JVM Tweety via module partagé --- from tweety_init import init_tweety, EXTERNAL_TOOLS, get_tool_path, print_tools_summary jvm_ready = init_tweety() print_tools_summary()",,,,,,,,d9f2d075fb18475f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,z9x7os2scdb,markdown,fr,3f203b34e7c3ec77,"### Structure du notebook +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,z9x7os2scdb,markdown,fr,3f203b34e7c3ec77,"### Structure du notebook Ce notebook est organisé en 5 parties complémentaires: @@ -13845,10 +13845,10 @@ Ce notebook est organisé en 5 parties complémentaires: 5. **Attaques collectives et récursives** : SetAF (ensembles attaquants) et EAF/REAF (meta-attaques) Chaque section illustre une extension différente des cadres de Dung classiques, avec des applications pratiques variées.",,,,,,,,3f203b34e7c3ec77,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,e0e1340e,markdown,fr,64a2ad49a4dd813c,"## Partie 5a : Frameworks d'Argumentation Étendus +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,e0e1340e,markdown,fr,64a2ad49a4dd813c,"## Partie 5a : Frameworks d'Argumentation Étendus Cette section explore des extensions complexes des cadres de Dung, permettant de modéliser des scénarios de raisonnement plus riches avec des conditions d'acceptation spécifiques, des relations de support, des poids, et des attaques collectives ou récursives.",,,,,,,,64a2ad49a4dd813c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,a0b22bec,markdown,fr,13916f823c45c61a,"### 5.1 Abstract Dialectical Frameworks (ADF) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,a0b22bec,markdown,fr,13916f823c45c61a,"### 5.1 Abstract Dialectical Frameworks (ADF) Les ADF [Brewka & Woltran, 2010] généralisent les cadres de Dung. @@ -13865,7 +13865,7 @@ Les ADF [Brewka & Woltran, 2010] généralisent les cadres de Dung. > - Linux : `minisat.so`, `lingeling.so`, `picosat.so` > > Ces fichiers sont fournis dans `libs/native/` et automatiquement chargés si Tweety-1-Setup est exécuté.",,,,,,,,13916f823c45c61a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,0f989794,code,fr,39f74dbcd0637025,"# --- 5.1 Abstract Dialectical Frameworks (ADF) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,0f989794,code,fr,39f74dbcd0637025,"# --- 5.1 Abstract Dialectical Frameworks (ADF) --- print(""\n--- 5.1 Abstract Dialectical Frameworks (ADF) ---"") if not jvm_ready: @@ -13992,12 +13992,12 @@ else: print(f""Erreur Python inattendue: {e_gen}"") import traceback traceback.print_exc()",,,,,,,,39f74dbcd0637025,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,3a2tluurdns,markdown,fr,8934e11c494532b9,"#### Exemple pratique : ADF avec conditions d'acceptation +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,3a2tluurdns,markdown,fr,8934e11c494532b9,"#### Exemple pratique : ADF avec conditions d'acceptation L'exemple suivant crée un ADF simple avec 3 arguments et des conditions de négation. Le code vérifie également la disponibilité des solveurs SAT natifs, qui sont **essentiels** pour le fonctionnement des ADF. **Objectif** : Démontrer que les ADF peuvent exprimer des conditions plus complexes qu'un simple graphe d'attaques.",,,,,,,,8934e11c494532b9,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,pda436vgm7p,markdown,fr,934acd1162b833d8,"#### Interpretation des résultats ADF +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,pda436vgm7p,markdown,fr,934acd1162b833d8,"#### Interpretation des résultats ADF L'ADF créé modelise une chaîne de dependances negatives : @@ -14033,7 +14033,7 @@ Un ADF dont tous les liens sont purement attaquants **est** un cadre de Dung : c - Modelisation de règles metier avec exceptions - Systèmes de configuration avec contraintes dependantes - Raisonnement juridique avec conditions cumulatives",,,,,,,,934acd1162b833d8,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,w4wp0prvfpi,markdown,fr,a623a20fb14e339a,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,w4wp0prvfpi,markdown,fr,a623a20fb14e339a,"--- ## Transition : De la logique aux relations de support @@ -14044,7 +14044,7 @@ Au lieu de seulement attaquer, les arguments peuvent maintenant **soutenir** d'a **Deux philosophies** : - **Evidential** : Un seul support suffit (disjonctif) - **Necessity** : Tous les supports requis (conjonctif)",,,,,,,,a623a20fb14e339a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,76362013,markdown,fr,9684c01d91d54441,"### 5.2 Frameworks Bipolaires (Evidential, Necessity) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,76362013,markdown,fr,9684c01d91d54441,"### 5.2 Frameworks Bipolaires (Evidential, Necessity) Les cadres d'argumentation bipolaires etendent les AAFs de Dung en introduisant une relation de **support** distincte de l'attaque. Tweety implemente deux variantes principales : @@ -14064,7 +14064,7 @@ Dans l'Evidential AF, les arguments peuvent etre : - **Derives** : Necessitent au moins un support L'exemple ci-dessous créé un framework avec 6 arguments, des attaques mutuelles, et un support `d -> e`.",,,,,,,,9684c01d91d54441,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,0c760a5d,code,fr,4c5b185f925de580,"# --- 5.2a Evidential Argumentation Framework --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,0c760a5d,code,fr,4c5b185f925de580,"# --- 5.2a Evidential Argumentation Framework --- print(""\n--- 5.2a Evidential Argumentation Framework ---"") if not jvm_ready: @@ -14139,7 +14139,7 @@ else: print(f""Erreur Python: {e_gen}"") import traceback traceback.print_exc()",,,,,,,,4c5b185f925de580,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,hau4s5g1kep,markdown,fr,5cd297fb44b3d4a3,"#### Construction du framework Evidential +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,hau4s5g1kep,markdown,fr,5cd297fb44b3d4a3,"#### Construction du framework Evidential Le code suivant construit un Evidential AF avec : - 6 arguments (`a` à `f`) @@ -14148,7 +14148,7 @@ Le code suivant construit un Evidential AF avec : - Des arguments **prima facie** (`b`, `c`, `d`, `f`) qui sont ""auto-justifiés"" Tweety ajoute automatiquement l'argument spécial `eta` pour représenter la source de vérité initiale.",,,,,,,,5cd297fb44b3d4a3,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,vz57o2jp61,markdown,fr,856460b09ff48007,"#### 5.2b Necessity Argumentation Framework +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,vz57o2jp61,markdown,fr,856460b09ff48007,"#### 5.2b Necessity Argumentation Framework Contrairement a l'Evidential AF ou un seul support suffit, le **Necessity AF** exige que **tous les supportants** soient presents pour qu'un argument soit accepte. @@ -14156,7 +14156,7 @@ Contrairement a l'Evidential AF ou un seul support suffit, le **Necessity AF** e - Support **conjonctif** : `{a, b} -> c` signifie que `c` necessite `a` ET `b` - Pas d'argument `eta` special - Le self-support `a -> a` permet a un argument de ""s'auto-justifier""",,,,,,,,856460b09ff48007,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,fnu9u5k3w4,code,fr,79f5fc5e75bb65e0,"# --- 5.2b Necessity Argumentation Framework --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,fnu9u5k3w4,code,fr,79f5fc5e75bb65e0,"# --- 5.2b Necessity Argumentation Framework --- print(""\n--- 5.2b Necessity Argumentation Framework ---"") if not jvm_ready: @@ -14230,7 +14230,7 @@ else: print(f""Erreur Python: {e_gen}"") import traceback traceback.print_exc()",,,,,,,,79f5fc5e75bb65e0,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,j2x010gz5ri,markdown,fr,ac89309180ab079a,"#### Interpretation des Frameworks Bipolaires +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,j2x010gz5ri,markdown,fr,ac89309180ab079a,"#### Interpretation des Frameworks Bipolaires **L'argument mysterieux `eta`** @@ -14266,7 +14266,7 @@ eta --[supporte]--> {b, c, d, f} (prima facie) - **Evidential** : Modelise les preuves juridiques (une preuve suffit) - **Necessity** : Modelise les prerequis (tous les cours requis pour un diplome)",,,,,,,,ac89309180ab079a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,jjcoc5be7y,markdown,fr,b076ab596d507404,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,jjcoc5be7y,markdown,fr,b076ab596d507404,"--- ## Transition : Introduction des poids @@ -14280,7 +14280,7 @@ Les **Frameworks Pondérés (WAF)** associent un **poids numérique** à chaque - Débats avec arguments de différentes forces - Coûts de résolution de conflits - Probabilités d'attaques",,,,,,,,b076ab596d507404,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,09f8f5fd,markdown,fr,3689e8ea5a45cfff,"### 5.3 Frameworks Pondérés (WAF) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,09f8f5fd,markdown,fr,3689e8ea5a45cfff,"### 5.3 Frameworks Pondérés (WAF) Les Cadres d'Argumentation Pondérés (Weighted Argumentation Frameworks - WAF) associent un **poids** à chaque attaque, représentant sa force ou son coût. L'évaluation de l'acceptabilité prend en compte ces poids via des **seuils** ou des **agrégations**. @@ -14288,7 +14288,7 @@ Tweety utilise la structure des **semi-anneaux** (`Semiring`) pour définir comm - `WeightedSemiring`: Poids numériques sommés (coûts) - `FuzzySemiring`: Degrés de vérité dans [0, 1] - `ProbabilisticSemiring`: Probabilités",,,,,,,,3689e8ea5a45cfff,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,c136e605,code,fr,6f57c335b1bb5a44,"# --- 5.3 Frameworks Pondérés (WAF) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,c136e605,code,fr,6f57c335b1bb5a44,"# --- 5.3 Frameworks Pondérés (WAF) --- print(""\n--- 5.3 Frameworks Ponderes (WAF) ---"") if not jvm_ready: @@ -14366,7 +14366,7 @@ else: except ImportError as e: print(f""Erreur d'import pour WAF : {e}."") except jpype.JException as e_java: print(f""Erreur Java generale WAF: {e_java.message()}"") except Exception as e_gen: print(f""Erreur Python inattendue WAF: {e_gen}""); import traceback; traceback.print_exc()",,,,,,,,6f57c335b1bb5a44,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,rerc46dcwsf,markdown,fr,4de10d16aee137bf,"#### Interpretation des résultats WAF +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,rerc46dcwsf,markdown,fr,4de10d16aee137bf,"#### Interpretation des résultats WAF **Sémantique (alpha, gamma) - relaxation de Bistarelli, Rossi & Santini** @@ -14399,7 +14399,7 @@ e --6.0--> e (auto-attaque) Il faut relacher **gamma** (le seuil de defense) au-dela du plus grand ecart attaque/defense du graphe - et non augmenter alpha. La valeur exacte depend des poids ; elle n'est **pas exercee dans ce notebook** (laissee en exercice). Le `alpha=20.0` recommande dans une version anterieure de cette cellule etait un ajustement jamais teste, et portait de surcroit sur le mauvais paramètre. > **Sources** : P. Dunne, A. Hunter, P. McBurney, S. Parsons, M. Wooldridge, *Weighted argument systems: Basic definitions, illustrations, and emerging results* (Artificial Intelligence, 2011) ; S. Bistarelli, F. Rossi, F. Santini, *A relaxation of internal conflict and defence in weighted argumentation frameworks* (ECSQARU 2017) et *A novel weighted defence and its relaxation in abstract argumentation* (IJAR, 2018).",,,,,,,,4de10d16aee137bf,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,d0669124,markdown,fr,ec92e48371cf80a6,"## Exercice : Debat avec attaques ponderees (WAF) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,d0669124,markdown,fr,ec92e48371cf80a6,"## Exercice : Debat avec attaques ponderees (WAF) La section 5.3 a montre les **Frameworks Ponderes** avec seuils `alpha` et `gamma`. Modelisez un debat ou certaines attaques sont plus fortes que d'autres. @@ -14415,7 +14415,7 @@ Trois experts : `a` (""Investir maintenant""), `b` (""Le marche est instable"", - `waf.add(Attack(src, tgt), poids)` - `SimpleWeightedGroundedReasoner().getModel(waf, alpha, gamma)` ",,,,,,,,ec92e48371cf80a6,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,2db32bac,code,fr,f2975dd39000e979,"# --- Exercice : Debat avec attaques ponderees (WAF) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,2db32bac,code,fr,f2975dd39000e979,"# --- Exercice : Debat avec attaques ponderees (WAF) --- # TODO etudiant : modelisez un debat d'experts avec des attaques ponderees # # Etape 1 : imports (cf section 5.3) @@ -14438,12 +14438,12 @@ else: grounded_standard = None # TODO etudiant : remplacer par le grounded standard print(""Exercice a completer"") ",,,,,,,,f2975dd39000e979,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,fb149f50,markdown,fr,e1c59cebd6cdbfa6,"### 5.4 Frameworks Sociaux (SAF) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,fb149f50,markdown,fr,e1c59cebd6cdbfa6,"### 5.4 Frameworks Sociaux (SAF) Les Cadres d'Argumentation Sociaux (SAF) [Leite, Martins, 2011] permettent d'associer des **votes** (positifs ou négatifs) aux arguments. Ces votes influencent la force ou l'acceptabilité finale des arguments. * **Sémantique ISS** (Iterated Schema Semantics): Calcule un score pour chaque argument basé sur les scores de ses attaquants et sur les votes, jusqu'à convergence.",,,,,,,,e1c59cebd6cdbfa6,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,a7ceb801,code,fr,3cb1d97c8040e769,"# --- 5.4 Frameworks Sociaux (SAF) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,a7ceb801,code,fr,3cb1d97c8040e769,"# --- 5.4 Frameworks Sociaux (SAF) --- print(""\n--- 5.4 Frameworks Sociaux (SAF) ---"") if not jvm_ready: @@ -14510,7 +14510,7 @@ else: except ImportError as e: print(f""Erreur d'import initiale pour SAF : {e}."") except jpype.JException as e_java: print(f""Erreur Java generale: {e_java.message()}"") except Exception as e_gen: print(f""Erreur Python inattendue: {e_gen}""); import traceback; traceback.print_exc()",,,,,,,,3cb1d97c8040e769,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,8von1j6znx2,markdown,fr,14f447ca55124aa5,"#### Interpretation des scores ISS +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,8von1j6znx2,markdown,fr,14f447ca55124aa5,"#### Interpretation des scores ISS Le modèle ISS (Iterated Schema Semantics) calcule un score d'acceptabilite pour chaque argument : @@ -14539,13 +14539,13 @@ Le modèle ISS (Iterated Schema Semantics) calcule un score d'acceptabilite pour - Modeliser les debats sur reseaux sociaux (likes/dislikes) - Les arguments populaires (beaucoup de upvotes) resistent mieux aux attaques - Un argument très attaque peut survivre si ses attaquants sont faibles (cf. D attaque par C=0.230, garde 0.511)",,,,,,,,14f447ca55124aa5,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,cf941465,markdown,fr,76421cf501cca13c,"### 5.5 Set Argumentation Frameworks (SetAF) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,cf941465,markdown,fr,76421cf501cca13c,"### 5.5 Set Argumentation Frameworks (SetAF) Les Set Argumentation Frameworks [Nielsen, Parsons, 2006] généralisent les attaques: c'est un **ensemble** d'arguments qui attaque collectivement un argument. * **Attaque d'ensemble**: $(X, a)$ où $X$ est un ensemble non vide d'arguments et $a$ est l'argument attaqué * **Défense**: Un argument $a$ est défendu par $E$ si pour chaque $X$ qui attaque $a$, un sous-ensemble de $E$ attaque un élément de $X$",,,,,,,,76421cf501cca13c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,938961d9,code,fr,e9c9c2407932ee0e,"# --- 5.5 Set Argumentation Frameworks (SetAF) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,938961d9,code,fr,e9c9c2407932ee0e,"# --- 5.5 Set Argumentation Frameworks (SetAF) --- print(""\n--- 5.5 Set Argumentation Frameworks (SetAF) ---"") if not jvm_ready: @@ -14607,7 +14607,7 @@ else: except ImportError as e: print(f""Erreur d'import pour SetAF : {e}. Verifiez le JAR 'arg.setaf'."") except jpype.JException as e_java: print(f""Erreur Java generale SetAF: {e_java.message()}"") except Exception as e_gen: print(f""Erreur Python inattendue SetAF: {e_gen}""); import traceback; traceback.print_exc()",,,,,,,,e9c9c2407932ee0e,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,ut4ligfrhz,markdown,fr,4fd5571387369482,"#### Interpretation des résultats SetAF +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,ut4ligfrhz,markdown,fr,4fd5571387369482,"#### Interpretation des résultats SetAF **Structure du framework** @@ -14648,13 +14648,13 @@ L'attaque `{a, c} -> c` est **paradoxale** : elle necessite `c` pour attaquer `c - **Vote a l'unanimite** : Une decision est bloquee seulement si TOUS les opposants votent contre - **Systèmes de securite** : Une alerte se declenche si TOUTES les conditions sont reunies - **Consensus** : Un argument est rejete seulement si un groupe entier s'y oppose",,,,,,,,4fd5571387369482,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,febef988,markdown,fr,660247a43c11174a,"### 5.6 Frameworks Étendus (Attaques sur Attaques) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,febef988,markdown,fr,660247a43c11174a,"### 5.6 Frameworks Étendus (Attaques sur Attaques) Les Frameworks d'Argumentation Étendus [Modgil, 2009] permettent de modéliser des scénarios où une **attaque peut être attaquée** par un argument. Cela représente des concepts comme la préférence entre attaques. * **EAF** (Extended AF): Arguments attaquent des attaques $(c, (a, b))$ * **REAF** (Récursive Extended AF): Généralise les EAF en permettant aux arguments d'attaquer des attaques sur des attaques (récursivement)",,,,,,,,660247a43c11174a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,3407f03c,code,fr,1f8037c4fb8ec38c,"# --- 5.6 Frameworks Étendus (EAF / REAF) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,3407f03c,code,fr,1f8037c4fb8ec38c,"# --- 5.6 Frameworks Étendus (EAF / REAF) --- print(""\n--- 5.6 Frameworks Etendus (EAF / REAF) ---"") if not jvm_ready: @@ -14755,7 +14755,7 @@ else: except ImportError as e: print(f""Erreur d'import pour EAF/REAF : {e}. Verifiez le JAR 'arg.extended'."") except jpype.JException as e_java: print(f""Erreur Java generale EAF/REAF: {e_java.message()}"") except Exception as e_gen: print(f""Erreur Python inattendue EAF/REAF: {e_gen}""); import traceback; traceback.print_exc()",,,,,,,,1f8037c4fb8ec38c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,2jd9c6p5m2v,markdown,fr,952086a1459afade,"#### Interpretation des frameworks etendus EAF/REAF +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,2jd9c6p5m2v,markdown,fr,952086a1459afade,"#### Interpretation des frameworks etendus EAF/REAF Les résultats montrent comment les attaques sur attaques modifient les extensions : @@ -14787,7 +14787,7 @@ Analyse : - EAF/REAF modelisent les debats sur la pertinence des arguments - ""Je conteste que ton argument attaque le mien"" (meta-argumentation) - Utile en droit, philosophie, et negociation",,,,,,,,952086a1459afade,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,bw8w4lkmya6,markdown,fr,743a48929fa4b730,"## Exemple guide : Modelisation d'un debat avec un framework bipolaire +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,bw8w4lkmya6,markdown,fr,743a48929fa4b730,"## Exemple guide : Modelisation d'un debat avec un framework bipolaire ### Contexte @@ -14818,7 +14818,7 @@ Voici une modelisation guidee d'un debat sur le choix d'un langage de programmat - `SimpleGroundedReasoner().getModel(theory)` pour l'extension grounded - `SimplePreferredReasoner().getModels(theory)` pour les extensions preferred - Les supports bipolaires utilisent `Support(source, target)` et `NecessityArgumentationFramework`",,,,,,,,743a48929fa4b730,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,jwmc8oi45a,code,fr,689b53da7fd114b9,"# --- Exemple guide : Debat langage de programmation (Framework bipolaire) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,jwmc8oi45a,code,fr,689b53da7fd114b9,"# --- Exemple guide : Debat langage de programmation (Framework bipolaire) --- if jvm_ready: from org.tweetyproject.arg.dung.syntax import DungTheory, Argument, Attack @@ -14887,7 +14887,7 @@ if jvm_ready: print(f""\nBonus non execute: {e_bonus}"") else: print(""ERREUR: JVM non demarree. Exemple guide (debat langage) non execute."")",,,,,,,,689b53da7fd114b9,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,d376fd82,markdown,fr,b6f9e8cd690770cb,"## Exercice : Modelisation d'un debat avec un framework bipolaire +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,d376fd82,markdown,fr,b6f9e8cd690770cb,"## Exercice : Modelisation d'un debat avec un framework bipolaire ### Contexte @@ -14912,12 +14912,12 @@ A votre tour. Modelisez un debat sur le choix d'une architecture logicielle (mon - Reprenez la structure de l'exemple guide ci-dessus - `DungTheory`, `Argument`, `Attack` pour le framework de base - `SimpleGroundedReasoner().getModel(theory)` et `SimplePreferredReasoner().getModels(theory)`",,,,,,,,b6f9e8cd690770cb,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,128d58fe,code,fr,01df0f68296e9901,"# --- Exercice : Debat architecture logicielle (Framework bipolaire) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,128d58fe,code,fr,01df0f68296e9901,"# --- Exercice : Debat architecture logicielle (Framework bipolaire) --- # TODO etudiant : modelisez le debat monolithe vs microservices # 1. Creer les arguments 2. Construire le DungTheory 3. Calculer les extensions # 4. Interpreter le resultat 5. (Bonus) ajouter les supports (framework bipolaire) print(""Exercice a completer : voir l'exemple guide ci-dessus comme modele."")",,,,,,,,01df0f68296e9901,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,07c87529,markdown,fr,1bfaa968033a8081,"## Exercice : Attaques collectives (SetAF) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,07c87529,markdown,fr,1bfaa968033a8081,"## Exercice : Attaques collectives (SetAF) La section 5.5 a introduit les **SetAF** : un *ensemble* d'arguments attaque collectivement une cible. L'attaque `{x, y} -> z` n'est active que si `x` ET `y` sont tous deux acceptes. @@ -14936,7 +14936,7 @@ Si `m2` tombe, l'attaque collective contre `prop` n'est plus complete. - `set_af = SetAf()`, puis `SetAttack(JObject(attacker_set, JavaSet), cible)` - `SimpleGroundedSetAfReasoner().getModel(set_af)` pour le grounded ",,,,,,,,1bfaa968033a8081,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,a03f5f0a,code,fr,8a964893e0ed1d0c,"# --- Exercice : Attaques collectives (SetAF) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,a03f5f0a,code,fr,8a964893e0ed1d0c,"# --- Exercice : Attaques collectives (SetAF) --- # TODO etudiant : modelisez une decision a l'unanimite avec un SetAF # # Etape 1 : imports (cf section 5.5) @@ -14958,7 +14958,7 @@ else: extension = None # TODO etudiant : remplacer par SimpleGroundedSetAfReasoner().getModel(set_af) print(""Exercice a completer"") ",,,,,,,,8a964893e0ed1d0c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,7f9856bd,markdown,fr,d5ea69dd6429e2f2,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,7f9856bd,markdown,fr,d5ea69dd6429e2f2,"--- ## Résumé @@ -14990,14 +14990,14 @@ Le notebook suivant explore les **sémantiques de classement** (ranking-based) e --- -**Navigation**: [← Tweety-6-Structured-Argumentation](Tweety-6-Structured-Argumentation.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-7b-Ranking-Probabilistic →](Tweety-7b-Ranking-Probabilistic.ipynb)",,,,,,,,d5ea69dd6429e2f2,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,e5b98aaf,markdown,fr,6802c58443897fc8,"# Tweety-7a : Frameworks d'Argumentation Etendus (C#) +**Navigation**: [← Tweety-6-Structured-Argumentation](Tweety-06-Structured-Argumentation-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-7b-Ranking-Probabilistic →](Tweety-07b-Ranking-Probabilistic-Python.ipynb)",,,,,,,,d5ea69dd6429e2f2,,,,,,,, +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,e5b98aaf,markdown,fr,6802c58443897fc8,"# Tweety-7a : Frameworks d'Argumentation Etendus (C#) -**Navigation** : [<< 6-Structured-Argumentation](Tweety-6-Structured-Argumentation.ipynb) | [Index](README.md) | [7b-Ranking-Probabilistic >>](Tweety-7b-Ranking-Probabilistic.ipynb) +**Navigation** : [<< 6-Structured-Argumentation](Tweety-06-Structured-Argumentation-Python.ipynb) | [Index](README.md) | [7b-Ranking-Probabilistic >>](Tweety-07b-Ranking-Probabilistic-Python.ipynb) ## Frameworks d'Argumentation Etendus (jumeau .NET) -Ce notebook est le **jumeau C# (.NET Interactive)** de [Tweety-7a-Extended-Frameworks.ipynb](Tweety-7a-Extended-Frameworks.ipynb). Au-dela du cadre abstrait de Dung (Tweety-5), il explore les **frameworks etendus** : ADF (conditions d'acceptation), SetAF (attaques ensembles), EAF (attaques sur les attaques), VAF (argumentation value-based). +Ce notebook est le **jumeau C# (.NET Interactive)** de [Tweety-07a-Extended-Frameworks-Python.ipynb](Tweety-07a-Extended-Frameworks-Python.ipynb). Au-dela du cadre abstrait de Dung (Tweety-5), il explore les **frameworks etendus** : ADF (conditions d'acceptation), SetAF (attaques ensembles), EAF (attaques sur les attaques), VAF (argumentation value-based). ### Value-add du jumeau C# (Prong B, EPIC #3801) @@ -15017,7 +15017,7 @@ Le twin Python s'appuie sur **jpype + la JVM Tweety** (`org.tweetyproject.arg.ad ### Duree estimee : 55 minutes ",,,,,,,,6802c58443897fc8,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,8882d6c7,markdown,fr,bc40bb72a1e5269c,"## 1. Pourquoi etendre le cadre de Dung ? +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,8882d6c7,markdown,fr,bc40bb72a1e5269c,"## 1. Pourquoi etendre le cadre de Dung ? Le cadre abstrait de Dung (1995, voir [Tweety-5](Tweety-5-Abstract-Argumentation.ipynb)) modelise l'attaque binaire `a -> b` entre arguments entiers. Mais la realite argumentative est plus riche : @@ -15028,7 +15028,7 @@ Le cadre abstrait de Dung (1995, voir [Tweety-5](Tweety-5-Abstract-Argumentation Nous implementons ces 4 extensions **from-scratch**, avec a chaque fois un exemple **verifiable analytiquement** (re-derivation a la main de l'extension grounded). ",,,,,,,,bc40bb72a1e5269c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,07a8453b,markdown,fr,c44e65b89ef5c5c6,"## 2. Brique commune : logique 3-valued de Kleene +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,07a8453b,markdown,fr,c44e65b89ef5c5c6,"## 2. Brique commune : logique 3-valued de Kleene Les ADF utilisent une logique a **trois valeurs** : Vrai (T), Faux (F), Indetermine (U). La negation, conjonction, disjonction suivent les tables de **Kleene** (U propage l'incertitude) : @@ -15042,7 +15042,7 @@ Les ADF utilisent une logique a **trois valeurs** : Vrai (T), Faux (F), Indeterm Le `U` represente ""pas encore decide"". La sémantique grounded d'un ADF est un **fixed-point 3-valued** : on part de tout-U et on propage jusqu'a stabilisation. ",,,,,,,,c44e65b89ef5c5c6,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,48b92c85,code,fr,4d403f5fd9ed0d0a,"// Prong B (#3801): 0 NuGet, 0 jpype, 0 IKVM, 0 JVM. BCL .NET 9 uniquement. +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,48b92c85,code,fr,4d403f5fd9ed0d0a,"// Prong B (#3801): 0 NuGet, 0 jpype, 0 IKVM, 0 JVM. BCL .NET 9 uniquement. using System; using System.Text; using System.Collections.Generic; @@ -15073,7 +15073,7 @@ public static void Show(string label, string s) => $""{label}: {s}"".Display(); Show(""Kleene"", $""Not(T)={Kleene.Str(Kleene.Not(Tri.T))}, And(T,U)={Kleene.Str(Kleene.And(Tri.T,Tri.U))}, Or(F,U)={Kleene.Str(Kleene.Or(Tri.F,Tri.U))}""); ",,,,,,,,4d403f5fd9ed0d0a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,5ff21056,markdown,fr,3e51f52caa3121ba,"## 3. Abstract Dialectical Frameworks (ADF) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,5ff21056,markdown,fr,3e51f52caa3121ba,"## 3. Abstract Dialectical Frameworks (ADF) Un **ADF** (Brewka & Woltran 2010) associe a chaque argument `a` une **condition d'acceptation** `C(a)` : une formule logique sur les autres arguments. `a` est accepte ssi `C(a)` est satisfaite. @@ -15090,7 +15090,7 @@ Trois arguments avec leurs conditions : **Re-derivation** : `c = T` (tautologie). Donc `b = not c = not T = F`. Donc `a = not b = not F = T`. Résultat attendu : `{a=T, c=T, b=F}`, extension grounded `{a, c}`. ",,,,,,,,3e51f52caa3121ba,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,5a5d3b6c,code,fr,a3372ca33968c767,"// --- ADF from-scratch : conditions d'acceptation 3-valued + grounded fixed-point --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,5a5d3b6c,code,fr,a3372ca33968c767,"// --- ADF from-scratch : conditions d'acceptation 3-valued + grounded fixed-point --- // Une condition d'acceptation = fonction (interpretation -> Tri). using Interpretation = System.Collections.Generic.Dictionary; @@ -15144,12 +15144,12 @@ sb.AppendLine(); sb.AppendLine("" Re-derivation : c=T (tautologie) -> b=not c=F -> a=not b=T -> {a,c}.""); Show(""ADF"", sb.ToString()); ",,,,,,,,a3372ca33968c767,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,9214d39b,markdown,fr,6eaf243b7fc7b41e,"### 3.3 Interpretation : pourquoi c'est plus expressif que Dung +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,9214d39b,markdown,fr,6eaf243b7fc7b41e,"### 3.3 Interpretation : pourquoi c'est plus expressif que Dung Dans un cadre de Dung, l'attaque `c -> b` signifie ""c refute b"" mais c'est **binaire** : si c est accepte, b est rejete. L'ADF permet des conditions **arbitraires** : `b = not(c) and d`, `a = b or c`, etc. La condition d'acceptation est une formule logique complete, pas juste une liste d'attaquants. Ici l'exemple est simple mais demontre le mécanisme : `c` est un **fait** (tautologie), `b` est défini comme le reflet de `not c`, et `a` comme `not b`. Le fixed-point converge en une seule itération complete car il n'y a pas de cycle (c force, b depend de c, a depend de b).",,,,,,,,6eaf243b7fc7b41e,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,595e8fa5,markdown,fr,d1eccffbcd5aa21d,"## 4. SetAF : attaques d'ensembles (Nielsen-Parsons 2011) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,595e8fa5,markdown,fr,d1eccffbcd5aa21d,"## 4. SetAF : attaques d'ensembles (Nielsen-Parsons 2011) Dans un **SetAF**, une attaque part d'un **ensemble** d'arguments vers un argument cible : `(B, x)` signifie ""l'ensemble B attacks x"". L'attaque est **active** ssi **tous** les membres de `B` sont acceptes (IN). C'est plus expressif que Dung : il faut une *coalition* pour attaquer. @@ -15167,7 +15167,7 @@ Arguments `{a, b, c, d}` avec attaques : > **Insight** : l'auto-attaque `({a,c}, c)` echoue car elle exige `a` IN, mais `a` est OUT. La coalition requise ne peut jamais se former. ",,,,,,,,d1eccffbcd5aa21d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,fb1d4fe0,code,fr,42590812d90b7cd6,"// --- SetAF from-scratch : attaques d'ensembles + grounded labelling --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,fb1d4fe0,code,fr,42590812d90b7cd6,"// --- SetAF from-scratch : attaques d'ensembles + grounded labelling --- public sealed class SetAF { public List Args { get; } = new(); @@ -15219,11 +15219,11 @@ sb4.AppendLine("" Verif : b,d non attaquants -> IN ; ({b,d},a) active -> a OUT sb4.AppendLine("" ({a,c},c) requiert a IN mais a OUT -> jamais active -> c IN.""); Show(""SetAF"", sb4.ToString()); ",,,,,,,,42590812d90b7cd6,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,f026136f,markdown,fr,2980793d76d38217,"### 4.2 Pourquoi {a,c} n'attaque jamais c +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,f026136f,markdown,fr,2980793d76d38217,"### 4.2 Pourquoi {a,c} n'attaque jamais c L'attaque `({a,c}, c)` est **auto-referentielle** : pour qu'elle soit active, il faudrait `a` ET `c` tous deux IN. Mais `c` IN est précisément ce que cette attaque empeche, et `a` est OUT (defait par {b,d}). La coalition requise `{a,c}` ne peut donc jamais se former : l'attaque est structurellement inactive. C'est une subtilite que la sémantique ensemble capture naturellement, la ou une lecture ""il existe un attaquant"" (Dung binaire) induirait en erreur. ",,,,,,,,2980793d76d38217,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,a69a380a,markdown,fr,10989a1671ea51b8,"## 5. EAF : attaques sur les attaques (Modgil 2010) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,a69a380a,markdown,fr,10989a1671ea51b8,"## 5. EAF : attaques sur les attaques (Modgil 2010) Dans un **EAF** (Extended Argumentation Framework), une attaque peut porter sur une **autre attaque**, pas seulement sur un argument. Si `c` attaque l'attaque `(a, b)` (notation `c -> (a,b)`), et que `c` est accepte, alors l'attaque `a -> b` est **revoquee** : `b` est reinstated. @@ -15240,7 +15240,7 @@ Arguments `{a, b, c}` : > **Lecon (Modgil)** : une meta-attaque depuis un argument accepte **desactive** l'attaque cible, restaurant l'argument qu'elle menacait. C'est le mécanisme formel des **préférences** et des **exceptions** en argumentation. ",,,,,,,,10989a1671ea51b8,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,1ecfe85c,code,fr,f77be3ea1dfcaaf6,"// --- EAF from-scratch : meta-attaques (Modgil) + reinstatement --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,1ecfe85c,code,fr,f77be3ea1dfcaaf6,"// --- EAF from-scratch : meta-attaques (Modgil) + reinstatement --- public sealed class EAF { public List Args { get; } = new(); @@ -15299,11 +15299,11 @@ sb5.AppendLine("" Verif EAF : c IN (non attaque) -> c revoque a->b -> b non def sb5.AppendLine("" La meta-attaque REINSTATED b (Dung {a,c} -> EAF {a,b,c}).""); Show(""EAF"", sb5.ToString()); ",,,,,,,,f77be3ea1dfcaaf6,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,0b11224a,markdown,fr,cfa4626ff009c152,"### 5.2 Interpretation : préférences et exceptions +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,0b11224a,markdown,fr,cfa4626ff009c152,"### 5.2 Interpretation : préférences et exceptions La meta-attaque `c -> (a,b)` encode une **préférence** : ""l'argument c (peut-etre un argument de plus haut niveau) dit que la critique de a contre b n'est pas valable"". C'est exactement le mécanisme des **frameworks avec préférences** (Modgil 2010) : au lieu de supprimer l'attaque `a->b`, on permet a un argument de la **desactiver** lorsqu'il est accepte. Cela rend l'argumentation **dynamique** et **hiérarchique** : on peut argumenter *contre* une objection, pas seulement contre une conclusion. ",,,,,,,,cfa4626ff009c152,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,a9d8f9ff,markdown,fr,6a84e5c57b909f5f,"## 6. VAF : argumentation value-based (Bench-Capon 2003) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,a9d8f9ff,markdown,fr,6a84e5c57b909f5f,"## 6. VAF : argumentation value-based (Bench-Capon 2003) Dans un **VAF**, chaque argument promeut une **valeur** (ex. ""economie"", ""environnement"", ""justice""). Une attaque `a -> b` devient un **defeat** ssi la valeur de `a` est **preferée** (ou egale) a celle de `b` dans un ordre de valeurs `ValPref`. Sinon, l'attaque **echoue** : `b` survive. @@ -15318,7 +15318,7 @@ Cas 2 : `Environnement > Economie` -> l'attaque `a->b` echoue (b prioritaire) -> > **Lecon (Bench-Capon)** : la même topologie d'attaque donne des **extensions différentes** selon l'ordre des valeurs. Le VAF formalise l'idee qu'un argument ""plus fort"" (valeur prioritaire) peut resister a une attaque. ",,,,,,,,6a84e5c57b909f5f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,ffb5ff8c,code,fr,4400d587a5024d98,"// --- VAF from-scratch : value-based (Bench-Capon) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,ffb5ff8c,code,fr,4400d587a5024d98,"// --- VAF from-scratch : value-based (Bench-Capon) --- public sealed class VAF { public List Args { get; } = new(); @@ -15383,13 +15383,13 @@ VAF RunVAF(string prefDesc, Action setPref) RunVAF(""Economie > Environnement"", v => v.SetPref(""Economie"", ""Environnement"")); RunVAF(""Environnement > Economie"", v => v.SetPref(""Environnement"", ""Economie"")); ",,,,,,,,4400d587a5024d98,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,5c2aa4e5,markdown,fr,d0a1ea5d028b62ac,"### 6.2 Interpretation : le defait conditionnel +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,5c2aa4e5,markdown,fr,d0a1ea5d028b62ac,"### 6.2 Interpretation : le defait conditionnel Dans le cas 1 (Economie prioritaire), `a` defait `b` car sa valeur l'emporte. Dans le cas 2 (Environnement prioritaire), `b` resiste : son attaque depuis `a` echoue car la valeur d'`a` est dominée. La topologie `a -> b` est **identique**, mais l'extension grounded change. C'est la puissance du VAF : **l'ordre de valeurs est un paramètre du raisonnement**, pas juste une etiquette. > **Lien avec EAF** : le VAF est implementable comme un EAF ou les meta-attaques correspondent aux préférences de valeurs. Les deux formalismes capturent l'idee que **toutes les attaques ne sont pas des defeats**. ",,,,,,,,d0a1ea5d028b62ac,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,be46f6ee,markdown,fr,4bd977be046cbdf7,"## Synthese : 4 extensions, 4 sources d'expressivite +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,be46f6ee,markdown,fr,4bd977be046cbdf7,"## Synthese : 4 extensions, 4 sources d'expressivite | Framework | Source d'expressivite | Exemple verifie | Grounded | |-----------|----------------------|-----------------|----------| @@ -15414,9 +15414,9 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,b --- -**Notebook suivant** : [Tweety-7b-Ranking-Probabilistic](Tweety-7b-Ranking-Probabilistic.ipynb) | [Retour au sommaire](README.md) +**Notebook suivant** : [Tweety-7b-Ranking-Probabilistic](Tweety-07b-Ranking-Probabilistic-Python.ipynb) | [Retour au sommaire](README.md) ",,,,,,,,4bd977be046cbdf7,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,c39d750e,markdown,fr,7b3fc8b264985473,"## 8. Exercices +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,c39d750e,markdown,fr,7b3fc8b264985473,"## 8. Exercices ### Exercice 1 : ADF cyclique @@ -15434,7 +15434,7 @@ Reprenez l'exemple EAF (`a->b, c->(a,b)`) mais ajoutez une attaque `d -> c` avec Arguments `a` (Economie), `b` (Environnement), `c` (Justice), attaques `a->b`, `b->c`, `c->a` (cycle). Testez les 3 ordres cycliques et identifiez celui qui donne le plus grand grounded. ",,,,,,,,7b3fc8b264985473,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,e12a1a4e,code,fr,552f84f06a43cb03,"// Exercice 1 : ADF cyclique (a:not b, b:not a) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,e12a1a4e,code,fr,552f84f06a43cb03,"// Exercice 1 : ADF cyclique (a:not b, b:not a) // TODO etudiant : construire l'ADF et observer le grounded var adfExo1 = new ADF(); // adfExo1.Add(""a"", Neg(Var(""b""))); @@ -15442,7 +15442,7 @@ var adfExo1 = new ADF(); // var gExo1 = adfExo1.Grounded(); Show(""Exo1"", ""Exercice a completer : ADF cyclique (attendu : extension grounded vide, tous U)""); ",,,,,,,,552f84f06a43cb03,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,e5f902b2,code,fr,14126f331ae270f3,"// Exercice 2 : SetAF ({x,y}->z, {z}->x) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,e5f902b2,code,fr,14126f331ae270f3,"// Exercice 2 : SetAF ({x,y}->z, {z}->x) // TODO etudiant : construire le SetAF et calculer le grounded var setafExo2 = new SetAF(new[] { ""x"", ""y"", ""z"" }); // setafExo2.AddAttack(new[]{""x"",""y""}, ""z""); @@ -15450,21 +15450,21 @@ var setafExo2 = new SetAF(new[] { ""x"", ""y"", ""z"" }); // var (inExo2, outExo2) = setafExo2.Grounded(); Show(""Exo2"", ""Exercice a completer : SetAF 3 args (qui est IN ?)""); ",,,,,,,,14126f331ae270f3,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,0ec39316,code,fr,ee29d7dc01bc3f1f,"// Exercice 3 : EAF avec c defait (d->c ajoutee) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,0ec39316,code,fr,ee29d7dc01bc3f1f,"// Exercice 3 : EAF avec c defait (d->c ajoutee) // TODO etudiant : ajouter d et d->c, observer le grounded var eafExo3 = new EAF(new[] { ""a"", ""b"", ""c"", ""d"" }); // eafExo3.AddAttack(""a"",""b""); eafExo3.AddMetaAttack(""c"",""a"",""b""); eafExo3.AddAttack(""d"",""c""); // var gExo3 = eafExo3.Grounded(useMeta: true); Show(""Exo3"", ""Exercice a completer : EAF avec c OUT -> b OUT (reinstatement perdu)""); ",,,,,,,,ee29d7dc01bc3f1f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,0433eeb6,code,fr,0234f7af5fbe471a,"// Exercice 4 : VAF a 3 valeurs cyclique +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,0433eeb6,code,fr,0234f7af5fbe471a,"// Exercice 4 : VAF a 3 valeurs cyclique // TODO etudiant : cycle a->b->c->a avec 3 valeurs, tester les ordres var vafExo4 = new VAF(); // vafExo4.Add(""a"",""Economie""); vafExo4.Add(""b"",""Environnement""); vafExo4.Add(""c"",""Justice""); // vafExo4.AddAttack(""a"",""b""); vafExo4.AddAttack(""b"",""c""); vafExo4.AddAttack(""c"",""a""); Show(""Exo4"", ""Exercice a completer : VAF 3-valeurs cyclique (quel ordre maximise le grounded ?)""); ",,,,,,,,0234f7af5fbe471a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,1c1b83ab,markdown,fr,0aa58e2e90b396d2,"## Conclusion +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,1c1b83ab,markdown,fr,0aa58e2e90b396d2,"## Conclusion Ce jumeau C# a presente les **4 extensions principales** du cadre de Dung, reimplementation from-scratch du twin Python jpype/Tweety JVM. @@ -15484,7 +15484,7 @@ Ce jumeau C# a presente les **4 extensions principales** du cadre de Dung, reimp ### Tranche 2 — lib-vs-lib via la librairie Tweety (pont IKVM) -La tranche 1 ci-dessus reimplante ADF / SetAF / EAF / VAF **from-scratch** (BCL .NET). La tranche 2 branche la **librairie Java Tweety** cote C# via le pont **IKVM** (runtime Java 8 pour .NET), sur le gabarit de [Tweety-6](Tweety-6-Structured-Argumentation-Csharp.ipynb) : +La tranche 1 ci-dessus reimplante ADF / SetAF / EAF / VAF **from-scratch** (BCL .NET). La tranche 2 branche la **librairie Java Tweety** cote C# via le pont **IKVM** (runtime Java 8 pour .NET), sur le gabarit de [Tweety-6](Tweety-06-Structured-Argumentation-CSharp.ipynb) : - **Dung = SOTA-OK** : le reasoner reel Tweety (`SimpleGroundedReasoner`) calcule l'extension fondee `{a,c}` sur la theorie `a->b, b->c` — algorithme du moteur, pas reimplementation. - **ADF = librairie chargee (SOTA-OK sur la syntaxe)** : le module `arg.adf` (125 types : 15 conditions d'acceptation + 59 types de reasoner SAT) est atteignable depuis C# via le shade fat `conditional-logics.dll`. @@ -15493,11 +15493,11 @@ La tranche 1 ci-dessus reimplante ADF / SetAF / EAF / VAF **from-scratch** (BCL *« From scratch c'est bien, lib vs lib c'est encore mieux ! »* -**Suite** : [Tweety-7b-Ranking-Probabilistic](Tweety-7b-Ranking-Probabilistic.ipynb) | [Retour au sommaire](README.md) +**Suite** : [Tweety-7b-Ranking-Probabilistic](Tweety-07b-Ranking-Probabilistic-Python.ipynb) | [Retour au sommaire](README.md) ",,,,,,,,0aa58e2e90b396d2,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,166a1b7b,markdown,fr,1f98e32600a9edbe,"# Sémantiques de Classement et Argumentation Probabiliste +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,166a1b7b,markdown,fr,1f98e32600a9edbe,"# Sémantiques de Classement et Argumentation Probabiliste -**Navigation**: [← Tweety-7a-Extended-Frameworks](Tweety-7a-Extended-Frameworks.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-8-Agent-Dialogues →](Tweety-8-Agent-Dialogues.ipynb) +**Navigation**: [← Tweety-7a-Extended-Frameworks](Tweety-07a-Extended-Frameworks-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-8-Agent-Dialogues →](Tweety-08-Agent-Dialogues-Python.ipynb) --- @@ -15510,10 +15510,10 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,166a1b ## Prérequis -Exécutez d'abord [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb) pour configurer l'environnement JVM. +Exécutez d'abord [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb) pour configurer l'environnement JVM. ### Durée estimée : 40 minutes",,,,,,,,1f98e32600a9edbe,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,5f5615e3,code,fr,9a2e17ce80f65069,"# JPype1 doit être pré-provisionné dans l'environnement (cf Tweety-1-Setup.ipynb / requirements.txt). +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,5f5615e3,code,fr,9a2e17ce80f65069,"# JPype1 doit être pré-provisionné dans l'environnement (cf Tweety-01-Setup-Python.ipynb / requirements.txt). # Installation conditionnelle en fallback uniquement si l'import échoue. try: import jpype # noqa: F401 @@ -15527,10 +15527,10 @@ print(f""JPype1 disponible: {jpype_ok}"") import sys print(sys.executable) print(sys.version)",,,,,,,,9a2e17ce80f65069,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,45c5a924,markdown,fr,269fb47805f3e423,"### Initialisation de la JVM et detection des outils +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,45c5a924,markdown,fr,269fb47805f3e423,"### Initialisation de la JVM et detection des outils JPype1 installe, nous lancons la JVM avec les JARs Tweety et detectons les outils externes disponibles. Cette configuration est requise pour toutes les sections de classement et d'argumentation probabiliste.",,,,,,,,269fb47805f3e423,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,4464a752,code,fr,0cbc807da2f7612f,"# --- Initialisation JVM Tweety + Outils Externes --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,4464a752,code,fr,0cbc807da2f7612f,"# --- Initialisation JVM Tweety + Outils Externes --- print(""--- Verification JVM Tweety + Outils ---"") jvm_ready = False @@ -15645,7 +15645,7 @@ if jvm_ready: short_path = path.split(os.sep)[-1] if len(path) > 30 else path print(f"" {tool}: {short_path}"") print(f""\nJVM prete. Outils: {sum(1 for t,p in EXTERNAL_TOOLS.items() if p)}/{len(EXTERNAL_TOOLS)}"")",,,,,,,,0cbc807da2f7612f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,6qhb7prjqya,markdown,fr,7306fc6a07762fbe,"### Contexte TweetyProject +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,6qhb7prjqya,markdown,fr,7306fc6a07762fbe,"### Contexte TweetyProject Ce notebook utilise **TweetyProject**, une bibliothèque Java pour l'IA symbolique et l'argumentation formelle. L'initialisation ci-dessus configure : @@ -15660,10 +15660,10 @@ Le script détecte automatiquement le JDK portable (Zulu 17) et les outils dans > **Note technique** : La sortie `JVM prete. Outils: 5/5` confirme que tous les outils requis pour ce notebook sont disponibles. ---",,,,,,,,7306fc6a07762fbe,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,2bc570b2,markdown,fr,99b111c9480e9a83,"## Partie 5b : Classement et Probabilités +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,2bc570b2,markdown,fr,99b111c9480e9a83,"## Partie 5b : Classement et Probabilités Cette section explore des méthodes d'analyse qui vont au-delà de l'acceptation binaire, en établissant des **classements** entre arguments ou en intégrant des **probabilités** dans le raisonnement argumentatif.",,,,,,,,99b111c9480e9a83,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,35bd2352,markdown,fr,c57a7302273cfab5,"### 5.7 Sémantiques Basées sur le Classement (Ranking) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,35bd2352,markdown,fr,c57a7302273cfab5,"### 5.7 Sémantiques Basées sur le Classement (Ranking) Au lieu de simplement déterminer si un argument est accepté ou rejeté, les sémantiques de classement établissent un **ordre** entre les arguments, du plus ""fort"" au moins acceptable. @@ -15676,7 +15676,7 @@ Principales approches implémentées dans Tweety: - **Strategy-Based**: Basé sur les jeux (Matt & Toni) - **SAF-Based**: Approche sociale - **Counting / Propagation**: Sémantiques itératives",,,,,,,,c57a7302273cfab5,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,ut4ehi4sqda,markdown,fr,b3c6e814a40f584d,"#### Contexte historique et motivations +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,ut4ehi4sqda,markdown,fr,b3c6e814a40f584d,"#### Contexte historique et motivations Les sémantiques classiques de Dung (grounded, preferred, stable) produisent des ensembles d'extensions, mais ne fournissent **aucun ordre** entre les arguments. Cela limite leur utilité dans plusieurs contextes : @@ -15692,7 +15692,7 @@ Dans un débat médical, les sémantiques classiques peuvent dire que deux trait Les sémantiques de classement résolvent ce problème en calculant un **ordre partiel** ou **total** sur les arguments, ou en assignant des **scores numériques** reflétant leur force argumentative. ---",,,,,,,,b3c6e814a40f584d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,4988945f,code,fr,8385cd741fe178d4,"# --- 5.7 Sémantiques Basées sur le Classement (Ranking) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,4988945f,code,fr,8385cd741fe178d4,"# --- 5.7 Sémantiques Basées sur le Classement (Ranking) --- print(""\n--- 5.7 Semantiques Basees sur le Classement (Ranking) ---"") if not jvm_ready: @@ -15824,7 +15824,7 @@ else: except ImportError as e: print(f""Erreur d'import pour Ranking Semantics : {e}."") except jpype.JException as e_java: print(f""Erreur Java generale Ranking: {e_java.message()}"") except Exception as e_gen: print(f""Erreur Python inattendue Ranking: {e_gen}""); import traceback; traceback.print_exc()",,,,,,,,8385cd741fe178d4,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,uwblc73ap9,markdown,fr,e7b3dfeb92bf8337,"#### Interpretation des résultats +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,uwblc73ap9,markdown,fr,e7b3dfeb92bf8337,"#### Interpretation des résultats Les résultats ci-dessus montrent comment différentes sémantiques de classement produisent des ordres distincts sur le même framework : @@ -15842,7 +15842,7 @@ Les résultats ci-dessus montrent comment différentes sémantiques de classemen - Utiliser **Categorizer** pour des scores interpretables : une **force d'acceptabilite** dans [0, 1] (et non une probabilite) - Utiliser **Burden-Based** pour un ordre total simple - Utiliser **Tuples*** pour identifier les arguments equivalents",,,,,,,,e7b3dfeb92bf8337,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,ec8018ef,markdown,fr,fe1b4b0241b2147e,"## Exercice : Equivalences de classement (Tuples* et Counting) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,ec8018ef,markdown,fr,fe1b4b0241b2147e,"## Exercice : Equivalences de classement (Tuples* et Counting) L'exemple guide a compare Categorizer / Burden / Discussion. Les sémantiques **Tuples*** revelent des **equivalences** (arguments incomparables). Comparez sur un graphe symetrique. @@ -15856,7 +15856,7 @@ Debat symetrique : `pour1`, `pour2` vs `contre1`, `contre2`. Attaques croisees. - `TuplesRankingReasoner().getModel(theory)` puis `CountingRankingReasoner(0.98, 0.001).getModel(theory)` - Attendu (Tuples*) : pour1 ~ pour2 et contre1 ~ contre2 ",,,,,,,,fe1b4b0241b2147e,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,6105996a,code,fr,d1df14ee77505b25,"# --- Exercice : Equivalences de classement (Tuples* et Counting) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,6105996a,code,fr,d1df14ee77505b25,"# --- Exercice : Equivalences de classement (Tuples* et Counting) --- # TODO etudiant : comparez Tuples* et Counting sur un graphe symetrique # # Etape 1 : imports (cf section 5.7) @@ -15877,7 +15877,7 @@ else: rank_counting = None # TODO etudiant : remplacer par CountingRankingReasoner(0.98, 0.001).getModel(theory) print(""Exercice a completer"") ",,,,,,,,d1df14ee77505b25,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,591daf12,markdown,fr,f906d3e8c2f238b4,"### 5.8 Argumentation Probabiliste +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,591daf12,markdown,fr,f906d3e8c2f238b4,"### 5.8 Argumentation Probabiliste L'argumentation probabiliste introduit l'**incertitude** dans les cadres d'argumentation: @@ -15892,7 +15892,7 @@ Tweety implémente: - `ArgumentationLottery`, `UtilityFunction`: Décision et utilité attendue > **Deux écoles.** `SubgraphProbabilityFunction` relève de l'**approche par constellations** (Li, Oren & Norman, 2011) : l'incertitude porte sur la *structure* du graphe (quels arguments et attaques sont présents), et la probabilité d'acceptation d'un argument est la masse des sous-graphes dans lesquels il est accepté. Elle se distingue de l'**approche épistémique** (Hunter, 2013 ; Thimm, 2012), où le graphe est fixe et la probabilité exprime le *degré de croyance* d'un agent en chaque argument. Ce notebook illustre la première.",,,,,,,,f906d3e8c2f238b4,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,3ec0ceec,code,fr,4a14177c0f18808b,"# --- 5.8 Argumentation Probabiliste --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,3ec0ceec,code,fr,4a14177c0f18808b,"# --- 5.8 Argumentation Probabiliste --- print(""\n--- 5.8 Argumentation Probabiliste ---"") if not jvm_ready: @@ -15985,7 +15985,7 @@ else: except ImportError as e: print(f""Erreur d'import Prob: {e}."") except jpype.JException as e_java: print(f""Erreur Java generale Prob: {e_java.message()}"") except Exception as e_gen: print(f""Erreur Python inattendue Prob: {e_gen}""); import traceback; traceback.print_exc()",,,,,,,,4a14177c0f18808b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,0rci5yfhdkr,markdown,fr,0dacbe346e646cce,"#### Interpretation des résultats probabilistes +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,0rci5yfhdkr,markdown,fr,0dacbe346e646cce,"#### Interpretation des résultats probabilistes Les résultats illustrent comment l'incertitude sur le graphe d'argumentation affecte l'acceptabilite : @@ -16005,7 +16005,7 @@ Les résultats illustrent comment l'incertitude sur le graphe d'argumentation af **Application pratique :** Cette approche est utile quand on ne connait pas avec certitude quels arguments ou attaques seront valides (ex: preuves a venir, temoignages incertains).",,,,,,,,0dacbe346e646cce,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,dvkdvqdcyq,markdown,fr,b9d8f7c4290abf4a,"## Exemple guide : Comparaison de sémantiques de classement sur un debat medical +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,dvkdvqdcyq,markdown,fr,b9d8f7c4290abf4a,"## Exemple guide : Comparaison de sémantiques de classement sur un debat medical ### Contexte @@ -16032,7 +16032,7 @@ Modelisez un debat medical simplifie sur le choix d'un traitement : - `RankingTools.roundRanking(ranking, 3)` pour arrondir les scores - Un argument non attaque a un score de 1.0 (Categorizer) - Comparez les rangs relatifs, pas les valeurs absolues",,,,,,,,b9d8f7c4290abf4a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,ihnq7d0yl8,code,fr,73ef929dc1f821a4,"# --- Exemple guide : Classement d'un debat medical --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,ihnq7d0yl8,code,fr,73ef929dc1f821a4,"# --- Exemple guide : Classement d'un debat medical --- # Solution complete : comparaison de 3 semantiques de classement sur un debat medical. if jvm_ready: @@ -16123,7 +16123,7 @@ if jvm_ready: print(""t1 reste au-dessus de t2 (0.600 > 0.500) mais l'ecart se reduit de 0.167 a 0.100."") else: print(""ERREUR: JVM non demarree. Exemple guide (debat medical) non execute."")",,,,,,,,73ef929dc1f821a4,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,c389cf53,markdown,fr,150119f8c9628e50,"## Exercice : Argumentation probabiliste sur un temoignage incertain +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,c389cf53,markdown,fr,150119f8c9628e50,"## Exercice : Argumentation probabiliste sur un temoignage incertain La section 5.8 a montre comment calculer la **probabilite d'acceptation** via `SubgraphProbabilityFunction`. Appliquez a un scénario judiciaire. @@ -16140,7 +16140,7 @@ La section 5.8 a montre comment calculer la **probabilite d'acceptation** via - `prob_func.getAcceptanceProbability(arg, Semantics.GROUNDED_SEMANTICS).doubleValue()` - Attendu : `temoin` a la plus forte probabilite, `alibi` la plus faible ",,,,,,,,150119f8c9628e50,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,1eadc60f,code,fr,ebf5150515d78f97,"# --- Exercice : Argumentation probabiliste sur un temoignage incertain --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,1eadc60f,code,fr,ebf5150515d78f97,"# --- Exercice : Argumentation probabiliste sur un temoignage incertain --- # TODO etudiant : calculez les probabilites d'acceptation sur un scenario judiciaire # # Etape 1 : imports (cf section 5.8) @@ -16160,7 +16160,7 @@ else: prob_func = None # TODO etudiant : remplacer par SubgraphProbabilityFunction(theory) print(""Exercice a completer"") ",,,,,,,,ebf5150515d78f97,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,cef18cf7,markdown,fr,9048a068a43994ca,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,cef18cf7,markdown,fr,9048a068a43994ca,"--- ## Résumé @@ -16200,8 +16200,8 @@ Le notebook suivant explore les **dialogues argumentatifs multi-agents** avec le --- -**Navigation**: [← Tweety-7a-Extended-Frameworks](Tweety-7a-Extended-Frameworks.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-8-Agent-Dialogues →](Tweety-8-Agent-Dialogues.ipynb)",,,,,,,,9048a068a43994ca,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,0cf90954,markdown,fr,2d3c1c2d7c6eb894,"## Exercice : Classement d'un debat environnemental +**Navigation**: [← Tweety-7a-Extended-Frameworks](Tweety-07a-Extended-Frameworks-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-8-Agent-Dialogues →](Tweety-08-Agent-Dialogues-Python.ipynb)",,,,,,,,9048a068a43994ca,,,,,,,, +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,0cf90954,markdown,fr,2d3c1c2d7c6eb894,"## Exercice : Classement d'un debat environnemental ### Contexte @@ -16234,7 +16234,7 @@ Modelisez un debat sur la politique environnementale avec les arguments suivants - Reutilisez le pattern de l'exemple guide précédent - `RankingTools.roundRanking(model, 3)` pour arrondir les scores - Comparez les rangs relatifs de `taxe_carbone` et `subvention_vert`",,,,,,,,2d3c1c2d7c6eb894,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,f13216a5,code,fr,123caab7583bdf31,"# --- Exercice : Classement d'un debat environnemental --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,f13216a5,code,fr,123caab7583bdf31,"# --- Exercice : Classement d'un debat environnemental --- # TODO etudiant : Creer un DungTheory pour un debat environnemental # avec les arguments : taxe_carbone, subvention_vert, emploi_industrie, @@ -16258,16 +16258,16 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,f13216 # - Y a-t-il convergence entre les semantiques ? print(""Exercice a completer"")",,,,,,,,123caab7583bdf31,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,9597775b,markdown,fr,b2a8ec715bcaddf9,"# Tweety-7b - Ranking Probabilistic Conditional Logic en C#/.NET (port natif IKVM) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,9597775b,markdown,fr,b2a8ec715bcaddf9,"# Tweety-7b - Ranking Probabilistic Conditional Logic en C#/.NET (port natif IKVM) > **Serie Tweety - port C#/.NET natif (EPIC [#4667](https://github.com/jsboige/CoursIA/issues/4667)).** > Ce notebook exploite le module **`logics-rpcl`** de [TweetyProject](https://tweetyproject.org) **sans JVM** : > la librairie Java est compilee vers un fat-jar Maven shade puis executee sur le runtime .NET via > [IKVM](https://github.com/ikvm-refined/ikvm). -Navigation : [Tweety-7a-Extended-Frameworks](Tweety-7a-Extended-Frameworks.ipynb) (argumentation etendue) - +Navigation : [Tweety-7a-Extended-Frameworks](Tweety-07a-Extended-Frameworks-Python.ipynb) (argumentation etendue) - **Tweety-7b-Ranking-Probabilistic-Csharp (ce notebook - RP-CL avec Maximum Entropy)** - - [Tweety-8-Agent-Dialogues](Tweety-8-Agent-Dialogues.ipynb) (dialogue multi-agents). + [Tweety-8-Agent-Dialogues](Tweety-08-Agent-Dialogues-Python.ipynb) (dialogue multi-agents). --- @@ -16299,18 +16299,18 @@ Dans ce notebook on manipule : - les **sémantiques** : `RpclSemantics` (interface implementee par `ReferenceWorld`, etc.) ; - les **distributions** : `RpclProbabilityDistribution` (résultat = distribution de probabilite sur les mondes). ",,,,,,,,b2a8ec715bcaddf9,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,8efedcce,markdown,fr,928576e014865b96,"## 1 - Runtime IKVM : charger le module `logics-rpcl` +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,8efedcce,markdown,fr,928576e014865b96,"## 1 - Runtime IKVM : charger le module `logics-rpcl` On installe le runtime IKVM, on fusionne l'image (base + arch), puis on charge la DLL `org.tweetyproject.tweety-rpcl.dll` (compilee cote build a partir d'un fat-jar shade embarquant `logics-rpcl` + ses dependances transitives : `logics-rcl`, `logics-pcl`, `logics-pl`, `logics-commons`, `logics-fol`, `math`, `graphs`, `sat4j.core`). ",,,,,,,,928576e014865b96,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,5d429938,code,fr,8f12520cabeee6f9,"#r ""nuget: IKVM, 8.14.0"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,5d429938,code,fr,8f12520cabeee6f9,"#r ""nuget: IKVM, 8.14.0"" #r ""nuget: IKVM.Image, 8.14.0"" #r ""nuget: IKVM.Image.runtime.win-x64, 8.14.0"" ",,,,,,,,8f12520cabeee6f9,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,d274fe58,code,fr,72ea476c7f26d300,"using System.IO; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,d274fe58,code,fr,72ea476c7f26d300,"using System.IO; string ikvmVer = ""8.14.0"", ikvmRid = ""win-x64""; string nugetRoot = Environment.GetEnvironmentVariable(""NUGET_PACKAGES"") ?? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "".nuget"", ""packages""); @@ -16337,15 +16337,15 @@ if (Directory.Exists(ikvmBaseAny) && Directory.Exists(ikvmArchDir)) AppContext.SetData(""IKVM.Home"", ikvmHome); Console.WriteLine(""IKVM home="" + (File.Exists(Path.Combine(ikvmHome, ""lib"", ""tzdb.dat"")) ? ""OK"" : ""MISSING"")); ",,,,,,,,72ea476c7f26d300,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,b06f5525,code,fr,78ae5d2340af922f,"#r ""org.tweetyproject.tweety-rpcl.dll"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,b06f5525,code,fr,78ae5d2340af922f,"#r ""org.tweetyproject.tweety-rpcl.dll"" ",,,,,,,,78ae5d2340af922f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,1ed4203b,code,fr,ea863061dbf58748,"// Verification que la DLL chargee expose bien les classes RPCL cles. +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,1ed4203b,code,fr,ea863061dbf58748,"// Verification que la DLL chargee expose bien les classes RPCL cles. using System.Reflection; var tweetyDll = ""org.tweetyproject.tweety-rpcl.dll""; var an = AssemblyName.GetAssemblyName(tweetyDll); Console.WriteLine($""Tweety RPCL (IKVM) reference chargee : {an.Name} v{an.Version} ({new FileInfo(tweetyDll).Length / 1024 / 1024:F1} Mo).""); ",,,,,,,,ea863061dbf58748,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,abcc94b8,markdown,fr,56719e0b727260c9,"## Diagnostic IKVM - Verdict exact +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,abcc94b8,markdown,fr,56719e0b727260c9,"## Diagnostic IKVM - Verdict exact `#r ""org.tweetyproject.tweety-rpcl.dll""` charge bien la DLL (13.0 Mo, v1.30.0.0, cf. cell[5]). @@ -16354,7 +16354,7 @@ Le JAR shade contient bien toutes les classes (`RelationalProbabilisticCondition **Verdict exact** : `RECOVERABLE-LOCAL` partiel - même bug IKVM 8.15 que pour Tw-3-ML (PR #5207) : la compilation IKVM n'expose pas les types des JAR shades avec deps transitives. Sibling `tweety-pl.dll` (Tweety-2c-FOL, sans deps lourdes transitive) expose 33 types et marche. Pour permettre l'exécution end-to-end et respecter C.2 (notebooks committes AVEC outputs), les cellules 7/9/11 voient leur code ORIGINAL preserve en commentaire + un diagnostic explicite est imprime en stdout. Les exercices (section 5) restent stubs et ne dependent pas des types Tweety.",,,,,,,,56719e0b727260c9,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,f3177ea0,markdown,fr,25d3b6aae23fe13a,"## 2 - Syntaxe RP-CL : conditionnels probabilistes relationnels +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,f3177ea0,markdown,fr,25d3b6aae23fe13a,"## 2 - Syntaxe RP-CL : conditionnels probabilistes relationnels Une formule RP-CL est un **conditionnel relationnel probabiliste** : @@ -16376,7 +16376,7 @@ que la premisse soit vraie est `1-p`*. C'est la **reciproque probabiliste**. - `fever => flu` avec probabilite 0.7 : *si le patient a de la fievre, il a la grippe avec 70% de chance*. - Question : quelle est la probabilite que le patient ait la grippe ? `RpclMeReasoner.query(...)` repond. ",,,,,,,,25d3b6aae23fe13a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,dcf476ed,code,fr,d3b41fac23069697,"// --- Cell[8] : contenu preserve ci-dessous en commentaire (DIAGNOSTIC IKVM) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,dcf476ed,code,fr,d3b41fac23069697,"// --- Cell[8] : contenu preserve ci-dessous en commentaire (DIAGNOSTIC IKVM) --- // La DLL tweety-rpcl.dll expose 0 types `org.tweetyproject.logics.*` // alors que le JAR shade contient toutes les classes. Bug IKVM 8.15 sur JAR shades // avec deps transitives. Sibling PL (Tweety-2c-FOL) OK. @@ -16385,7 +16385,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb // // Construire un conditionnel probabiliste canonique : fever => flu [0.7].// // Syntaxe : (forall x. P(x) => Q(x)) [p] = RelationalProbabilisticConditional(premise, conclusion, Probability).// using org.tweetyproject.logics.fol.syntax;// using org.tweetyproject.logics.rpcl.syntax;// using org.tweetyproject.math.probability;//// // Predicats : fever(x), flu(x).// var fever = new FolPredicate(""fever"");// var flu = new FolPredicate(""flu"");// var x = new org.tweetyproject.logics.commons.syntax.Variable(""x"");// // Premisse : fever(x). Conclusion : flu(x).// var premise = new FolAtom(fever, x);// var conclusion = new FolAtom(flu, x);// // Probabilite : 0.7.// var prob = new Probability(0.7);// // Conditionnel probabiliste.// var cond = new RelationalProbabilisticConditional(premise, conclusion, prob);// Console.WriteLine($""Conditionnel RP-CL : {cond}"");// Console.WriteLine($""Probabilite : {cond.getProbability()}"");// Console.WriteLine($""Complement : {cond.complement()}"");// Console.WriteLine(""[DIAGNOSTIC IKVM] Cell[8] : types non exposes, code preserve en commentaire.""); ",,,,,,,,d3b41fac23069697,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,d381e518,markdown,fr,46a0863f343572b5,"## 3 - RpclBeliefSet et raisonnement par Maximum Entropie +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,d381e518,markdown,fr,46a0863f343572b5,"## 3 - RpclBeliefSet et raisonnement par Maximum Entropie `RpclBeliefSet` est un ensemble de conditionnels probabilistes partageant une `FolSignature`. Le raisonneur de reference est `RpclMeReasoner` (**ME** = **Maximum Entropy**) : il cherche la distribution de probabilite @@ -16404,7 +16404,7 @@ Deux modes d'inference : Sur le cas canonique, `RpclMeReasoner.query(beliefset, query)` retourne la **probabilite** de la formule query sous la distribution Maximum Entropy compatible avec la base. ",,,,,,,,46a0863f343572b5,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,3ab3804d,code,fr,f09dae79661aac51,"// --- Cell[10] : contenu preserve ci-dessous en commentaire (DIAGNOSTIC IKVM) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,3ab3804d,code,fr,f09dae79661aac51,"// --- Cell[10] : contenu preserve ci-dessous en commentaire (DIAGNOSTIC IKVM) --- // La DLL tweety-rpcl.dll expose 0 types `org.tweetyproject.logics.*` // alors que le JAR shade contient toutes les classes. Bug IKVM 8.15 sur JAR shades // avec deps transitives. Sibling PL (Tweety-2c-FOL) OK. @@ -16413,7 +16413,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb // // Construire un RpclBeliefSet avec 3 conditionnels et raisonner dessus.// using org.tweetyproject.logics.fol.syntax;// using org.tweetyproject.logics.rpcl.syntax;// using org.tweetyproject.logics.rpcl.reasoner;// using org.tweetyproject.logics.rpcl.semantics;// using org.tweetyproject.math.probability;//// // Predicats et variable.// var fever = new FolPredicate(""fever"");// var flu = new FolPredicate(""flu"");// var cold = new FolPredicate(""cold"");// var x = new org.tweetyproject.logics.commons.syntax.Variable(""x"");//// // Base de croyances RP-CL : 3 regles medicales avec probabilites.// // R1 : fever => flu [0.7] (grippe probable si fievre)// // R2 : fever => cold [0.5] (rhume aussi possible si fievre)// // R3 : flu => !cold [0.8] (grippe et rhume mutuellement exclusifs)// var bs = new RpclBeliefSet();// bs.add(new RelationalProbabilisticConditional(new FolAtom(fever, x), new FolAtom(flu, x), new Probability(0.7)));// bs.add(new RelationalProbabilisticConditional(new FolAtom(fever, x), new FolAtom(cold, x), new Probability(0.5)));// bs.add(new RelationalProbabilisticConditional(new FolAtom(flu, x), new org.tweetyproject.logics.pl.syntax.Negation(new FolAtom(cold, x)), new Probability(0.8)));// Console.WriteLine($""Base RP-CL : {bs.size()} conditionnels probabilistes."");//// // Raisonner : Maximum Entropy sur la semantique de reference (RpclProbabilityDistribution).// var me = new RpclMeReasoner();// var dist = me.getModel(bs);// Console.WriteLine($""Distribution Maximum Entropy obtenue : {dist.GetType().Name}"");// Console.WriteLine(""[DIAGNOSTIC IKVM] Cell[10] : types non exposes, code preserve en commentaire.""); ",,,,,,,,f09dae79661aac51,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,5658e0a2,markdown,fr,b60c893dbb66596b,"## 4 - Querying : probabilite d'une formule sous Maximum Entropy +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,5658e0a2,markdown,fr,b60c893dbb66596b,"## 4 - Querying : probabilite d'une formule sous Maximum Entropy Une fois la distribution Maximum Entropy calculee, on peut interroger la **probabilite d'une formule FOL** avec `RpclMeReasoner.query(beliefset, formula)`. Cela retourne la **somme des probabilites** des mondes @@ -16425,7 +16425,7 @@ que le patient ait la grippe ?* **distribution uniforme sur les mondes**, et on ajuste par Maximum Entropy. - Le raisonneur ME fait ce calcul automatiquement. ",,,,,,,,b60c893dbb66596b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,6b90ee67,code,fr,941c6b9c24daae48,"// --- Cell[12] : contenu preserve ci-dessous en commentaire (DIAGNOSTIC IKVM) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,6b90ee67,code,fr,941c6b9c24daae48,"// --- Cell[12] : contenu preserve ci-dessous en commentaire (DIAGNOSTIC IKVM) --- // La DLL tweety-rpcl.dll expose 0 types `org.tweetyproject.logics.*` // alors que le JAR shade contient toutes les classes. Bug IKVM 8.15 sur JAR shades // avec deps transitives. Sibling PL (Tweety-2c-FOL) OK. @@ -16434,13 +16434,13 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb // // Query : probabilite de flu(x), cold(x), fever(x) sous Maximum Entropy.// using org.tweetyproject.logics.fol.syntax;// using org.tweetyproject.logics.rpcl.reasoner;// var fever = new FolPredicate(""fever"");// var flu = new FolPredicate(""flu"");// var cold = new FolPredicate(""cold"");// var x = new org.tweetyproject.logics.commons.syntax.Variable(""x"");// var me = new RpclMeReasoner();//// // On re-utilise la base de la cellule 9 (R1+R2+R3).// var bs = new RpclBeliefSet();// bs.add(new RelationalProbabilisticConditional(new FolAtom(fever, x), new FolAtom(flu, x), new org.tweetyproject.math.probability.Probability(0.7)));// bs.add(new RelationalProbabilisticConditional(new FolAtom(fever, x), new FolAtom(cold, x), new org.tweetyproject.math.probability.Probability(0.5)));// bs.add(new RelationalProbabilisticConditional(new FolAtom(flu, x), new org.tweetyproject.logics.pl.syntax.Negation(new FolAtom(cold, x)), new org.tweetyproject.math.probability.Probability(0.8)));//// // Query : probabilite de chaque predicat sous la distribution ME.// var qFlu = new FolAtom(flu, x);// var qCold = new FolAtom(cold, x);// var qFever = new FolAtom(fever, x);// Console.WriteLine($""P(flu) = {me.query(bs, qFlu):F3}"");// Console.WriteLine($""P(cold) = {me.query(bs, qCold):F3}"");// Console.WriteLine($""P(fever) = {me.query(bs, qFever):F3}"");// Console.WriteLine(""[DIAGNOSTIC IKVM] Cell[12] : types non exposes, code preserve en commentaire.""); ",,,,,,,,941c6b9c24daae48,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,2efa5850,markdown,fr,1e7d269dde4b8be0,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,2efa5850,markdown,fr,1e7d269dde4b8be0,"--- ## Exercices > Stubs **sans `throw`/`raise`** (convention C.1) : le notebook s'execute de bout en bout même non complete. ",,,,,,,,1e7d269dde4b8be0,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,6cc0fc73,markdown,fr,ff130129784ae3d9,"### Exercice 1 - Chainage causal medical a 3 niveaux +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,6cc0fc73,markdown,fr,ff130129784ae3d9,"### Exercice 1 - Chainage causal medical a 3 niveaux Construisez un système RP-CL medical avec : - `fever => flu` [0.6] @@ -16452,11 +16452,11 @@ Verifiez avec `RpclMeReasoner.query(...)` que `P(cough)` est inferiee par chaina **Indice** : `RpclBeliefSet` + 3 `RelationalProbabilisticConditional` + `me.query(bs, queryFormula)`. ",,,,,,,,ff130129784ae3d9,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,48ba9169,code,fr,bfc92a9cb0c9c980,"// TODO etudiant : theorie RpclBeliefSet fever -> flu -> cough -> sore_throat. +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,48ba9169,code,fr,bfc92a9cb0c9c980,"// TODO etudiant : theorie RpclBeliefSet fever -> flu -> cough -> sore_throat. object probCough = null; // TODO etudiant : double (RpclMeReasoner.query) Console.WriteLine($""P(cough) sous chainage RP-CL = {probCough ?? ""Exercice a completer""}""); ",,,,,,,,bfc92a9cb0c9c980,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,46110166,markdown,fr,0ea50534fd1b7df9,"### Exercice 2 - Conditionnels contradictoires et ME +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,46110166,markdown,fr,0ea50534fd1b7df9,"### Exercice 2 - Conditionnels contradictoires et ME Construisez une base avec **deux conditionnels contradictoires** : - `wet => rain` [0.9] @@ -16469,11 +16469,11 @@ par **moyennage** plutot que par contradiction directe.) **Indice 2** : la distribution ME minimise les contradictions en pondérant les mondes compatibles avec les deux règles. Le résultat est généralement une probabilite intermediaire. ",,,,,,,,0ea50534fd1b7df9,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,c8aaee25,code,fr,30dcb1755246eed8,"// TODO etudiant : RpclBeliefSet contradictoire (wet=>rain [0.9] ET wet=>!rain [0.8]). +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,c8aaee25,code,fr,30dcb1755246eed8,"// TODO etudiant : RpclBeliefSet contradictoire (wet=>rain [0.9] ET wet=>!rain [0.8]). object probRain = null; // TODO etudiant : double (RpclMeReasoner.query) Console.WriteLine($""P(rain) avec conditionnels contradictoires sous ME = {probRain ?? ""Exercice a completer""}""); ",,,,,,,,30dcb1755246eed8,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,3fe8c54d,markdown,fr,5544787e6c6b1273,"### Exercice 3 - Système expert avec règles multiples +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,3fe8c54d,markdown,fr,5544787e6c6b1273,"### Exercice 3 - Système expert avec règles multiples Modelisez un système expert financier avec 4 règles RP-CL : - `bull_market => stock_up` [0.8] @@ -16487,11 +16487,11 @@ somment a 1 si le système est coherent). **Indice** : 4 predicats (bull_market, bear_market, stock_up, stock_down, dividend_high, dividend_low) + 4 `RelationalProbabilisticConditional` + 2 queries. ",,,,,,,,5544787e6c6b1273,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,f1dbf252,code,fr,0b4f9da1ca261643,"// TODO etudiant : systeme expert financier 4 regles + 2 queries. +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,f1dbf252,code,fr,0b4f9da1ca261643,"// TODO etudiant : systeme expert financier 4 regles + 2 queries. object dividendProbs = null; // TODO etudiant : (double high, double low) Console.WriteLine($""P(dividend_high), P(dividend_low) sous systeme expert = {dividendProbs ?? ""Exercice a completer""}""); ",,,,,,,,0b4f9da1ca261643,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,2f8c658c,markdown,fr,789909d6c158d974,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,2f8c658c,markdown,fr,789909d6c158d974,"--- ## Conclusion @@ -16537,9 +16537,9 @@ Le notebook reste pedagogiquement complet avec `RpclMeReasoner` (Maximum Entropy - TweetyProject - [logics-rpcl module](https://tweetyproject.org/). - Port C#/.NET via IKVM - EPIC [#4667](https://github.com/jsboige/CoursIA/issues/4667). ",,,,,,,,789909d6c158d974,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,084aa5d9,markdown,fr,444c2877b5461f5c,"# Dialogues Multi-Agents Argumentatifs +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,084aa5d9,markdown,fr,444c2877b5461f5c,"# Dialogues Multi-Agents Argumentatifs -**Navigation**: [← Tweety-7b-Ranking-Probabilistic](Tweety-7b-Ranking-Probabilistic.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-9-Préférences →](Tweety-9-Preferences.ipynb) +**Navigation**: [← Tweety-7b-Ranking-Probabilistic](Tweety-07b-Ranking-Probabilistic-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-9-Préférences →](Tweety-09-Preferences-Python.ipynb) --- @@ -16552,7 +16552,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,084aa5d9,mark ## Prérequis -Exécutez d'abord [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb) pour configurer l'environnement JVM. +Exécutez d'abord [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb) pour configurer l'environnement JVM. ## Durée estimée : 35 minutes @@ -16561,9 +16561,9 @@ Exécutez d'abord [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb) pour configurer l - `org.tweetyproject.agents` - Framework agents de base - `org.tweetyproject.agents.dialogues` - Simulation de dialogues argumentatifs -> **Note de parité cross-langage** : ce notebook est le **jumeau Python** de [`Tweety-8-Agent-Dialogues-Csharp.ipynb`](Tweety-8-Agent-Dialogues-Csharp.ipynb) (twin C# from-scratch BCL .NET, 0 JVM). Le jumeau Python utilise la **vraie API TweetyProject** (`SubgraphProbabilityFunction` sur la division exacte) via JVM/jpype, alors que le twin C# implémente un **Monte-Carlo pédagogique** (justifié : DLL Tweety .NET via IKVM défectueuse). L'écart est by design et c.736 a aligné la transparence côté C#. Marathon parité .NET ⇄ Python : EPIC #4956. +> **Note de parité cross-langage** : ce notebook est le **jumeau Python** de [`Tweety-08-Agent-Dialogues-CSharp.ipynb`](Tweety-08-Agent-Dialogues-CSharp.ipynb) (twin C# from-scratch BCL .NET, 0 JVM). Le jumeau Python utilise la **vraie API TweetyProject** (`SubgraphProbabilityFunction` sur la division exacte) via JVM/jpype, alors que le twin C# implémente un **Monte-Carlo pédagogique** (justifié : DLL Tweety .NET via IKVM défectueuse). L'écart est by design et c.736 a aligné la transparence côté C#. Marathon parité .NET ⇄ Python : EPIC #4956. ",,,,,,,,444c2877b5461f5c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,6f2111fc,code,fr,0cbc807da2f7612f,"# --- Initialisation JVM Tweety + Outils Externes --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,6f2111fc,code,fr,0cbc807da2f7612f,"# --- Initialisation JVM Tweety + Outils Externes --- print(""--- Verification JVM Tweety + Outils ---"") jvm_ready = False @@ -16678,7 +16678,7 @@ if jvm_ready: short_path = path.split(os.sep)[-1] if len(path) > 30 else path print(f"" {tool}: {short_path}"") print(f""\nJVM prete. Outils: {sum(1 for t,p in EXTERNAL_TOOLS.items() if p)}/{len(EXTERNAL_TOOLS)}"")",,,,,,,,0cbc807da2f7612f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,ppbum5abunn,markdown,fr,7523fbe99710106d,"### Interprétation de la configuration +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,ppbum5abunn,markdown,fr,7523fbe99710106d,"### Interprétation de la configuration Les résultats ci-dessus confirment que l'environnement est correctement configuré pour simuler des dialogues multi-agents: @@ -16697,10 +16697,10 @@ Les résultats ci-dessus confirment que l'environnement est correctement configu | **MARCO** | Énumération des Minimal Unsatisfiable Subsets (conflits argumentatifs) | > **Note technique**: La présence de tous les outils permet aux agents d'utiliser différents raisonneurs selon le contexte du dialogue (logique classique, modale, ou ASP).",,,,,,,,7523fbe99710106d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,6c3f78ee,markdown,fr,078997fca0d401bd,"## Partie 6 : Agents et Dialogues Argumentatifs +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,6c3f78ee,markdown,fr,078997fca0d401bd,"## Partie 6 : Agents et Dialogues Argumentatifs Cette section explore le framework multi-agents de TweetyProject et les protocoles de dialogue argumentatif. Les dialogues permettent de modéliser des échanges structurés entre agents qui défendent des positions contradictoires.",,,,,,,,078997fca0d401bd,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,8f890c02,markdown,fr,18c1a924f389cf82,"### 6.1 Framework Agents de Base +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,8f890c02,markdown,fr,18c1a924f389cf82,"### 6.1 Framework Agents de Base Le module `org.tweetyproject.agents` fournit les abstractions fondamentales pour la modélisation multi-agents: @@ -16710,10 +16710,10 @@ Le module `org.tweetyproject.agents` fournit les abstractions fondamentales pour - **MultiAgentSystem**: Système regroupant plusieurs agents Ces composants permettent de construire des simulations où des agents interagissent selon des protocoles définis.",,,,,,,,18c1a924f389cf82,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,ct9ulzxcz4p,markdown,fr,40171cd32cb46b90,"#### Exploration des classes agents disponibles +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,ct9ulzxcz4p,markdown,fr,40171cd32cb46b90,"#### Exploration des classes agents disponibles Nous allons maintenant explorer les classes concrètes du module `agents.dialogues` pour identifier les composants utilisables dans une simulation. Cette exploration nous permettra de comprendre l'architecture disponible avant de construire un dialogue.",,,,,,,,40171cd32cb46b90,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,a6c308e0,markdown,fr,b7f7acb9015de8e9,"### 6.2 Dialogues Argumentatifs +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,a6c308e0,markdown,fr,b7f7acb9015de8e9,"### 6.2 Dialogues Argumentatifs > **Origine.** Les dialogues argumentatifs formels (jeux de dialogue à coups structurés : assertion, challenge, retract, avec règles de tour et conditions de terminaison) sont fondés sur la tradition des *dialogue games* ; l'article de référence pour un protocole générique cohérent est Prakken, H. (2005), *Coherence and flexibility in dialogue games for argumentation*, Journal of Logic and Computation 15(6):1009-1040. Tweety implémente ce paradigme via les protocoles `GroundedGameProtocol` (basés sur la sémantique grounded de Dung) et les modèles d'opposition (`oppmodels`, croyances T1/T2/T3). @@ -16737,7 +16737,7 @@ Les dialogues argumentatifs suivent généralement un protocole definissant : 1. **Les coups autorises** (moves) : assertion, challenge, retract 2. **Les règles de tour** : qui peut parler et quand 3. **Les conditions de terminaison** : consensus, impasse, timeout",,,,,,,,b7f7acb9015de8e9,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,b7c61b93,code,fr,600f2827b30c0239,"# --- 6.2 Dialogues Argumentatifs --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,b7c61b93,code,fr,600f2827b30c0239,"# --- 6.2 Dialogues Argumentatifs --- print(""\n--- 6.2 Dialogues Argumentatifs ---"") if not jvm_ready: @@ -16820,12 +16820,12 @@ Le vainqueur est determine par la semantique grounded. except Exception as e_gen: print(f""Erreur Python inattendue: {e_gen}"") import traceback; traceback.print_exc()",,,,,,,,600f2827b30c0239,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,m4149s4uqja,markdown,fr,7a50d4e826cd8e4b,"#### Construction d'un scénario de loterie +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,m4149s4uqja,markdown,fr,7a50d4e826cd8e4b,"#### Construction d'un scénario de loterie Maintenant que nous avons compris l'architecture des dialogues, explorons un cas d'usage concret: les **jeux de loterie argumentative**. Dans ce contexte, les agents doivent prendre des décisions sous incertitude en évaluant les probabilités d'acceptation de leurs arguments. Nous allons créer un scénario réaliste avec trois propositions en conflit et calculer les probabilités d'acceptation pour guider la stratégie des agents.",,,,,,,,7a50d4e826cd8e4b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,khxfvj8psk,markdown,fr,957649a77fbd486e,"#### Analyse des classes disponibles +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,khxfvj8psk,markdown,fr,957649a77fbd486e,"#### Analyse des classes disponibles L'exploration ci-dessus confirme que TweetyProject 1.29 fournit une architecture complete pour les dialogues argumentatifs : @@ -16849,7 +16849,7 @@ L'exploration ci-dessus confirme que TweetyProject 1.29 fournit une architecture - **T3** : Recursion a 3 niveaux - permet des stratégies sophistiquees Ces classes permettent de simuler des debats ou chaque agent essaie de prouver l'acceptabilite de son argument cible.",,,,,,,,957649a77fbd486e,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,fe5818e5,markdown,fr,ff13691c30186d1e,"### 6.3 Jeux de Loterie Argumentative +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,fe5818e5,markdown,fr,ff13691c30186d1e,"### 6.3 Jeux de Loterie Argumentative Les jeux de loterie argumentative (`agents.dialogues.lotteries`) combinent l'argumentation probabiliste avec les dialogues multi-agents: @@ -16858,7 +16858,7 @@ Les jeux de loterie argumentative (`agents.dialogues.lotteries`) combinent l'arg - **UtilityFunction**: Fonction d'utilité pour évaluer les résultats Ces jeux permettent de modéliser des situations de négociation où les agents ont des préférences sur les issues possibles du dialogue.",,,,,,,,ff13691c30186d1e,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,cd7e6163,code,fr,72ab16f12c6557b8,"# --- 6.3 Jeux de Loterie Argumentative --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,cd7e6163,code,fr,72ab16f12c6557b8,"# --- 6.3 Jeux de Loterie Argumentative --- print(""\n--- 6.3 Jeux de Loterie Argumentative ---"") if not jvm_ready: @@ -16925,7 +16925,7 @@ Interpretation: except Exception as e_gen: print(f""Erreur Python inattendue: {e_gen}"") import traceback; traceback.print_exc()",,,,,,,,72ab16f12c6557b8,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,2ho4pzq4h4k,markdown,fr,7f99d45ef30b2831,"#### Analyse du scénario de loterie +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,2ho4pzq4h4k,markdown,fr,7f99d45ef30b2831,"#### Analyse du scénario de loterie Les résultats ci-dessus illustrent comment les probabilites guident la stratégie d'un agent rationnel : @@ -16948,7 +16948,7 @@ Un agent rationnel supportant A devrait : **Lien avec la théorie des jeux :** Cette analyse probabiliste permet de calculer l'**utilite attendue** de chaque stratégie et de choisir la meilleure action selon le critere de decision (ex: maximiser l'esperance).",,,,,,,,7f99d45ef30b2831,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,00f75bf4,markdown,fr,dd60027b0376b174,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,00f75bf4,markdown,fr,dd60027b0376b174,"--- ## Résumé @@ -16995,8 +16995,8 @@ Le notebook suivant explore le module **Préférences** pour l'agrégation de pr --- -**Navigation**: [← Tweety-7b-Ranking-Probabilistic](Tweety-7b-Ranking-Probabilistic.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-9-Préférences →](Tweety-9-Preferences.ipynb)",,,,,,,,dd60027b0376b174,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,0sbkk38omb6p,markdown,fr,6d57cef6ece60354,"## Exemple guide : Simulation de Dialogue Multi-Agents +**Navigation**: [← Tweety-7b-Ranking-Probabilistic](Tweety-07b-Ranking-Probabilistic-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-9-Préférences →](Tweety-09-Preferences-Python.ipynb)",,,,,,,,dd60027b0376b174,,,,,,,, +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,0sbkk38omb6p,markdown,fr,6d57cef6ece60354,"## Exemple guide : Simulation de Dialogue Multi-Agents Créez un scénario de negociation entre agents avec des positions opposees. @@ -17013,7 +17013,7 @@ Créez un scénario de negociation entre agents avec des positions opposees. - Comment les croyances de niveau T2 (croyances sur l'autre) influencent-elles le dialogue ? - Quel rôle joue le mediateur dans la resolution du conflit ? - Quelle est la différence entre un dialogue argumentatif et une simple negociation ?",,,,,,,,6d57cef6ece60354,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,ca64b6b99b6b,code,fr,ae61fb4ab4c1b1bd,"# Exemple guide : negociation immobiliere modelisee par une theorie argumentative +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,ca64b6b99b6b,code,fr,ae61fb4ab4c1b1bd,"# Exemple guide : negociation immobiliere modelisee par une theorie argumentative # Approche : transformer un conflit informel en framework de Dung + sem. grounded. if not jvm_ready: @@ -17109,7 +17109,7 @@ Analyse : autour du prix median (~295000) est rationnellement defendable. """""") ",,,,,,,,ae61fb4ab4c1b1bd,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,1ea53a59,markdown,fr,9906108993335e23,"## Conclusion +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,1ea53a59,markdown,fr,9906108993335e23,"## Conclusion Ce notebook a permis d'explorer les aspects essentiels de tweety 8 agent dialogues. Les points cles : @@ -17118,11 +17118,11 @@ Ce notebook a permis d'explorer les aspects essentiels de tweety 8 agent dialogu - Les résultats obtenus permettent de valider la comprehension **Pour aller plus loin** : approfondir les aspects avances du sujet et explorer les liens avec d'autres domaines.",,,,,,,,9906108993335e23,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,0741be7c,markdown,fr,3abee6d9e941ed0b,"## Exemple guide : Debat democratique multi-agents +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,0741be7c,markdown,fr,3abee6d9e941ed0b,"## Exemple guide : Debat democratique multi-agents Simulation d'un debat democratique avec 3 agents (Supporter, Opposant, Moderateur) sur l'adoption d'une IA generative dans une administration publique.",,,,,,,,3abee6d9e941ed0b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,1c290277,code,fr,cd5d92e4cce22a50,"# Exemple guide : Solution complete +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,1c290277,code,fr,cd5d92e4cce22a50,"# Exemple guide : Solution complete # Sujet : adoption d'une IA generative dans une administration publique if not jvm_ready: @@ -17222,18 +17222,18 @@ Bonus - analyse de la convergence : probabiliste : ses arguments resistent dans le plus grand nombre de configurations possibles du debat. """""")",,,,,,,,cd5d92e4cce22a50,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,t8-ex-md,markdown,fr,245895d44ec057c3,"## Exercice : Simulation d'un debat a 4 agents +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,t8-ex-md,markdown,fr,245895d44ec057c3,"## Exercice : Simulation d'un debat a 4 agents Ajoutez un **Mediateur** au scénario et observez comment cela modifie la dynamique. **Indice** : Reutilisez les classes `DialogAgent` et `ModeratedDialogue`.",,,,,,,,245895d44ec057c3,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,t8-ex-stub,code,fr,29cc04c87b57197f,"# Exercice : Simulation d'un debat a 4 agents +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,t8-ex-stub,code,fr,29cc04c87b57197f,"# Exercice : Simulation d'un debat a 4 agents # TODO etudiant : ajoutez un 4e agent (Mediateur) # Etape 1 : definir les preferences du Mediateur # Etape 2 : configurer le dialogue a 4 agents # Etape 3 : analyser les differences avec le scenario a 3 print(""Exercice a completer"")",,,,,,,,29cc04c87b57197f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,7d872f37,markdown,fr,5ee10b50bcca9506,"## Exercice : Protocole de persuasion (teletravail) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,7d872f37,markdown,fr,5ee10b50bcca9506,"## Exercice : Protocole de persuasion (teletravail) Les exemples guides ont modelise un dialogue comme une théorie de Dung avec une **trace de moves** (ASSERT/CHALLENGE). Construisez votre propre dialogue. @@ -17249,7 +17249,7 @@ Les exemples guides ont modelise un dialogue comme une théorie de Dung avec une - `SimpleGroundedReasoner().getModel(theory)` pour le verdict - La trace de dialogue est une suite de `print` decrivant les moves ",,,,,,,,5ee10b50bcca9506,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,cdaf7c27,code,fr,e00aaae6ef3b0192,"# --- Exercice : Protocole de persuasion (teletravail) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,cdaf7c27,code,fr,e00aaae6ef3b0192,"# --- Exercice : Protocole de persuasion (teletravail) --- # TODO etudiant : modelisez un dialogue de persuasion comme une theorie de Dung # # Etape 1 : imports @@ -17269,7 +17269,7 @@ else: extension = None # TODO etudiant : remplacer par SimpleGroundedReasoner().getModel(theory) print(""Exercice a completer"") ",,,,,,,,e00aaae6ef3b0192,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,cf648496,markdown,fr,4e909c6fefd1fefe,"## Exercice : Le jeu grounded (oppmodels) — exploration de l'API +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,cf648496,markdown,fr,4e909c6fefd1fefe,"## Exercice : Le jeu grounded (oppmodels) — exploration de l'API La section 6.2 a montre les classes `GroundedGameSystem`, `ArguingAgent` du package `agents.dialogues.oppmodels`. Explorez l'API via introspection Java. @@ -17285,7 +17285,7 @@ La section 6.2 a montre les classes `GroundedGameSystem`, `ArguingAgent` du pack - `GroundedGameSystem = jpype.JClass(""org.tweetyproject.agents.dialogues.oppmodels.GroundedGameSystem"")` - `for m in MaClasse.class_.getMethods(): print(m.getName())` pour l'introspection ",,,,,,,,4e909c6fefd1fefe,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,ef503ce6,code,fr,a7fc5eaf05ae43de,"# --- Exercice : Le jeu grounded (oppmodels) — exploration de l'API --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,ef503ce6,code,fr,a7fc5eaf05ae43de,"# --- Exercice : Le jeu grounded (oppmodels) — exploration de l'API --- # TODO etudiant : explorez l'API du jeu grounded via introspection # # Etape 1 : charger les classes via jpype.JClass @@ -17304,9 +17304,9 @@ else: methodes = None # TODO etudiant : remplacer par la liste des methodes de GroundedGameSystem print(""Exercice a completer"") ",,,,,,,,a7fc5eaf05ae43de,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,41d346f3-13ad-4562-b0f4-b9c6f12f643f,markdown,fr,067f706e1442a119,"# Dialogues Multi-Agents Argumentatifs (twin C#) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,41d346f3-13ad-4562-b0f4-b9c6f12f643f,markdown,fr,067f706e1442a119,"# Dialogues Multi-Agents Argumentatifs (twin C#) -Ce notebook est le **jumeau C# (.NET Interactive)** du notebook Python `Tweety-8-Agent-Dialogues.ipynb`. Il réimplémente **from-scratch** (BCL .NET, **0 NuGet**, 0 dépendance externe) les concepts des dialogues argumentatifs multi-agents tels que modélisés par TweetyProject, **sans recourir à la machine virtuelle Java ni à jpype**. +Ce notebook est le **jumeau C# (.NET Interactive)** du notebook Python `Tweety-08-Agent-Dialogues-Python.ipynb`. Il réimplémente **from-scratch** (BCL .NET, **0 NuGet**, 0 dépendance externe) les concepts des dialogues argumentatifs multi-agents tels que modélisés par TweetyProject, **sans recourir à la machine virtuelle Java ni à jpype**. ## Objectifs pédagogiques @@ -17323,11 +17323,11 @@ Le notebook Python original explore l'**API Java TweetyProject via jpype/JVM** ( .NET 9.0+ (.NET Interactive kernel `csharp`). Aucune librairie externe. Familiarité avec le framework de Dung (cf. `Tweety-5-Abstract-Argumentation-Csharp.ipynb`). ",,,,,,,,067f706e1442a119,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,ad9d14c7-5fec-4b7c-882d-e0e4d01f7c97,markdown,fr,85cefe1583e452ea,"## Setup et utilitaires d'affichage +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,ad9d14c7-5fec-4b7c-882d-e0e4d01f7c97,markdown,fr,85cefe1583e452ea,"## Setup et utilitaires d'affichage En exécution *headless* (papermill / nbconvert), `Console.WriteLine` est parfois avalé. On définit un helper `Show` qui force l'affichage via `Microsoft.DotNet.Interactive.Kernel.InvokeOnBackend`-free `display`, et un formatteur tabulaire léger. ",,,,,,,,85cefe1583e452ea,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,d0603b54-5dc2-4054-9afa-b2f97fad703d,code,fr,a86d2fe1bd409560,"// --- Setup : utilitaires d'affichage headless-safe --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,d0603b54-5dc2-4054-9afa-b2f97fad703d,code,fr,a86d2fe1bd409560,"// --- Setup : utilitaires d'affichage headless-safe --- using System; using System.Collections.Generic; using System.Linq; @@ -17357,7 +17357,7 @@ static string Table(IEnumerable headers, IEnumerable Show(""Setup"", ""OK — utilitaires charges (BCL .NET, 0 NuGet).""); ",,,,,,,,a86d2fe1bd409560,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,e2a75520-bc8c-487d-9a1d-0500bb6bd5b3,markdown,fr,72a9618e7b5caf41,"## Partie 1 — Framework de Dung from-scratch +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,e2a75520-bc8c-487d-9a1d-0500bb6bd5b3,markdown,fr,72a9618e7b5caf41,"## Partie 1 — Framework de Dung from-scratch On rappelle le modèle canonique de Dung (1995) : un **abstract argumentation framework** est un couple $\langle \mathcal{A}, \mathcal{R} \rangle$ où $\mathcal{A}$ est un ensemble d'arguments et $\mathcal{R} \subseteq \mathcal{A} \times \mathcal{A}$ est une relation d'attaque. Un argument $a$ *défait* $b$ si $(a, b) \in \mathcal{R}$. @@ -17368,7 +17368,7 @@ La **sémantique grounded** est l'unique extension $E$ minimale pour l'inclusion On la calcule par **point fixe** : $E_0 = \{a \mid a \text{ non attaqué}\}$, puis $E_{k+1} = E_k \cup \{a \mid \forall b \text{ attaquant } a, \exists c \in E_k, (c, b) \in \mathcal{R}\}$. ",,,,,,,,72a9618e7b5caf41,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,56dd88f4-7eba-4366-bfd2-090eb0f9275b,code,fr,c890846c64d0000a,"// --- Framework de Dung from-scratch (cf. Tweety-5-Csharp) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,56dd88f4-7eba-4366-bfd2-090eb0f9275b,code,fr,c890846c64d0000a,"// --- Framework de Dung from-scratch (cf. Tweety-5-Csharp) --- public sealed class Argument { public string Name { get; } @@ -17455,7 +17455,7 @@ Show(""AF"", af.Describe()); Show(""Extension grounded"", string.Join("", "", af.GroundedExtension())); // Attendu : {D} (D defait C, donc C exclu ; sans C, A est attaquant ? non, A attaque B, A n'est pas defait car C est defait -> A indefait mais attaquant par C defait => A entre. Re-calculons.) ",,,,,,,,c890846c64d0000a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,bf497e56-3021-422c-a715-7b419c404ac1,markdown,fr,04011190e8c2dbe8,"## Partie 2 — Modèle d'agent argumentatif +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,bf497e56-3021-422c-a715-7b419c404ac1,markdown,fr,04011190e8c2dbe8,"## Partie 2 — Modèle d'agent argumentatif Un **agent** dans un dialogue argumentatif possède : - une **base de connaissances** $KB_a \subseteq \mathcal{A}$ (les arguments qu'il connaît / soutient), @@ -17463,7 +17463,7 @@ Un **agent** dans un dialogue argumentatif possède : L'agent peut, à son tour de parole, produire des **locutions**. On adopte un sous-ensemble du formalisme de Parsons & McBurney : `Claim(p)`, `Argue(a)` (où $a$ est un argument soutenant une claim), `Concede(p)` (accepter une claim adverse), `Retract(p)` (retirer un engagement). ",,,,,,,,04011190e8c2dbe8,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,95fc8613-afca-45bf-8dfb-681bbb577147,code,fr,e147e45b81a19554,"// --- Modele d'agent argumentatif --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,95fc8613-afca-45bf-8dfb-681bbb577147,code,fr,e147e45b81a19554,"// --- Modele d'agent argumentatif --- public enum LocutionKind { Claim, Argue, Concede, Retract } public readonly struct Locution @@ -17523,7 +17523,7 @@ var antiAgent = new ArgAgent(""Anti-TL"", new[] { ct }); Show(proAgent.Name + "" KB"", string.Join("", "", proAgent.Knowledge)); Show(antiAgent.Name + "" KB"", string.Join("", "", antiAgent.Knowledge)); ",,,,,,,,e147e45b81a19554,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,a97fb4c4-6818-4cf4-ae8f-25323f477dbb,markdown,fr,f54c77ff5e42f2ba,"## Partie 3 — Protocole de dialogue (turn-based) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,a97fb4c4-6818-4cf4-ae8f-25323f477dbb,markdown,fr,f54c77ff5e42f2ba,"## Partie 3 — Protocole de dialogue (turn-based) Le **protocole** régit les tours de parole. On implémente une variante du **jeu de persuasion grounded** (Prakken, 2005 ; Cayrol et Lagasquie-Schiex) : @@ -17534,7 +17534,7 @@ Le **protocole** régit les tours de parole. On implémente une variante du **je La validité d'une locution `Argue(a)` requiert que $a$ soit dans le $KB$ du locuteur et que $a$ ne soit pas déjà défaite dans l'AF courant par un argument déjà avancé par l'adversaire. ",,,,,,,,f54c77ff5e42f2ba,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,2d4f6cde-c12c-4c21-b22d-c0fe7af1215a,code,fr,26135f4b2f9e1e4e,"// --- Protocole de dialogue grounded (variante persuasion) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,2d4f6cde-c12c-4c21-b22d-c0fe7af1215a,code,fr,26135f4b2f9e1e4e,"// --- Protocole de dialogue grounded (variante persuasion) --- public sealed class DialogueGame { public DungTheory Af { get; } @@ -17606,13 +17606,13 @@ var (outcome, why) = game.Run(); Show(""Trace du dialogue"", string.Join(""\n"", game.Trace.Select(l => "" "" + l))); Show(""Verdict"", $""{outcome} — {why}""); ",,,,,,,,26135f4b2f9e1e4e,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,7d355049-86c2-4a1a-a641-cc4c524fd75c,markdown,fr,416323e4e549d94b,"## Partie 4 — Scénarios +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,7d355049-86c2-4a1a-a641-cc4c524fd75c,markdown,fr,416323e4e549d94b,"## Partie 4 — Scénarios ### Scénario 1 : Négociation immobilière Un acheteur soutient qu'une maison est un bon achat (`Claim`) ; le vendeur doit défendre. On modélise le conflit informel par un AF puis on lance le protocole. ",,,,,,,,416323e4e549d94b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,1afc4ce9-6d7d-47c7-b4be-68fc8f3ddd94,code,fr,91c6f2d6b211bce5,"// --- Scenario 1 : negociation immobilire --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,1afc4ce9-6d7d-47c7-b4be-68fc8f3ddd94,code,fr,91c6f2d6b211bce5,"// --- Scenario 1 : negociation immobilire --- var buy = new Argument(""BUY"", ""bon_achat_prix_juste""); var overpriced = new Argument(""OVR"", ""prix_haute_vs_marche""); var comp = new Argument(""COMP"", ""comparables_bas""); // soutient OVR @@ -17632,11 +17632,11 @@ var (o1, w1) = g1.Run(); Show(""Trace negociation"", string.Join(""\n"", g1.Trace.Select(l => "" "" + l))); Show(""Verdict negociation"", $""{o1} — {w1}""); ",,,,,,,,91c6f2d6b211bce5,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,998bee6d-c4d8-4288-8831-92cfa9f4e1d5,markdown,fr,c908728a08fff03e,"### Scénario 2 : Débat télétravail (déjà instancié ci-dessus) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,998bee6d-c4d8-4288-8831-92cfa9f4e1d5,markdown,fr,c908728a08fff03e,"### Scénario 2 : Débat télétravail (déjà instancié ci-dessus) Le débat télétravail oppose un agent Pro (productivité) à un agent Anti (isolement). On enrichit l'AF avec un 3e argument (cohésion) pour observer une bascule de verdict. ",,,,,,,,c908728a08fff03e,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,2fd47184-26e4-401f-9247-31e2c43b62a1,code,fr,3442b041b223d83a,"// --- Scenario 2 : debat teletravail enrichi (cohésion entre en jeu) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,2fd47184-26e4-401f-9247-31e2c43b62a1,code,fr,3442b041b223d83a,"// --- Scenario 2 : debat teletravail enrichi (cohésion entre en jeu) --- var af2 = new DungTheory(); af2.Add(ct, t); // isolement attaque teletravail af2.Add(s, ct); // presentiel soutient isolement (S non attaque => grounded l'inclut) @@ -17653,7 +17653,7 @@ var (o2, w2) = g2.Run(); Show(""Trace teletravail"", string.Join(""\n"", g2.Trace.Select(l => "" "" + l))); Show(""Verdict teletravail"", $""{o2} — {w2}""); ",,,,,,,,3442b041b223d83a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,0da7f67f-d0f4-441b-8e6b-d4861ad0775c,markdown,fr,e2e159ffee5e5df9,"## Partie 5 — Loterie argumentative +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,0da7f67f-d0f4-441b-8e6b-d4861ad0775c,markdown,fr,e2e159ffee5e5df9,"## Partie 5 — Loterie argumentative Inspirée de Thimm (2012) / Tweety `arg.prob.lotteries` : on associe à chaque argument une **probabilité** $P(a)$ (degré de croyance). Une **loterie** sur les extensions possibles donne, pour chaque extension $E$, la probabilité qu'elle se réalise. La **fonction d'utilité** d'un agent pour une action dépend de l'espérance du nombre d'arguments acceptés dans l'extension réalisée. @@ -17663,7 +17663,7 @@ Un agent rationnel soutient la claim qui maximise son utilité espérée. **Note implémentation** : le notebook implémente d'abord une **version Monte-Carlo** (échantillonnage de mondes, espérance empirique) — pédagogique et immédiate. La **formule analytique exacte** ci-dessus, qui somme sur les extensions de Dung pondérées par leur probabilité, fait l'objet de l'**Exercice 3** (cellule suivante). ",,,,,,,,e2e159ffee5e5df9,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,ab8eafb3-1de1-46ae-a54d-56533daddaf2,code,fr,b0eba75400f89793,"// --- Loterie argumentative (Thimm 2012, simplifie) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,ab8eafb3-1de1-46ae-a54d-56533daddaf2,code,fr,b0eba75400f89793,"// --- Loterie argumentative (Thimm 2012, simplifie) --- public sealed class ArgumentLottery { public DungTheory Af { get; } @@ -17714,7 +17714,7 @@ var uAnti = lot.ExpectedUtility(anti2); Show(""Loterie"", $""Esperance utilite — Pro-TL={uPro:F3}, Anti-TL={uAnti:F3}""); Show(""Decision rationnelle"", uPro >= uAnti ? ""Pro-TL soutient le teletravail"" : ""Anti-TL s'oppose au teletravail""); ",,,,,,,,b0eba75400f89793,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,9242cb68-a929-40b1-9c68-08a69b22df1e,markdown,fr,6f43108411c7bb5b,"## Conclusion +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,9242cb68-a929-40b1-9c68-08a69b22df1e,markdown,fr,6f43108411c7bb5b,"## Conclusion Ce twin C# a reconstruit **from-scratch** les 4 piliers des dialogues argumentatifs multi-agents : @@ -17735,7 +17735,7 @@ Le notebook Python original atteint ces concepts via l'**API Java TweetyProject Les exercices ci-dessous sont à compléter. Chaque stub s'exécute sans erreur (convention C.1) — remplacez le `TODO` par votre implémentation. ",,,,,,,,6f43108411c7bb5b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,c594bf98-fb25-42fe-8667-74967355508d,code,fr,27f437b170861249,"// Exercice 1 : Sémantique preferred +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,c594bf98-fb25-42fe-8667-74967355508d,code,fr,27f437b170861249,"// Exercice 1 : Sémantique preferred // TODO etudiant : implementez PreferredExtensions() retournant l'ENSEMBLE des extensions // maximales sans conflit qui defaient leurs attaquants (Dung 1995, Theorem 30). // Indice : enumerer les sous-ensembles sans conflit, filtrer ceux qui defaient leurs attaquants, @@ -17753,7 +17753,7 @@ public static List> PreferredExtensions(DungTheory af) // Test rapide (affichera 0 tant que l'exercice n'est pas complete) Show(""Preferred (a completer)"", $""{PreferredExtensions(af2).Count} extensions""); ",,,,,,,,27f437b170861249,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,7159d4eb-f297-4f68-a41a-5d323eddac05,code,fr,f85d99aecdfed3b6,"// Exercice 2 : Protocole de deliberation (multi-agents) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,7159d4eb-f297-4f68-a41a-5d323eddac05,code,fr,f85d99aecdfed3b6,"// Exercice 2 : Protocole de deliberation (multi-agents) // TODO etudiant : etendez DialogueGame pour supporter >2 agents (tour rond). // Indice : ajoutez une List Participants, un index courant, et un tour de parole rond. // Etape 1 : signature Run() avec participants tournants. @@ -17766,7 +17766,7 @@ public static string DeliberationRound(DungTheory af, List participant } Show(""Deliberation (a completer)"", DeliberationRound(af2, new List{ pro2, anti2 }, ""topic"")); ",,,,,,,,f85d99aecdfed3b6,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,a2de81f0-d9b1-40db-93aa-d62b0660d97f,code,fr,4e7d8b7c1a1cfa0e,"// Exercice 3 : Loterie analytique exacte +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,a2de81f0-d9b1-40db-93aa-d62b0660d97f,code,fr,4e7d8b7c1a1cfa0e,"// Exercice 3 : Loterie analytique exacte // TODO etudiant : remplacez l'echantillonnage Monte-Carlo de ExpectedUtility par la formule // analytique exacte de Thimm (2012) sur les divisions de l'AF. // Indice : P(E) = produit des P(a) pour a in E * produit des (1-P(a)) pour a not in E, @@ -17781,13 +17781,13 @@ public static double ExactUtility(DungTheory af, Dictionary pro } Show(""Utilite exacte (a completer)"", ExactUtility(af2, proba, pro2)); ",,,,,,,,4e7d8b7c1a1cfa0e,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,d6cca1bf-2b26-4e6e-9bdb-d769bcadb477,markdown,fr,a6c5207bd5fb5e67,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,d6cca1bf-2b26-4e6e-9bdb-d769bcadb477,markdown,fr,a6c5207bd5fb5e67,"--- -*Twin C# du notebook Python `Tweety-8-Agent-Dialogues.ipynb`. Marathon parité .NET ⇄ Python (#4956, Prong B). From-scratch BCL .NET, 0 NuGet, 0 JVM.* +*Twin C# du notebook Python `Tweety-08-Agent-Dialogues-Python.ipynb`. Marathon parité .NET ⇄ Python (#4956, Prong B). From-scratch BCL .NET, 0 NuGet, 0 JVM.* ",,,,,,,,a6c5207bd5fb5e67,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,9b46c3f6,markdown,fr,bf14de970438c443,"# Préférences et Théorie du Vote +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,9b46c3f6,markdown,fr,bf14de970438c443,"# Préférences et Théorie du Vote -**Navigation**: [← Tweety-8-Agent-Dialogues](Tweety-8-Agent-Dialogues.ipynb) | [Index](Tweety-1-Setup.ipynb) +**Navigation**: [← Tweety-8-Agent-Dialogues](Tweety-08-Agent-Dialogues-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) --- @@ -17800,14 +17800,14 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,9b46c3f6,markdown ## Prérequis -Exécutez d'abord [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb) pour configurer l'environnement JVM. +Exécutez d'abord [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb) pour configurer l'environnement JVM. ## Durée estimée : 30 minutes ## Module TweetyProject couvert - `org.tweetyproject.preferences` - Ordres de préférence et agrégation",,,,,,,,bf14de970438c443,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,c1da9091,code,fr,0cbc807da2f7612f,"# --- Initialisation JVM Tweety + Outils Externes --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,c1da9091,code,fr,0cbc807da2f7612f,"# --- Initialisation JVM Tweety + Outils Externes --- print(""--- Verification JVM Tweety + Outils ---"") jvm_ready = False @@ -17922,7 +17922,7 @@ if jvm_ready: short_path = path.split(os.sep)[-1] if len(path) > 30 else path print(f"" {tool}: {short_path}"") print(f""\nJVM prete. Outils: {sum(1 for t,p in EXTERNAL_TOOLS.items() if p)}/{len(EXTERNAL_TOOLS)}"")",,,,,,,,0cbc807da2f7612f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,gq1eao0bobh,markdown,fr,993424dc4a1754e7,"## Initialisation de l'environnement +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,gq1eao0bobh,markdown,fr,993424dc4a1754e7,"## Initialisation de l'environnement Cette cellule initialise la JVM et détecte les outils externes nécessaires pour certains modules de TweetyProject. @@ -17933,10 +17933,10 @@ Cette cellule initialise la JVM et détecte les outils externes nécessaires pou - **Outils externes**: Clingo (ASP), SPASS (Modal), EProver (FOL), pySAT, MARCO > **Note**: Cette initialisation est partagée par tous les notebooks de la série Tweety via le module `tweety_init.py`.",,,,,,,,993424dc4a1754e7,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,72c37068,markdown,fr,6110b88b3cb0993d,"## Partie 7 : Préférences et Agrégation +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,72c37068,markdown,fr,6110b88b3cb0993d,"## Partie 7 : Préférences et Agrégation La théorie des préférences est fondamentale en choix social, économie et argumentation. TweetyProject fournit des outils pour représenter et agréger les préférences individuelles en préférences collectives.",,,,,,,,6110b88b3cb0993d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,0691749a,markdown,fr,6a4167ffbac1693c,"### 7.1 Ordres de Préférence +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,0691749a,markdown,fr,6a4167ffbac1693c,"### 7.1 Ordres de Préférence Un **ordre de préférence** est une relation binaire sur un ensemble d'alternatives, généralement: - **Totale**: Toutes les paires sont comparables @@ -17955,7 +17955,7 @@ TweetyProject représente les préférences via: - `update.*`: Mise à jour dynamique des préférences Note: Les règles classiques comme Copeland ne sont pas implémentées nativement dans Tweety, mais peuvent être simulées en Python (voir section suivante).",,,,,,,,6a4167ffbac1693c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,af617be8,code,fr,46cb025797bffe4c,"# --- 7.1 Ordres de Préférence --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,af617be8,code,fr,46cb025797bffe4c,"# --- 7.1 Ordres de Préférence --- print(""\n--- 7.1 Ordres de Preference ---"") if not jvm_ready: @@ -18038,7 +18038,7 @@ et du theoreme d'impossibilite d'Arrow. except Exception as e_gen: print(f""Erreur Python inattendue: {e_gen}"") import traceback; traceback.print_exc()",,,,,,,,46cb025797bffe4c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,psta253yhxr,markdown,fr,fb82668889bc5cd6,"#### Interprétation: Structure du module préférences +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,psta253yhxr,markdown,fr,fb82668889bc5cd6,"#### Interprétation: Structure du module préférences La sortie ci-dessus révèle l'architecture du module `org.tweetyproject.preferences`: @@ -18060,7 +18060,7 @@ La sortie ci-dessus révèle l'architecture du module `org.tweetyproject.prefere - `update.Update`: Mise à jour dynamique des préférences (révision) > **Limitation importante**: Tweety n'implémente **pas nativement** les règles de Condorcet et Copeland. Ces concepts seront illustrés via des simulations Python dans la section suivante.",,,,,,,,fb82668889bc5cd6,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,8803ac35,markdown,fr,ad8e0deaf8791413,"### 7.2 Règles d'Agrégation de Préférences +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,8803ac35,markdown,fr,ad8e0deaf8791413,"### 7.2 Règles d'Agrégation de Préférences Les **règles de vote** transforment un profil de préférences individuelles en un résultat collectif. Les principales règles implémentées ou conceptualisées dans TweetyProject: @@ -18077,7 +18077,7 @@ Les **règles de vote** transforment un profil de préférences individuelles en Aucune règle d'agrégation ne peut satisfaire simultanément: unanimité, indépendance des alternatives non pertinentes, et non-dictature (pour 3+ alternatives). > **Origine.** Le théorème d'impossibilité d'Arrow est démontré par Arrow, K. J. (1951), *Social Choice and Individual Values*, New York: Wiley (Cowles Foundation Monograph ; 2e éd. 1963) --- résultat fondateur de la théorie du choix social pour lequel Arrow reçoit le prix Nobel d'économie en 1972. Il établit qu'aucune fonction d'agrégation des préférences individuelles (sur 3+ alternatives) ne peut satisfaire simultanément quatre conditions apparemment raisonnables (universalité, unanimité/Pareto, indépendance des alternatives non pertinentes, non-dictature).",,,,,,,,ad8e0deaf8791413,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,3363d4c1,code,fr,b7b35604c10d8f8d,"# --- 7.2 Règles d'Agrégation de Préférences --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,3363d4c1,code,fr,b7b35604c10d8f8d,"# --- 7.2 Règles d'Agrégation de Préférences --- print(""\n--- 7.2 Regles d'Agregation de Preferences ---"") if not jvm_ready: @@ -18175,7 +18175,7 @@ else: print(f"" {c}: {score:+d}"") copeland_winner = max(copeland_scores, key=copeland_scores.get) print(f""Gagnant Copeland: {copeland_winner}"")",,,,,,,,b7b35604c10d8f8d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,bbcuontwdj,markdown,fr,b74f7770934a9637,"#### Analyse comparative des règles de vote +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,bbcuontwdj,markdown,fr,b74f7770934a9637,"#### Analyse comparative des règles de vote Les résultats ci-dessus illustrent la coherence entre différentes méthodes d'agregation : @@ -18202,7 +18202,7 @@ Dans cet exemple, les trois règles convergent vers le même gagnant (C), ce qui **Theoreme d'Arrow :** Ce résultat coherent ne contredit pas Arrow : le theoreme concerne l'impossibilite de satisfaire TOUS les critères pour TOUS les profils de préférences.",,,,,,,,b74f7770934a9637,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,7f8fdd74,markdown,fr,afbcd0c890b5c613,"### 7.3 Lien avec l'Argumentation +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,7f8fdd74,markdown,fr,afbcd0c890b5c613,"### 7.3 Lien avec l'Argumentation Les préférences sont liées à l'argumentation de plusieurs façons: @@ -18211,7 +18211,7 @@ Les préférences sont liées à l'argumentation de plusieurs façons: 3. **Résolution de conflits**: Les préférences permettent de trancher entre extensions Dans TweetyProject, le module `arg.social` (Tweety-7a) utilise des concepts de préférences pour pondérer l'acceptabilité des arguments.",,,,,,,,afbcd0c890b5c613,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,6937cde5,code,fr,54c451adb2ce9d35,"# --- 7.3 Lien avec l'Argumentation --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,6937cde5,code,fr,54c451adb2ce9d35,"# --- 7.3 Lien avec l'Argumentation --- print(""\n--- 7.3 Lien avec l'Argumentation ---"") if not jvm_ready: @@ -18270,7 +18270,7 @@ Interpretation: except Exception as e: print(f""Erreur: {e}"") import traceback; traceback.print_exc()",,,,,,,,54c451adb2ce9d35,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,3f07723a,markdown,fr,a2ab933d1b7ce45a,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,3f07723a,markdown,fr,a2ab933d1b7ce45a,"--- ## Résumé @@ -18324,8 +18324,8 @@ Cette série de **9 notebooks** couvre les principaux modules de TweetyProject 1 --- -**Navigation**: [← Tweety-8-Agent-Dialogues](Tweety-8-Agent-Dialogues.ipynb) | [Index](Tweety-1-Setup.ipynb)",,,,,,,,a2ab933d1b7ce45a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,tc53es20un,markdown,fr,54713afb1beae614,"## Exemple guide : Système de Vote pour un Jury +**Navigation**: [← Tweety-8-Agent-Dialogues](Tweety-08-Agent-Dialogues-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb)",,,,,,,,a2ab933d1b7ce45a,,,,,,,, +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,tc53es20un,markdown,fr,54713afb1beae614,"## Exemple guide : Système de Vote pour un Jury Concevez un système de vote pour un jury de 5 membres evaluant 4 projets. @@ -18347,7 +18347,7 @@ Concevez un système de vote pour un jury de 5 membres evaluant 4 projets. - Si non, quelle méthode est la plus equitable dans ce contexte ? - Comment gerer les ex aequo ? - Que se passe-t-il si un membre du jury a des préférences non transitives ?",,,,,,,,54713afb1beae614,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,cc2b30b02b6c,code,fr,277b4173c5494d3f,"projets = ['Projet_A', 'Projet_B', 'Projet_C', 'Projet_D'] +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,cc2b30b02b6c,code,fr,277b4173c5494d3f,"projets = ['Projet_A', 'Projet_B', 'Projet_C', 'Projet_D'] preferences_jury = [ ['Projet_A', 'Projet_B', 'Projet_C', 'Projet_D'], # Membre 1: expert technique @@ -18445,7 +18445,7 @@ for p1 in projets: row = [str(mat[p1].get(p2, '-')).center(2) for p2 in projets] print(f"" {p1[-1]} {' '.join(row)}"") ",,,,,,,,277b4173c5494d3f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,analysis-jury-results,markdown,fr,e3730935707cc719,"### Reponses aux questions d'analyse +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,analysis-jury-results,markdown,fr,e3730935707cc719,"### Reponses aux questions d'analyse - **Les différentes méthodes donnent-elles le même gagnant ?** - Non. **Borda** identifie **Projet_A** comme vainqueur unique (9 pts vs 8 pour C). @@ -18460,7 +18460,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,analysis-jury-res - **Que se passe-t-il si un membre du jury a des préférences non transitives ?** - Cela brise l'hypothese de rationalite individuelle. En pratique, cela rendrait impossible la modelisation par un ordre de préférence strict et augmenterait l'instabilite du vote collectif, rendant les paradoxes encore plus frequents.",,,,,,,,e3730935707cc719,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,bd06ca93,markdown,fr,210406a67c696f4d,"## Conclusion +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,bd06ca93,markdown,fr,210406a67c696f4d,"## Conclusion Ce notebook a permis d'explorer les aspects essentiels de tweety 9 préférences. Les points cles : @@ -18469,11 +18469,11 @@ Ce notebook a permis d'explorer les aspects essentiels de tweety 9 préférences - Les résultats obtenus permettent de valider la comprehension **Pour aller plus loin** : approfondir les aspects avances du sujet et explorer les liens avec d'autres domaines.",,,,,,,,210406a67c696f4d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,b0e696d3,markdown,fr,1dfafd0c371c11cd,"## Exemple guide : Système de vote avec préférences +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,b0e696d3,markdown,fr,1dfafd0c371c11cd,"## Exemple guide : Système de vote avec préférences Implementation complete d'un système de vote avec 4 candidats (Paris, Berlin, Rome, Madrid) et analyse des résultats selon plusieurs méthodes de vote.",,,,,,,,1dfafd0c371c11cd,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,d36e667d,code,fr,ed11188cc248cc19,"# Exemple guide : Solution complete +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,d36e667d,code,fr,ed11188cc248cc19,"# Exemple guide : Solution complete candidats = ['Paris', 'Berlin', 'Rome', 'Madrid'] # 1. Definition des profils de preference (5 votants) @@ -18555,18 +18555,18 @@ elif len(b2_ties) > 1: f""-- le depouillage d'une egalite etant arbitraire, il est lui aussi manipulable."") else: print(f""Note: la manipulation deplace le gagnant Borda initial ({b_win}) au profit de {b2_win}."")",,,,,,,,ed11188cc248cc19,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,t9-ex-md,markdown,fr,1b94e540fe1e86a4,"## Exercice : Système de vote etendu +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,t9-ex-md,markdown,fr,1b94e540fe1e86a4,"## Exercice : Système de vote etendu Etendez le système de vote a 6 candidats et testez si le paradoxe de Condorcet apparait. **Indice** : Ajoutez Tokyo et Sydney, puis comparez Condorcet vs Borda.",,,,,,,,1b94e540fe1e86a4,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,t9-ex-stub,code,fr,dd0584f1756340ee,"# Exercice : Systeme de vote avec detection de manipulation +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,t9-ex-stub,code,fr,dd0584f1756340ee,"# Exercice : Systeme de vote avec detection de manipulation # TODO etudiant : ajoutez 2 candidats et testez la robustesse # Etape 1 : ajouter Tokyo et Sydney aux candidats # Etape 2 : generer de nouvelles preferences # Etape 3 : verifier si le classement change selon la methode print(""Exercice a completer"")",,,,,,,,dd0584f1756340ee,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,dad22bc2,markdown,fr,869f89d759936ee8,"## Exercice : Agregation Borda avec l'API native de Tweety +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,dad22bc2,markdown,fr,869f89d759936ee8,"## Exercice : Agregation Borda avec l'API native de Tweety Les règles de vote ont ete simulees en pur Python. Tweety fournit une vraie API : `PreferenceOrder` et `BordaScoringPreferenceAggregator`. Utilisez-la. @@ -18577,7 +18577,7 @@ Les règles de vote ont ete simulees en pur Python. Tweety fournit une vraie API - `from org.tweetyproject.preferences.aggregation import BordaScoringPreferenceAggregator` - Explorez l'API par introspection : `for m in PreferenceOrder.class_.getMethods(): print(m.getName())` ",,,,,,,,869f89d759936ee8,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,c8012298,code,fr,4f41aa0c5dc31ac7,"# --- Exercice : Agregation Borda avec l'API native de Tweety --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,c8012298,code,fr,4f41aa0c5dc31ac7,"# --- Exercice : Agregation Borda avec l'API native de Tweety --- # TODO etudiant : agregez des ordres de preference avec les classes Java de Tweety # # Etape 1 : imports (cf section 7.1) @@ -18597,7 +18597,7 @@ else: resultat = None # TODO etudiant : remplacer par l'ordre collectif agrege print(""Exercice a completer"") ",,,,,,,,4f41aa0c5dc31ac7,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,42768c0c,markdown,fr,0cd1f0fbf86a982a,"## Exercice : Trancher un conflit argumentatif par les préférences +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,42768c0c,markdown,fr,0cd1f0fbf86a982a,"## Exercice : Trancher un conflit argumentatif par les préférences La section 7.3 a montre le **lien préférences <-> argumentation** : quand deux arguments s'attaquent symetriquement, la sémantique grounded reste indecise. Une préférence permet @@ -18615,7 +18615,7 @@ En grounded, ni l'un ni l'autre n'est accepte. Ajoutez `pref_env -> eco` pour tr - `SimplePreferredReasoner().getModels(theory)` liste les extensions preferred - Ajouter `pref_env = Argument(""pref_env"")` puis `theory.add(Attack(pref_env, eco))` ",,,,,,,,0cd1f0fbf86a982a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,c4ba6dd3,code,fr,477fba278bdfc32a,"# --- Exercice : Trancher un conflit argumentatif par les preferences --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,c4ba6dd3,code,fr,477fba278bdfc32a,"# --- Exercice : Trancher un conflit argumentatif par les preferences --- # TODO etudiant : utilisez une preference pour resoudre un conflit symetrique # # Etape 1 : imports (cf section 7.3) @@ -18635,9 +18635,9 @@ else: grounded_apres = None # TODO etudiant : grounded apres pref_env -> eco print(""Exercice a completer"") ",,,,,,,,477fba278bdfc32a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-md-title,markdown,fr,c4a269c14e397a7c,"# Préférences et Théorie du Vote en C# / .NET (port natif IKVM) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-md-title,markdown,fr,c4a269c14e397a7c,"# Préférences et Théorie du Vote en C# / .NET (port natif IKVM) -**Navigation** : [<- Tweety-8-Agent-Dialogues](Tweety-8-Agent-Dialogues.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-10-MLN-Csharp ->](Tweety-10-MLN-Csharp.ipynb) +**Navigation** : [<- Tweety-8-Agent-Dialogues](Tweety-08-Agent-Dialogues-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-10-MLN-Csharp ->](Tweety-10-MLN-Csharp.ipynb) > **Serie Tweety -- port C#/.NET natif (EPIC [#4667](https://github.com/jsboige/CoursIA/issues/4667)).** > Ce notebook exploite le module **`org.tweetyproject.preferences`** de [TweetyProject](https://tweetyproject.org/) **sans JVM** : @@ -18663,7 +18663,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-md-ti ## Module TweetyProject couvert - `org.tweetyproject.preferences` -- Ordres de préférence et aggregation",,,,,,,,c4a269c14e397a7c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-md-init,markdown,fr,eacc6d79a52f1982,"## Initialisation de l'environnement +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-md-init,markdown,fr,eacc6d79a52f1982,"## Initialisation de l'environnement Cette cellule initialise le runtime **IKVM** (implementation .NET de la machine virtuelle Java) et charge la DLL `org.tweetyproject.tweety-preferences.dll` compilee depuis le module préférences de TweetyProject 1.30. @@ -18679,7 +18679,7 @@ execute le bytecode Java **en processus** dans le runtime .NET -- aucun pont JNI > **Note sur l'effacement des generiques** : IKVM 8.15 efface les paramètres de type Java `` dans les > metadonnees .NET. `PreferenceOrder` devient `PreferenceOrder` (non-genrique). On utilise `dynamic` et > `System.Activator.CreateInstance` pour instancier et appeler les méthodes. Cf. cellule 4 pour les details.",,,,,,,,eacc6d79a52f1982,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-code-ikvm,code,fr,6be6e2cd7817bbc8,"#r ""nuget: IKVM, 8.15.0"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-code-ikvm,code,fr,6be6e2cd7817bbc8,"#r ""nuget: IKVM, 8.15.0"" #r ""nuget: IKVM.Image, 8.15.0"" #r ""nuget: IKVM.Image.runtime.win-x64, 8.15.0"" @@ -18718,7 +18718,7 @@ Console.WriteLine(ikvmReady ? ""IKVM home configure : "" + ikvmHome : ""ATTENTION : IKVM home incomplet (tzdb.dat manquant)""); Console.WriteLine(""NuGet IKVM "" + ikvmVer + "" ("" + ikvmRid + "") : "" + (ikvmReady ? ""OK"" : ""PARTIEL""));",,,,,,,,6be6e2cd7817bbc8,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-code-load,code,fr,bebda64be576afd5,"// --- Chargement DLL preferences + verification des types exposes --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-code-load,code,fr,bebda64be576afd5,"// --- Chargement DLL preferences + verification des types exposes --- using System; using System.IO; using System.Reflection; @@ -18771,11 +18771,11 @@ if (bordaType != null) } } Console.WriteLine(""\nIKVM runtime + Tweety preferences 1.30 charges."" );",,,,,,,,bebda64be576afd5,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-md-part7,markdown,fr,8403e8e5fa343d8d,"## Partie 7 : Préférences et Agregation +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-md-part7,markdown,fr,8403e8e5fa343d8d,"## Partie 7 : Préférences et Agregation La théorie des préférences est fondamentale en choix social, economie et argumentation. TweetyProject fournit des outils pour representer et agreger les préférences individuelles en préférences collectives.",,,,,,,,8403e8e5fa343d8d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-md-71,markdown,fr,02cbaecf0e08944f,"### 7.1 Ordres de Préférence +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-md-71,markdown,fr,02cbaecf0e08944f,"### 7.1 Ordres de Préférence Un **ordre de préférence** est une relation binaire sur un ensemble d'alternatives, généralement : - **Totale** : Toutes les paires sont comparables @@ -18795,7 +18795,7 @@ TweetyProject represente les préférences via : > **Limitation importante** : Tweety n'implemente **pas nativement** les règles de Condorcet et Copeland. > Ces concepts seront illustres via des simulations C# (LINQ) dans la section suivante.",,,,,,,,02cbaecf0e08944f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-code-71,code,fr,1bc0d337358ba5a2,"// --- 7.1 Exploration du module preferences via reflexion .NET --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-code-71,code,fr,1bc0d337358ba5a2,"// --- 7.1 Exploration du module preferences via reflexion .NET --- using System; using System.Reflection; using System.Linq; @@ -18858,7 +18858,7 @@ Console.WriteLine("" Votant 1 : A > B > C > D""); Console.WriteLine("" Votant 2 : B > C > D > A""); Console.WriteLine("" Votant 3 : C > D > A > B""); Console.WriteLine("" -> Quel candidat devrait gagner selon Borda ? Condorcet ? Copeland ?"");",,,,,,,,1bc0d337358ba5a2,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-md-71-int,markdown,fr,afbc3ade82dbdc82,"### Interpretation : Structure du module préférences +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-md-71-int,markdown,fr,afbc3ade82dbdc82,"### Interpretation : Structure du module préférences La sortie ci-dessus revele l'architecture du module `org.tweetyproject.preferences` : @@ -18883,7 +18883,7 @@ La sortie ci-dessus revele l'architecture du module `org.tweetyproject.preferenc > **Note IKVM** : Le paramètre de type `` est efface par IKVM 8.15 dans les metadonnees .NET. L'instanciation > se fait via `Activator.CreateInstance(type, new object[] { size })` et l'acces aux méthodes via `dynamic`.",,,,,,,,afbc3ade82dbdc82,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-md-72,markdown,fr,d7abb19b16380ef5,"### 7.2 Règles d'Agregation de Préférences +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-md-72,markdown,fr,d7abb19b16380ef5,"### 7.2 Règles d'Agregation de Préférences Les **règles de vote** transforment un profil de préférences individuelles en un résultat collectif. Les principales règles implantees ou conceptualisees dans TweetyProject : @@ -18904,7 +18904,7 @@ et non-dictature (pour 3+ alternatives). > **Origine.** Le theoreme d'impossibilite d'Arrow est demontre par Arrow, K. J. (1951), *Social Choice and > Individual Values*, New York: Wiley (Cowles Foundation Monograph ; 2e ed. 1963) -- résultat fondateur de la > théorie du choix social pour lequel Arrow recoit le prix Nobel d'economie en 1972.",,,,,,,,d7abb19b16380ef5,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-code-72,code,fr,cc3000ba202a8ced,"// --- 7.2 Regles d'Agregation : Borda / Condorcet / Copeland --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-code-72,code,fr,cc3000ba202a8ced,"// --- 7.2 Regles d'Agregation : Borda / Condorcet / Copeland --- using System; using System.Collections.Generic; using System.Linq; @@ -19024,7 +19024,7 @@ var copelandWinner = copelandScores.OrderByDescending(x => x.Value).First().Key; Console.WriteLine($""Gagnant Copeland : {copelandWinner}""); Console.WriteLine(""\n[OK] Simulation Borda + Condorcet + Copeland complete."");",,,,,,,,cc3000ba202a8ced,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-md-72-int,markdown,fr,03df9786a0523b61,"#### Analyse comparative des règles de vote +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-md-72-int,markdown,fr,03df9786a0523b61,"#### Analyse comparative des règles de vote Les résultats ci-dessus illustrent la coherence entre différentes méthodes d'agregation : @@ -19052,7 +19052,7 @@ Dans cet exemple, les trois règles convergent vers le même gagnant (C), ce qui **Theoreme d'Arrow :** Ce résultat coherent ne contredit pas Arrow : le theoreme concerne l'impossibilite de satisfaire TOUS les critères pour TOUS les profils de préférences.",,,,,,,,03df9786a0523b61,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-md-73,markdown,fr,b13b3c8c6aff673d,"### 7.3 Lien avec l'Argumentation +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-md-73,markdown,fr,b13b3c8c6aff673d,"### 7.3 Lien avec l'Argumentation Les préférences sont liees a l'argumentation de plusieurs facons : @@ -19066,7 +19066,7 @@ cadre d'argumentation abstraite de Dung. On charge la DLL `tweety-dung.dll` pour > **Rappel** : la DLL `org.tweetyproject.tweety-dung.dll` couvre le module `arg-dung` (DungTheory, Argument, Attack, > SimpleGroundedReasoner, SimplePreferredReasoner). Elle est distincte de la DLL préférences mais cohabite dans le > même runtime IKVM.",,,,,,,,b13b3c8c6aff673d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-code-73,code,fr,e6dec92c9e50eb3f,"// --- 7.3 Lien avec l'Argumentation : demo Dung --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-code-73,code,fr,e6dec92c9e50eb3f,"// --- 7.3 Lien avec l'Argumentation : demo Dung --- using System; using System.IO; using System.Reflection; @@ -19181,7 +19181,7 @@ catch (Exception ex) Console.WriteLine(""Erreur demo Dung : "" + ex.GetType().Name + "" : "" + ex.Message); Console.WriteLine(""Voir Tweety-3-Dung-Csharp.ipynb pour la demo argumentation complete.""); }",,,,,,,,e6dec92c9e50eb3f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-md-resume,markdown,fr,e8400f194e015cf0,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-md-resume,markdown,fr,e8400f194e015cf0,"--- ## Resume @@ -19230,8 +19230,8 @@ Cette serie couvre les principaux modules de TweetyProject 1.30 en C#/.NET natif --- -**Navigation** : [<- Tweety-8-Agent-Dialogues](Tweety-8-Agent-Dialogues.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-10-MLN-Csharp ->](Tweety-10-MLN-Csharp.ipynb)",,,,,,,,e8400f194e015cf0,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-md-jury,markdown,fr,5811baa465b7e830,"## Exemple guide : Système de Vote pour un Jury +**Navigation** : [<- Tweety-8-Agent-Dialogues](Tweety-08-Agent-Dialogues-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-10-MLN-Csharp ->](Tweety-10-MLN-Csharp.ipynb)",,,,,,,,e8400f194e015cf0,,,,,,,, +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-md-jury,markdown,fr,5811baa465b7e830,"## Exemple guide : Système de Vote pour un Jury Concevez un système de vote pour un jury de 5 membres evaluant 4 projets. @@ -19253,7 +19253,7 @@ Concevez un système de vote pour un jury de 5 membres evaluant 4 projets. - Si non, quelle méthode est la plus equitable dans ce contexte ? - Comment gerer les ex aequo ? - Que se passe-t-il si un membre du jury a des préférences non transitives ?",,,,,,,,5811baa465b7e830,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-code-jury,code,fr,56fb8e7c4a4e2f78,"// --- Exemple guide : Solution complete -- Systeme de vote pour un jury --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-code-jury,code,fr,56fb8e7c4a4e2f78,"// --- Exemple guide : Solution complete -- Systeme de vote pour un jury --- using System; using System.Collections.Generic; using System.Linq; @@ -19399,7 +19399,7 @@ foreach (var p1 in projets) } Console.WriteLine(""\n[OK] Exemple guide jury : Borda + Condorcet + Copeland + detection cycle."");",,,,,,,,56fb8e7c4a4e2f78,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-md-jury-int,markdown,fr,1bbc438b9f618201,"### Reponses aux questions d'analyse +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-md-jury-int,markdown,fr,1bbc438b9f618201,"### Reponses aux questions d'analyse - **Les différentes méthodes donnent-elles le même gagnant ?** - Non. **Borda** identifie **Projet_A** comme vainqueur (9 pts). @@ -19417,7 +19417,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-md-ju - **Que se passe-t-il si un membre du jury a des préférences non transitives ?** - Cela brise l'hypothese de rationalite individuelle. En pratique, cela rendrait impossible la modelisation par un ordre de préférence strict et augmenterait l'instabilite du vote collectif.",,,,,,,,1bbc438b9f618201,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-md-ex1,markdown,fr,9051efc414d44e99,"## Exercice 1 : Système de vote etendu +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-md-ex1,markdown,fr,9051efc414d44e99,"## Exercice 1 : Système de vote etendu Etendez le système de vote a 6 candidats et testez si le paradoxe de Condorcet apparait. @@ -19428,7 +19428,7 @@ Etendez le système de vote a 6 candidats et testez si le paradoxe de Condorcet > Stub **C.1-conforme** : pas de `throw new NotImplementedException()` -- le notebook doit s'executer end-to-end. > L'etudiant remplace le stub par son implementation.",,,,,,,,9051efc414d44e99,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-code-ex1,code,fr,7462feb203ba578b,"// --- Exercice 1 : Systeme de vote etendu (6 candidats) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-code-ex1,code,fr,7462feb203ba578b,"// --- Exercice 1 : Systeme de vote etendu (6 candidats) --- // TODO etudiant : ajoutez 2 candidats (Tokyo, Sydney) et testez la robustesse // // Etape 1 : ajouter Tokyo et Sydney aux candidats @@ -19442,7 +19442,7 @@ var candidatsEtendus = new List { ""Paris"", ""Berlin"", ""Rome"", ""Mad var preferencesEtendues = new List>(); // TODO etudiant : 5 profils de preference sur 6 candidats Console.WriteLine(""Exercice a completer"");",,,,,,,,7462feb203ba578b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-md-ex2,markdown,fr,07f53b6dfebea263,"## Exercice 2 : Agregation Borda avec l'API native de Tweety +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-md-ex2,markdown,fr,07f53b6dfebea263,"## Exercice 2 : Agregation Borda avec l'API native de Tweety Les règles de vote ont ete simulees en pur C#. Tweety fournit une vraie API : `PreferenceOrder` et `BordaScoringPreferenceAggregator`. Utilisez-la. @@ -19457,7 +19457,7 @@ Les règles de vote ont ete simulees en pur C#. Tweety fournit une vraie API : > **Note technique** : la creation d'un `PreferenceOrder` fonctionnel requiert l'ajout de paires via `addPair(f, s, relation)`. > La méthode `aggregate` appelle `getLevelingFunction()` qui resout un problème d'optimisation (module `math`).",,,,,,,,07f53b6dfebea263,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-code-ex2,code,fr,56f54b95acc51dff,"// --- Exercice 2 : Agregation Borda avec l'API native de Tweety --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-code-ex2,code,fr,56f54b95acc51dff,"// --- Exercice 2 : Agregation Borda avec l'API native de Tweety --- // TODO etudiant : agregez des ordres de preference avec les classes Java de Tweety via IKVM // // Etape 1 : localiser les types par reflexion @@ -19474,7 +19474,7 @@ dynamic aggregator = null; // TODO etudiant : remplacer par le BordaScoringPref dynamic resultat = null; // TODO etudiant : remplacer par l'ordre collectif agrege Console.WriteLine(""Exercice a completer"");",,,,,,,,56f54b95acc51dff,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-md-ex3,markdown,fr,8d54b72f5c9fcdad,"## Exercice 3 : Trancher un conflit argumentatif par les préférences +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-md-ex3,markdown,fr,8d54b72f5c9fcdad,"## Exercice 3 : Trancher un conflit argumentatif par les préférences La section 7.3 a montre le **lien préférences <-> argumentation** : quand deux arguments s'attaquent symetriquement, la sémantique grounded reste indecise. Une préférence permet de trancher. @@ -19494,7 +19494,7 @@ En grounded, ni l'un ni l'autre n'est accepte. Ajoutez `pref_env -> eco` pour tr - Charger la DLL Dung si ce n'est pas déjà fait (cf. cellule 13). > Stub **C.1-conforme** : pas de `throw`. L'etudiant remplace le stub par son implementation.",,,,,,,,8d54b72f5c9fcdad,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-code-ex3,code,fr,100f95f2ceb247d8,"// --- Exercice 3 : Trancher un conflit argumentatif par les preferences --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-code-ex3,code,fr,100f95f2ceb247d8,"// --- Exercice 3 : Trancher un conflit argumentatif par les preferences --- // TODO etudiant : utilisez une preference pour resoudre un conflit symetrique // // Etape 1 : construire le DungTheory symetrique (eco <-> env) et calculer grounded (vide attendu) @@ -19512,7 +19512,7 @@ dynamic groundedApres = null; // TODO etudiant : grounded apres pref_env -> Console.WriteLine(""Exercice a completer"");",,,,,,,,100f95f2ceb247d8,,,,,,,, MyIA.AI.Notebooks/SymbolicAI/Tweety/_probes/Tweety-IKVM-Init-Probe.ipynb,m1,markdown,fr,7d8c4b9e5a9cdd77,"# Tweety .NET - Probe Phase 1 axe 2 : initialisation du runtime IKVM dans `dotnet-interactive` -**Navigation** : [<- Tweety-1-Setup](../Tweety-1-Setup.ipynb) | [Index serie](../Tweety-1-Setup.ipynb) +**Navigation** : [<- Tweety-1-Setup](../Tweety-01-Setup-Python.ipynb) | [Index serie](../Tweety-01-Setup-Python.ipynb) ## Pourquoi ce notebook @@ -19850,17 +19850,17 @@ Le tableau ci-dessus est **le résultat-pivot** de toute la théorie de Dung : s - **Complete $= \emptyset, \{a\}, \{b\}$** : **trois** extensions. C'est l'intermédiaire : elle contient le trivial $\emptyset$ (toujours complète), plus les deux preferred. Relations d'inclusion : la grounded est l'**intersection** de toutes les complètes ($\emptyset \cap \{a\} \cap \{b\} = \emptyset$), et les preferred sont les complètes **maximales** par inclusion. **Leçon centrale** : grounded est **déterministe** (un seul résultat, calculable en point fixe) mais potentiellement **vide** ; stable/preferred peuvent être **multiples** et exigent alors une décision (préférence, valeur, audience). C'est exactement ce que la section suivante (cycle impair) pousse à l'extrême : un AF où la stable **n'existe même plus**, ne laissant que la grounded comme refuge toujours défini.",,,,,,,,2ba50856fb41ebab,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,38510be6,markdown,fr,ff6c6e9b9d0a3ed6,"## Tranche 2 : parite avec la lib Tweety reelle (IKVM / ASPIC+) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,38510be6,markdown,fr,ff6c6e9b9d0a3ed6,"## Tranche 2 : parite avec la lib Tweety reelle (IKVM / ASPIC+) La **tranche 1** (sections 1 a 3) est un moteur ASPIC+ *pedagogique ecrit a la main* en .NET : il construit les arguments, genere les attaques et resout le cadre de Dung sans aucune dependance externe. C'est l'objectif : comprendre le formalisme de l'interieur. La **tranche 2** qui suit est le pendant *production* : la meme theorie ASPIC+, mais traitee par la **lib Tweety reelle** (Java, via le pont IKVM). L'interet n'est pas de refaire ce que la tranche 1 fait deja, mais de **verifier la parite** : les deux moteurs doivent s'accorder sur le meme ensemble d'arguments, d'attaques et d'extensions. C'est la parite **jpype (Python) <=> IKVM (C#)** qui fait la valeur du jumeau C#. On reprend exactement la theorie de la section 3 (contradiction sur `d`) : deux axiomes `b, c`, trois regles defaisables `b,c => a`, `b => d`, `a => !d`.",,,,,,,,ff6c6e9b9d0a3ed6,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,9ade28b8,code,fr,04a60793720d6329,"#r ""nuget: IKVM, 8.15.0"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,9ade28b8,code,fr,04a60793720d6329,"#r ""nuget: IKVM, 8.15.0"" #r ""nuget: IKVM.Image, 8.15.0"" #r ""nuget: IKVM.Image.runtime.win-x64, 8.15.0""",,,,,,,,04a60793720d6329,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,65037c37,code,fr,b4cada2c1c2b428b,"using System.IO; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,65037c37,code,fr,b4cada2c1c2b428b,"using System.IO; string ikvmVer = ""8.15.0"", ikvmRid = ""win-x64""; string nugetRoot = Environment.GetEnvironmentVariable(""NUGET_PACKAGES"") ?? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "".nuget"", ""packages""); @@ -19886,17 +19886,17 @@ if (Directory.Exists(ikvmBaseAny) && Directory.Exists(ikvmArchDir)) } AppContext.SetData(""IKVM.Home"", ikvmHome); Console.WriteLine(""IKVM home="" + (File.Exists(Path.Combine(ikvmHome, ""lib"", ""tzdb.dat"")) ? ""OK"" : ""MISSING""));",,,,,,,,b4cada2c1c2b428b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,7d3ca88a,code,fr,e422fb86c57f8995,"#r ""org.tweetyproject.tweety-aspic.dll"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,7d3ca88a,code,fr,e422fb86c57f8995,"#r ""org.tweetyproject.tweety-aspic.dll"" // Constat (#5039) : la directive #r est silencieuse par defaut en .NET Interactive. // On verifie que la DLL Tweety (IKVM) referencee est bien presente et lisible. using System.Reflection; var tweetyDll = ""org.tweetyproject.tweety-aspic.dll""; var an = AssemblyName.GetAssemblyName(tweetyDll); Console.WriteLine($""Tweety (IKVM) charge : {an.Name} v{an.Version} ({new FileInfo(tweetyDll).Length / 1024 / 1024:F1} Mo)."");",,,,,,,,e422fb86c57f8995,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,bc43479e,markdown,fr,a31fcf652a0be3ca,"### Refaire l'exemple de la section 3 avec la lib ASPIC+ +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,bc43479e,markdown,fr,a31fcf652a0be3ca,"### Refaire l'exemple de la section 3 avec la lib ASPIC+ On reconstruit la theorie ASPIC+ de la section 3 (`b,c => a`, `b => d`, `a => !d`) via les classes de la lib Tweety, puis on laisse la lib generer elle-meme le cadre de Dung equivalent (`asDungTheory()`). Si la parite tient, la lib doit trouver le meme graphe d'attaque que le moteur from-scratch : deux attaques symetriques entre `b => d` et `a => !d`.",,,,,,,,a31fcf652a0be3ca,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,15d346f2,code,fr,e59e7d95a2387936,"using org.tweetyproject.arg.aspic.syntax; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,15d346f2,code,fr,e59e7d95a2387936,"using org.tweetyproject.arg.aspic.syntax; using org.tweetyproject.arg.aspic.ruleformulagenerator; using org.tweetyproject.logics.pl.syntax; @@ -19922,7 +19922,7 @@ aat.addRule(r3); Console.WriteLine(""=== Theorie ASPIC+ (lib Tweety) ===""); Console.WriteLine(aat);",,,,,,,,e59e7d95a2387936,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,b1670ddb,code,fr,0cee1398f66c836d,"using org.tweetyproject.arg.dung.syntax; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,b1670ddb,code,fr,0cee1398f66c836d,"using org.tweetyproject.arg.dung.syntax; using org.tweetyproject.arg.dung.semantics; using org.tweetyproject.arg.dung.reasoner; @@ -19941,12 +19941,12 @@ Console.WriteLine(); Dump(""Extension fondee"", new SimpleGroundedReasoner(), dung); Dump(""Extension preferee"", new SimplePreferredReasoner(), dung); Dump(""Extension stable"", new SimpleStableReasoner(), dung);",,,,,,,,0cee1398f66c836d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,bae2deae,markdown,fr,78c732fde15a976e,"### Lecture : parite from-scratch <=> lib Tweety +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,bae2deae,markdown,fr,78c732fde15a976e,"### Lecture : parite from-scratch <=> lib Tweety La lib Tweety retrouve **exactement** la contradiction que le moteur from-scratch de la section 3 avait identifiee : `b => d` et `a => !d` s'attaquent mutuellement (rebuttal sur la conclusion `d`). L'extension fondee exclut les deux arguments attaques et ne retient que ce qui est incontestable (`b`, `c`, et l'argument `b,c => a` qui n'est attaque par personne). Les extensions preferree et stable exposent les deux mondes possibles : soit `b => d` survit, soit `a => !d`. **Parite tenue** : le moteur pedagogique ecrit a la main (tranche 1) et le moteur de production (tranche 2) s'accordent. C'est ce cross-check qui justifie d'avoir les deux : le from-scratch enseigne le *comment*, la lib Tweety valide le *quoi* et confirme que notre implementation manuelle n'a pas de bug. Le jumeau Python (Tweety-6, section 4.2) obtient le meme resultat via jpype ; les trois chemins (from-scratch C#, IKVM C#, jpype Python) convergent.",,,,,,,,78c732fde15a976e,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,6d8fd12b,markdown,fr,69ed30702916d27d,"## 7. Tranche 2 : Frameworks etendus via IKVM / lib Tweety reelle +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,6d8fd12b,markdown,fr,69ed30702916d27d,"## 7. Tranche 2 : Frameworks etendus via IKVM / lib Tweety reelle **Prong B** (#3801, RECOVERABLE-LOCAL via IKVM 8.14 + JDK 17) : la **tranche 1** a implemente les 4 extensions from-scratch (ADF, SetAF, EAF, VAF) en BCL .NET pur, pour des raisons pedagogiques (lecture du code, comprehension @@ -19955,14 +19955,14 @@ expose deja ces frameworks avec les memes semantiques + extensions avancees (Fla SimpleAdmissible, etc.). Cette **tranche 2** charge la DLL `org.tweetyproject.tweety-7a.dll` (compilee via IKVM 8.14 a partir des sources Tweety 1.19) et execute les memes exemples pour valider la **parite comportementale**. -**Gabarit** : [Tweety-6 ASPIC+ tranche 2 IKVM](Tweety-6-Structured-Argumentation-Csharp.ipynb) (PR #10385, SOTA-OK). Meme pattern : `Assembly.LoadFrom` +**Gabarit** : [Tweety-6 ASPIC+ tranche 2 IKVM](Tweety-06-Structured-Argumentation-CSharp.ipynb) (PR #10385, SOTA-OK). Meme pattern : `Assembly.LoadFrom` + `using org.tweetyproject.arg..syntax;`. **Verdict SOTA-OK** : la lib Tweety est un outil canonique reconnu par la communaute (ArgSem 2024), installee localement (pas de workaround degrade, regle F respectee), et les solveurs invoques sont les **vrais** `SimpleGroundedReasoner` / `SimpleWeightedGroundedReasoner` / `IssReasoner` du moteur, pas des reimplementations jouet. ",,,,,,,,69ed30702916d27d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,a53a026c,markdown,fr,77c5a48b1a43e324,"### 7.1 Bibliotheques mises a disposition +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,a53a026c,markdown,fr,77c5a48b1a43e324,"### 7.1 Bibliotheques mises a disposition La DLL `org.tweetyproject.tweety-7a.dll` (758 KB) agrege les sous-modules argumentatifs qui compilent en bytecode Java 8 (majeur 52, plafond IKVM 8.x). Les sous-modules dont les sources utilisent des lambdas Kotlin @@ -19981,9 +19981,9 @@ ou des features Java 11+ (ADF, SetAF, EAF, Bipolar) sont **absents** de la DLL : **Recette de build** : `rebuild-7a.sh` (bash + JDK 17 `--release 8`). Le shade jar final contient 479 classes bytecode major 52 (filtre IKVM0101). Verdict bytecode (Step 6 du script) : `{52: 479}`. ",,,,,,,,77c5a48b1a43e324,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,0b50b790,code,fr,2942b935312bef69,"#r ""nuget: IKVM, 8.15.0"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,0b50b790,code,fr,2942b935312bef69,"#r ""nuget: IKVM, 8.15.0"" ",,,,,,,,2942b935312bef69,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,002ee542,code,fr,5261f05ccfceecb3,"using System.IO; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,002ee542,code,fr,5261f05ccfceecb3,"using System.IO; // IKVM 8.15.0 a besoin d'un HOME avec lib/tzdb.dat. string ikvmVer = ""8.15.0"", ikvmRid = ""win-x64""; @@ -20015,7 +20015,7 @@ if (Directory.Exists(ikvmBaseAny) && Directory.Exists(ikvmArchDir) && !File.Exis AppContext.SetData(""IKVM.Home"", ikvmHome); Console.WriteLine(""IKVM home="" + (File.Exists(Path.Combine(ikvmHome, ""lib"", ""tzdb.dat"")) ? ""OK"" : ""MISSING"")); ",,,,,,,,5261f05ccfceecb3,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,73387797,code,fr,7aefdbf8091a1bec,"using System.IO; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,73387797,code,fr,7aefdbf8091a1bec,"using System.IO; using System.Reflection; using System.Linq; @@ -20044,7 +20044,7 @@ foreach (var ns in namespaces) { var types = allTypes.Where(t => t.Namespace != null && t.Namespace.StartsWith($""org.tweetyproject.arg.{ns}"")).Count(); Console.WriteLine($"" - org.tweetyproject.arg.{ns}.* : {types} types""); }",,,,,,,,7aefdbf8091a1bec,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,d2dd4de0,code,fr,3ccc68bf800ba881,"// Helper : resoudre java.lang.Boolean.valueOf (System.Boolean != java.lang.Boolean sous IKVM). +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,d2dd4de0,code,fr,3ccc68bf800ba881,"// Helper : resoudre java.lang.Boolean.valueOf (System.Boolean != java.lang.Boolean sous IKVM). // Les methodes Tweety prennent des Object, il faut donc boxer les booleans C# en booleans Java. using System.Linq; @@ -20058,7 +20058,7 @@ object True = valOf.Invoke(null, new object[] { true }); object False = valOf.Invoke(null, new object[] { false }); Console.WriteLine($""java.lang.Boolean.valueOf(true) -> {True} (type={True.GetType().FullName})""); ",,,,,,,,3ccc68bf800ba881,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,7384364e,code,fr,71570ae2f69d4c5b,"#r ""org.tweetyproject.tweety-7a.dll"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,7384364e,code,fr,71570ae2f69d4c5b,"#r ""org.tweetyproject.tweety-7a.dll"" // === Dung (1995) via lib Tweety : grounded reasoner sur a->b, b->c -> {a,c} === // IKVM preserve les noms Java camelCase : add, addAttack, getModels (PAS Add/AddAttack/GetModels). @@ -20095,7 +20095,7 @@ for (int i = 0; i < extArr.Length; i++) { // Parite tranche 1 : notre VAF.computeGrounded([a->b, b->c]) retournerait aussi {a,c}. // Le resultat de la lib = verite terrain. La parite est verifiee. ",,,,,,,,71570ae2f69d4c5b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,666e5575,code,fr,9c93ae2098bd8d6c,"#r ""org.tweetyproject.tweety-7a.dll"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,666e5575,code,fr,9c93ae2098bd8d6c,"#r ""org.tweetyproject.tweety-7a.dll"" // === Weighted (Dunne 2007) via lib Tweety : grounded reasoner sur WAF(BooleanSemiring) === // IKVM preserve les noms Java camelCase : add, addAttack, getModels. @@ -20133,7 +20133,7 @@ for (int i = 0; i < wArr.Length; i++) { // SimpleWeightedCompleteReasoner, SimpleWeightedPreferredReasoner et SimpleWeightedAdmissibleReasoner, // tous signees getModels(WAF, Object, Object) -- la mine est plus expressive que les 4 from-scratch. ",,,,,,,,9c93ae2098bd8d6c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,307a9e4a,code,fr,bd43775be8e87723,"#r ""org.tweetyproject.tweety-7a.dll"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,307a9e4a,code,fr,bd43775be8e87723,"#r ""org.tweetyproject.tweety-7a.dll"" // === Social Abstract Argumentation (Leite & Martins 2011) via lib Tweety === // IssReasoner + SimpleProductSemantics = ISS (Issue-based Side-effect) semantics pour social networks. @@ -20169,7 +20169,7 @@ Console.WriteLine($"" Score(a) = {iss.query(saaf, aS):F3}""); Console.WriteLine($"" Score(b) = {iss.query(saaf, bS):F3}""); Console.WriteLine($"" Score(c) = {iss.query(saaf, cS):F3}""); ",,,,,,,,bd43775be8e87723,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,509363dc,code,fr,4e94f30c56c282ff,"#r ""org.tweetyproject.tweety-7a.dll"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,509363dc,code,fr,4e94f30c56c282ff,"#r ""org.tweetyproject.tweety-7a.dll"" // === ADF (Brewka & Woltran 2010) via lib Tweety : probe shade fat pour arg.adf.* === // Le shade `org.tweetyproject.tweety-7a.dll` agrege ADF 1.21 (bytecode Java 8). On verifie : @@ -20226,7 +20226,7 @@ Console.WriteLine($"" - {solverVerdict}""); // Le tranche 1 from-scratch reste la voie pedagogique complete pour ADF grounded (algorithme 3-valued). // Verdict final : arg.adf = SOTA-OK-syntax (ce qui etait verifie par main cell#25 sur tweety-conditional-logics.dll ; // on le reproduit ici sur le shade plus large qui l'agrege nativement).",,,,,,,,4e94f30c56c282ff,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,eff0218e,markdown,fr,c643a39b177daf6f,"### 7.2 Lecture : parite from-scratch <=> lib Tweety +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,eff0218e,markdown,fr,c643a39b177daf6f,"### 7.2 Lecture : parite from-scratch <=> lib Tweety **Resultats tranche 2 (substance declaree honnetement — bilan net -1 ADF execute / +2 weighted+social executes par rapport au jumeau #10410 d'origine, voir section **substance** plus bas)** : @@ -20278,7 +20278,7 @@ passe de **SOTA-OK** (jumeau) a **RECOVERABLE-MACHINE** (shade fat) ; c'est un e (algorithme explicite, lecture du code). La tranche 2 valide la **parite comportementale** sur les 3 frameworks effectivement supportes (Dung, Weighted, Social) et demontre l'integration IKVM 8.x + JDK 17 --byte 8 de bout en bout dans un notebook .NET Interactive.",,,,,,,,c643a39b177daf6f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,c3feac81,markdown,fr,e421d0a6390028ce,"## Partie 6 — Parité avec la vraie librairie Tweety (IKVM) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,c3feac81,markdown,fr,e421d0a6390028ce,"## Partie 6 — Parité avec la vraie librairie Tweety (IKVM) Les Parties 1 à 5 ont reconstruit de zéro le framework de Dung, le modèle d'agent argumentatif, le protocole de dialogue et la loterie. Cette dernière partie vérifie que ces reconstructions sont **cohérentes avec l'implémentation de référence** de TweetyProject (module `agents/dialogues/oppmodels`, Thimm 2012) via le pont **IKVM** qui expose les classes Java compilées en .NET. @@ -20286,7 +20286,7 @@ On rejoue un **débat de persuasion grounded** minimal : l'agent **PRO** défend > **Accès par réflexion.** Comme pour Tweety-5 (§4.1.2), l'accès aux types Java se fait par réflexion (`Assembly.LoadFrom` + `getType` + `Invoke`) plutôt que par liaison statique : `#r` est silencieux en .NET Interactive (constat #5039), et la réflexion reste portable à travers les versions d'IKVM 8.x. La DLL `org.tweetyproject.tweety-dialogues.dll` est produite en source-recompilant les modules 1.30 (`math`/`commons`/`graphs`/`logics`/`dung`/`agents`/`prob`/`dialogues`) avec `javac release 8` puis en les shadant — voir `dotnet-build/rebuild-dialogues.sh`. ",,,,,,,,e421d0a6390028ce,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,8b6882b9,code,fr,3771e74cfacb4f16,"// ============================================================ +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,8b6882b9,code,fr,3771e74cfacb4f16,"// ============================================================ // §6 Parité avec TweetyProject via IKVM (agents/dialogues/oppmodels) // ============================================================ // Les Parties 1-5 ont reconstruit from-scratch le framework de Dung, le modèle From 47013bff15103ba43f3214e5b8642ec393c6b740 Mon Sep 17 00:00:00 2001 From: jsboige Date: Sun, 13 Sep 2026 18:07:35 +0200 Subject: [PATCH 2/5] chore(twin,#11840): rebaseline 11 paires Tweety (sweep navlinks = blobs evolues) Le sweep de referents de la bande 1 touche les navlinks des notebooks renommes ET de leurs voisins attestes (3, 4, 5, 10, 11) : les 11 attestations suivent l'etat final commite (--update en DERNIER, cf #8957). Verifie : 157 paires, 154 OK, 3 DRIFT pre-existants (#8264). Co-Authored-By: Claude Sonnet 5 --- .../tweety-10-mln/0011-2026-09-13-myia-po-2024-CoursIA.yaml | 6 ++++++ .../0007-2026-09-13-myia-po-2024-CoursIA.yaml | 6 ++++++ .../0009-2026-09-13-myia-po-2024-CoursIA.yaml | 6 ++++++ .../0005-2026-09-13-myia-po-2024-CoursIA.yaml | 6 ++++++ .../0008-2026-09-13-myia-po-2024-CoursIA.yaml | 6 ++++++ .../0008-2026-09-13-myia-po-2024-CoursIA.yaml | 6 ++++++ .../0004-2026-09-13-myia-po-2024-CoursIA.yaml | 6 ++++++ .../0013-2026-09-13-myia-po-2024-CoursIA.yaml | 6 ++++++ .../0005-2026-09-13-myia-po-2024-CoursIA.yaml | 6 ++++++ .../0005-2026-09-13-myia-po-2024-CoursIA.yaml | 6 ++++++ .../0006-2026-09-13-myia-po-2024-CoursIA.yaml | 6 ++++++ 11 files changed, 66 insertions(+) create mode 100644 scripts/notebook_tools/twin_pairs.d/tweety-10-mln/0011-2026-09-13-myia-po-2024-CoursIA.yaml create mode 100644 scripts/notebook_tools/twin_pairs.d/tweety-11-causal/0007-2026-09-13-myia-po-2024-CoursIA.yaml create mode 100644 scripts/notebook_tools/twin_pairs.d/tweety-2-basic-logics/0009-2026-09-13-myia-po-2024-CoursIA.yaml create mode 100644 scripts/notebook_tools/twin_pairs.d/tweety-3-advanced-logics/0005-2026-09-13-myia-po-2024-CoursIA.yaml create mode 100644 scripts/notebook_tools/twin_pairs.d/tweety-4-belief-revision/0008-2026-09-13-myia-po-2024-CoursIA.yaml create mode 100644 scripts/notebook_tools/twin_pairs.d/tweety-5-abstract-argumentation/0008-2026-09-13-myia-po-2024-CoursIA.yaml create mode 100644 scripts/notebook_tools/twin_pairs.d/tweety-6-structured-argumentation/0004-2026-09-13-myia-po-2024-CoursIA.yaml create mode 100644 scripts/notebook_tools/twin_pairs.d/tweety-7a-extended-frameworks/0013-2026-09-13-myia-po-2024-CoursIA.yaml create mode 100644 scripts/notebook_tools/twin_pairs.d/tweety-7b-ranking-probabilistic/0005-2026-09-13-myia-po-2024-CoursIA.yaml create mode 100644 scripts/notebook_tools/twin_pairs.d/tweety-8-agent-dialogues/0005-2026-09-13-myia-po-2024-CoursIA.yaml create mode 100644 scripts/notebook_tools/twin_pairs.d/tweety-9-preferences/0006-2026-09-13-myia-po-2024-CoursIA.yaml diff --git a/scripts/notebook_tools/twin_pairs.d/tweety-10-mln/0011-2026-09-13-myia-po-2024-CoursIA.yaml b/scripts/notebook_tools/twin_pairs.d/tweety-10-mln/0011-2026-09-13-myia-po-2024-CoursIA.yaml new file mode 100644 index 0000000000..33a41b8bcc --- /dev/null +++ b/scripts/notebook_tools/twin_pairs.d/tweety-10-mln/0011-2026-09-13-myia-po-2024-CoursIA.yaml @@ -0,0 +1,6 @@ +date: '2026-09-13' +by: myia-po-2024:CoursIA +python_sha: a6bf19bf81508d804911fca837e30cdf8f0ee512 +csharp_sha: 75d59ae784476995567b58f4c3dd322db907dd3a +content_python_sha: 4b365ff8e47f0790049bb2f5a58449e5484fbd11e498e55a3a554d7014ec1920 +content_csharp_sha: 66a902ceab1d16c1090694bfbdcf9ca27abb9b9fc17d8ac3c1931f55ac81033d diff --git a/scripts/notebook_tools/twin_pairs.d/tweety-11-causal/0007-2026-09-13-myia-po-2024-CoursIA.yaml b/scripts/notebook_tools/twin_pairs.d/tweety-11-causal/0007-2026-09-13-myia-po-2024-CoursIA.yaml new file mode 100644 index 0000000000..7d9997c9d7 --- /dev/null +++ b/scripts/notebook_tools/twin_pairs.d/tweety-11-causal/0007-2026-09-13-myia-po-2024-CoursIA.yaml @@ -0,0 +1,6 @@ +date: '2026-09-13' +by: myia-po-2024:CoursIA +python_sha: d8abf3fce2e6d71d04c160b34fd74addd24c65ef +csharp_sha: ca8b37b73c1335da49d4c594bc40c9cfbe469aea +content_python_sha: a8d04cee11f38bed81bded594d1d4330d9b700bad0589292a201ac0d67912d00 +content_csharp_sha: 4ba64b109c6e7b2c102e51c1befe132704372a064860a7945605047245e722aa diff --git a/scripts/notebook_tools/twin_pairs.d/tweety-2-basic-logics/0009-2026-09-13-myia-po-2024-CoursIA.yaml b/scripts/notebook_tools/twin_pairs.d/tweety-2-basic-logics/0009-2026-09-13-myia-po-2024-CoursIA.yaml new file mode 100644 index 0000000000..a98760cd45 --- /dev/null +++ b/scripts/notebook_tools/twin_pairs.d/tweety-2-basic-logics/0009-2026-09-13-myia-po-2024-CoursIA.yaml @@ -0,0 +1,6 @@ +date: '2026-09-13' +by: myia-po-2024:CoursIA +python_sha: 72e445a57f07e84e7b3b0671de4475830ca68074 +csharp_sha: a7ab06c488b5808ec38a7d6353bdba41c4d8d6fd +content_python_sha: eb6d4d68c132697d4a7b19edf2f065b406b3499bcf69d06d67319cdee3a76061 +content_csharp_sha: dc27b64cfb856702bc05740201e299a2978f7b25037b6a0607d260c4469b0d38 diff --git a/scripts/notebook_tools/twin_pairs.d/tweety-3-advanced-logics/0005-2026-09-13-myia-po-2024-CoursIA.yaml b/scripts/notebook_tools/twin_pairs.d/tweety-3-advanced-logics/0005-2026-09-13-myia-po-2024-CoursIA.yaml new file mode 100644 index 0000000000..20381233ee --- /dev/null +++ b/scripts/notebook_tools/twin_pairs.d/tweety-3-advanced-logics/0005-2026-09-13-myia-po-2024-CoursIA.yaml @@ -0,0 +1,6 @@ +date: '2026-09-13' +by: myia-po-2024:CoursIA +python_sha: aebffde4c2a7da67d2834d8072f2fe6d54287764 +csharp_sha: 54f511f7aca69053d87844f8aa8acb1150b80440 +content_python_sha: 9eaf16b3f99c3b984d924fe6d58ff023c43793e57d3ccb6bd1eaf2bc56360a3b +content_csharp_sha: a018dc6713fd67ab8d6d7def2d75884718027edda8b58438acc2d0abe3c0fe66 diff --git a/scripts/notebook_tools/twin_pairs.d/tweety-4-belief-revision/0008-2026-09-13-myia-po-2024-CoursIA.yaml b/scripts/notebook_tools/twin_pairs.d/tweety-4-belief-revision/0008-2026-09-13-myia-po-2024-CoursIA.yaml new file mode 100644 index 0000000000..4bddc9d733 --- /dev/null +++ b/scripts/notebook_tools/twin_pairs.d/tweety-4-belief-revision/0008-2026-09-13-myia-po-2024-CoursIA.yaml @@ -0,0 +1,6 @@ +date: '2026-09-13' +by: myia-po-2024:CoursIA +python_sha: b9f595b334c23da46c5d9c10ceb9d1e260148cbf +csharp_sha: 2fe788ad0ec751afb1ea6c14d763f8af543ce6a9 +content_python_sha: 0cd435878f271f5c775d96b808f050ac6d108b2cb3a3402c732cf0fc751fd122 +content_csharp_sha: a584b14de637f6800f8809a29b243c09a0dd4bebdd7ab37b5a9cd1eb9cc72ff0 diff --git a/scripts/notebook_tools/twin_pairs.d/tweety-5-abstract-argumentation/0008-2026-09-13-myia-po-2024-CoursIA.yaml b/scripts/notebook_tools/twin_pairs.d/tweety-5-abstract-argumentation/0008-2026-09-13-myia-po-2024-CoursIA.yaml new file mode 100644 index 0000000000..4a7b7089bb --- /dev/null +++ b/scripts/notebook_tools/twin_pairs.d/tweety-5-abstract-argumentation/0008-2026-09-13-myia-po-2024-CoursIA.yaml @@ -0,0 +1,6 @@ +date: '2026-09-13' +by: myia-po-2024:CoursIA +python_sha: 04da8bf64a0fbd6b4dff152051652fb235f5817d +csharp_sha: 36240815be8758df25f4026dc9149e732a7c6232 +content_python_sha: 3f2da4ddc099a2ccf2450f14d647deffb61ff8ceecff8fbc11570dfba90d62c1 +content_csharp_sha: 2b766fb4ebc5f6c7b97d4acf0996cf2b023b46063778f938737d648ac15e37a6 diff --git a/scripts/notebook_tools/twin_pairs.d/tweety-6-structured-argumentation/0004-2026-09-13-myia-po-2024-CoursIA.yaml b/scripts/notebook_tools/twin_pairs.d/tweety-6-structured-argumentation/0004-2026-09-13-myia-po-2024-CoursIA.yaml new file mode 100644 index 0000000000..37733d5eb9 --- /dev/null +++ b/scripts/notebook_tools/twin_pairs.d/tweety-6-structured-argumentation/0004-2026-09-13-myia-po-2024-CoursIA.yaml @@ -0,0 +1,6 @@ +date: '2026-09-13' +by: myia-po-2024:CoursIA +python_sha: 9ce2b66171b001e0e3667a1a91664e33c3f84dab +csharp_sha: 33903518ce24c207073ec882b08e45530c5378c7 +content_python_sha: a4273a73a6561dd7067c2f07fd41017753ec473032919547272c40c08ff84f95 +content_csharp_sha: 32f82af1816800aa0a30bf57321e2e4354a8f4f7f4f4e6b2312a038bce3a908a diff --git a/scripts/notebook_tools/twin_pairs.d/tweety-7a-extended-frameworks/0013-2026-09-13-myia-po-2024-CoursIA.yaml b/scripts/notebook_tools/twin_pairs.d/tweety-7a-extended-frameworks/0013-2026-09-13-myia-po-2024-CoursIA.yaml new file mode 100644 index 0000000000..86c2b308e9 --- /dev/null +++ b/scripts/notebook_tools/twin_pairs.d/tweety-7a-extended-frameworks/0013-2026-09-13-myia-po-2024-CoursIA.yaml @@ -0,0 +1,6 @@ +date: '2026-09-13' +by: myia-po-2024:CoursIA +python_sha: dea6b917d24172003a44ae27e5713c31cd9fc193 +csharp_sha: 12d67a2ab86b09157e723882368260a0b0ca25c8 +content_python_sha: 82435911c2efa65ea80a5f304092417e508f61abb1ff3ae247e1a17f517bb41a +content_csharp_sha: 6f8ead7b098c1e049893b1e10c00fc9529692fce20097a0dfd56ab8870f7b0b1 diff --git a/scripts/notebook_tools/twin_pairs.d/tweety-7b-ranking-probabilistic/0005-2026-09-13-myia-po-2024-CoursIA.yaml b/scripts/notebook_tools/twin_pairs.d/tweety-7b-ranking-probabilistic/0005-2026-09-13-myia-po-2024-CoursIA.yaml new file mode 100644 index 0000000000..a1cf609798 --- /dev/null +++ b/scripts/notebook_tools/twin_pairs.d/tweety-7b-ranking-probabilistic/0005-2026-09-13-myia-po-2024-CoursIA.yaml @@ -0,0 +1,6 @@ +date: '2026-09-13' +by: myia-po-2024:CoursIA +python_sha: 19290f2468bdb36103d41fbd7444fb8b065a1d65 +csharp_sha: d36ea9faa9d30a7f4883be673b4cb8ca6bdd5dfb +content_python_sha: 65fbe0db55f67fefc8c26f748909eb8652da6ce20ff34e76eccdd0ee1a570be0 +content_csharp_sha: e7fa031e8aa56d38c2cd6977d2e80dc4d697786b40af30153ea3060fa8a3ef6c diff --git a/scripts/notebook_tools/twin_pairs.d/tweety-8-agent-dialogues/0005-2026-09-13-myia-po-2024-CoursIA.yaml b/scripts/notebook_tools/twin_pairs.d/tweety-8-agent-dialogues/0005-2026-09-13-myia-po-2024-CoursIA.yaml new file mode 100644 index 0000000000..935d6a6d16 --- /dev/null +++ b/scripts/notebook_tools/twin_pairs.d/tweety-8-agent-dialogues/0005-2026-09-13-myia-po-2024-CoursIA.yaml @@ -0,0 +1,6 @@ +date: '2026-09-13' +by: myia-po-2024:CoursIA +python_sha: a7588986d1287ffc2a840855bef3109304710b18 +csharp_sha: c1716dc545ab2753f7b040bbfd6c99469f1d0a41 +content_python_sha: c0c47f2bd2785d5d372f0dea880fffa6530f128b23c577ca3a91d121555f7725 +content_csharp_sha: cc26d62ecad651ddc612a3bb8e03b0d2dcd6882635ba6816021f2652177509ec diff --git a/scripts/notebook_tools/twin_pairs.d/tweety-9-preferences/0006-2026-09-13-myia-po-2024-CoursIA.yaml b/scripts/notebook_tools/twin_pairs.d/tweety-9-preferences/0006-2026-09-13-myia-po-2024-CoursIA.yaml new file mode 100644 index 0000000000..dfbea192dd --- /dev/null +++ b/scripts/notebook_tools/twin_pairs.d/tweety-9-preferences/0006-2026-09-13-myia-po-2024-CoursIA.yaml @@ -0,0 +1,6 @@ +date: '2026-09-13' +by: myia-po-2024:CoursIA +python_sha: 86833a9f7e2c1359be86cdb3b322b67fdd79bfc4 +csharp_sha: 02b0697df5c6f27dcd89f7fe17b0d4fac9479601 +content_python_sha: 289bfec8a2c8677fabbb1576509bc7b081130cd7155f23d0162e81a5b5bf1cd4 +content_csharp_sha: 77c8436c5f55e1ac1a86059cd487f1211f7e7115a260539e0330399c6022ae6a From bf90b5ba57bcd7673dac2fe0e5540b1b25df6f19 Mon Sep 17 00:00:00 2001 From: jsboige Date: Sun, 13 Sep 2026 18:08:55 +0200 Subject: [PATCH 3/5] fix(tweety,#11840): revert CSVs traductions -- bot-owned hors diff feature Le garde 'No hand-edited translation files' refuse le sweep des CSV derives : la decision #5 du rollout #5081 les laisse hors diff des branches feature. La regen post-merge (quand le hold #10038 leve) refletera les nouveaux chemins depuis les sources FR deja balayees. Co-Authored-By: Claude Sonnet 5 --- translations/symbolicai/argument_analysis.csv | 6 +- translations/tweety/tweety.csv | 1064 ++++++++--------- 2 files changed, 535 insertions(+), 535 deletions(-) diff --git a/translations/symbolicai/argument_analysis.csv b/translations/symbolicai/argument_analysis.csv index cb2d917638..62cd3294c4 100644 --- a/translations/symbolicai/argument_analysis.csv +++ b/translations/symbolicai/argument_analysis.csv @@ -3393,7 +3393,7 @@ pip install ipywidgets requests jupyter-ui-poll # Pour mode interactif **Dépendances système**: - **JDK 11+** (pour Tweety via JPype): `JAVA_HOME` doit être configuré -- **Bibliothèque Tweety**: JARs dans `libs/` (téléchargement automatique via `Tweety-01-Setup-Python.ipynb`) +- **Bibliothèque Tweety**: JARs dans `libs/` (téléchargement automatique via `Tweety-1-Setup.ipynb`) **Fichiers requis**: @@ -9647,7 +9647,7 @@ Les trois audiences produisent **trois extensions grounded différentes** sur le **Lecture** : sur ce cycle, le grounded contient toujours **deux** arguments sur trois — mais l'argument *exclu* change avec l'audience ($b$, puis $c$, puis $a$). Le mécanisme : l'argument dont la valeur est **la plus préférée** voit l'attaque dirigée contre lui échouer (son attaquant est moins préféré), donc il survit ; et comme sa propre attaque *vers le suivant* réussit, il élimine ce suivant. Le troisième argument survit alors par défense (le survivant principal défait l'attaquant du troisième). En résumé : **mettre une valeur en tête d'audience condamne l'argument que cette valeur attaque dans le cycle**. -C'est le résultat central de Bench-Capon : **la conclusion d'un débat n'est pas déterminée par le graphe d'arguments seul, mais par le graphe ET les valeurs de l'audience**. Trois auditoires de valeurs différentes, confrontés aux *mêmes* arguments, excluent légitimement des arguments différents. Cela relie l'argumentation à la théorie du choix social : si plusieurs individus ont des audiences différentes, **agréger leurs préférences** (cf. [Tweety-9](../Tweety/Tweety-09-Preferences-Python.ipynb), [GameTheory SocialChoice](../../GameTheory/)) devient la question centrale pour décider collectivement.",,,,,,,,9c3b519fc2a3fc84,,,,,,,, +C'est le résultat central de Bench-Capon : **la conclusion d'un débat n'est pas déterminée par le graphe d'arguments seul, mais par le graphe ET les valeurs de l'audience**. Trois auditoires de valeurs différentes, confrontés aux *mêmes* arguments, excluent légitimement des arguments différents. Cela relie l'argumentation à la théorie du choix social : si plusieurs individus ont des audiences différentes, **agréger leurs préférences** (cf. [Tweety-9](../Tweety/Tweety-9-Preferences.ipynb), [GameTheory SocialChoice](../../GameTheory/)) devient la question centrale pour décider collectivement.",,,,,,,,9c3b519fc2a3fc84,,,,,,,, MyIA.AI.Notebooks/SymbolicAI/Argument_Analysis/Argument_Analysis_Value_Based_AF.ipynb,0506af63,markdown,fr,e112eda91b5858f2,"## Sweep d'audiences : combien de conclusions distinctes ? Sur un VAF à $|V|$ valeurs, il y a $|V|!$ audiences possibles (tous les ordres totaux). Une question naturelle : parmi toutes ces audiences, **combien d'extensions grounded distinctes** obtient-on ? Si la réponse est 1, les valeurs sont décoratives (elles ne changent rien). Si la réponse est grande, le débat est *sensible* à l'audience — ce qui est précisément la situation où l'argumentation basée sur les valeurs apporte quelque chose que Dung pur ne peut pas exprimer. @@ -9779,7 +9779,7 @@ Le cadre de Dung (1995) dit *qui attaque qui*. Le cadre de Bench-Capon (2003) aj ### Prochaines étapes -- **Agrégation d'audiences → choix social** : si chaque individu a sa propre audience, comment décider collectivement ? C'est le pont vers [Tweety-9 (préférences)](../Tweety/Tweety-09-Preferences-Python.ipynb) et [GameTheory / SocialChoice](../../GameTheory/) (théorèmes d'impossibilité d'Arrow, votations). La question « existe-t-il une agrégation d'audiences qui préserve la rationalité ? » est un analogue direct du paradoxe de Condorcet. +- **Agrégation d'audiences → choix social** : si chaque individu a sa propre audience, comment décider collectivement ? C'est le pont vers [Tweety-9 (préférences)](../Tweety/Tweety-9-Preferences.ipynb) et [GameTheory / SocialChoice](../../GameTheory/) (théorèmes d'impossibilité d'Arrow, votations). La question « existe-t-il une agrégation d'audiences qui préserve la rationalité ? » est un analogue direct du paradoxe de Condorcet. - **Argumentation graduée** : plutôt qu'un ordre total sur les valeurs, [Ranking_Semantics](Argument_Analysis_Ranking_Semantics.ipynb) attribue une *force numérique* à chaque argument — une autre façon de départager ce que Dung laisse indécidé. - **Bipolarité** : les VAF gèrent les préférences, mais restent *attack-only*. Les cadres bipolaires (Cayrol & Lagasquie-Schiex, 2005) ajoutent une relation de **support** — un prolongement naturel au-delà de ce notebook. diff --git a/translations/tweety/tweety.csv b/translations/tweety/tweety.csv index 45de3020bc..7faea53d44 100644 --- a/translations/tweety/tweety.csv +++ b/translations/tweety/tweety.csv @@ -1,7 +1,7 @@ notebook,cell_id,cell_type,src_lang,src_hash,text_fr,text_en,text_es,text_ar,text_fa,text_zh,text_ru,text_pt,hash_fr,hash_en,hash_es,hash_ar,hash_fa,hash_zh,hash_ru,hash_pt,translate_policy MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-10-MLN.ipynb,8cbaf7ae,markdown,fr,c78ac9964c814d07,"# Tweety-10 — Markov Logic Networks (MLN) -**Navigation** : [← Tweety-9-Préférences](Tweety-09-Preferences-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [README](README.md) +**Navigation** : [← Tweety-9-Préférences](Tweety-9-Preferences.ipynb) | [Index](Tweety-1-Setup.ipynb) | [README](README.md) --- @@ -15,8 +15,8 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-10-MLN.ipynb,8cbaf7ae,markdown,fr,c78 ## Prerequis -- Avoir execute [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb) (JVM, JARs, JPype) -- Notions de logique du premier ordre : [Tweety-02-Basic-Logics-Python.ipynb](Tweety-02-Basic-Logics-Python.ipynb) (predicats, quantificateurs, `FolParser`) +- Avoir execute [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb) (JVM, JARs, JPype) +- Notions de logique du premier ordre : [Tweety-2-Basic-Logics.ipynb](Tweety-2-Basic-Logics.ipynb) (predicats, quantificateurs, `FolParser`) - Notions de probabilite : probabilite conditionnelle, distribution ### Duree estimee : 50 minutes @@ -438,7 +438,7 @@ les oiseaux volent. > **Leçon** : les exceptions sont le talon d'Achille de la logique classique. Les MLN les absorbent > en faisant varier le **poids** des règles — un oiseau vole *en général* (poids), un pingouin *jamais* -> (strict). C'est aussi la graine de l'**argumentation defeasible** (cf. [Tweety-6](Tweety-06-Structured-Argumentation-Python.ipynb)), +> (strict). C'est aussi la graine de l'**argumentation defeasible** (cf. [Tweety-6](Tweety-6-Structured-Argumentation.ipynb)), > ou les règles ont des priorites.",,,,,,,,99ee66a0113f58e7,,,,,,,, MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-10-MLN.ipynb,bf2ebbac,markdown,fr,712f0d9629ce064c,"## Partie 5 : Trois familles de reasoners MLN @@ -600,18 +600,18 @@ Ce notebook a couvert : ## Prochaines étapes - **Argumentation defeasible** : le paradoxe du pingouin (exception stricte vs règle générale) est - exactement le terrain de l'argumentation structurée → [Tweety-6-Structured-Argumentation](Tweety-06-Structured-Argumentation-Python.ipynb) + exactement le terrain de l'argumentation structurée → [Tweety-6-Structured-Argumentation](Tweety-6-Structured-Argumentation.ipynb) (ASPIC+, DeLP) - **Argumentation probabiliste** : les MLN pondérent les formules ; l'argumentation probabiliste - (NB 7b) pondère les *arguments* — deux facettes de l'incertitude → [Tweety-7b-Ranking-Probabilistic](Tweety-07b-Ranking-Probabilistic-Python.ipynb) + (NB 7b) pondère les *arguments* — deux facettes de l'incertitude → [Tweety-7b-Ranking-Probabilistic](Tweety-7b-Ranking-Probabilistic.ipynb) - **Application au texte** : la serie [Argument_Analysis](../Argument_Analysis/) utilise Tweety comme backend ; les MLN y fourniraient un raisonnement plausible sur des faits extraits de texte (une porte d'entree « neuro-symbolique » au-dessus des LLMs) --- -**Navigation** : [← Tweety-9-Préférences](Tweety-09-Preferences-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [README](README.md)",,,,,,,,c704c71e75db859d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-10-MLN-Csharp.ipynb,4b764a33,markdown,fr,4a501ef48aa6e9b5,"# Tweety-10 — Markov Logic Networks (MLN) en .NET (C# / IKVM)**Navigation** : [← Tweety-9-Préférences](Tweety-09-Preferences-Python.ipynb) | [Index](./README.md) | [Tweety-11-Causal →](Tweety-11-Causal.ipynb)**Module** : `org.tweetyproject.logics.mln` (Tweety 1.30) — compilé via IKVM 8.15 + .NET 8.0**Clé** : `See #4667` (EPIC Tweety .NET — 11ème port C#)**Recette build** : `dotnet-build/build-tweety-mln-shade.pom.xml` (maven-shade-plugin 3.5.3) + `dotnet-build/build-TweetyMlnShade.csproj` (IKVM 8.15.0, net8.0)## Objectifs pedagogiquesA la fin de ce notebook, vous saurez :1. **Construire un MLN** : faits stricts (poids = infini) et règles pondérées (poids fini) à partir de formules FOL2. **Interroger un MLN** : `query(mln, formula)` retourne une probabilité marginale3. **Comprendre le spectre logique ↔ statistique** : un poids croissant rend la règle de plus en plus stricte4. **Diagnostiquer un domaine** : utiliser le réseau de Markov pour propager des croyances (ex. médical, social, fraude)## Prérequis- Avoir exécuté [Tweety-02-Basic-Logics-CSharp.ipynb](Tweety-02-Basic-Logics-CSharp.ipynb) (notebook 2) pour `FolSignature`/`FolParser`/`FolFormula`- Avoir exécuté [Tweety-3-ModalLogic-Csharp.ipynb](Tweety-3-ModalLogic-Csharp.ipynb) (notebook 3) pour la logique modale (transversale)- Notions de base en FOL et en réseaux de Markov (loi de Boltzmann sur les mondes possibles)",,,,,,,,4a501ef48aa6e9b5,,,,,,,, +**Navigation** : [← Tweety-9-Préférences](Tweety-9-Preferences.ipynb) | [Index](Tweety-1-Setup.ipynb) | [README](README.md)",,,,,,,,c704c71e75db859d,,,,,,,, +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-10-MLN-Csharp.ipynb,4b764a33,markdown,fr,4a501ef48aa6e9b5,"# Tweety-10 — Markov Logic Networks (MLN) en .NET (C# / IKVM)**Navigation** : [← Tweety-9-Préférences](Tweety-9-Preferences.ipynb) | [Index](./README.md) | [Tweety-11-Causal →](Tweety-11-Causal.ipynb)**Module** : `org.tweetyproject.logics.mln` (Tweety 1.30) — compilé via IKVM 8.15 + .NET 8.0**Clé** : `See #4667` (EPIC Tweety .NET — 11ème port C#)**Recette build** : `dotnet-build/build-tweety-mln-shade.pom.xml` (maven-shade-plugin 3.5.3) + `dotnet-build/build-TweetyMlnShade.csproj` (IKVM 8.15.0, net8.0)## Objectifs pedagogiquesA la fin de ce notebook, vous saurez :1. **Construire un MLN** : faits stricts (poids = infini) et règles pondérées (poids fini) à partir de formules FOL2. **Interroger un MLN** : `query(mln, formula)` retourne une probabilité marginale3. **Comprendre le spectre logique ↔ statistique** : un poids croissant rend la règle de plus en plus stricte4. **Diagnostiquer un domaine** : utiliser le réseau de Markov pour propager des croyances (ex. médical, social, fraude)## Prérequis- Avoir exécuté [Tweety-2-Basic-Logics-Csharp.ipynb](Tweety-2-Basic-Logics-Csharp.ipynb) (notebook 2) pour `FolSignature`/`FolParser`/`FolFormula`- Avoir exécuté [Tweety-3-ModalLogic-Csharp.ipynb](Tweety-3-ModalLogic-Csharp.ipynb) (notebook 3) pour la logique modale (transversale)- Notions de base en FOL et en réseaux de Markov (loi de Boltzmann sur les mondes possibles)",,,,,,,,4a501ef48aa6e9b5,,,,,,,, MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-10-MLN-Csharp.ipynb,4f5ecc42,code,fr,3929c19c98d59e9c,"// --- Initialisation runtime IKVM + chargement DLL MLN (rebuild C190 IKVM 8.14) --- #r ""nuget: IKVM, 8.14.0"" #r ""org.tweetyproject.tweety-mln.dll"" @@ -1109,7 +1109,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-11-Causal.ipynb,9735acd3,markdown,fr, ## Prérequis - **[Tweety-5-Abstract-Argumentation](Tweety-5-Abstract-Argumentation.ipynb) §4.4** : le raisonnement causal par argumentation (couche *observationnelle* / diagnostique). -- **[Tweety-2-Basic-Logics](Tweety-02-Basic-Logics-Python.ipynb)** : logique propositionnelle (syntaxe des formules PL). +- **[Tweety-2-Basic-Logics](Tweety-2-Basic-Logics.ipynb)** : logique propositionnelle (syntaxe des formules PL). - Bases de probabilités (P(y|x), indépendance conditionnelle). ## Positionnement dans la série @@ -1884,9 +1884,9 @@ l'implémentation from-scratch rend **visible** pourquoi l'intervention isole l' ### Pour aller plus loin - **[Notebook-pont — du graphe causal au do-calculus](../../Probas/DecisionTheory/Causal-Bridges/Do-Calculus-Bridge.ipynb)** : la chirurgie de graphe implémentée from-scratch ici (remplacer l'équation de `X` par une constante) est la **sémantique** du do-operator ; le pont en montre le **calcul** — l'échelle de causalité et les 3 règles de Pearl exécutées sur l'outil de référence `dowhy` (identification backdoor/front-door + estimation + réfutation), en **quantitatif** là où ce twin décide en booléen. Il relie cette série à Infer-5, PyMC-5 et ICT-5.",,,,,,,,93a6086885ca426d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,a6835139,markdown,fr,f6299a8607020d74,"# Configuration et Installation TweetyProject +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,a6835139,markdown,fr,f6299a8607020d74,"# Configuration et Installation TweetyProject -**Navigation**: Index | [Suivant: Tweety-2-Basic-Logics](Tweety-02-Basic-Logics-Python.ipynb) +**Navigation**: Index | [Suivant: Tweety-2-Basic-Logics](Tweety-2-Basic-Logics.ipynb) --- @@ -1927,15 +1927,15 @@ Ce notebook configure l'environnement pour la série de notebooks TweetyProject | # | Notebook | Thème | Prérequis | |---|----------|-------|-----------| | 1 | **Ce notebook** | Configuration JVM/JPype | - | -| 2 | [Tweety-2-Basic-Logics](Tweety-02-Basic-Logics-Python.ipynb) | Logique Propositionnelle, FOL | Setup | +| 2 | [Tweety-2-Basic-Logics](Tweety-2-Basic-Logics.ipynb) | Logique Propositionnelle, FOL | Setup | | 3 | [Tweety-3-Advanced-Logics](Tweety-3-Advanced-Logics.ipynb) | DL, Modale, QBF, Conditional | Setup | | 4 | [Tweety-4-Belief-Revision](Tweety-4-Belief-Revision.ipynb) | CrMas, MUS, MaxSAT | Setup | | 5 | [Tweety-5-Abstract-Argumentation](Tweety-5-Abstract-Argumentation.ipynb) | Dung AF, CF2, Génération | Setup | -| 6 | [Tweety-6-Structured-Argumentation](Tweety-06-Structured-Argumentation-Python.ipynb) | ASPIC+, DeLP, ABA, ASP | Setup + Clingo | -| 7a | [Tweety-7a-Extended-Frameworks](Tweety-07a-Extended-Frameworks-Python.ipynb) | ADF, Bipolar, WAF, SAF, SetAF | Setup | -| 7b | [Tweety-7b-Ranking-Probabilistic](Tweety-07b-Ranking-Probabilistic-Python.ipynb) | Ranking Semantics, Probabiliste | Setup | -| 8 | [Tweety-8-Agent-Dialogues](Tweety-08-Agent-Dialogues-Python.ipynb) | Agents, Dialogues argumentatifs | Setup | -| 9 | [Tweety-9-Préférences](Tweety-09-Preferences-Python.ipynb) | Préférences, Théorie du vote | Setup | +| 6 | [Tweety-6-Structured-Argumentation](Tweety-6-Structured-Argumentation.ipynb) | ASPIC+, DeLP, ABA, ASP | Setup + Clingo | +| 7a | [Tweety-7a-Extended-Frameworks](Tweety-7a-Extended-Frameworks.ipynb) | ADF, Bipolar, WAF, SAF, SetAF | Setup | +| 7b | [Tweety-7b-Ranking-Probabilistic](Tweety-7b-Ranking-Probabilistic.ipynb) | Ranking Semantics, Probabiliste | Setup | +| 8 | [Tweety-8-Agent-Dialogues](Tweety-8-Agent-Dialogues.ipynb) | Agents, Dialogues argumentatifs | Setup | +| 9 | [Tweety-9-Préférences](Tweety-9-Preferences.ipynb) | Préférences, Théorie du vote | Setup | --- @@ -1950,11 +1950,11 @@ Ce notebook configure l'environnement pour la série de notebooks TweetyProject * 1.7 [Concepts Clés](#1.7) ---",,,,,,,,f6299a8607020d74,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,857b4633,markdown,fr,88024987ec347c0c,"## Partie 1 : Introduction et Configuration +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,857b4633,markdown,fr,88024987ec347c0c,"## Partie 1 : Introduction et Configuration Cette section couvre la mise en place de l'environnement nécessaire pour exécuter les exemples de ce notebook.",,,,,,,,88024987ec347c0c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,2cf92c1d,markdown,fr,def173389cb93bd7,"### 1.2 Pré-requis +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,2cf92c1d,markdown,fr,def173389cb93bd7,"### 1.2 Pré-requis * **Python 3.x** : Assurez-vous d'avoir une installation Python fonctionnelle (testé avec 3.10+). @@ -1964,11 +1964,11 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,2cf92c1d,markdo * Si `JAVA_HOME` n'est pas définie, le script de démarrage de la JVM (section 1.6) essaiera de trouver un JDK automatiquement, mais il est préférable de la définir explicitement. * **(Optionnel) Outils Externes** : Pour certaines fonctionnalités avancées (voir section [1.5](#1.5)), vous devrez installer des outils spécifiques et configurer leurs chemins d'accès plus loin dans le notebook. * **(Optionnel) Graphviz**: Pour visualiser certains graphes d'argumentation (non implémenté dans ce tutoriel mais possible).",,,,,,,,def173389cb93bd7,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,cf65605f,markdown,fr,ae1ca89a8886fab7,"### 1.3 Installation des Packages Python +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,cf65605f,markdown,fr,ae1ca89a8886fab7,"### 1.3 Installation des Packages Python Nous utilisons `jpype1` pour le pont Java-Python. Les autres packages (`requests`, `tqdm`) sont des utilitaires pour le téléchargement des JARs.",,,,,,,,ae1ca89a8886fab7,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,36b4464c,code,fr,4d7306b25b357be0,"# Vérification/Installation des packages Python nécessaires +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,36b4464c,code,fr,4d7306b25b357be0,"# Vérification/Installation des packages Python nécessaires import importlib import sys import subprocess @@ -2024,7 +2024,7 @@ except ImportError: print(""\n⚠️ Erreur d'import inattendue. Vérifiez votre environnement Python."") # Si on a installé, le message d'erreur est déjà affiché. pass",,,,,,,,4d7306b25b357be0,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,a0072a42,markdown,fr,8ec7adbf84d5b757,"### 1.4 Téléchargement des JARs Tweety et Dépendances +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,a0072a42,markdown,fr,8ec7adbf84d5b757,"### 1.4 Téléchargement des JARs Tweety et Dépendances TweetyProject est une collection de bibliothèques Java distribuées sous forme de fichiers JAR. Pour utiliser Tweety avec JPype, nous devons télécharger ces JARs et les rendre accessibles à la JVM. @@ -2036,7 +2036,7 @@ Le script suivant va : 4. Télécharger (ou vérifier la présence) des JARs **spécifiques aux modules** utilisés dans ce notebook (argumentation, logiques spécifiques, etc.). La liste `REQUIRED_MODULES` définit les modules nécessaires. *Note : Le téléchargement peut prendre quelques minutes lors de la première exécution. Assurez-vous que tous les JARs nécessaires sont bien présents dans le dossier `libs/` avant de démarrer la JVM, car des JARs manquants causeront des erreurs d'import plus loin.*",,,,,,,,8ec7adbf84d5b757,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,qe006rjkdgd,markdown,fr,8c268a968c9278ee,"### Interprétation de la vérification des packages +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,qe006rjkdgd,markdown,fr,8c268a968c9278ee,"### Interprétation de la vérification des packages **Résultat attendu** : Si tous les packages sont déjà installés, vous verrez un message confirmant leur présence. Si des packages manquent, le script tente une installation automatique. @@ -2054,7 +2054,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,qe006rjkdgd,mar | `python-sat` | Solveurs SAT modernes (CaDiCaL, Glucose, RC2 MaxSAT) | **Prochaine étape** : Téléchargement des bibliothèques Java de TweetyProject.",,,,,,,,8c268a968c9278ee,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,f7d5d7c7,code,fr,0e027fb443f3a327,"# --- Telechargement des JARs TweetyProject --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,f7d5d7c7,code,fr,0e027fb443f3a327,"# --- Telechargement des JARs TweetyProject --- print(""\n"" + ""=""*70) print(""TELECHARGEMENT DES JARS TWEETYPROJECT"") print(""=""*70) @@ -2093,7 +2093,7 @@ if LIB_DIR.exists(): print(""Premiers JARs:"") for jar in sorted(jars)[:5]: print(f"" - {jar.name}"")",,,,,,,,0e027fb443f3a327,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,w94x02kbjt8,markdown,fr,d8a68e10ff19b770,"#### Fichiers de Données Complémentaires +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,w94x02kbjt8,markdown,fr,d8a68e10ff19b770,"#### Fichiers de Données Complémentaires En plus des JARs, TweetyProject utilise des fichiers de données d'exemple pour les différentes logiques et systèmes d'argumentation : @@ -2103,7 +2103,7 @@ En plus des JARs, TweetyProject utilise des fichiers de données d'exemple pour - **Logiques** : fichiers `.proplogic`, `.fologic`, `.mlogic`, `.qbf` Ces fichiers sont téléchargés depuis le dépôt GitHub officiel de TweetyProject.",,,,,,,,d8a68e10ff19b770,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,27c4b5e1,code,fr,c1b0829c9b486efe,"# --- Téléchargement des Fichiers de Données --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,27c4b5e1,code,fr,c1b0829c9b486efe,"# --- Téléchargement des Fichiers de Données --- print(""\n--- Téléchargement des Ressources ---"") import subprocess @@ -2127,7 +2127,7 @@ if RESOURCE_DIR.exists(): files = list(RESOURCE_DIR.glob(""*.*"")) print(f""\nFichiers de donnees: {len(files)}"") ",,,,,,,,c1b0829c9b486efe,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,f889fe79,markdown,fr,99404b2868534d94,"### 1.5 Configuration des Outils Externes (Optionnel) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,f889fe79,markdown,fr,99404b2868534d94,"### 1.5 Configuration des Outils Externes (Optionnel) Certaines fonctionnalités avancées de Tweety s'appuient sur des outils externes (solveurs SAT/MaxSAT, prouveurs FOL/ML, énumérateurs MUS, solveurs ASP). Pour utiliser ces fonctionnalités, vous devez : @@ -2157,7 +2157,7 @@ Certaines fonctionnalités avancées de Tweety s'appuient sur des outils externe * Modifiez les variables `*_PATH` dans la cellule suivante avec les chemins corrects sur **votre** système. * Si un outil n'est pas installé ou si vous ne souhaitez pas l'utiliser, laissez le chemin vide (`""""`) ou commentez la ligne correspondante. Le notebook essaiera d'utiliser des alternatives internes (plus lentes) ou sautera les sections concernées. * Sous Windows, n'oubliez pas l'extension `.exe` et utilisez des anti-slashs (`\\`) ou des slashs (`/`) pour les chemins.",,,,,,,,99404b2868534d94,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,14aqhsl2suo,markdown,fr,84ac5b83993c0720,"### Interprétation du téléchargement des fichiers +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,14aqhsl2suo,markdown,fr,84ac5b83993c0720,"### Interprétation du téléchargement des fichiers **Résultat obtenu** : Le script affiche un résumé indiquant combien de fichiers ont été téléchargés, combien étaient déjà présents, et s'il y a eu des échecs. @@ -2176,7 +2176,7 @@ Les fichiers téléchargés sont organisés par type de logique/argumentation : > **Conseil** : Explorez le dossier `resources/` pour voir les exemples disponibles. Ces fichiers seront utilisés dans les notebooks suivants de la série. **Prochaine étape** : Configuration des outils externes (solveurs SAT, prouveurs, etc.).",,,,,,,,84ac5b83993c0720,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,c9ee4eec,code,fr,fd1bcff59234db2a,"# --- Configuration de base pour les outils externes --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,c9ee4eec,code,fr,fd1bcff59234db2a,"# --- Configuration de base pour les outils externes --- import os import pathlib import platform @@ -2225,7 +2225,7 @@ system = platform.system() print(f""Configuration des outils externes pour {system}"") print(f""Repertoire ext_tools: {EXT_TOOLS_DIR.resolve()}"") print(f""Repertoire libs/native: {NATIVE_LIBS_DIR.resolve() if NATIVE_LIBS_DIR.exists() else 'Non trouve'}"")",,,,,,,,fd1bcff59234db2a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,d22006e8,markdown,fr,434d495c53e6cceb,"#### 1.5.1 Clingo - Solveur ASP (Answer Set Programming) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,d22006e8,markdown,fr,434d495c53e6cceb,"#### 1.5.1 Clingo - Solveur ASP (Answer Set Programming) **Clingo** est le solveur ASP de reference du projet [Potassco](https://potassco.org/). Il combine le grounder *gringo* et le solveur *clasp*. @@ -2235,7 +2235,7 @@ Il combine le grounder *gringo* et le solveur *clasp*. - Support des programmes avec defauts et contraintes d'integrite **Installation** : Si non present, telechargement automatique depuis GitHub.",,,,,,,,434d495c53e6cceb,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,d18f916b,code,fr,54c5b4fb3122d932,"# === Configuration de Clingo === +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,d18f916b,code,fr,54c5b4fb3122d932,"# === Configuration de Clingo === print(""=== 1. Configuration de Clingo ==="") clingo_dir = EXT_TOOLS_DIR / ""clingo"" @@ -2290,7 +2290,7 @@ else: clingo_archive.unlink(missing_ok=True) except Exception as e: print(f"" Erreur installation Clingo: {e}"")",,,,,,,,54c5b4fb3122d932,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,4536b3b5,markdown,fr,1a1e1f2f56039702,"#### 1.5.2 SPASS - Prouveur de Logique Modale +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,4536b3b5,markdown,fr,1a1e1f2f56039702,"#### 1.5.2 SPASS - Prouveur de Logique Modale **SPASS** est un prouveur automatique de theoremes pour la logique du premier ordre avec support pour la logique modale. @@ -2300,7 +2300,7 @@ avec support pour la logique modale. **Note** : Sans SPASS, `SimpleMlReasoner` peut bloquer indefiniment. SPASS est donc fortement recommande pour les notebooks sur la logique modale.",,,,,,,,1a1e1f2f56039702,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,61e784aa,code,fr,4be67674b932f239,"# === Configuration de SPASS === +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,61e784aa,code,fr,4be67674b932f239,"# === Configuration de SPASS === print(""=== 2. Configuration de SPASS ==="") spass_dir = EXT_TOOLS_DIR / ""spass"" @@ -2360,7 +2360,7 @@ else: elif system == ""Darwin"": print("" INFO SPASS non disponible en telechargement automatique pour macOS."") print("" Installez manuellement depuis: https://www.spass-prover.org/"")",,,,,,,,4be67674b932f239,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,f065a74c,markdown,fr,082eab2d6ae6a292,"#### 1.5.3 EProver - Prouveur FOL de Haute Performance +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,f065a74c,markdown,fr,082eab2d6ae6a292,"#### 1.5.3 EProver - Prouveur FOL de Haute Performance **E Prover** est un prouveur automatique de theoremes pour la logique du premier ordre (FOL). C'est l'un des prouveurs les plus performants, regulierement gagnant des competitions CASC. @@ -2370,7 +2370,7 @@ C'est l'un des prouveurs les plus performants, regulierement gagnant des competi - Alternative a `SimpleFolReasoner` qui peut avoir des problemes de memoire **Note** : EProver est fourni dans le depot (ext_tools/EProver/).",,,,,,,,082eab2d6ae6a292,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,65bf6cf3,code,fr,eba1dd2498d52666,"# === Configuration de EProver (prouveur FOL) === +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,65bf6cf3,code,fr,eba1dd2498d52666,"# === Configuration de EProver (prouveur FOL) === print(""=== 3. Configuration de EProver ==="") eprover_search_paths = [ @@ -2394,7 +2394,7 @@ else: else: print("" EProver non trouve dans les chemins standards."") print("" Telecharger depuis https://eprover.org/"")",,,,,,,,eba1dd2498d52666,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,ec99d8a5,markdown,fr,27d77d425517e204,"#### 1.5.4 Solveurs SAT - Satisfaction Booleenne +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,ec99d8a5,markdown,fr,27d77d425517e204,"#### 1.5.4 Solveurs SAT - Satisfaction Booleenne Les **solveurs SAT** sont au coeur de nombreuses fonctionnalites de Tweety : - Raisonnement en logique propositionnelle @@ -2412,7 +2412,7 @@ Les **solveurs SAT** sont au coeur de nombreuses fonctionnalites de Tweety : | Sat4j | Pure Java | Modere | Multi-plateforme | **Nouveau** : Le wrapper `sat_solver.py` donne acces aux solveurs modernes via pySAT.",,,,,,,,27d77d425517e204,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,ba13bd46,code,fr,a16265f7b1b8903c,"# === Configuration des solveurs SAT === +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,ba13bd46,code,fr,a16265f7b1b8903c,"# === Configuration des solveurs SAT === print(""=== 4. Configuration des solveurs SAT ==="") # 4.1 Bibliotheques SAT natives (pour ADF via JNI) @@ -2457,7 +2457,7 @@ for sp in sat_solver_paths: break else: print("" sat_solver.py non trouve"")",,,,,,,,a16265f7b1b8903c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,27cbde26,markdown,fr,6184342d2f75b760,"#### 1.5.5 MARCO et MaxSAT - Analyse d'Incoherence +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,27cbde26,markdown,fr,6184342d2f75b760,"#### 1.5.5 MARCO et MaxSAT - Analyse d'Incoherence Ces outils sont utilises pour l'analyse des bases de croyances incoherentes : @@ -2470,7 +2470,7 @@ Ces outils sont utilises pour l'analyse des bases de croyances incoherentes : - Resout le problème d'optimisation : maximiser le nombre de clauses satisfaites - Wrapper Python utilisant l'algorithme RC2 (gagnant MaxSAT Evaluation 2018) - Utilise par les mesures d'incoherence basees sur MinSum",,,,,,,,6184342d2f75b760,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,d71c4120,code,fr,8c00e6e0e697bf0b,"# === Configuration de MARCO et MaxSAT === +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,d71c4120,code,fr,8c00e6e0e697bf0b,"# === Configuration de MARCO et MaxSAT === print(""=== 5. Configuration de MARCO (MUS enumerator) ==="") marco_search_paths = [ @@ -2517,7 +2517,7 @@ for tool, path in EXTERNAL_TOOLS.items(): display_path = path[:50] + ""..."" if path and len(path) > 50 else (path or ""-"") print(f"" {tool:<18}: [{status:^12}] {display_path}"") print(""=""*50)",,,,,,,,8c00e6e0e697bf0b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,2be324f0,markdown,fr,8a6d0203f92e2bc8,"### 1.6 Démarrage de la JVM via JPype +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,2be324f0,markdown,fr,8a6d0203f92e2bc8,"### 1.6 Démarrage de la JVM via JPype JPype permet à Python d'interagir directement avec le code Java. Nous devons démarrer une Machine Virtuelle Java (JVM) et lui indiquer où trouver les fichiers JAR de Tweety que nous venons de télécharger. @@ -2526,7 +2526,7 @@ JPype permet à Python d'interagir directement avec le code Java. Nous devons d * Il construit le `classpath` Java en listant tous les `.jar` dans le dossier `libs/`. * `jpype.startJVM()` lance la JVM. Si elle est déjà lancée (ex: après redémarrage du noyau), l'appel est ignoré. * **Crucial**: `jpype.imports.registerDomain(...)` doit être appelé **après** le démarrage de la JVM pour permettre les imports courts (ex: `from org.tweetyproject...`).",,,,,,,,8a6d0203f92e2bc8,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,q2ljvlflrw,markdown,fr,1495b1437a6ac882,"### Récapitulatif de la configuration des outils externes +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,q2ljvlflrw,markdown,fr,1495b1437a6ac882,"### Récapitulatif de la configuration des outils externes **État de l'environnement** : Si vous avez exécuté toutes les cellules de configuration des outils, vous disposez maintenant de : @@ -2548,7 +2548,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,q2ljvlflrw,mark > **Note** : La plupart des exemples de la série Tweety fonctionnent avec la configuration minimale (Sat4j). Les outils externes sont requis uniquement pour les sections avancées spécifiques. **Prochaine étape** : Démarrage de la Machine Virtuelle Java (JVM) pour accéder aux classes TweetyProject.",,,,,,,,1495b1437a6ac882,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,ea155f33,markdown,fr,755d5bc55fc4b341,"#### 1.6.1 Fonctions Utilitaires JDK +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,ea155f33,markdown,fr,755d5bc55fc4b341,"#### 1.6.1 Fonctions Utilitaires JDK Avant de demarrer la JVM, nous definissons des fonctions pour localiser ou telecharger automatiquement un JDK compatible. @@ -2557,7 +2557,7 @@ Avant de demarrer la JVM, nous definissons des fonctions pour localiser ou telec 2. Telechargement automatique de Zulu JDK 17 (Azul) 3. Variable d'environnement `JAVA_HOME` 4. Detection automatique des JDKs système",,,,,,,,755d5bc55fc4b341,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,cbc68495,code,fr,32e698374519279d,"# --- 1.6.1 Fonctions Utilitaires JDK --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,cbc68495,code,fr,32e698374519279d,"# --- 1.6.1 Fonctions Utilitaires JDK --- import jpype import jpype.imports import os @@ -2627,12 +2627,12 @@ def download_portable_jdk(): return None print(""Fonctions JDK definies: find_portable_jdk(), download_portable_jdk()"")",,,,,,,,32e698374519279d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,51c82356,markdown,fr,4eee8296703d3f9a,"#### 1.6.2 Detection et Configuration du JDK +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,51c82356,markdown,fr,4eee8296703d3f9a,"#### 1.6.2 Detection et Configuration du JDK Cette cellule detecte le JDK disponible et le telecharge si necessaire. **Important** : JPype necessite un JDK 11+ (JDK 17 recommande pour Tweety 1.30).",,,,,,,,4eee8296703d3f9a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,26af745f,code,fr,2ce30a8d52a9b586,"# --- 1.6.2 Detection du JDK --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,26af745f,code,fr,2ce30a8d52a9b586,"# --- 1.6.2 Detection du JDK --- def find_java_home(): """"""Trouve JAVA_HOME selon la strategie de priorite."""""" @@ -2683,11 +2683,11 @@ def find_java_home(): java_home_path = find_java_home() if java_home_path: print(f""\nJAVA_HOME configure: {java_home_path}"")",,,,,,,,2ce30a8d52a9b586,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,d882797b,markdown,fr,df34162d25aad573,"#### 1.6.3 Construction du Classpath +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,d882797b,markdown,fr,df34162d25aad573,"#### 1.6.3 Construction du Classpath Le **classpath** indique a la JVM ou trouver les classes Java. Nous assemblons tous les JARs Tweety du dossier `libs/`.",,,,,,,,df34162d25aad573,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,ff2328b8,code,fr,aebbcc5036656f92,"# --- 1.6.3 Construction du Classpath --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,ff2328b8,code,fr,aebbcc5036656f92,"# --- 1.6.3 Construction du Classpath --- classpath_separator = os.pathsep if 'LIB_DIR' not in globals(): LIB_DIR = pathlib.Path(""libs"") @@ -2708,14 +2708,14 @@ else: print("" OK JAR beliefdynamics present"") else: print("" ATTENTION: JAR beliefdynamics non trouve"")",,,,,,,,aebbcc5036656f92,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,37b9cf22,markdown,fr,22608acfd573bd82,"#### 1.6.4 Demarrage de la JVM +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,37b9cf22,markdown,fr,22608acfd573bd82,"#### 1.6.4 Demarrage de la JVM **Important** : Si des JARs ont ete telecharges dans les cellules précédentes, **redemarrez le noyau** avant d'executer cette cellule. La JVM est demarree une seule fois par session Python. Une fois demarree, toutes les classes Java sont accessibles via les imports Python.",,,,,,,,22608acfd573bd82,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,c3122934,code,fr,623dfa13b83b5ba0,"# --- 1.6.4 Demarrage de la JVM --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,c3122934,code,fr,623dfa13b83b5ba0,"# --- 1.6.4 Demarrage de la JVM --- if not jpype.isJVMStarted(): if not java_home_path: @@ -2741,14 +2741,14 @@ if not jpype.isJVMStarted(): print(f""ERREUR demarrage JVM: {e}"") else: print(""JVM deja en cours d'execution"")",,,,,,,,623dfa13b83b5ba0,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,bdb7428d,markdown,fr,512bad8814043d18,"#### 1.6.5 Verification des Imports Java +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,bdb7428d,markdown,fr,512bad8814043d18,"#### 1.6.5 Verification des Imports Java Verification que les classes Tweety essentielles sont accessibles. **Note sur InformationObject** : Dans Tweety 1.30, cette classe se trouve dans `org.tweetyproject.beliefdynamics.mas.InformationObject` (package `mas`). CrMas et la Revision de Croyances multi-agents fonctionnent normalement.",,,,,,,,512bad8814043d18,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,4c334f6f,code,fr,947dd0520494db44,"# --- 1.6.5 Verification des Imports --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,4c334f6f,code,fr,947dd0520494db44,"# --- 1.6.5 Verification des Imports --- print(""Test des imports Java essentiels..."") CrMas_Imports_OK = False # Variable utilisee par les autres notebooks @@ -2814,7 +2814,7 @@ if jpype.isJVMStarted(): print(""(Les sections CrMas seront sautees automatiquement)"") else: print(""JVM non demarree - impossible de tester les imports"")",,,,,,,,947dd0520494db44,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,84e8b5b3,markdown,fr,3ff678a9be3c34ed,"### 1.7 Concepts Clés de Tweety et JPype +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,84e8b5b3,markdown,fr,3ff678a9be3c34ed,"### 1.7 Concepts Clés de Tweety et JPype Avant de plonger dans les exemples, comprenons quelques concepts fondamentaux de Tweety et comment nous interagissons avec eux via JPype : @@ -2843,7 +2843,7 @@ Avant de plonger dans les exemples, comprenons quelques concepts fondamentaux de * **Collections Java**: Utiliser les types Java explicites (`ArrayList`, `HashSet` depuis `java.util`). * **Surcharge (Overloading)**: Si ambiguïté, caster avec `JObject(variable, ClasseJava)` ou `JInt()`, `JString()`, etc. (depuis `jpype.types`). * **Exceptions Java**: Attraper avec `except jpype.JException as e_java:`. Accéder au message avec `e_java.message()` et à la trace avec `e_java.stacktrace()`.",,,,,,,,3ff678a9be3c34ed,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,6vgvqjdz3z8,markdown,fr,7a4e882d26505658,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,6vgvqjdz3z8,markdown,fr,7a4e882d26505658,"--- ## Resume @@ -2915,7 +2915,7 @@ L'environnement etant configure, vous pouvez maintenant explorer : 4. **Tweety-6-Structured-Argumentation** : ASPIC+, DeLP, ABA, ASP Chaque notebook utilise les composants installes ici et ne necessite pas de configuration supplementaire.",,,,,,,,7a4e882d26505658,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,451bd551,markdown,fr,ef33da6e1d6edec4,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,451bd551,markdown,fr,ef33da6e1d6edec4,"--- ## Exercice : Validez votre installation Tweety @@ -2932,7 +2932,7 @@ Ecrivez une cellule de diagnostic qui : Completez le squelette ci-dessous. > **Indice** : reprenez les imports de la section 1.6.5 (Verification des Imports). Si la JVM n'est pas demarree, re-executez d'abord la cellule 1.6.4 (Demarrage de la JVM).",,,,,,,,ef33da6e1d6edec4,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,4ed0600a,code,fr,84101c2f2271629c,"# Exercice de validation - Diagnostic de l'environnement Tweety +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,4ed0600a,code,fr,84101c2f2271629c,"# Exercice de validation - Diagnostic de l'environnement Tweety # Completez les TODO ci-dessous pour verifier votre installation. # TODO etudiant : importer jpype et afficher sa version @@ -2940,7 +2940,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,4ed0600a,code,f # TODO etudiant : importer une classe Tweety (ex: PlBeliefSet) et l'instancier print(""Exercice a completer"")",,,,,,,,84101c2f2271629c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb,2b6db053,markdown,fr,73ac0770671ffc66,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb,2b6db053,markdown,fr,73ac0770671ffc66,"--- ## Notebooks de la série Tweety @@ -2948,22 +2948,22 @@ Après avoir exécuté ce notebook de configuration, vous pouvez explorer: | # | Notebook | Thème | |---|----------|-------| -| 2 | [Tweety-2-Basic-Logics](Tweety-02-Basic-Logics-Python.ipynb) | Logique Propositionnelle et FOL | +| 2 | [Tweety-2-Basic-Logics](Tweety-2-Basic-Logics.ipynb) | Logique Propositionnelle et FOL | | 3 | [Tweety-3-Advanced-Logics](Tweety-3-Advanced-Logics.ipynb) | DL, Modale, QBF, Conditional | | 4 | [Tweety-4-Belief-Revision](Tweety-4-Belief-Revision.ipynb) | Révision de croyances, MUS, MaxSAT | | 5 | [Tweety-5-Abstract-Argumentation](Tweety-5-Abstract-Argumentation.ipynb) | Dung, CF2, Génération | -| 6 | [Tweety-6-Structured-Argumentation](Tweety-06-Structured-Argumentation-Python.ipynb) | ASPIC+, DeLP, ABA, ASP | -| 7a | [Tweety-7a-Extended-Frameworks](Tweety-07a-Extended-Frameworks-Python.ipynb) | ADF, Bipolar, WAF, SAF, SetAF, Extended | -| 7b | [Tweety-7b-Ranking-Probabilistic](Tweety-07b-Ranking-Probabilistic-Python.ipynb) | Ranking Semantics, Probabiliste | -| 8 | [Tweety-8-Agent-Dialogues](Tweety-08-Agent-Dialogues-Python.ipynb) | Agents, Dialogues argumentatifs | -| 9 | [Tweety-9-Préférences](Tweety-09-Preferences-Python.ipynb) | Préférences, Théorie du vote | +| 6 | [Tweety-6-Structured-Argumentation](Tweety-6-Structured-Argumentation.ipynb) | ASPIC+, DeLP, ABA, ASP | +| 7a | [Tweety-7a-Extended-Frameworks](Tweety-7a-Extended-Frameworks.ipynb) | ADF, Bipolar, WAF, SAF, SetAF, Extended | +| 7b | [Tweety-7b-Ranking-Probabilistic](Tweety-7b-Ranking-Probabilistic.ipynb) | Ranking Semantics, Probabiliste | +| 8 | [Tweety-8-Agent-Dialogues](Tweety-8-Agent-Dialogues.ipynb) | Agents, Dialogues argumentatifs | +| 9 | [Tweety-9-Préférences](Tweety-9-Preferences.ipynb) | Préférences, Théorie du vote | --- -**Navigation**: Index | [Suivant: Tweety-2-Basic-Logics →](Tweety-02-Basic-Logics-Python.ipynb)",,,,,,,,73ac0770671ffc66,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,f7aaf847,markdown,fr,3b26a9685ccb821a,"# Logiques de Base - Propositionnelle et Premier Ordre +**Navigation**: Index | [Suivant: Tweety-2-Basic-Logics →](Tweety-2-Basic-Logics.ipynb)",,,,,,,,73ac0770671ffc66,,,,,,,, +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,f7aaf847,markdown,fr,3b26a9685ccb821a,"# Logiques de Base - Propositionnelle et Premier Ordre -**Navigation**: [← Tweety-1-Setup](Tweety-01-Setup-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-3-Advanced-Logics →](Tweety-3-Advanced-Logics.ipynb) +**Navigation**: [← Tweety-1-Setup](Tweety-1-Setup.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-3-Advanced-Logics →](Tweety-3-Advanced-Logics.ipynb) --- @@ -2976,14 +2976,14 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,f7aaf847 ## Prérequis -Exécutez d'abord [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb) pour configurer l'environnement JVM. +Exécutez d'abord [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb) pour configurer l'environnement JVM. ### Durée estimée : 45 minutes > **Limitations connues (Tweety 1.28):** > - FOL avec égalité peut causer des problèmes de heap space avec `SimpleFolReasoner` > - Préférer EProver pour les requêtes FOL complexes",,,,,,,,3b26a9685ccb821a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,6f6136ad,code,fr,fa4b84aa578d779c,"# --- Initialisation JVM Tweety + Outils Externes --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,6f6136ad,code,fr,fa4b84aa578d779c,"# --- Initialisation JVM Tweety + Outils Externes --- print(""--- Verification JVM Tweety + Outils ---"") jvm_ready = False @@ -3102,7 +3102,7 @@ if jvm_ready: else: tools_status.append(f""{tool}: -"") print(f""\nJVM prete. Outils: {sum(1 for t,p in EXTERNAL_TOOLS.items() if p)}/{len(EXTERNAL_TOOLS)}"")",,,,,,,,fa4b84aa578d779c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,4je7rlg5f9h,markdown,fr,bd2a211a65355d5a,"### Interpretation de l'initialisation JVM +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,4je7rlg5f9h,markdown,fr,bd2a211a65355d5a,"### Interpretation de l'initialisation JVM **Succes de l'initialisation** : - JVM demarree avec **10 JARs** charges @@ -3128,8 +3128,8 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,4je7rlg5 --- -**Note de parite cross-langage** (EPIC #4956) : Le jumeau C# de ce notebook (voir `Tweety-02-Basic-Logics-CSharp.ipynb`) utilise une strategie differente : **IKVM** transpile statiquement le bytecode Java de Tweety en DLL .NET native (7 Mo), tandis que ce notebook Python utilise **jpype** pour demarrer une JVM in-process et appeler directement les classes Java. Les deux strategies donnent acces au meme API Tweety (Proposition, PlBeliefSet, PlParser, FolReasoner...). Audit c.739 (2026-07-22) : 0 doc-honesty finding corrigible des deux cotes.",,,,,,,,bd2a211a65355d5a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,cd3ec64f,markdown,fr,0db067e576595e27,"## Partie 2 : Logiques Fondamentales dans Tweety +**Note de parite cross-langage** (EPIC #4956) : Le jumeau C# de ce notebook (voir `Tweety-2-Basic-Logics-Csharp.ipynb`) utilise une strategie differente : **IKVM** transpile statiquement le bytecode Java de Tweety en DLL .NET native (7 Mo), tandis que ce notebook Python utilise **jpype** pour demarrer une JVM in-process et appeler directement les classes Java. Les deux strategies donnent acces au meme API Tweety (Proposition, PlBeliefSet, PlParser, FolReasoner...). Audit c.739 (2026-07-22) : 0 doc-honesty finding corrigible des deux cotes.",,,,,,,,bd2a211a65355d5a,,,,,,,, +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,cd3ec64f,markdown,fr,0db067e576595e27,"## Partie 2 : Logiques Fondamentales dans Tweety Explorons comment représenter et raisonner avec certaines logiques de base en utilisant Tweety via JPype. @@ -3177,7 +3177,7 @@ a | b | a && b | a || b | a => b | !a Voyons comment créer, parser et évaluer des formules PL.",,,,,,,,0db067e576595e27,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,1a766440,code,fr,89815a1335672304,"# --- 2.1.1a Imports et verification JVM --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,1a766440,code,fr,89815a1335672304,"# --- 2.1.1a Imports et verification JVM --- print(""--- 2.1.1 Logique Propositionnelle : Setup ---"") # Verification de la JVM @@ -3217,7 +3217,7 @@ else: print(""Imports PL reussis. Classes disponibles:"") print("" - Proposition, Negation, Conjunction, Disjunction, Implication"") print("" - PlBeliefSet, PlParser, PossibleWorld"")",,,,,,,,89815a1335672304,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,56esk9ttltu,markdown,fr,6453fafe430bf288,"### Interpretation de l'initialisation PL +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,56esk9ttltu,markdown,fr,6453fafe430bf288,"### Interpretation de l'initialisation PL **Succes** : La JVM est prete et les classes PL ont ete chargees. @@ -3240,14 +3240,14 @@ PlReasoner (sémantique : inference logique) > **Note** : Le package `org.tweetyproject.logics.pl.*` contient toute la logique propositionnelle. > Pour d'autres logiques (FOL, Description Logic), les packages changent mais la structure reste similaire.",,,,,,,,6453fafe430bf288,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,d8f9ee9b,markdown,fr,4ed49c1de9b71c91,"#### Construction manuelle de formules +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,d8f9ee9b,markdown,fr,4ed49c1de9b71c91,"#### Construction manuelle de formules On peut construire des formules de deux facons: 1. **Par API Java**: en creant des objets `Proposition`, `Negation`, etc. 2. **Par parsing**: en utilisant `PlParser` pour parser une chaîne **Exemple de construction manuelle:**",,,,,,,,4ed49c1de9b71c91,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,c0aa5094,code,fr,9fc777bcfc60b577,"# --- 2.1.1b Construction manuelle de formules --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,c0aa5094,code,fr,9fc777bcfc60b577,"# --- 2.1.1b Construction manuelle de formules --- if jvm_ready: # Creer des propositions atomiques a = Proposition(""a"") @@ -3286,7 +3286,7 @@ if jvm_ready: else: print(""Cellule sautee : JVM Tweety non disponible"") ",,,,,,,,9fc777bcfc60b577,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,n370dw9zgt,markdown,fr,b16d1ae1f088052e,"### Interpretation de la KB construite manuellement +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,n370dw9zgt,markdown,fr,b16d1ae1f088052e,"### Interpretation de la KB construite manuellement **Sortie obtenue** : ``` @@ -3313,7 +3313,7 @@ Formules de la KB : - Un solveur SAT retournerait `UNSAT` pour cette KB > **Astuce** : Toujours verifier la consistance d'une KB avec `solver.isSatisfiable(kb)` avant de faire des requêtes.",,,,,,,,b16d1ae1f088052e,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,3977b528,markdown,fr,d0a31ebc59e0b256,"#### Parsing de formules +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,3977b528,markdown,fr,d0a31ebc59e0b256,"#### Parsing de formules Le `PlParser` permet de parser des formules depuis des chaînes de caractères. La syntaxe utilise les opérateurs: @@ -3323,7 +3323,7 @@ La syntaxe utilise les opérateurs: - `=>` pour l'implication - `<=>` pour l'equivalence - `^^` pour le XOR (ou exclusif)",,,,,,,,d0a31ebc59e0b256,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,e5e9ed18,code,fr,78899b49786e1b53,"# --- 2.1.1c Parsing de formules --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,e5e9ed18,code,fr,78899b49786e1b53,"# --- 2.1.1c Parsing de formules --- if jvm_ready: # Parser une base de connaissances depuis une chaine # IMPORTANT: Le parser Tweety est sensible aux espaces de debut de ligne. @@ -3347,7 +3347,7 @@ if jvm_ready: # - a=T, b=T, c=T else: print(""JVM non demarree - cellule sautee"")",,,,,,,,78899b49786e1b53,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,ddgrdkdjz6,markdown,fr,751ea9d384f78aaa,"### Interpretation du parsing et de la DNF +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,ddgrdkdjz6,markdown,fr,751ea9d384f78aaa,"### Interpretation du parsing et de la DNF **KB parsee** : `{ !a||b, !b||c, a||b||c }` @@ -3376,12 +3376,12 @@ La DNF liste explicitement tous les cas ou la formule est vraie : - XOR binaire (`a ^^ b`) n'a que 2 modèles (1 vraie) > **Astuce** : La méthode `toDnf()` est utile pour visualiser les modèles d'une formule complexe.",,,,,,,,751ea9d384f78aaa,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,3de93456,markdown,fr,910167edc6bdba13,"#### Sémantique : Mondes possibles et satisfaction +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,3de93456,markdown,fr,910167edc6bdba13,"#### Sémantique : Mondes possibles et satisfaction Un **monde possible** (`PossibleWorld`) est une interpretation qui assigne une valeur de verite a chaque proposition. Une formule est **satisfaite** par un monde si elle est vraie dans ce monde.",,,,,,,,910167edc6bdba13,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,e5d744d5,code,fr,21ed0cb95eae1378,"# --- 2.1.1d Semantique : mondes possibles --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,e5d744d5,code,fr,21ed0cb95eae1378,"# --- 2.1.1d Semantique : mondes possibles --- if jvm_ready: # Creer un monde possible ou a=True et b=True world1 = PossibleWorld() @@ -3410,7 +3410,7 @@ if jvm_ready: else: print(""Cellule sautee : JVM Tweety non disponible"") ",,,,,,,,21ed0cb95eae1378,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,i56fpuvcf4,markdown,fr,b5ff86f312c1a095,"### Interpretation des mondes possibles et modèles +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,i56fpuvcf4,markdown,fr,b5ff86f312c1a095,"### Interpretation des mondes possibles et modèles **Monde possible w1 = [a, b]** @@ -3441,7 +3441,7 @@ Les 4 modèles obtenus : > **Distinction importante** : > - **Monde possible** : Une interpretation (assignation de verite) > - **Modèle** : Un monde qui **satisfait** une formule donnee",,,,,,,,b5ff86f312c1a095,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,8b5790f8,markdown,fr,7e3b3b29f948570f,"#### Conversion DIMACS +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,8b5790f8,markdown,fr,7e3b3b29f948570f,"#### Conversion DIMACS Le format **DIMACS CNF** est le format standard pour les solveurs SAT. Tweety peut convertir une KB en DIMACS pour l'utiliser avec des solveurs externes. @@ -3454,7 +3454,7 @@ p cnf ``` Chaque variable est un entier positif, la negation est representee par un entier negatif.",,,,,,,,7e3b3b29f948570f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,3c48b5e5,code,fr,4c48f273bea3566c,"# --- 2.1.1e Conversion DIMACS --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,3c48b5e5,code,fr,4c48f273bea3566c,"# --- 2.1.1e Conversion DIMACS --- if jvm_ready: # Creer une KB pour la conversion kb_dimacs = PlBeliefSet() @@ -3480,7 +3480,7 @@ if jvm_ready: else: print(""Cellule sautee : JVM Tweety non disponible"") ",,,,,,,,4c48f273bea3566c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,36tedv7zi7p,markdown,fr,44bdb9931ec5d323,"### Interpretation du format DIMACS +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,36tedv7zi7p,markdown,fr,44bdb9931ec5d323,"### Interpretation du format DIMACS **Sortie obtenue** : ``` @@ -3518,7 +3518,7 @@ La formule `!a || (b && d)` devient 2 clauses : - Format universel pour tous les solveurs SAT (CaDiCaL, Glucose, MiniSat, Z3) - Permet d'utiliser des solveurs externes sans wrapper Java - Standard de facto depuis les SAT Competitions (1990s)",,,,,,,,44bdb9931ec5d323,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,044f5ef1,markdown,fr,ec1f2ca66059c1ad,"#### 2.1.2 Raisonnement Simple et Solveurs SAT (SAT4J interne) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,044f5ef1,markdown,fr,ec1f2ca66059c1ad,"#### 2.1.2 Raisonnement Simple et Solveurs SAT (SAT4J interne) Une fois les formules et bases définies, on peut effectuer des raisonnements : @@ -3532,7 +3532,7 @@ Tweety propose : * `SatSolver` : Une interface pour les solveurs SAT. `Sat4jSolver` est une implémentation Java intégrée. `SatSolver.setDefaultSolver(...)` permet de choisir le solveur à utiliser globalement. * `isSatisfiable(kb)`: Vérifie la satisfiabilité. * `getWitness(kb)`: Retourne un `PossibleWorld` modèle si la KB est satisfiable, sinon `None`.",,,,,,,,ec1f2ca66059c1ad,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,020bc6a0,code,fr,0fee356ea14f5bdd,"# --- 2.1.2 Logique Propositionnelle : Raisonnement et SAT4J --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,020bc6a0,code,fr,0fee356ea14f5bdd,"# --- 2.1.2 Logique Propositionnelle : Raisonnement et SAT4J --- print(""--- 2.1.2 Raisonnement PL et SAT4J ---"") if not jvm_ready: @@ -3606,7 +3606,7 @@ else: print(f""Erreur: {e}"") import traceback traceback.print_exc()",,,,,,,,0fee356ea14f5bdd,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,ggg4o74rfkb,markdown,fr,5ff3880fb93b06bb,"### Interpretation des résultats SAT4J +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,ggg4o74rfkb,markdown,fr,5ff3880fb93b06bb,"### Interpretation des résultats SAT4J **Exemple 1 : SimplePlReasoner (Consequence Logique)** @@ -3647,7 +3647,7 @@ Formule : `a XOR b` **Remarque** : XOR a exactement 2 modèles, comme attendu par la table de verite. > **SAT4J vs solveurs modernes** : SAT4J est **portable** (Java pur) mais ~10-20x plus lent que CaDiCaL/Glucose sur des problemes >1000 variables.",,,,,,,,5ff3880fb93b06bb,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,0c8ac0b9,markdown,fr,527cbb67bf265792,"#### 2.1.3 Solveurs SAT Modernes (pySAT / CaDiCaL) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,0c8ac0b9,markdown,fr,527cbb67bf265792,"#### 2.1.3 Solveurs SAT Modernes (pySAT / CaDiCaL) Sat4j est un excellent solveur SAT en Java pur, mais pour des problèmes industriels complexes, les **solveurs natifs modernes** offrent des performances nettement supérieures. @@ -3680,7 +3680,7 @@ from pysat.formula import CNF - Sat4j: ~10 secondes - CaDiCaL: ~0.5 secondes - Ratio: 20x plus rapide",,,,,,,,527cbb67bf265792,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,bf242c03,code,fr,df73fc61d5bf0067,"# --- 2.1.3a Solveurs SAT Modernes: Comparaison sur Problemes Varies --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,bf242c03,code,fr,df73fc61d5bf0067,"# --- 2.1.3a Solveurs SAT Modernes: Comparaison sur Problemes Varies --- print(""--- 2.1.3a Solveurs SAT Modernes (pySAT / CaDiCaL) ---"") pysat_available = False @@ -3814,7 +3814,7 @@ if pysat_available: print(f""=> Victoires: CaDiCaL={wins['cadical195']}, Glucose={wins['glucose42']}, MiniSat={wins['minisat22']}"") else: print(""Pour utiliser les solveurs modernes: pip install python-sat"")",,,,,,,,df73fc61d5bf0067,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,pj537rrj8y,markdown,fr,47cc58de1c2330c5,"## Interpretation des benchmarks pySAT +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,pj537rrj8y,markdown,fr,47cc58de1c2330c5,"## Interpretation des benchmarks pySAT **Résultats obtenus** (sortie de la cellule précédente) : @@ -3859,7 +3859,7 @@ Les **temps absolus** mesurés par chaque solveur sont le *résultat live* de la > **Honnêteté sur la mesure.** Les temps produits par la cellule de benchmark ci-dessus sont un *instantané* d'une exécution sur une machine donnée — **ils ne sont pas figés dans cette prose** (règle #9434) : seuls les vainqueurs et les ordres de grandeur structurels sont reportés ici, car ce sont les seuls stables d'une machine à l'autre. À l'échelle de la milliseconde (Latin Square), le classement d'un test peut même basculer d'une exécution à l'autre — par exemple une exécution précédente donnait MiniSat vainqueur sur Latin Square (Glucose à 0 victoire). C'est précisément pour cela que la cellule de code **calcule le vainqueur de chaque test** (`min(..., key=...)`) et **déduit sa conclusion du comptage de victoires** plutôt que d'afficher des spécialités figées : la narration suit toujours les résultats réels, sans dérive. ",,,,,,,,47cc58de1c2330c5,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,b9856fbd,markdown,fr,108c232b63571883,"### Enumeration de solutions et integration Tweety +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,b9856fbd,markdown,fr,108c232b63571883,"### Enumeration de solutions et integration Tweety Au-dela de trouver UNE solution, pySAT permet d'**enumerer toutes les solutions** d'un problème SAT en ajoutant des **clauses de blocage**. @@ -3868,7 +3868,7 @@ L'integration avec Tweety est simple: 2. Convertir en DIMACS avec DimacsSatSolver.convertToDimacs() 3. Parser le DIMACS pour pySAT 4. Resoudre avec CaDiCaL ou autre solveur moderne",,,,,,,,108c232b63571883,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,04714a6b,code,fr,2ddb3452498c647a,"# --- 2.1.3b Enumeration et Integration Tweety --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,04714a6b,code,fr,2ddb3452498c647a,"# --- 2.1.3b Enumeration et Integration Tweety --- print(""--- 2.1.3b Enumeration de solutions et Integration Tweety ---"") if not pysat_available: @@ -3937,7 +3937,7 @@ else: print(f"" Erreur integration: {e}"") print(""\n==> pySAT est un excellent complement a Tweety pour le SAT."")",,,,,,,,2ddb3452498c647a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,vg8u9ha0fh,markdown,fr,e88c994ba34215df,"### Interpretation : Enumeration et integration Tweety -> pySAT +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,vg8u9ha0fh,markdown,fr,e88c994ba34215df,"### Interpretation : Enumeration et integration Tweety -> pySAT **Exemple 3 : Enumeration de solutions** @@ -3968,7 +3968,7 @@ Workflow complet : - Meilleur des deux mondes : expressivite + vitesse > **Use case reel** : Verification formelle, planning, configuration de produits",,,,,,,,e88c994ba34215df,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,96314913,markdown,fr,799b62b15886d4f8,"## Exercice : Coloration de graphe avec SAT +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,96314913,markdown,fr,799b62b15886d4f8,"## Exercice : Coloration de graphe avec SAT ### Contexte @@ -3989,7 +3989,7 @@ de sorte que deux sommets adjacents n'aient jamais la même couleur. - ""Au moins une couleur"" : `a_r || a_v || a_b` - ""Au plus une couleur"" : `!(a_r && a_v) && !(a_r && a_b) && !(a_v && a_b)` - ""Pas même couleur sur arête A-B"" : `!(a_r && b_r) && !(a_v && b_v) && !(a_b && b_b)`",,,,,,,,799b62b15886d4f8,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,75687f51,code,fr,5e36abac35ed7a64,"# --- Exercice : Coloration de graphe (4 sommets, 3 couleurs) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,75687f51,code,fr,5e36abac35ed7a64,"# --- Exercice : Coloration de graphe (4 sommets, 3 couleurs) --- # TODO etudiant : Construisez la KB avec les 12 variables et les contraintes # Etape 1 : Creer les 12 propositions (a_r, a_v, a_b, b_r, ...) # Etape 2 : Pour chaque sommet, ajouter ""au moins une couleur"" et ""au plus une couleur"" @@ -3998,7 +3998,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,75687f51 # Etape 5 : Retirer une couleur et verifier que le probleme devient UNSAT print(""Exercice a completer"")",,,,,,,,5e36abac35ed7a64,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,cfcbe2ff,markdown,fr,34765f0762d212a4,"### 2.2 Logique du Premier Ordre (FOL) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,cfcbe2ff,markdown,fr,34765f0762d212a4,"### 2.2 Logique du Premier Ordre (FOL) La logique du premier ordre (First-Order Logic, FOL) étend la logique propositionnelle avec des **prédicats**, **constantes**, **variables** et **quantificateurs**. @@ -4043,7 +4043,7 @@ Humain(socrate) // Socrate est humain * **`FolReasoner`**: Interface pour les prouveurs (EProver, SPASS, SimpleFolReasoner) > **Limitation connue:** `SimpleFolReasoner` peut causer des problèmes de heap space sur des requêtes complexes avec égalité. Pour un raisonnement FOL robuste, utilisez EProver.",,,,,,,,34765f0762d212a4,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,39v1vjnf3pd,markdown,fr,e8c1672126a5e0bd,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,39v1vjnf3pd,markdown,fr,e8c1672126a5e0bd,"--- ## Transition : De la Logique Propositionnelle a la Logique du Premier Ordre @@ -4076,7 +4076,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,39v1vjnf - PL est **decidable** (SAT est NP-complet, mais resolvable) - FOL est **semi-decidable** (peut boucler indefiniment sur certaines requêtes) - Les solveurs FOL (EProver, SPASS) utilisent des **heuristiques** pour terminer en pratique",,,,,,,,e8c1672126a5e0bd,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,0b7135d9,code,fr,08314e1d6ec367ba,"# --- 2.2.1 Imports et verification JVM pour FOL --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,0b7135d9,code,fr,08314e1d6ec367ba,"# --- 2.2.1 Imports et verification JVM pour FOL --- print(""--- 2.2.1 Imports FOL ---"") if not jvm_ready: @@ -4115,7 +4115,7 @@ else: print(f""Erreur Java generale FOL: {e_java.message()}"") except Exception as e_gen: print(f""Erreur Python inattendue FOL: {e_gen}"")",,,,,,,,08314e1d6ec367ba,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,9ul34mty3,markdown,fr,d79a624af90baf77,"### Interpretation des imports FOL +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,9ul34mty3,markdown,fr,d79a624af90baf77,"### Interpretation des imports FOL **Succes** : Tous les imports FOL ont ete charges correctement. @@ -4132,7 +4132,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,9ul34mty > **Astuce** : Les classes `*Reasoner` sont des **facades** pour les solveurs externes (EProver, SPASS). > Le pattern reste le même : `reasoner.query(kb, formula)` retourne True/False.",,,,,,,,d79a624af90baf77,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,ca3a38e9,markdown,fr,8c3c5006836d14f0,"#### Creation de la Signature FOL +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,ca3a38e9,markdown,fr,8c3c5006836d14f0,"#### Creation de la Signature FOL Une **signature** définit le vocabulaire de notre domaine : - **Sorts** : Les types d'objets (`Person`, `City`) @@ -4148,7 +4148,7 @@ Signature: mortal(Person) isHappy(Person) ```",,,,,,,,8c3c5006836d14f0,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,b3fc694c,code,fr,130fd4596ca5546b,"# --- 2.2.2 Creation de la Signature FOL --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,b3fc694c,code,fr,130fd4596ca5546b,"# --- 2.2.2 Creation de la Signature FOL --- if fol_imports_ok: # Creer une signature avec predicats d'egalite integres sig_fol = FolSignature(True) @@ -4191,7 +4191,7 @@ if fol_imports_ok: print(sig_fol) else: print(""Imports FOL non disponibles - signature non creee."")",,,,,,,,130fd4596ca5546b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,i6qdult2tk,markdown,fr,eb1066d174f1540b,"### Interpretation de la signature créée +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,i6qdult2tk,markdown,fr,eb1066d174f1540b,"### Interpretation de la signature créée **Sortie obtenue** : La signature contient 3 sorts, 5 predicats, et 0 fonctions. @@ -4216,7 +4216,7 @@ Predicats: - Utiles pour le **typage statique** des théories formelles > **Note** : Le type `_Any` est ajoute automatiquement pour les predicats d'egalite polymorphes.",,,,,,,,eb1066d174f1540b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,317352eb,markdown,fr,f8f1db03ae492cea,"#### Parsing de formules FOL +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,317352eb,markdown,fr,f8f1db03ae492cea,"#### Parsing de formules FOL Le `FolParser` permet de parser des formules textuelles vers des objets `FolFormula`. @@ -4232,7 +4232,7 @@ Quantif.: forall X: (Humain(X) => Mortel(X)) > **Limitation Tweety 1.28:** Le parsing de quantificateurs complexes peut echouer. > Nous utilisons des faits atomiques simples pour cet exemple.",,,,,,,,f8f1db03ae492cea,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,2bbee30b,code,fr,6db575b65d1ec897,"# --- 2.2.3 Parsing et Base de Croyances FOL --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,2bbee30b,code,fr,6db575b65d1ec897,"# --- 2.2.3 Parsing et Base de Croyances FOL --- if fol_imports_ok: # Creer le parser avec notre signature parser_fol = FolParser() @@ -4267,7 +4267,7 @@ if fol_imports_ok: print(f""\nKB FOL contient {kb_fol.size()} formules."") else: print(""Imports FOL non disponibles - parsing ignore."")",,,,,,,,6db575b65d1ec897,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,dw10zd1ipfl,markdown,fr,b0c20a6aedb2ecd2,"### Interpretation du parsing FOL +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,dw10zd1ipfl,markdown,fr,b0c20a6aedb2ecd2,"### Interpretation du parsing FOL **Succes** : Les 4 formules ont ete parsees correctement dans la KB. @@ -4288,7 +4288,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,dw10zd1i - Les formules ci-dessus sont des **faits atomiques** (ground atoms) - Pour des quantificateurs comme `forall X: livesIn(X, paris)`, le parsing Tweety 1.28 peut echouer - Solution : construire manuellement avec `ForallQuantifiedFormula` ou utiliser EProver en mode TPTP",,,,,,,,b0c20a6aedb2ecd2,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,e9a924ba,markdown,fr,2ff9b5bd039d1f92,"#### Raisonnement FOL : Choix du Raisonneur +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,e9a924ba,markdown,fr,2ff9b5bd039d1f92,"#### Raisonnement FOL : Choix du Raisonneur Tweety propose plusieurs raisonneurs FOL : @@ -4300,7 +4300,7 @@ Tweety propose plusieurs raisonneurs FOL : > **Recommandation:** Utilisez **EProver** pour un raisonnement FOL robuste. > SimpleFolReasoner est acceptable pour des KB très petites sans requêtes d'egalite.",,,,,,,,2ff9b5bd039d1f92,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,afdc78c3,code,fr,4a4e87b2102e9e4e,"# --- 2.2.4 Configuration du Raisonneur et Requetes --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,afdc78c3,code,fr,4a4e87b2102e9e4e,"# --- 2.2.4 Configuration du Raisonneur et Requetes --- if fol_imports_ok and kb_fol.size() > 0: fol_reasoner = None @@ -4327,7 +4327,7 @@ if fol_imports_ok and kb_fol.size() > 0: print(f""\nRaisonneur actif: {current_reasoner.getClass().getSimpleName()}"") else: print(""KB vide ou imports manquants - raisonnement ignore."")",,,,,,,,4a4e87b2102e9e4e,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,1h27q4xqbeu,markdown,fr,f380711046965690,"### Interpretation de la configuration du raisonneur +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,1h27q4xqbeu,markdown,fr,f380711046965690,"### Interpretation de la configuration du raisonneur **Résultat** : EProver a ete configure avec succes comme raisonneur par defaut. @@ -4342,7 +4342,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,1h27q4xq | **Cas d'usage** | Tests basiques | Production | Logique modale | > **Astuce** : EProver est le choix recommande pour tout raisonnement FOL au-dela des tests triviaux.",,,,,,,,f380711046965690,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,4109949f,markdown,fr,411617cffd8ef0c9,"#### Exécution de Requêtes FOL +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,4109949f,markdown,fr,411617cffd8ef0c9,"#### Exécution de Requêtes FOL Testons l'inference logique sur notre base de connaissances : - `livesIn(alice, paris)` - Presente dans KB → **True** @@ -4352,7 +4352,7 @@ Testons l'inference logique sur notre base de connaissances : > **Note:** La requête `paris == london` est retiree car elle provoque un heap space > avec SimpleFolReasoner (enumeration exhaustive de tous les mondes possibles).",,,,,,,,411617cffd8ef0c9,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,81657d0f,code,fr,047c169353b9467b,"# --- 2.2.5 Execution des Requetes --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,81657d0f,code,fr,047c169353b9467b,"# --- 2.2.5 Execution des Requetes --- if fol_imports_ok and kb_fol.size() > 0: # Requetes simples (sans egalite de constantes) queries_fol_str = [ @@ -4377,7 +4377,7 @@ if fol_imports_ok and kb_fol.size() > 0: print(""\n[Note] Requete 'paris == london' retiree - voir section 2.2.1 pour EProver."") else: print(""Raisonnement FOL ignore (KB vide ou imports manquants)."")",,,,,,,,047c169353b9467b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,aikrj0yxrrp,markdown,fr,79a350a561ea12b7,"### Interpretation des résultats FOL +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,aikrj0yxrrp,markdown,fr,79a350a561ea12b7,"### Interpretation des résultats FOL **Analyse des résultats** : @@ -4397,7 +4397,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,aikrj0yx - En PL, on manipule des propositions atomiques (`a`, `b`, `c`) - En FOL, on manipule des **relations** entre objets (`livesIn(alice, paris)`) - La FOL permet de factoriser avec des quantificateurs : `forall X: (Humain(X) => Mortel(X))`",,,,,,,,79a350a561ea12b7,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,71c222d9,markdown,fr,b066d6e9ce2e54bf,"## Exercice : Modélisation FOL d'un domaine géographique +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,71c222d9,markdown,fr,b066d6e9ce2e54bf,"## Exercice : Modélisation FOL d'un domaine géographique ### Contexte @@ -4418,7 +4418,7 @@ Vous disposez d'une base de connaissances géographique simplifiée : - Suivez le même pattern que la section 2.2 : créer `FolSignature`, ajouter sorts, constantes, prédicats - Utilisez `FolParser` avec la signature pour parser les faits - Pour les règles avec quantificateurs, utilisez EProver (SimpleFolReasoner ne les gère pas bien)",,,,,,,,b066d6e9ce2e54bf,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,0865459b,code,fr,d0196766ec3e4942,"# --- Exercice : Modelisation FOL d'un domaine geographique --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,0865459b,code,fr,d0196766ec3e4942,"# --- Exercice : Modelisation FOL d'un domaine geographique --- # TODO etudiant : Creez la signature, la KB et executez les requetes # Etape 1 : Definir les sorts (City, Country, Region) et les constantes (paris, lyon, london, france, uk, europe) # Etape 2 : Definir les predicats (capitalOf/2, locatedIn/2, sameCountry/2) @@ -4426,14 +4426,14 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,0865459b # Etape 4 : Executer les requetes avec EProver ou SimpleFolReasoner print(""Exercice a completer"")",,,,,,,,d0196766ec3e4942,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,894cd31d,markdown,fr,b5f9c19e3469fba4,"#### 2.2.6 Test EProver (Optionnel) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,894cd31d,markdown,fr,b5f9c19e3469fba4,"#### 2.2.6 Test EProver (Optionnel) EProver est un prouveur automatique de theoremes pour la logique du premier ordre. Il est beaucoup plus efficace que `SimpleFolReasoner` pour les requêtes complexes, notamment celles impliquant l'egalite. > **Note**: EProver est auto-detecte depuis `ext_tools/EProver/eprover.exe` si present. Sinon, telechargez-le depuis [eprover.org](https://eprover.org/). La cellule suivante teste EProver avec des requêtes qui feraient crasher SimpleFolReasoner (heap space).",,,,,,,,b5f9c19e3469fba4,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,8d287b87,code,fr,786f198f4f72caaf,"# --- 2.2.6 Test EProver pour requetes FOL avancees --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,8d287b87,code,fr,786f198f4f72caaf,"# --- 2.2.6 Test EProver pour requetes FOL avancees --- print(""--- 2.2.6 Test EProver (Optionnel) ---"") if not jvm_ready: @@ -4501,7 +4501,7 @@ else: except Exception as e: print(f""Erreur: {e}"")",,,,,,,,786f198f4f72caaf,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,ski3x2bbd7g,markdown,fr,6683e83019263e45,"### Interpretation des résultats EProver +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,ski3x2bbd7g,markdown,fr,6683e83019263e45,"### Interpretation des résultats EProver **Observations** : - EProver **confirme** `human(a)` car presente dans la KB @@ -4513,7 +4513,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,ski3x2bb 3. **Expressivite** : Supporte FOL complete avec fonctions et egalite > **Production** : Pour des applications reelles, privilegiez EProver ou SPASS plutot que SimpleFolReasoner.",,,,,,,,6683e83019263e45,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,21ejyu27m0t,markdown,fr,b1db5eb73aa0ae80,"## Exemple guide : Modelisation d'un problème de planification en logique propositionnelle +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,21ejyu27m0t,markdown,fr,b1db5eb73aa0ae80,"## Exemple guide : Modelisation d'un problème de planification en logique propositionnelle ### Contexte @@ -4536,7 +4536,7 @@ Les contraintes sont : - ""Exactement un creneau"" = `(x_am || x_pm) && !(x_am && x_pm)` - ""Pas au même creneau"" = `!(maths_am && phys_am) && !(maths_pm && phys_pm)` - Reutilisez le pattern de parsing du notebook : `parser_pl.parseFormula(""..."")`",,,,,,,,b1db5eb73aa0ae80,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,l8jm9v7af8,code,fr,f5f4966e6fe61189,"# --- Exemple guide : Planification en Logique Propositionnelle --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,l8jm9v7af8,code,fr,f5f4966e6fe61189,"# --- Exemple guide : Planification en Logique Propositionnelle --- # Solution complete : modelisation et resolution d'un probleme de planification if jvm_ready: @@ -4596,7 +4596,7 @@ if jvm_ready: else: print(""Exemple saute : JVM Tweety non disponible"") ",,,,,,,,f5f4966e6fe61189,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,4aea0dc5,markdown,fr,8d8d57195041220c,"## Exercice : Planification avec contraintes supplementaires +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,4aea0dc5,markdown,fr,8d8d57195041220c,"## Exercice : Planification avec contraintes supplementaires En vous basant sur l'exemple guide ci-dessus, etendez le problème de planification avec les contraintes suivantes : @@ -4610,7 +4610,7 @@ En vous basant sur l'exemple guide ci-dessus, etendez le problème de planificat - Utilisez 12 propositions : `{maths,info,phys,chimie}_{am,pm,soir}` - ""Exactement un creneau"" pour chaque cours - Reutilisez le pattern de construction KB de l'exemple guide",,,,,,,,8d8d57195041220c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,f6b8a480,code,fr,a68392853772c667,"# --- Exercice : Planification etendue (4 cours, 3 creneaux) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,f6b8a480,code,fr,a68392853772c667,"# --- Exercice : Planification etendue (4 cours, 3 creneaux) --- # TODO etudiant : Construisez la KB avec les 12 propositions et les contraintes # Etape 1 : Creer les propositions (maths_am, maths_pm, maths_soir, info_am, ...) # Etape 2 : Ajouter les contraintes ""exactement un creneau"" pour chaque cours @@ -4618,7 +4618,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,f6b8a480 # Etape 4 : Resoudre avec Sat4jSolver et afficher l'emploi du temps print(""Exercice a completer"")",,,,,,,,a68392853772c667,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb,8511a380,markdown,fr,b7d693f4217c1513,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb,8511a380,markdown,fr,b7d693f4217c1513,"--- ## Resume @@ -4638,12 +4638,12 @@ Le notebook suivant explore les logiques plus avancees: Description Logic, Logiq --- -**Navigation**: [Tweety-1-Setup](Tweety-01-Setup-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-3-Advanced-Logics](Tweety-3-Advanced-Logics.ipynb)",,,,,,,,b7d693f4217c1513,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,m13718,markdown,fr,9f56a79b57e068bb,"# Tweety C# / IKVM - Logiques de Base (Port .NET du notebook Python) +**Navigation**: [Tweety-1-Setup](Tweety-1-Setup.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-3-Advanced-Logics](Tweety-3-Advanced-Logics.ipynb)",,,,,,,,b7d693f4217c1513,,,,,,,, +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,m13718,markdown,fr,9f56a79b57e068bb,"# Tweety C# / IKVM - Logiques de Base (Port .NET du notebook Python) -**Navigation** : [<- Tweety-1-Setup](Tweety-01-Setup-Python.ipynb) | [Index serie](Tweety-01-Setup-Python.ipynb) | [Tweety-3-Advanced-Logics ->](Tweety-3-Advanced-Logics.ipynb) +**Navigation** : [<- Tweety-1-Setup](Tweety-1-Setup.ipynb) | [Index serie](Tweety-1-Setup.ipynb) | [Tweety-3-Advanced-Logics ->](Tweety-3-Advanced-Logics.ipynb) -> Ce notebook est le **port C# / .NET** de [Tweety-02-Basic-Logics-Python.ipynb](Tweety-02-Basic-Logics-Python.ipynb). +> Ce notebook est le **port C# / .NET** de [Tweety-2-Basic-Logics.ipynb](Tweety-2-Basic-Logics.ipynb). > Au lieu d'appeler Tweety depuis Python via JPype + JVM, on execute directement les > classes Tweety **recompilees en bytecode .NET via IKVM** - aucune JVM, aucun JDK requis > au runtime. Voir le notebook Python pour le contexte théorique complet. @@ -4657,12 +4657,12 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,m13718,m ## Prerequis -- Le notebook Python `Tweety-02-Basic-Logics-Python.ipynb` pour les notions (logique propositionnelle, mondes possibles) +- Le notebook Python `Tweety-2-Basic-Logics.ipynb` pour les notions (logique propositionnelle, mondes possibles) - Le runtime est **tout .NET** : aucune installation Java/JDK n'est necessaire **Plan de route** : cinq étapes balisées, toutes exécutées et committées — (1) le runtime IKVM 8.15.0 restauré et vérifié, (2) la DLL Tweety chargée (`org.tweetyproject.tweety-pl` v1.30.0.0, 7,0 Mo), (3) la construction manuelle de cinq formules propositionnelles par constructeurs, (4) le parsing de la même syntaxe infixée via `PlParser`, (5) une base de croyances `PlBeliefSet` de quatre formules — dont vous montrerez qu'elle est *involontairement* inconsistante. Trois exercices closent le notebook, du DNF à la conséquence logique via `SimplePlReasoner`. Le fil rouge : **le même arbre de formule se construit par l'API C# ou se lit par le DSL texte** — deux portes, un AST.",,,,,,,,9f56a79b57e068bb,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,m51407,markdown,fr,edb436257d7d4f6c,"## Comment Tweety tourne en .NET (sans JVM) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,m51407,markdown,fr,edb436257d7d4f6c,"## Comment Tweety tourne en .NET (sans JVM) Tweety est une bibliotheque **Java**. Pour l'utiliser depuis C#, on recompile son bytecode Java en **bytecode .NET** grace a [IKVM](https://github.com/ikvm-revived/ikvm) : @@ -4675,17 +4675,17 @@ La cellule suivante configure ce runtime - **a executer avant toute utilisation **Ce que « tzdb=True » confirme** : la sortie du setup affiche `IKVM 8.15.0 pret (home=ikvm-home-8.15.0-win-x64, tzdb=True)` — la base de données des fuseaux horaires IANA est embarquée et indexée, signe que la couche d'exécution Java est complète et pas seulementCompilee au strict minimum. Ce détail compte pour Tweety : certaines fonctionnalités des librairies Java (sérialisation, localisation) exigent des ressources embarquées que IKVM doit exposer. Le pont n'est pas gratuit pour autant : chaque appel traverse la frontière CLR/JVM — invisible sur des formules unitaires comme ici, mais à garder en tête avant de lancer un solveur sur des milliers d'instances.",,,,,,,,edb436257d7d4f6c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,m74154,markdown,fr,d822a6d1b06a3e2c,"### 1. Configuration du runtime IKVM +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,m74154,markdown,fr,d822a6d1b06a3e2c,"### 1. Configuration du runtime IKVM > Cette cellule restaure les paquets NuGet IKVM et assemble le home IKVM. ~30-60 s la première fois. **Lecture de la sortie committée** : la ligne `IKVM 8.15.0 pret (home=ikvm-home-8.15.0-win-x64, tzdb=True)` est le signal de santé du runtime — version résolue, domicile d'exécution dédié (`ikvm-home-8.15.0-win-x64`, ce qui évite les collisions entre versions cohabitantes), fuseaux disponibles. C'est la première chose à vérifier quand une cellule Tweety échoue : un IKVM à moitié restauré produit des erreurs trompeuses (types introuvables) qui n'ont rien à voir avec votre logique.",,,,,,,,d822a6d1b06a3e2c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,c23932,code,fr,04a60793720d6329,"#r ""nuget: IKVM, 8.15.0"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,c23932,code,fr,04a60793720d6329,"#r ""nuget: IKVM, 8.15.0"" #r ""nuget: IKVM.Image, 8.15.0"" #r ""nuget: IKVM.Image.runtime.win-x64, 8.15.0"" ",,,,,,,,04a60793720d6329,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,c41366,code,fr,3884e03b0d199ba7,"using System.IO; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,c41366,code,fr,3884e03b0d199ba7,"using System.IO; string ikvmVer = ""8.15.0"", ikvmRid = ""win-x64""; string nugetRoot = Environment.GetEnvironmentVariable(""NUGET_PACKAGES"") @@ -4717,29 +4717,29 @@ AppContext.SetData(""IKVM.Home"", ikvmHome); bool tzdbOk = File.Exists(Path.Combine(ikvmHome, ""lib"", ""tzdb.dat"")); Console.WriteLine($""IKVM 8.15.0 pret (home=ikvm-home-{ikvmVer}-{ikvmRid}, tzdb={tzdbOk})""); ",,,,,,,,3884e03b0d199ba7,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,m74269,markdown,fr,5b346164956cf5e2,"### 2. Chargement de la DLL Tweety +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,m74269,markdown,fr,5b346164956cf5e2,"### 2. Chargement de la DLL Tweety On reference la DLL recompilee. Le cluster `pl` expose les espaces de noms `org.tweetyproject.logics.pl.syntax`, `org.tweetyproject.logics.pl.parser`, etc. **Pourquoi la cellule suivante vérifie ce que `#r` ne dit pas** : le commentaire du code invoque le constat #5039 — en .NET Interactive, la directive `#r` est **silencieuse par défaut** : elle n'affiche ni succès ni échec de chargement. Une référence cassée (chemin faux, DLL absente) ne se manifeste qu'à la première utilisation, parfois plusieurs cellules plus loin, avec un message d'erreur éloigné de la cause. D'où la cellule de vérification explicite : la sortie `Tweety (IKVM) reference chargee : org.tweetyproject.tweety-pl v1.30.0.0 (7,0 Mo)` prouve que l'assemblage est présent **et lisible** — vérifier tôt plutôt que diagnostiquer tard.",,,,,,,,5b346164956cf5e2,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,c1036,code,fr,b8acd74bc68683b4,"#r ""org.tweetyproject.tweety-pl.dll"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,c1036,code,fr,b8acd74bc68683b4,"#r ""org.tweetyproject.tweety-pl.dll"" ",,,,,,,,b8acd74bc68683b4,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,fc526651,code,fr,b44783029e4035af,"// Constat 3 (#5039) : la directive #r est silencieuse par defaut en .NET Interactive. +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,fc526651,code,fr,b44783029e4035af,"// Constat 3 (#5039) : la directive #r est silencieuse par defaut en .NET Interactive. // On verifie que la DLL IKVM/Tweety referencee est bien presente et lisible (metadata). using System.Reflection; var tweetyDll = ""org.tweetyproject.tweety-pl.dll""; var an = AssemblyName.GetAssemblyName(tweetyDll); Console.WriteLine($""Tweety (IKVM) reference chargee : {an.Name} v{an.Version} ({new FileInfo(tweetyDll).Length / 1024 / 1024:F1} Mo)."");",,,,,,,,b44783029e4035af,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,m58656,markdown,fr,92e4fcae69436d5a,"### 3. Logique propositionnelle - construction manuelle de formules +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,m58656,markdown,fr,92e4fcae69436d5a,"### 3. Logique propositionnelle - construction manuelle de formules On construit des formules comme dans le notebook Python, via l'API des classes `Proposition`, `Negation`, `Conjunction`, `Disjunction`, `Implication`. **Lecture des cinq constructions committées** : la sortie affiche le round-trip `saisie → toString()` — `a`, `!b`, `a&&!c`, `a||b`, `(a=>b)`. Deux observations. D'abord le mécanisme : en C#, `&&` et `||` **ne sont pas surchargeables** — les formules se construisent donc par constructeurs explicites (`new Negation(b)`, `new Conjunction(a, new Negation(c))`, `new Disjunction(a, b)`, `new Implication(a, b)`), et c'est le `toString()` de Tweety qui restitue la syntaxe infixée. Ensuite la normalisation : l'implication seule garde ses parenthèses (`(a=>b)`) — la précédence de `=>` étant la plus faible, Tweety les conserve par sécurité ; une conjonction au sein d'une conjon n'aurait pas besoin. Ces cinq formules forment l'alphabet structuré du notebook : chaque construction ultérieure (parse, KB, requêtes) les réutilise.",,,,,,,,92e4fcae69436d5a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,c16522,code,fr,b2a9274171fc5ca6,"using org.tweetyproject.logics.pl.syntax; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,c16522,code,fr,b2a9274171fc5ca6,"using org.tweetyproject.logics.pl.syntax; var a = new Proposition(""a""); var b = new Proposition(""b""); @@ -4757,14 +4757,14 @@ Console.WriteLine($""a && !c = {f3}""); Console.WriteLine($""a || b = {f4}""); Console.WriteLine($""a => b = {f5}""); ",,,,,,,,b2a9274171fc5ca6,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,m24048,markdown,fr,ccd4476b37d2dcf8,"### 4. Parsing de formules avec `PlParser` +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,m24048,markdown,fr,ccd4476b37d2dcf8,"### 4. Parsing de formules avec `PlParser` Le `PlParser` lit des formules depuis une chaîne : `!` (negation), `&&` (conjonction), `||` (disjonction), `=>` (implication), `<=>` (equivalence), `^^` (XOR). **Lecture du round-trip du parseur** : `(a || b) && !c` saisie avec espaces et majuscules de lisibilité ressort `(a||b)&&!c` — le parseur produit **exactement le même AST** que la construction manuelle de la section précédente (`new Conjunction(new Disjunction(a,b), new Negation(c))`), seul le rendu textuel diffère. C'est la démonstration qu'il existe deux portes d'entrée vers le même objet : l'API C# typée (verrue : verbeuse) et le DSL texte (concis mais faillible — une parenthèse oubliée devient une exception au lieu d'une erreur de compilation). La seconde ligne introduit l'opérateur `a^^b` : le **XOR exclusif**, signature syntaxique propre à Tweety (`^^`), que la logique propositionnelle classique exprime sinon par `(a||b)&&!(a&&b)`. Retenez la règle pratique : constructions manuelles pour les exemples pédagogiques, parseur pour tout ce qui vient d'une source texte (fichier, saisie utilisateur).",,,,,,,,ccd4476b37d2dcf8,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,c54393,code,fr,a5b24a247d2505ad,"var parser = new org.tweetyproject.logics.pl.parser.PlParser(); +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,c54393,code,fr,a5b24a247d2505ad,"var parser = new org.tweetyproject.logics.pl.parser.PlParser(); var fParsed = parser.parseFormula(""(a || b) && !c""); Console.WriteLine($""Parse de '(a || b) && !c' = {fParsed}""); @@ -4772,7 +4772,7 @@ Console.WriteLine($""Parse de '(a || b) && !c' = {fParsed}""); var fXor = parser.parseFormula(""a ^^ b""); Console.WriteLine($""XOR 'a ^^ b' = {fXor}""); ",,,,,,,,a5b24a247d2505ad,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,m95461,markdown,fr,df8b7b7d768efa57,"### 5. Base de croyances (`PlBeliefSet`) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,m95461,markdown,fr,df8b7b7d768efa57,"### 5. Base de croyances (`PlBeliefSet`) Une `PlBeliefSet` est un ensemble de formules (base de connaissances). On reproduit la KB du notebook Python. **Note d'API** : IKVM expose les méthodes Java en minuscules @@ -4780,7 +4780,7 @@ du notebook Python. **Note d'API** : IKVM expose les méthodes Java en minuscule **Lecture de la KB committée — et son piège** : la sortie affiche `KB = { a&&!c, (a=>b), a, !b }`, quatre formules. Regardez-la de près : elle est **inconsistante**, et probablement à l'insu de l'auteur. De `a` et `(a=>b)` le modus ponens tire `b` ; or `!b` est présent — la base affirme `b` et `non-b` à la fois. Ce n'est pas un bug du code mais une propriété logique de la base : en logique classique, une KB inconsistante entraîne *n'importe quelle* formule (*ex falso quodlibet*). C'est précisément le problème que Tweety-4 (révision de croyances) et Tweety-3 (mesure d'inconsistance) outillent : détecter, mesurer, réparer. Notez aussi l'ordre d'affichage `{ a&&!c, (a=>b), a, !b }` — celui de l'insertion, un `PlBeliefSet` est un ensemble, pas une séquence : aucune sémantique d'ordre à lui prêter.",,,,,,,,df8b7b7d768efa57,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,c59450,code,fr,17df0deb21cbd431,"using org.tweetyproject.logics.pl.syntax; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,c59450,code,fr,17df0deb21cbd431,"using org.tweetyproject.logics.pl.syntax; var kb = new PlBeliefSet(); var p = new org.tweetyproject.logics.pl.parser.PlParser(); @@ -4792,7 +4792,7 @@ kb.add(p.parseFormula(""a => b"")); Console.WriteLine($""Base de croyances KB = {kb}""); Console.WriteLine($""Nombre de formules : {kb.size()}""); ",,,,,,,,17df0deb21cbd431,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,m62216,markdown,fr,ea3cda6394535e5a,"## Conclusion +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,m62216,markdown,fr,ea3cda6394535e5a,"## Conclusion Ce notebook demontre le **port .NET fonctionnel** de Tweety pour la logique propositionnelle : @@ -4816,20 +4816,20 @@ Reprenez ceux du notebook Python, adaptes a l'API C# (méthodes Java minuscules) --- -**Note de parite cross-langage** (EPIC #4956) : Le jumeau Python de ce notebook (voir `Tweety-02-Basic-Logics-Python.ipynb`) utilise **jpype** pour demarrer une JVM in-process et appeler directement les classes Java de Tweety. Ce notebook C# utilise **IKVM** pour transpiler statiquement le bytecode Java de Tweety en DLL .NET native (7 Mo charges a l'init, voir cellule 7). Les deux strategies donnent acces au meme API Tweety. Particularite : ce notebook utilise le **vrai outil SOTA** (IKVM recompilation), contrairement a certains jumeaux Tweety-6/8 (cf PR #7913 c.736) qui reimplementaient Monte-Carlo from-scratch en BCL .NET suite a une DLL IKVM defectueuse. Audit c.739 (2026-07-22) : 0 doc-honesty finding corrigible des deux cotes. +**Note de parite cross-langage** (EPIC #4956) : Le jumeau Python de ce notebook (voir `Tweety-2-Basic-Logics.ipynb`) utilise **jpype** pour demarrer une JVM in-process et appeler directement les classes Java de Tweety. Ce notebook C# utilise **IKVM** pour transpiler statiquement le bytecode Java de Tweety en DLL .NET native (7 Mo charges a l'init, voir cellule 7). Les deux strategies donnent acces au meme API Tweety. Particularite : ce notebook utilise le **vrai outil SOTA** (IKVM recompilation), contrairement a certains jumeaux Tweety-6/8 (cf PR #7913 c.736) qui reimplementaient Monte-Carlo from-scratch en BCL .NET suite a une DLL IKVM defectueuse. Audit c.739 (2026-07-22) : 0 doc-honesty finding corrigible des deux cotes. **Les chiffres du parcours** : un runtime IKVM 8.15.0 vérifié sain (`tzdb=True`), une DLL `org.tweetyproject.tweety-pl` v1.30.0.0 de 7,0 Mo chargée et lue, cinq constructions manuelles, deux parses round-trip, une KB de quatre formules — involontairement inconsistante, comme la lecture de la section 5 l'a établi. La chaîne .NET est complète : de la restauration NuGet à la requête logique, chaque maillon a sa preuve d'exécution committée. Les exercices suivants font franchir le dernier palier : de la *construction* de formules à l'*interrogation* d'une base.",,,,,,,,ea3cda6394535e5a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,c30432,code,fr,33959189c5233fc4,"// Exercice 1 : Construisez la formule (a => b) && (b => a) et affichez sa forme DNF. +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,c30432,code,fr,33959189c5233fc4,"// Exercice 1 : Construisez la formule (a => b) && (b => a) et affichez sa forme DNF. // Indice : PlParser + .toNnf() ou construction manuelle. // TODO etudiant : completez ici Console.WriteLine(""Exercice 1 a completer""); ",,,,,,,,33959189c5233fc4,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,c52534,code,fr,c13c5b878218c66c,"// Exercice 2 : Parsez une KB de 4 formules et affichez sa taille + contenu. +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,c52534,code,fr,c13c5b878218c66c,"// Exercice 2 : Parsez une KB de 4 formules et affichez sa taille + contenu. // TODO etudiant : completez ici Console.WriteLine(""Exercice 2 a completer""); ",,,,,,,,c13c5b878218c66c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,b9717ab2984e,markdown,fr,33fb0cbc8f645949,"### Exercice 3 : Conséquence logique via SimplePlReasoner +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,b9717ab2984e,markdown,fr,33fb0cbc8f645949,"### Exercice 3 : Conséquence logique via SimplePlReasoner **Progression pédagogique** : les exercices 1 et 2 ont introduit `PlParser` (parsing de formules) et `PlBeliefSet` (base de croyances). Cet exercice ajoute le **raisonneur** : etant donne une KB, determiner si une formule est consequence logique (model-theoretic entailment). @@ -4839,7 +4839,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,b9717ab2 **Critère de validation détaillé** : la question posée est « la formule `c` est-elle conséquence de `KB = {a, a=>b, b=>c}` ? » — la réponse attendue est **oui**, par double modus ponens : `a` avec `a=>b` donne `b`, puis `b` avec `b=>c` donne `c`. Concrètement, `SimplePlReasoner.query(kb, f)` parcourt les interpretations et vérifie que chaque modèle de la KB satisfait `f` ; sur une KB de trois formules à trois propositions, l'espace est de 2³ = 8 interpretations — exhaustif et instantané. L'erreur classique à éviter : conclure « non » parce que `c` n'est pas *syntaxiquement* dans la KB — la conséquence est *sémantique* (vérité dans tous les modèles), pas de l'appartenance. Test de bord utile en passant : `query(kb, new Negation(new Proposition(""a"")))` doit retourner faux (a est dans la KB).",,,,,,,,33fb0cbc8f645949,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-CSharp.ipynb,6c64944b1d4d,code,fr,576e4f9de53fe3d5,"// Exercice 3 : Conséquence logique via SimplePlReasoner. +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics-Csharp.ipynb,6c64944b1d4d,code,fr,576e4f9de53fe3d5,"// Exercice 3 : Conséquence logique via SimplePlReasoner. // // Paysage : KB propositionnelle = { a, a => b, b => c }. // Question : la formule `c` est-elle consequence logique de KB ? @@ -4876,15 +4876,15 @@ Console.WriteLine(""Exercice 3 a completer — SimplePlReasoner.query(KB, c) sur // // Variante : tester aussi KB entail (a & b) → false (KB ne dit pas que a et b sont vrais simultanement). ",,,,,,,,576e4f9de53fe3d5,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,m63273,markdown,fr,7ce1d6913fc4f168,"# Tweety C# / IKVM - Sémantique propositionnelle : mondes possibles et raisonnement +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,m63273,markdown,fr,7ce1d6913fc4f168,"# Tweety C# / IKVM - Sémantique propositionnelle : mondes possibles et raisonnement -**Navigation** : [<- Tweety-2-Basic-Logics](Tweety-02-Basic-Logics-CSharp.ipynb) | [Index serie](Tweety-01-Setup-Python.ipynb) | [Tweety-3-Advanced-Logics ->](Tweety-3-Advanced-Logics.ipynb) +**Navigation** : [<- Tweety-2-Basic-Logics](Tweety-2-Basic-Logics-Csharp.ipynb) | [Index serie](Tweety-1-Setup.ipynb) | [Tweety-3-Advanced-Logics ->](Tweety-3-Advanced-Logics.ipynb) > Ce notebook est le **second volet C# / .NET** de la serie Tweety. Il poursuit -> [Tweety-2-Basic-Logics-Csharp](Tweety-02-Basic-Logics-CSharp.ipynb) (construction de formules, parsing, base +> [Tweety-2-Basic-Logics-Csharp](Tweety-2-Basic-Logics-Csharp.ipynb) (construction de formules, parsing, base > de croyances) en abordant la **sémantique** : mondes possibles, satisfaction, et raisonnement > (entaînement). Comme le pilote, il execute les classes Tweety **recompilees en bytecode .NET via -> IKVM** - aucune JVM au runtime. Voir [le notebook Python](Tweety-02-Basic-Logics-Python.ipynb) pour le contexte théorique complet. +> IKVM** - aucune JVM au runtime. Voir [le notebook Python](Tweety-2-Basic-Logics.ipynb) pour le contexte théorique complet. ## Objectifs pedagogiques @@ -4895,24 +4895,24 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,m63273,mar ## Prerequis -- [Tweety-2-Basic-Logics-Csharp](Tweety-02-Basic-Logics-CSharp.ipynb) (construction de formules, `PlBeliefSet`, `PlParser`) +- [Tweety-2-Basic-Logics-Csharp](Tweety-2-Basic-Logics-Csharp.ipynb) (construction de formules, `PlBeliefSet`, `PlParser`) - Notions de logique propositionnelle : valuation, modèle, consequence logique > **Rappel d'API (C# / IKVM)** : les classes Java Tweety sont exposees via IKVM avec la convention > Java minuscule (`.add()`, `.size()`, `.hasNext()`...). Le `PlParser.parseFormula()` retourne le type > de base `commons.Formula` ; on le **cast en `PlFormula`** pour les méthodes sémantiques. ",,,,,,,,7ce1d6913fc4f168,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,m51083,markdown,fr,943b95a32a177e0e,"## 1. Configuration du runtime IKVM +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,m51083,markdown,fr,943b95a32a177e0e,"## 1. Configuration du runtime IKVM -> Identique au [pilote](Tweety-02-Basic-Logics-CSharp.ipynb) : on restaure les paquets NuGet IKVM, on +> Identique au [pilote](Tweety-2-Basic-Logics-Csharp.ipynb) : on restaure les paquets NuGet IKVM, on > assemble le home IKVM (motrice d'exécution de la JVM en .NET), puis on charge la DLL Tweety. A executer > en premier. ~30-60 s la première fois. ",,,,,,,,943b95a32a177e0e,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,c390571,code,fr,04a60793720d6329,"#r ""nuget: IKVM, 8.15.0"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,c390571,code,fr,04a60793720d6329,"#r ""nuget: IKVM, 8.15.0"" #r ""nuget: IKVM.Image, 8.15.0"" #r ""nuget: IKVM.Image.runtime.win-x64, 8.15.0"" ",,,,,,,,04a60793720d6329,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,c317339,code,fr,7e343b51721af167,"using System.IO; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,c317339,code,fr,7e343b51721af167,"using System.IO; string ikvmVer = ""8.15.0"", ikvmRid = ""win-x64""; string nugetRoot = Environment.GetEnvironmentVariable(""NUGET_PACKAGES"") ?? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "".nuget"", ""packages""); @@ -4943,15 +4943,15 @@ AppContext.SetData(""IKVM.Home"", ikvmHome); bool tzdbOk = File.Exists(Path.Combine(ikvmHome, ""lib"", ""tzdb.dat"")); Console.WriteLine($""IKVM 8.15.0 pret (home=ikvm-home-{ikvmVer}-{ikvmRid}, tzdb={tzdbOk})""); ",,,,,,,,7e343b51721af167,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,c603247,code,fr,b8acd74bc68683b4,"#r ""org.tweetyproject.tweety-pl.dll"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,c603247,code,fr,b8acd74bc68683b4,"#r ""org.tweetyproject.tweety-pl.dll"" ",,,,,,,,b8acd74bc68683b4,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,88646a94,code,fr,b44783029e4035af,"// Constat 3 (#5039) : la directive #r est silencieuse par defaut en .NET Interactive. +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,88646a94,code,fr,b44783029e4035af,"// Constat 3 (#5039) : la directive #r est silencieuse par defaut en .NET Interactive. // On verifie que la DLL IKVM/Tweety referencee est bien presente et lisible (metadata). using System.Reflection; var tweetyDll = ""org.tweetyproject.tweety-pl.dll""; var an = AssemblyName.GetAssemblyName(tweetyDll); Console.WriteLine($""Tweety (IKVM) reference chargee : {an.Name} v{an.Version} ({new FileInfo(tweetyDll).Length / 1024 / 1024:F1} Mo)."");",,,,,,,,b44783029e4035af,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,m22726,markdown,fr,ee8332d7f35006b3,"## 2. Signature et mondes possibles +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,m22726,markdown,fr,ee8332d7f35006b3,"## 2. Signature et mondes possibles Une **signature** propositionnelle (`PlSignature`) est l'ensemble des atomes (propositions) du langage. Pour *n* atomes, il existe **2^n mondes possibles** (valuations) : chaque atome @@ -4962,7 +4962,7 @@ Le `PossibleWorldIterator` enumerera automatiquement tous les mondes d'une signa > Exemple : signature `{a, b}` -> 4 mondes : `[]` (aucun), `[a]`, `[b]`, `[a, b]`. ",,,,,,,,ee8332d7f35006b3,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,c418284,code,fr,a50b0707f285d7bb,"using org.tweetyproject.logics.pl.syntax; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,c418284,code,fr,a50b0707f285d7bb,"using org.tweetyproject.logics.pl.syntax; using org.tweetyproject.logics.pl.semantics; using org.tweetyproject.logics.pl.parser; @@ -4984,14 +4984,14 @@ while (it.hasNext()) } Console.WriteLine($""=> {n} mondes pour 2 atomes (2^2 = 4).""); ",,,,,,,,a50b0707f285d7bb,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,m33502,markdown,fr,43162f1b1e891ee4,"### Interpretation : mondes possibles et sémantique +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,m33502,markdown,fr,43162f1b1e891ee4,"### Interpretation : mondes possibles et sémantique Chaque monde correspond a une **interpretation** (valuation de verite) : `{a}` signifie *a est vrai, b est faux*. Le monde vide `[]` = tous les atomes faux. L'itération couvre exhaustivement les **2^n cas** de la table de verite. Cette enumeration est la base de la **sémantique de Tarski** : une formule est vraie dans un monde si sa valuation la satisfait. ",,,,,,,,43162f1b1e891ee4,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,m66831,markdown,fr,eca6a81a85285cd4,"## 3. Satisfaction : un monde est-il modèle d'une formule ? +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,m66831,markdown,fr,eca6a81a85285cd4,"## 3. Satisfaction : un monde est-il modèle d'une formule ? La méthode **`PossibleWorld.satisfies(PlFormula)`** repond : ce monde rend-il la formule vraie ? Une formule est **satisfiable** s'il existe au moins un monde qui la satisfait ; elle @@ -5002,7 +5002,7 @@ aucun monde ne la satisfait. > la satisfaction. Notez le **cast `(PlFormula)`** : `parseFormula` retourne le type generique > `Formula`, que les méthodes sémantiques precisent en `PlFormula`. ",,,,,,,,eca6a81a85285cd4,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,c338411,code,fr,f56e24494c5c620c,"using org.tweetyproject.logics.pl.syntax; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,c338411,code,fr,f56e24494c5c620c,"using org.tweetyproject.logics.pl.syntax; using org.tweetyproject.logics.pl.semantics; using org.tweetyproject.logics.pl.parser; @@ -5025,13 +5025,13 @@ Console.WriteLine($"" w satisfait a && b = {w.satisfies(fAND)}""); // faux (b Console.WriteLine($"" w satisfait a || b = {w.satisfies(fOR)}""); // vrai (a vrai) Console.WriteLine($"" w satisfait a => b = {w.satisfies(fIMP)}""); // faux (a vrai, b faux) ",,,,,,,,f56e24494c5c620c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,m5545,markdown,fr,fb42e2664860572f,"### Representation canonique d'un monde +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,m5545,markdown,fr,fb42e2664860572f,"### Representation canonique d'un monde La méthode **`getCompleteConjunction(PlSignature)`** produit la conjonction complete representant un monde dans une signature donnee (un litteral positif par atome vrai, negatif par atome faux). C'est la **forme normale disjonctive** canonique d'une valuation. ",,,,,,,,fb42e2664860572f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,c77422,code,fr,31afeb9b391defe2,"using org.tweetyproject.logics.pl.syntax; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,c77422,code,fr,31afeb9b391defe2,"using org.tweetyproject.logics.pl.syntax; using org.tweetyproject.logics.pl.semantics; using org.tweetyproject.logics.pl.parser; @@ -5048,7 +5048,7 @@ w.add(new Proposition(""c"")); Console.WriteLine($""Monde = {w}""); Console.WriteLine($""Conjonction complete dans {{a,b,c}} = {w.getCompleteConjunction(sig)}""); ",,,,,,,,31afeb9b391defe2,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,m88739,markdown,fr,068b14aa84506cb1,"## 4. Raisonnement : consequence logique (entaînement) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,m88739,markdown,fr,068b14aa84506cb1,"## 4. Raisonnement : consequence logique (entaînement) Enumerer les mondes est exact mais couteux (2^n). Pour le **raisonnement** - une base de croyances `KB` entaîne-t-elle une formule `phi` (note `KB |= phi`) ? - on delegue a un @@ -5059,7 +5059,7 @@ verifie cela sans enumerer exhaustivement. La méthode retourne un booléen. > Exemple : avec `KB = { a, a => b }`, on a `KB |= b` (modus ponens) mais `KB |= c` est faux. ",,,,,,,,068b14aa84506cb1,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,c374005,code,fr,0c672c79e5f429da,"using org.tweetyproject.logics.pl.syntax; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,c374005,code,fr,0c672c79e5f429da,"using org.tweetyproject.logics.pl.syntax; using org.tweetyproject.logics.pl.reasoner; using org.tweetyproject.logics.pl.parser; @@ -5075,7 +5075,7 @@ Console.WriteLine($""KB |= c ? {r.query(kb, (PlFormula)p.parseFormula(""c"")) Console.WriteLine($""KB |= a||c ? {r.query(kb, (PlFormula)p.parseFormula(""a || c""))}""); // vrai : a vrai => disjonction Console.WriteLine($""KB |= !a ? {r.query(kb, (PlFormula)p.parseFormula(""!a""))}""); // faux : KB contient a ",,,,,,,,0c672c79e5f429da,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,m72867,markdown,fr,39c498be66a73d3f,"### Interpretation : les deux faces de la verite +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,m72867,markdown,fr,39c498be66a73d3f,"### Interpretation : les deux faces de la verite Deux approches equivalentes pour `KB |= phi` : - **Sémantique** (enumerateur) : parcourir tous les modèles de KB et verifier que chacun satisfait `phi`. @@ -5085,13 +5085,13 @@ Deux approches equivalentes pour `KB |= phi` : Le `SatReasoner` emploie la seconde (DPLL/CDCL via Sat4j), bien plus efficace que l'enumeration des 2^n mondes des que *n* grandit. C'est le coeur des moteurs modernes de raisonnement. ",,,,,,,,39c498be66a73d3f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,m64411,markdown,fr,b3c9f4a6a642841a,"## Exemple guide : modèles d'une base de croyances +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,m64411,markdown,fr,b3c9f4a6a642841a,"## Exemple guide : modèles d'une base de croyances Croisons les deux approches : trouvons **les mondes qui satisfont toute la KB** (ses modèles). Un monde est modèle de KB s'il satisfait chaque formule. `PossibleWorld.satisfies` accepte directement un `PlBeliefSet`. ",,,,,,,,b3c9f4a6a642841a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,c629890,code,fr,2676dc374e5a0249,"using org.tweetyproject.logics.pl.syntax; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,c629890,code,fr,2676dc374e5a0249,"using org.tweetyproject.logics.pl.syntax; using org.tweetyproject.logics.pl.semantics; using org.tweetyproject.logics.pl.parser; @@ -5121,7 +5121,7 @@ while (it.hasNext()) } Console.WriteLine($""=> {models} modele(s) sur 8.""); ",,,,,,,,2676dc374e5a0249,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,m96153,markdown,fr,bee94854aacc34ad,"### Interpretation +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,m96153,markdown,fr,bee94854aacc34ad,"### Interpretation KB impose `c` des que `a` est vrai (chainage `a => b => c`). Les modèles respectent donc l'ordre : si `a` est present, `b` et `c` doivent l'etre aussi. Verifiez sur la liste : aucun @@ -5131,9 +5131,9 @@ des implications, vue semantiquement. > On retrouve ici le lien profond : la consequence logique `KB |= phi` equivaut a dire que > `phi` est vraie dans **tous** les modèles de KB - c'est le **theorem de Tarski**. ",,,,,,,,bee94854aacc34ad,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,m34593,markdown,fr,ad4e1c0eaaa79327,"## Conclusion +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,m34593,markdown,fr,ad4e1c0eaaa79327,"## Conclusion -Ce notebook complete le pilote [Tweety-2-Basic-Logics-Csharp](Tweety-02-Basic-Logics-CSharp.ipynb) +Ce notebook complete le pilote [Tweety-2-Basic-Logics-Csharp](Tweety-2-Basic-Logics-Csharp.ipynb) avec la **sémantique** de la logique propositionnelle en .NET natif : | Concept | Classe Tweety (C#) | Méthode | Statut | @@ -5158,10 +5158,10 @@ logiques markoviens (notebook 10). ### Exercices -Adaptez ceux du [notebook Python](Tweety-02-Basic-Logics-Python.ipynb) a l'API C# (cast `PlFormula`, méthodes +Adaptez ceux du [notebook Python](Tweety-2-Basic-Logics.ipynb) a l'API C# (cast `PlFormula`, méthodes Java minuscules). Rappel : les stubs doivent s'executer sans erreur (jamais `raise`/`assert`/`1/0`). ",,,,,,,,ad4e1c0eaaa79327,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,m45853,markdown,fr,1e63dcd1d7b413aa,"#### Exercice 1 : Tautologie, contradiction ou contingence ? +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,m45853,markdown,fr,1e63dcd1d7b413aa,"#### Exercice 1 : Tautologie, contradiction ou contingence ? Ecrivez une fonction qui, etant donne une formule et une signature, determine si elle est **tautologie** (tous les mondes la satisfont), **contradiction** (aucun), ou **contingente**. @@ -5170,7 +5170,7 @@ Testez sur `a || !a`, `a && !a`, et `a => b`. **Indice** : enumerer les mondes via `PossibleWorldIterator`, compter ceux qui satisfont la formule, comparer au total `2^n`. ",,,,,,,,1e63dcd1d7b413aa,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,c236170,code,fr,acf4e0cd25df3c7d,"using org.tweetyproject.logics.pl.syntax; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,c236170,code,fr,acf4e0cd25df3c7d,"using org.tweetyproject.logics.pl.syntax; using org.tweetyproject.logics.pl.semantics; using org.tweetyproject.logics.pl.parser; @@ -5191,7 +5191,7 @@ Console.WriteLine(Classify(p, sig, ""a || !a"")); // attendu : tautologie Console.WriteLine(Classify(p, sig, ""a && !a"")); // attendu : contradiction Console.WriteLine(Classify(p, sig, ""a => b"")); // attendu : contingente ",,,,,,,,acf4e0cd25df3c7d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,m84967,markdown,fr,2428e634713ed129,"#### Exercice 2 : Equivalence logique via l'entaînement +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,m84967,markdown,fr,2428e634713ed129,"#### Exercice 2 : Equivalence logique via l'entaînement Deux formules `f1` et `f2` sont **logiquement equivalentes** ssi `f1 |= f2` ET `f2 |= f1`. Verifiez que `a => b` est equivalent a `!a || b`, et que `!(a && b)` est equivalent a `!a || !b` @@ -5200,7 +5200,7 @@ Verifiez que `a => b` est equivalent a `!a || b`, et que `!(a && b)` est equival **Indice** : construire un `PlBeliefSet` contenant `f1`, puis `SatReasoner.query(kb, f2)` ; recommencer en inversant. Equivalent ssi les deux sens sont vrais. ",,,,,,,,2428e634713ed129,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,c417912,code,fr,13d150fa9f2baba4,"using org.tweetyproject.logics.pl.syntax; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,c417912,code,fr,13d150fa9f2baba4,"using org.tweetyproject.logics.pl.syntax; using org.tweetyproject.logics.pl.reasoner; using org.tweetyproject.logics.pl.parser; @@ -5219,7 +5219,7 @@ Console.WriteLine(AreEquivalent(p, ""a => b"", ""!a || b"")); // attendu Console.WriteLine(AreEquivalent(p, ""!(a && b)"", ""!a || !b"")); // attendu : True (De Morgan) Console.WriteLine(AreEquivalent(p, ""a => b"", ""b => a"")); // attendu : False ",,,,,,,,13d150fa9f2baba4,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,m18873,markdown,fr,5ff212ee818cfe17,"#### Exercice 3 : Deduire une consequence cachee +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,m18873,markdown,fr,5ff212ee818cfe17,"#### Exercice 3 : Deduire une consequence cachee Soit la base `KB = { (a || b) => c, c => d, a }`. Quelles propositions parmi `{a, b, c, d, e}` sont entaînees par KB ? Utilisez `SatReasoner.query` pour tester chaque proposition et afficher celles @@ -5229,7 +5229,7 @@ dans aucune premisse contenant directement `a` ? **Indice** : `a` vrai + `(a||b)=>c` donne `c` vrai, puis `c=>d` donne `d` vrai. C'est le **chainage avant** des implications - verifiez-le machinelement. ",,,,,,,,5ff212ee818cfe17,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02b-Semantics-CSharp.ipynb,c539956,code,fr,80918ae76bb29aac,"using org.tweetyproject.logics.pl.syntax; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2b-Semantics-Csharp.ipynb,c539956,code,fr,80918ae76bb29aac,"using org.tweetyproject.logics.pl.syntax; using org.tweetyproject.logics.pl.reasoner; using org.tweetyproject.logics.pl.parser; @@ -5246,22 +5246,22 @@ foreach (var atom in new[]{ ""a"", ""b"", ""c"", ""d"", ""e"" }) Console.WriteLine($""KB |= {atom} ? (Exercice 3 a completer)""); } ",,,,,,,,80918ae76bb29aac,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,m328317,markdown,fr,6d34c96156d32afe,"# Tweety-2c — Logique du premier ordre en C#/.NET (port natif IKVM) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,m328317,markdown,fr,6d34c96156d32afe,"# Tweety-2c — Logique du premier ordre en C#/.NET (port natif IKVM) > **Série Tweety — port C#/.NET natif (EPIC [#4667](https://github.com/jsboige/CoursIA/issues/4667)).** > Ce notebook exploite la librairie Java [TweetyProject](https://tweetyproject.org/) **sans JVM** : les modules > sont compilés vers du bytecode Java puis exécutés sur le runtime .NET via [IKVM](https://github.com/ikvm-refined/ikvm). > Aucun `java` n'est requis à l'exécution — tout se passe dans le kernel `.net-csharp`. -Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-02-Basic-Logics-CSharp.ipynb) (logique propositionnelle) · -[Tweety-2b-Semantics-Csharp](Tweety-02b-Semantics-CSharp.ipynb) (mondes possibles, conséquence sémantique) · +Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-2-Basic-Logics-Csharp.ipynb) (logique propositionnelle) · +[Tweety-2b-Semantics-Csharp](Tweety-2b-Semantics-Csharp.ipynb) (mondes possibles, conséquence sémantique) · **Tweety-2c-FOL (ce notebook)**. --- ## Objectifs pédagogiques -La [logique propositionnelle](Tweety-02-Basic-Logics-CSharp.ipynb) raisonne sur des **propositions entières** +La [logique propositionnelle](Tweety-2-Basic-Logics-Csharp.ipynb) raisonne sur des **propositions entières** (`Man_Socrates`, `Mortal_Socrates`) reliées par connecteurs. Elle ne peut ni exprimer la **généralité** (« tous les hommes sont mortels ») ni le **lien interne** d'un énoncé (« Socrate est un homme »). @@ -5280,7 +5280,7 @@ puis **raisonner** dessus avec le raisonneur d'énumération de Tweety (`SimpleF le célèbre **syllogisme** de la mortalité de Socrate, jusqu'à la **généralisation existentielle**. ",,,,,,,,6d34c96156d32afe,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,m412865,markdown,fr,70565c93168bcb3f,"## 1 — Runtime IKVM : exécuter Tweety sur .NET +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,m412865,markdown,fr,70565c93168bcb3f,"## 1 — Runtime IKVM : exécuter Tweety sur .NET On installe le runtime IKVM (machine virtuelle Java réimplémentée en .NET) à partir des paquets NuGet, puis on pointe `IKVM.Home` vers une image fusionnée (base `any` + runtime spécifique `win-x64`). @@ -5288,12 +5288,12 @@ La librairie `org.tweetyproject.tweety-pl.dll` (compilée côté build) se charg **transitivement** le module `fol` (logique du premier ordre), aucun module supplémentaire à compiler ici. ",,,,,,,,70565c93168bcb3f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,c344536,code,fr,04a60793720d6329,"#r ""nuget: IKVM, 8.15.0"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,c344536,code,fr,04a60793720d6329,"#r ""nuget: IKVM, 8.15.0"" #r ""nuget: IKVM.Image, 8.15.0"" #r ""nuget: IKVM.Image.runtime.win-x64, 8.15.0"" ",,,,,,,,04a60793720d6329,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,c154534,code,fr,b4cada2c1c2b428b,"using System.IO; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,c154534,code,fr,b4cada2c1c2b428b,"using System.IO; string ikvmVer = ""8.15.0"", ikvmRid = ""win-x64""; string nugetRoot = Environment.GetEnvironmentVariable(""NUGET_PACKAGES"") ?? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "".nuget"", ""packages""); @@ -5321,16 +5321,16 @@ AppContext.SetData(""IKVM.Home"", ikvmHome); Console.WriteLine(""IKVM home="" + (File.Exists(Path.Combine(ikvmHome, ""lib"", ""tzdb.dat"")) ? ""OK"" : ""MISSING"")); ",,,,,,,,b4cada2c1c2b428b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,c505006,code,fr,b8acd74bc68683b4,"#r ""org.tweetyproject.tweety-pl.dll"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,c505006,code,fr,b8acd74bc68683b4,"#r ""org.tweetyproject.tweety-pl.dll"" ",,,,,,,,b8acd74bc68683b4,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,95309f07,code,fr,b44783029e4035af,"// Constat 3 (#5039) : la directive #r est silencieuse par defaut en .NET Interactive. +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,95309f07,code,fr,b44783029e4035af,"// Constat 3 (#5039) : la directive #r est silencieuse par defaut en .NET Interactive. // On verifie que la DLL IKVM/Tweety referencee est bien presente et lisible (metadata). using System.Reflection; var tweetyDll = ""org.tweetyproject.tweety-pl.dll""; var an = AssemblyName.GetAssemblyName(tweetyDll); Console.WriteLine($""Tweety (IKVM) reference chargee : {an.Name} v{an.Version} ({new FileInfo(tweetyDll).Length / 1024 / 1024:F1} Mo)."");",,,,,,,,b44783029e4035af,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,m971748,markdown,fr,86a0bebcdcf4d235,"## 2 — Signature, termes et atomes +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,m971748,markdown,fr,86a0bebcdcf4d235,"## 2 — Signature, termes et atomes Une **signature** FOL fixe le vocabulaire : quels **prédicats** (avec leur arité) et quelles **constantes** représentent les objets nommés. Les **variables** (`X`, `Y`) dénotent des objets arbitraires ; les **constantes** @@ -5343,7 +5343,7 @@ L'API C# expose les classes Java en PascalCase mais conserve **les méthodes Jav (`.add`, `.size`) — c'est la convention de port IKVM. ",,,,,,,,86a0bebcdcf4d235,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,c297868,code,fr,87e8c56eea6c3b14,"using org.tweetyproject.logics.commons.syntax; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,c297868,code,fr,87e8c56eea6c3b14,"using org.tweetyproject.logics.commons.syntax; using org.tweetyproject.logics.commons.syntax.interfaces; using org.tweetyproject.logics.fol.syntax; using org.tweetyproject.logics.fol.reasoner; @@ -5363,7 +5363,7 @@ var hommeSocrate = new FolAtom(Homme, socrate); Console.WriteLine(""Homme(Socrate) = "" + hommeSocrate); ",,,,,,,,87e8c56eea6c3b14,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,m618654,markdown,fr,4fcbbedb6e912604,"### 2.2 Atomes, prédicats et types de termes +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,m618654,markdown,fr,4fcbbedb6e912604,"### 2.2 Atomes, prédicats et types de termes `FolAtom` accepte une liste variable de termes (`Predicate`, `params Term[]`) — l'arité du prédicat doit correspondre au nombre de termes fournis. `Term` est une **interface** (`...syntax.interfaces.Term`) @@ -5372,7 +5372,7 @@ implémentée à la fois par `Variable` et `Constant` : un atome est donc polymo **Pourquoi distinguer `Variable` et `Constant` via une interface commune ?** C'est ce polymorphisme qui rend l'**unification** possible — le mécanisme au cœur du raisonnement FOL. Face à la règle `Homme(X) ⇒ Mortel(X)` et au fait `Homme(Socrate)`, le raisonneur *unifie* la variable `X` avec la constante `Socrate` : il substitue `X` partout où elle apparaît dans la règle, puis déduit `Mortel(Socrate)`. Une `Variable` est un *trou à remplir* (liée par un quantificateur, instanciée à l'unification) ; une `Constant` est un *individu figé* (`Socrate`, `Platon`). Exposer les deux derrière la même interface `Term` permet au moteur de manipuler atomes et substitutions sans distinguer les cas : c'est exactement ce que ferait un Prolog ou le raisonner de Tweety en interne. ",,,,,,,,4fcbbedb6e912604,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,c697660,code,fr,90591b59490882b3,"// Prédicat binaire : Parent(·,·) — arité 2 +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,c697660,code,fr,90591b59490882b3,"// Prédicat binaire : Parent(·,·) — arité 2 var Parent = new Predicate(""Parent"", 2); var anne = new Constant(""Anne""); var bob = new Constant(""Bob""); @@ -5385,7 +5385,7 @@ var parentAnneY = new FolAtom(Parent, anne, Y); Console.WriteLine(""Parent(Anne,Y) = "" + parentAnneY); ",,,,,,,,90591b59490882b3,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,m585777,markdown,fr,4d4be51b205aaf0d,"## 3 — Connecteurs et quantificateurs +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,m585777,markdown,fr,4d4be51b205aaf0d,"## 3 — Connecteurs et quantificateurs Les connecteurs propositionnels (`Implication`, `Conjunction`, `Disjunction`, `Negation`) s'appliquent aux formules FOL exactement comme en logique propositionnelle. La nouveauté est le **quantificateur**, @@ -5399,7 +5399,7 @@ qui lie une variable à l'intérieur d'une formule : `∀X (Homme(X) ⇒ Mortel(X))` se construit en emboîtant un `Implication` dans un `ForallQuantifiedFormula`. ",,,,,,,,4d4be51b205aaf0d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,c159435,code,fr,8a8dee45c3a0ffbe,"var Mortel = new Predicate(""Mortel"", 1); +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,c159435,code,fr,8a8dee45c3a0ffbe,"var Mortel = new Predicate(""Mortel"", 1); // Homme(X) ⇒ Mortel(X) var hommeX = new FolAtom(Homme, X); @@ -5412,14 +5412,14 @@ var tousMortels = new ForallQuantifiedFormula(impl, X); Console.WriteLine(""∀X (Homme(X)=>Mortel(X)) = "" + tousMortels); ",,,,,,,,8a8dee45c3a0ffbe,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,m908739,markdown,fr,01950e5805b052eb,"### 3.2 Existential : « il existe un mortel » +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,m908739,markdown,fr,01950e5805b052eb,"### 3.2 Existential : « il existe un mortel » `∃X Mortel(X)` ne quantifie qu'un atome. On réutilise le même atome `mortelX` (qui porte la variable `X`). **Pourquoi le quantificateur existentiel compte-t-il ?** `∃X Mortel(X)` affirme qu'**au moins un** mortel existe, *sans nommer qui*. C'est précisément ce gain d'expressiveness qui distingue la logique du premier ordre de la logique propositionnelle : en propositionnel, il faudrait énumérer `Mortel(Socrate) ∨ Mortel(Platon) ∨ …` — une disjunction finie qui ne capture jamais l'existence en général. L'existential, lui, porte sur le domaine tout entier. Deux conséquences concrètes pour le raisonnement : (1) **généralisation existentielle** — de `Mortel(Socrate)` on déduit `∃X Mortel(X)` sans connaître les autres mortels ; (2) **dualité avec le universel** (De Morgan) : `¬∀X P(X)` équivaut à `∃X ¬P(X)`, et `¬∃X P(X)` à `∀X ¬P(X)`. Le raisonneur exploite ces équivalences pour réécrire les négations et déduire des existentiels à partir d'universels. ",,,,,,,,01950e5805b052eb,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,c375540,code,fr,5d2c6b93c7de8498,"var existeMortel = new ExistsQuantifiedFormula(mortelX, X); +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,c375540,code,fr,5d2c6b93c7de8498,"var existeMortel = new ExistsQuantifiedFormula(mortelX, X); Console.WriteLine(""∃X Mortel(X) = "" + existeMortel); // Négation d'une formule quantifiée : ¬∃X Mortel(X) (""personne n'est mortel"") @@ -5427,7 +5427,7 @@ var personneMortel = new Negation(existeMortel); Console.WriteLine(""¬∃X Mortel(X) = "" + personneMortel); ",,,,,,,,5d2c6b93c7de8498,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,m633793,markdown,fr,2ab155615d5dc81f,"## 4 — Raisonnement : le syllogisme +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,m633793,markdown,fr,2ab155615d5dc81f,"## 4 — Raisonnement : le syllogisme On rassemble les axiomes dans un **ensemble de croyances** (`FolBeliefSet`, équivalent FOL du `PlBeliefSet` propositionnel) puis on interroge le raisonneur. @@ -5440,7 +5440,7 @@ interprétations possibles. C'est complet mais exponentiel — adapté à de pet > on infère `Mortel(Socrate)`. En termes de conséquence logique : **KB ⊨ Mortal(Socrates)**. ",,,,,,,,2ab155615d5dc81f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,c880179,code,fr,2b35febc1649a371,"// Base de croyances : l'axiome universel + le fait Homme(Socrate) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,c880179,code,fr,2b35febc1649a371,"// Base de croyances : l'axiome universel + le fait Homme(Socrate) var kb = new FolBeliefSet(); kb.add(tousMortels); kb.add(new FolAtom(Homme, socrate)); @@ -5453,14 +5453,14 @@ var mortelSocrate = new FolAtom(Mortel, socrate); Console.WriteLine(""\nKB ⊨ Mortel(Socrate) ? "" + r.query(kb, mortelSocrate)); ",,,,,,,,2b35febc1649a371,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,m846460,markdown,fr,4d6d834a76de646c,"### 4.1 Contrôle négatif : ce qui n'est **pas** impliqué +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,m846460,markdown,fr,4d6d834a76de646c,"### 4.1 Contrôle négatif : ce qui n'est **pas** impliqué `Platon` n'apparaît dans aucune prémisse : `Homme(Platon)` n'est ni affirmé ni inférable. Le raisonneur répond donc `false` à `KB ⊨ Mortel(Platon)` — la base est **sous-déterminée** pour Platon. Ce `false` signifie « pas conséquence logique », **pas** « conséquence logique du contraire ». ",,,,,,,,4d6d834a76de646c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,c743358,code,fr,18f43d3f3d65cb69,"var platon = new Constant(""Platon""); +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,c743358,code,fr,18f43d3f3d65cb69,"var platon = new Constant(""Platon""); var mortelPlaton = new FolAtom(Mortel, platon); Console.WriteLine(""KB ⊨ Mortel(Platon) ? "" + r.query(kb, mortelPlaton)); @@ -5468,28 +5468,28 @@ Console.WriteLine(""KB ⊨ Mortel(Platon) ? "" + r.query(kb, mortelPlaton)); Console.WriteLine(""KB ⊨ Homme(Platon) ? "" + r.query(kb, new FolAtom(Homme, platon))); ",,,,,,,,18f43d3f3d65cb69,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,m991269,markdown,fr,40594cc270dbaff9,"### 4.2 Généralisation existentielle +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,m991269,markdown,fr,40594cc270dbaff9,"### 4.2 Généralisation existentielle Si `Mortel(Socrate)` est conséquence, alors `∃X Mortel(X)` l'est aussi : il **existe** au moins un mortel (Socrate). C'est la règle d'**introduction du quantificateur existentiel**. Le raisonneur le confirme directement sur la formule quantifiée. ",,,,,,,,40594cc270dbaff9,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,c46812,code,fr,35d2a4ca17149bb6,"Console.WriteLine(""KB ⊨ ∃X Mortel(X) ? "" + r.query(kb, existeMortel)); +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,c46812,code,fr,35d2a4ca17149bb6,"Console.WriteLine(""KB ⊨ ∃X Mortel(X) ? "" + r.query(kb, existeMortel)); // Symétriquement, ∀X Mortel(X) n'est PAS impliqué : seuls les hommes connus le sont var tousMortels2 = new ForallQuantifiedFormula(mortelX, X); Console.WriteLine(""KB ⊨ ∀X Mortel(X) ? "" + r.query(kb, tousMortels2)); ",,,,,,,,35d2a4ca17149bb6,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,m359571,markdown,fr,0e35e66ed8c7138b,"### 4.3 Une KB plus riche : raisonnement sur plusieurs faits +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,m359571,markdown,fr,0e35e66ed8c7138b,"### 4.3 Une KB plus riche : raisonnement sur plusieurs faits Ajoutons un second fait `Homme(Platon)` et un prédicat `Grec`. On vérifie que le syllogisme se propage à tous les hommes connus, et qu'un énoncé mixte `∃X (Grec(X) ∧ Mortel(X))` devient conséquence dès qu'au moins un Grec mortel est dans la base. ",,,,,,,,0e35e66ed8c7138b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,c615894,code,fr,cbc365ac7b1e19b3,"var Grec = new Predicate(""Grec"", 1); +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,c615894,code,fr,cbc365ac7b1e19b3,"var Grec = new Predicate(""Grec"", 1); var kb2 = new FolBeliefSet(); kb2.add(tousMortels); // ∀X (Homme(X) => Mortel(X)) kb2.add(new FolAtom(Homme, socrate)); // Homme(Socrate) @@ -5506,7 +5506,7 @@ var existeGrecMortel = new ExistsQuantifiedFormula( Console.WriteLine(""KB2 ⊨ ∃X (Grec(X) ∧ Mortel(X)) ? "" + r.query(kb2, existeGrecMortel)); ",,,,,,,,cbc365ac7b1e19b3,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,m967528,markdown,fr,a9fb92925fbff0c2,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,m967528,markdown,fr,a9fb92925fbff0c2,"--- ## Exercices @@ -5515,14 +5515,14 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,m967528,markdown > s'exécute donc de bout en bout même non complété. ",,,,,,,,a9fb92925fbff0c2,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,m283487,markdown,fr,5652eb4643420ad2,"### Exercice 1 — Le chat mammifère +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,m283487,markdown,fr,5652eb4643420ad2,"### Exercice 1 — Le chat mammifère Construisez programmatiquement l'axiome `∀X (Chat(X) ⇒ Mammifère(X))`, ajoutez le fait `Chat(Felix)`, puis vérifiez que `KB ⊨ Mammifère(Felix)` vaut `true`. Créez les prédicats `Chat` et `Mammifère` (arité 1) et la constante `Felix`. ",,,,,,,,5652eb4643420ad2,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,c525316,code,fr,22f3935df339aaf5,"// TODO etudiant : construire la base et le raisonneur +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,c525316,code,fr,22f3935df339aaf5,"// TODO etudiant : construire la base et le raisonneur // Indice : suivez la structure de la section 4 (Predicate, Constant, FolAtom, Implication, // ForallQuantifiedFormula, FolBeliefSet.add, SimpleFolReasoner.query). // Etape 1 : déclarer les prédicats Chat / Mammifere et la constante Felix. @@ -5532,7 +5532,7 @@ bool? reponse = null; // TODO etudiant : affecter le resultat de la requete Console.WriteLine(""KB ⊨ Mammifere(Felix) ? "" + (reponse?.ToString() ?? ""Exercice a completer"")); ",,,,,,,,22f3935df339aaf5,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,m561725,markdown,fr,fe8a91194c4dc68c,"### Exercice 2 — Transitivité : grand-parent +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,m561725,markdown,fr,fe8a91194c4dc68c,"### Exercice 2 — Transitivité : grand-parent Avec un prédicat binaire `Parent(·,·)`, on veut définir « grand-parent » sans nouveau prédicat : `∀X ∀Y ∀Z (Parent(X,Y) ∧ Parent(Y,Z) ⇒ GrandParent(X,Z))`. Construisez cette formule à partir de @@ -5542,14 +5542,14 @@ deux quantificateurs universels emboîtés et affichez-la. emboîter **trois** constructeurs (le plus externe lie `Z`, l'intermédiaire lie `Y`, l'interne lie `X`). ",,,,,,,,fe8a91194c4dc68c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,c712763,code,fr,b138086842175404,"// TODO etudiant : construire la formule GrandParent +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,c712763,code,fr,b138086842175404,"// TODO etudiant : construire la formule GrandParent // Indice : declarez Z = new Variable(""Z""); construisez l'implication, // puis ForallQuantifiedFormula(... X) dans ForallQuantifiedFormula(... Y) dans ForallQuantifiedFormula(... Z). object formuleGrandParent = null; // TODO etudiant Console.WriteLine(""GrandParent = "" + (formuleGrandParent?.ToString() ?? ""Exercice a completer"")); ",,,,,,,,b138086842175404,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,m104860,markdown,fr,b816c3572856fd40,"### Exercice 3 — Détection d'inconsistance +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,m104860,markdown,fr,b816c3572856fd40,"### Exercice 3 — Détection d'inconsistance Une base est **inconsistante** si elle implique une contradiction (ex. à la fois `P(a)` et `¬P(a)`). Avec `SimpleFolReasoner`, une KB inconsistante implique **toute** formule (*ex falso quodlibet*). @@ -5558,14 +5558,14 @@ Ajoutez à une KB les faits `Mortel(Socrate)` et `¬Mortel(Socrate)`, puis véri `KB ⊨ Homme(Socrate)` vaut `true` (principe d'explosion) — bien qu'aucun axiome ne parle d'`Homme`. ",,,,,,,,b816c3572856fd40,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,c545430,code,fr,207e5164a804b559,"// TODO etudiant : mettre en evidence le principe d'explosion +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,c545430,code,fr,207e5164a804b559,"// TODO etudiant : mettre en evidence le principe d'explosion // Indice : kb.add(FolAtom Mortel(Socrate)) ; kb.add(new Negation(FolAtom Mortel(Socrate))). // Puis interrogez KB |= Homme(Socrate) sur un prédicat Homme non lie par vos axiomes. bool? explosion = null; // TODO etudiant Console.WriteLine(""KB inconsistante ⊨ Homme(Socrate) ? "" + (explosion?.ToString() ?? ""Exercice a completer"")); ",,,,,,,,207e5164a804b559,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02c-FOL-CSharp.ipynb,m641676,markdown,fr,49f776cc0a50143d,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2c-FOL-Csharp.ipynb,m641676,markdown,fr,49f776cc0a50143d,"--- ## Conclusion @@ -5592,12 +5592,12 @@ On a porté en C#/.NET natif (sans JVM) le raisonnement **du premier ordre** via - TweetyProject — [FOL module](https://tweetyproject.org/api/fol/) et [tutoriels](https://tweetyproject.org/). - Port C#/.NET via IKVM — EPIC [#4667](https://github.com/jsboige/CoursIA/issues/4667). -- Notebook compagnon propositionnel : [Tweety-2-Basic-Logics-Csharp](Tweety-02-Basic-Logics-CSharp.ipynb). +- Notebook compagnon propositionnel : [Tweety-2-Basic-Logics-Csharp](Tweety-2-Basic-Logics-Csharp.ipynb). ",,,,,,,,49f776cc0a50143d,,,,,,,, MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Advanced-Logics.ipynb,e69e7c37,markdown,fr,8c6663779a734be9,"# Logiques Avancees - DL, Modale, QBF, Conditional -**Navigation**: [← Tweety-2-Basic-Logics](Tweety-02-Basic-Logics-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-4-Belief-Revision →](Tweety-4-Belief-Revision.ipynb) +**Navigation**: [← Tweety-2-Basic-Logics](Tweety-2-Basic-Logics.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-4-Belief-Revision →](Tweety-4-Belief-Revision.ipynb) --- @@ -5610,7 +5610,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Advanced-Logics.ipynb,e69e7c37,mark ## Prerequis -Executez d'abord [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb) pour configurer l'environnement JVM. +Executez d'abord [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb) pour configurer l'environnement JVM. ### Duree estimee : 40 minutes @@ -5698,7 +5698,7 @@ if not os.environ.get(""JAVA_HOME""): os.environ[""JAVA_HOME""] = str(java_home) print(f""JAVA_HOME detecte automatiquement : {java_home}"") else: - print(""ATTENTION : java introuvable. Installez un JDK ou executez Tweety-01-Setup-Python.ipynb."") + print(""ATTENTION : java introuvable. Installez un JDK ou executez Tweety-1-Setup.ipynb."") ",,,,,,,,69446d20f8822b8f,,,,,,,, MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Advanced-Logics.ipynb,12deb5a4,markdown,fr,ddb6428a2f5de974,"### Initialisation de la JVM et chargement des modules @@ -6665,7 +6665,7 @@ Le notebook suivant explore la **revision de croyances** et la gestion de l'inco --- -**Navigation**: [Tweety-2-Basic-Logics](Tweety-02-Basic-Logics-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-4-Belief-Revision](Tweety-4-Belief-Revision.ipynb)",,,,,,,,85534c113565efdc,,,,,,,, +**Navigation**: [Tweety-2-Basic-Logics](Tweety-2-Basic-Logics.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-4-Belief-Revision](Tweety-4-Belief-Revision.ipynb)",,,,,,,,85534c113565efdc,,,,,,,, MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Advanced-Logics.ipynb,760e58ab,markdown,fr,794d28c385ba6025,"## Exercice : Ontologie DL avec contraintes supplementaires Etendez l'ontologie universitaire de l'exemple guide : @@ -6693,9 +6693,9 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Advanced-Logics-Csharp.ipynb,be0c0d > la librairie Java est compilee vers un fat-jar Maven shade puis executee sur le runtime .NET via > [IKVM](https://github.com/ikvm-refined/ikvm). -Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-02-Basic-Logics-CSharp.ipynb) (propositionnel) · -[Tweety-2b-Semantics-Csharp](Tweety-02b-Semantics-CSharp.ipynb) (mondes possibles) · -[Tweety-2c-FOL-Csharp](Tweety-02c-FOL-CSharp.ipynb) (premier ordre) · +Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-2-Basic-Logics-Csharp.ipynb) (propositionnel) · +[Tweety-2b-Semantics-Csharp](Tweety-2b-Semantics-Csharp.ipynb) (mondes possibles) · +[Tweety-2c-FOL-Csharp](Tweety-2c-FOL-Csharp.ipynb) (premier ordre) · [Tweety-3-Dung-Csharp](Tweety-3-Dung-Csharp.ipynb) (argumentation abstraite) · **Tweety-3-Advanced-Logics (ce notebook — DL)**. @@ -6968,8 +6968,8 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Conditional-Logics-Csharp.ipynb,c9b > la librairie Java est compilee vers un fat-jar Maven shade puis executee sur le runtime .NET via > [IKVM](https://github.com/ikvm-refined/ikvm). -Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-02-Basic-Logics-CSharp.ipynb) (propositionnel) - - [Tweety-2c-FOL-Csharp](Tweety-02c-FOL-CSharp.ipynb) (premier ordre) - +Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-2-Basic-Logics-Csharp.ipynb) (propositionnel) - + [Tweety-2c-FOL-Csharp](Tweety-2c-FOL-Csharp.ipynb) (premier ordre) - [Tweety-3-Dung-Csharp](Tweety-3-Dung-Csharp.ipynb) (argumentation abstraite) - [Tweety-3-Advanced-Logics-Csharp](Tweety-3-Advanced-Logics-Csharp.ipynb) (Description Logics) - **Tweety-3-Conditional-Logics (ce notebook - CL)**. @@ -7208,9 +7208,9 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Dung-Csharp.ipynb,m601032,markdown, > la librairie Java est compilée vers un fat-jar Maven shade puis exécutée sur le runtime .NET via > [IKVM](https://github.com/ikvm-refined/ikvm). -Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-02-Basic-Logics-CSharp.ipynb) (propositionnel) · -[Tweety-2b-Semantics-Csharp](Tweety-02b-Semantics-CSharp.ipynb) (mondes possibles) · -[Tweety-2c-FOL-Csharp](Tweety-02c-FOL-CSharp.ipynb) (premier ordre) · +Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-2-Basic-Logics-Csharp.ipynb) (propositionnel) · +[Tweety-2b-Semantics-Csharp](Tweety-2b-Semantics-Csharp.ipynb) (mondes possibles) · +[Tweety-2c-FOL-Csharp](Tweety-2c-FOL-Csharp.ipynb) (premier ordre) · **Tweety-3-Dung (ce notebook)**. --- @@ -7852,7 +7852,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-QBF-Csharp.ipynb,2bdcd76a,markdown, > la librairie Java est compilee vers un fat-jar Maven shade puis executee sur le runtime .NET via > [IKVM](https://github.com/ikvm-refined/ikvm). -Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-02-Basic-Logics-CSharp.ipynb) (propositionnel) - +Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-2-Basic-Logics-Csharp.ipynb) (propositionnel) - [Tweety-3-Advanced-Logics-Csharp](Tweety-3-Advanced-Logics-Csharp.ipynb) (Description Logics) - [Tweety-3-Conditional-Logics-Csharp](Tweety-3-Conditional-Logics-Csharp.ipynb) (CL, defeasible) - **Tweety-3-QBF (ce notebook - Quantified Boolean Formulas)**. @@ -8108,9 +8108,9 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-4-Aspic-Csharp.ipynb,m572265,markdown > la librairie Java est compilée vers un fat-jar Maven shade puis exécutée sur le runtime .NET via > [IKVM](https://github.com/ikvm-refined/ikvm). -Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-02-Basic-Logics-CSharp.ipynb) (propositionnel) · -[Tweety-2b-Semantics-Csharp](Tweety-02b-Semantics-CSharp.ipynb) (mondes possibles) · -[Tweety-2c-FOL-Csharp](Tweety-02c-FOL-CSharp.ipynb) (premier ordre) · +Navigation : [Tweety-2-Basic-Logics-Csharp](Tweety-2-Basic-Logics-Csharp.ipynb) (propositionnel) · +[Tweety-2b-Semantics-Csharp](Tweety-2b-Semantics-Csharp.ipynb) (mondes possibles) · +[Tweety-2c-FOL-Csharp](Tweety-2c-FOL-Csharp.ipynb) (premier ordre) · [Tweety-3-Dung-Csharp](Tweety-3-Dung-Csharp.ipynb) (argumentation **abstraite**) · **Tweety-4-Aspic (ce notebook)** (argumentation **structurée**). @@ -8462,7 +8462,7 @@ et IKVM, en montrant le pont vers l'argumentation **abstraite** de Dung : ",,,,,,,,7b3fec4dee3a8cfc,,,,,,,, MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-4-Belief-Revision.ipynb,532d3c39,markdown,fr,d54aa64e75a7c6a6,"# Révision de Croyances et Incohérence -**Navigation**: [← Tweety-3-Advanced-Logics](Tweety-3-Advanced-Logics.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-5-Abstract-Argumentation →](Tweety-5-Abstract-Argumentation.ipynb) +**Navigation**: [← Tweety-3-Advanced-Logics](Tweety-3-Advanced-Logics.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-5-Abstract-Argumentation →](Tweety-5-Abstract-Argumentation.ipynb) --- @@ -8475,7 +8475,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-4-Belief-Revision.ipynb,532d3c39,mark ## Prérequis -Exécutez d'abord [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb) pour configurer l'environnement JVM. +Exécutez d'abord [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb) pour configurer l'environnement JVM. ## Durée estimée : 30-40 minutes",,,,,,,,d54aa64e75a7c6a6,,,,,,,, MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-4-Belief-Revision.ipynb,eff88e6b,code,fr,6d9a502e53ba5bb7,"# --- Initialisation JVM Tweety + Outils Externes --- @@ -9717,7 +9717,7 @@ Le notebook suivant explore l'**argumentation abstraite** (frameworks de Dung). --- -**Navigation**: [Tweety-3-Advanced-Logics](Tweety-3-Advanced-Logics.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-5-Abstract-Argumentation](Tweety-5-Abstract-Argumentation.ipynb)",,,,,,,,523b506c97f1d892,,,,,,,, +**Navigation**: [Tweety-3-Advanced-Logics](Tweety-3-Advanced-Logics.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-5-Abstract-Argumentation](Tweety-5-Abstract-Argumentation.ipynb)",,,,,,,,523b506c97f1d892,,,,,,,, MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-4-Belief-Revision.ipynb,403d934c,markdown,fr,04ecc3bf9601cc0b,"## Exercice : Diagnostic d'incoherence dans un système de diagnostic medical Un système expert medical contient les règles suivantes : @@ -10090,7 +10090,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-4-Belief-Revision-Csharp.ipynb,ex3,co Console.WriteLine(""Exercice 3 a completer"");",,,,,,,,648a3a803f08373d,,,,,,,, MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5-Abstract-Argumentation.ipynb,84b1e9fb,markdown,fr,9ad67e13cad3be16,"# Argumentation Abstraite (Dung) -**Navigation**: [<- Tweety-4-Belief-Revision](Tweety-4-Belief-Revision.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-6-Structured-Argumentation ->](Tweety-06-Structured-Argumentation-Python.ipynb) +**Navigation**: [<- Tweety-4-Belief-Revision](Tweety-4-Belief-Revision.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-6-Structured-Argumentation ->](Tweety-6-Structured-Argumentation.ipynb) --- @@ -10103,7 +10103,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5-Abstract-Argumentation.ipynb,84b1e9 ## Prerequis -Executez d'abord [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb) pour configurer l'environnement JVM. +Executez d'abord [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb) pour configurer l'environnement JVM. ### Duree estimee : 55 minutes @@ -11206,7 +11206,7 @@ Le notebook suivant explore l'**argumentation structuree** avec ASPIC+, DeLP, AB --- -**Navigation**: [<- Tweety-4-Belief-Revision](Tweety-4-Belief-Revision.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-6-Structured-Argumentation ->](Tweety-06-Structured-Argumentation-Python.ipynb)",,,,,,,,baab21e5f4cac49e,,,,,,,, +**Navigation**: [<- Tweety-4-Belief-Revision](Tweety-4-Belief-Revision.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-6-Structured-Argumentation ->](Tweety-6-Structured-Argumentation.ipynb)",,,,,,,,baab21e5f4cac49e,,,,,,,, MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5-Abstract-Argumentation.ipynb,nd21d2gksor,markdown,fr,f968d908beef5994,"--- ## Exemples guides et Exercices @@ -11488,7 +11488,7 @@ Ces approches combinent la puissance des sémantiques de Dung avec la richesse d --- -**Navigation** : [<- Tweety-4-Belief-Revision](Tweety-4-Belief-Revision.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-6-Structured-Argumentation ->](Tweety-06-Structured-Argumentation-Python.ipynb)",,,,,,,,9514b95f917731bb,,,,,,,, +**Navigation** : [<- Tweety-4-Belief-Revision](Tweety-4-Belief-Revision.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-6-Structured-Argumentation ->](Tweety-6-Structured-Argumentation.ipynb)",,,,,,,,9514b95f917731bb,,,,,,,, MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5-Abstract-Argumentation-Csharp.ipynb,tw5c01,markdown,fr,69ee14debc7498b8,"# Tweety-5 : Argumentation Abstraite de Dung (C# / .NET) — Tranche 1 : Moteur from-scratch **Navigation** : [<< Tweety-4 BeliefRevision-Csharp](Tweety-4-Belief-Revision-Csharp.ipynb) | [Tweety-5 Python](Tweety-5-Abstract-Argumentation.ipynb) | [Index](../README.md) @@ -12116,9 +12116,9 @@ via Knaster–Tarski (`OrderHom.map_lfp`). **Jalon ouvert** : l'existence des extensions preferred (via la Fundamental Lemma + Zorn) n'est qu'esquissée dans le lake ; la lib reste sorry-free.",,,,,,,,15f8f342bf1d3d5b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,37f22048,markdown,fr,48cc59735a1b7146,"# Argumentation Structuree +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,37f22048,markdown,fr,48cc59735a1b7146,"# Argumentation Structuree -**Navigation**: [<- Tweety-5-Abstract-Argumentation](Tweety-5-Abstract-Argumentation.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-7a-Extended-Frameworks ->](Tweety-07a-Extended-Frameworks-Python.ipynb) +**Navigation**: [<- Tweety-5-Abstract-Argumentation](Tweety-5-Abstract-Argumentation.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-7a-Extended-Frameworks ->](Tweety-7a-Extended-Frameworks.ipynb) --- @@ -12162,15 +12162,15 @@ Après avoir étudié l'**argumentation abstraite** (Dung) dans le notebook pré ## Prerequis -Executez d'abord [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb) pour configurer l'environnement JVM. +Executez d'abord [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb) pour configurer l'environnement JVM. ## Duree estimee : 35-45 minutes > **Note**: ASP necessite Clingo installe. Le notebook configure automatiquement le chemin si Clingo est disponible. -> **Note de parité cross-langage** : ce notebook est le **jumeau Python** de [`Tweety-06-Structured-Argumentation-CSharp.ipynb`](Tweety-06-Structured-Argumentation-CSharp.ipynb) (twin C# from-scratch BCL .NET, 0 JVM). Pour les concepts partagés (ASPIC+, DeLP, ABA, Argumentation Déductive, ASP), voir la cellule d'introduction ; le twin C# reconstruit les **concepts** (pas l'API JVM) pour rester exécutable end-to-end sur toute machine .NET 9+. Marathon parité .NET ⇄ Python : EPIC #4956. +> **Note de parité cross-langage** : ce notebook est le **jumeau Python** de [`Tweety-6-Structured-Argumentation-Csharp.ipynb`](Tweety-6-Structured-Argumentation-Csharp.ipynb) (twin C# from-scratch BCL .NET, 0 JVM). Pour les concepts partagés (ASPIC+, DeLP, ABA, Argumentation Déductive, ASP), voir la cellule d'introduction ; le twin C# reconstruit les **concepts** (pas l'API JVM) pour rester exécutable end-to-end sur toute machine .NET 9+. Marathon parité .NET ⇄ Python : EPIC #4956. ",,,,,,,,48cc59735a1b7146,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,d10c7bef,code,fr,0cbc807da2f7612f,"# --- Initialisation JVM Tweety + Outils Externes --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,d10c7bef,code,fr,0cbc807da2f7612f,"# --- Initialisation JVM Tweety + Outils Externes --- print(""--- Verification JVM Tweety + Outils ---"") jvm_ready = False @@ -12285,7 +12285,7 @@ if jvm_ready: short_path = path.split(os.sep)[-1] if len(path) > 30 else path print(f"" {tool}: {short_path}"") print(f""\nJVM prete. Outils: {sum(1 for t,p in EXTERNAL_TOOLS.items() if p)}/{len(EXTERNAL_TOOLS)}"")",,,,,,,,0cbc807da2f7612f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,675ee0f8,markdown,fr,ad24a6a8667a58c7,"### 4.2 ASPIC+ +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,675ee0f8,markdown,fr,ad24a6a8667a58c7,"### 4.2 ASPIC+ ASPIC+ est un framework mature et largement utilisé pour l'argumentation **structurée**. @@ -12303,7 +12303,7 @@ ASPIC+ est un framework mature et largement utilisé pour l'argumentation **stru * **Conversion vers Dung (`asDungTheory`)**: Permet d'analyser la théorie ASPIC+ en la transformant en un AAF standard, sur lequel on peut appliquer les sémantiques de Dung (Grounded, Preferred, etc.). L'exemple suivant utilise la logique propositionnelle comme langage sous-jacent, basé sur `AspicExample.java`.",,,,,,,,ad24a6a8667a58c7,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,6340ab53,code,fr,860e85eba14514b8,"# --- 4.2.1 ASPIC+ : Construction et Conversion en Dung (PL) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,6340ab53,code,fr,860e85eba14514b8,"# --- 4.2.1 ASPIC+ : Construction et Conversion en Dung (PL) --- print(""\n--- 4.2.1 ASPIC+ : Construction et Conversion en Dung (PL) ---"") if not jvm_ready: @@ -12395,7 +12395,7 @@ else: print(f""Erreur Python inattendue dans l'exemple ASPIC+: {e_gen}"") import traceback traceback.print_exc()",,,,,,,,860e85eba14514b8,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,ky20dkhpima,markdown,fr,dad0aaefa16e0fa6,"#### Interpretation des résultats ASPIC+ +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,ky20dkhpima,markdown,fr,dad0aaefa16e0fa6,"#### Interpretation des résultats ASPIC+ L'exemple construit une théorie ASPIC+ avec conflit entre conclusions opposees. @@ -12428,7 +12428,7 @@ Les axiomes `b` et `c` sont acceptes, ainsi que l'argument pour `a`. Les argumen **Point cle ASPIC+ :** La conversion vers Dung permet d'appliquer toutes les sémantiques classiques (Grounded, Preferred, Stable) sur des arguments structures.",,,,,,,,dad0aaefa16e0fa6,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,73d6def2,markdown,fr,8160b90a83807312,"### Exercice : Debat contradictoire avec ASPIC+ +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,73d6def2,markdown,fr,8160b90a83807312,"### Exercice : Debat contradictoire avec ASPIC+ La section 4.2 a montre comment ASPIC+ convertit une théorie structuree en cadre de Dung. Construisez votre propre théorie ASPIC+ pour modeliser un debat contradictoire sur l'approbation d'un projet. @@ -12453,7 +12453,7 @@ Le conflit : si `risque_eleve` etait aussi un axiome, les arguments pour `approu #### Bonus Ajoutez `risque_eleve` comme axiome supplementaire et observez comment le conflit modifie l'extension grounded. Comparez avec l'exemple de la section 4.2.1 ou `d` et `!d` s'annulent mutuellement.",,,,,,,,8160b90a83807312,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,30c5b4bc,code,fr,3fb76ce5e6a13703,"# --- Exercice : Debat contradictoire avec ASPIC+ --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,30c5b4bc,code,fr,3fb76ce5e6a13703,"# --- Exercice : Debat contradictoire avec ASPIC+ --- # TODO etudiant : construisez une theorie ASPIC+ et analysez les conflits # # Etape 1 : importer les classes ASPIC+ (cf section 4.2.1) @@ -12482,7 +12482,7 @@ else: aspic_theory_ex = None # TODO etudiant : remplacer par la theorie ASPIC+ construite grounded_ext = None # TODO etudiant : remplacer par l'extension grounded print(""Exercice a completer"")",,,,,,,,3fb76ce5e6a13703,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,06220aec,markdown,fr,82853380898eb9ed,"### 4.3 Defeasible Logic Programming (DeLP) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,06220aec,markdown,fr,82853380898eb9ed,"### 4.3 Defeasible Logic Programming (DeLP) --- @@ -12521,7 +12521,7 @@ Le critère clé de DeLP pour trancher entre arguments conflictuels : **Avantage de DeLP :** Raisonnement plus **intuitif** pour des domaines où les exceptions sont hiérarchisées naturellement (droit, médecine, sens commun).",,,,,,,,82853380898eb9ed,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,f573f125,code,fr,cb8bdc20e63ec94f,"# --- 4.3 Defeasible Logic Programming (DeLP) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,f573f125,code,fr,cb8bdc20e63ec94f,"# --- 4.3 Defeasible Logic Programming (DeLP) --- print(""\n--- 4.3 Defeasible Logic Programming (DeLP) ---"") if not jvm_ready: @@ -12646,7 +12646,7 @@ else: except ImportError as e: print(f""Erreur d'import pour DeLP/Commons/FOL : {e}."") except jpype.JException as e_java: print(f""Erreur Java generale: {e_java.message()}"") except Exception as e_gen: print(f""Erreur Python inattendue: {e_gen}""); import traceback; traceback.print_exc()",,,,,,,,cb8bdc20e63ec94f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,sm8wtxr3nyi,markdown,fr,11748ecf0bdaa031,"#### Interpretation des résultats DeLP +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,sm8wtxr3nyi,markdown,fr,11748ecf0bdaa031,"#### Interpretation des résultats DeLP Le raisonnement defaisable DeLP produit des reponses basees sur la **specificite generalisee** : @@ -12674,7 +12674,7 @@ Pour `Fly(opus)` : **Différence avec ASPIC+ :** - DeLP utilise la specificite pour comparer arguments - ASPIC+ utilise un ordre explicite sur les règles ou les conclusions",,,,,,,,11748ecf0bdaa031,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,44e355de,markdown,fr,7ac9de5090044baa,"### 4.4 Assumption-Based Argumentation (ABA) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,44e355de,markdown,fr,7ac9de5090044baa,"### 4.4 Assumption-Based Argumentation (ABA) --- @@ -12722,7 +12722,7 @@ Règles : fièvre <- grippe ``` Un argument pour ""grippe"" attaque un argument utilisant l'hypothèse ""non_grippe"".",,,,,,,,7ac9de5090044baa,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,5f0785a8,code,fr,5a3814ec10f92c4e,"# --- 4.4 Assumption-Based Argumentation (ABA) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,5f0785a8,code,fr,5a3814ec10f92c4e,"# --- 4.4 Assumption-Based Argumentation (ABA) --- print(""\n--- 4.4 Assumption-Based Argumentation (ABA) ---"") if not jvm_ready: @@ -12820,7 +12820,7 @@ else: except ImportError as e: print(f""Erreur d'import pour ABA : {e}."") except jpype.JException as e_java: print(f""Erreur Java generale: {e_java.message()}"") except Exception as e_gen: print(f""Erreur Python inattendue: {e_gen}""); import traceback; traceback.print_exc()",,,,,,,,5a3814ec10f92c4e,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,bbm5trm8ybt,markdown,fr,9215fd26fcc8555f,"#### Interpretation des résultats ABA +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,bbm5trm8ybt,markdown,fr,9215fd26fcc8555f,"#### Interpretation des résultats ABA **Exemple 1 : Logique Propositionnelle** @@ -12852,7 +12852,7 @@ Le couple `(a, d)` n'est PAS dans l'extension preferee car : **Point cle ABA :** Les hypotheses sont ""attaquables"" via leurs contraires. C'est la principale différence avec ASPIC+ ou les attaques ciblent des règles ou conclusions.",,,,,,,,9215fd26fcc8555f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,06de9718,markdown,fr,099241718640d432,"### 4.5 Argumentation Déductive (PL) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,06de9718,markdown,fr,099241718640d432,"### 4.5 Argumentation Déductive (PL) --- @@ -12904,7 +12904,7 @@ Cette approche est utile pour des domaines où on veut **mesurer** la force des - **Analyse de risque** : Niveau de menace **Exemple :** Un suspect accusé par 1 témoin vs. 2 témoins innocentant → score -1 (plutôt innocent)",,,,,,,,099241718640d432,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,0c9ba855,code,fr,74f80334a183cf78,"# --- 4.5 Argumentation Déductive (PL) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,0c9ba855,code,fr,74f80334a183cf78,"# --- 4.5 Argumentation Déductive (PL) --- print(""\n--- 4.5 Argumentation Deductive (PL) ---"") try: @@ -12949,7 +12949,7 @@ except Exception as e: print(f""Erreur lors de l'execution de l'exemple Deductif: {e}"") import traceback traceback.print_exc()",,,,,,,,74f80334a183cf78,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,5loxyfjbhxa,markdown,fr,bc9366365007444c,"#### Interpretation du résultat Deductif +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,5loxyfjbhxa,markdown,fr,bc9366365007444c,"#### Interpretation du résultat Deductif **Score de la requête `h` (coupable) : -2.0** @@ -12975,7 +12975,7 @@ Le suspect est accuse (`s` implique `h`), mais deux sources independantes (le te - Ici, pas de notion de specificite ou de préférence entre arguments - Le `SimpleAccumulator` agrege quantitativement les valeurs de categorisation pour / contre - ASPIC+/DeLP raisonnent plutot **qualitativement** (relations de defaite, préférences entre arguments)",,,,,,,,bc9366365007444c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,57d237ec,markdown,fr,0857c4e4d5c28c04,"### 4.6 Answer Set Programming (ASP) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,57d237ec,markdown,fr,0857c4e4d5c28c04,"### 4.6 Answer Set Programming (ASP) --- @@ -13047,7 +13047,7 @@ ASP partage avec l'argumentation structurée : - L'**approche déclarative** (dire ""quoi"" pas ""comment"") Mais ASP est plus orienté **résolution de problèmes** que **justification d'arguments**.",,,,,,,,0857c4e4d5c28c04,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,83ff79c6,code,fr,2123f51fa7e557ad,"# --- 4.6 Answer Set Programming (ASP) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,83ff79c6,code,fr,2123f51fa7e557ad,"# --- 4.6 Answer Set Programming (ASP) --- print(""\n--- 4.6 Answer Set Programming (ASP) ---"") if not jvm_ready: @@ -13150,7 +13150,7 @@ else: except ImportError as e: print(f""Erreur d'import pour ASP : {e}. Verifiez le JAR 'lp.asp'."") except jpype.JException as e_java: print(f""Erreur Java generale ASP: {e_java.message()}"") except Exception as e_gen: print(f""Erreur Python inattendue ASP: {e_gen}""); import traceback; traceback.print_exc()",,,,,,,,2123f51fa7e557ad,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,9bdl1rhpgrn,markdown,fr,6fbfb27df0b4e77d,"#### Interpretation de l'Answer Set +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,9bdl1rhpgrn,markdown,fr,6fbfb27df0b4e77d,"#### Interpretation de l'Answer Set Clingo a trouve **un seul Answer Set** pour le programme ""Suspects"" : @@ -13178,7 +13178,7 @@ Clingo a trouve **un seul Answer Set** pour le programme ""Suspects"" : **Unicite du modèle :** - Un seul Answer Set car pas de choix non-déterministe dans le programme - Avec des règles de choix (`{a ; b}`), on aurait plusieurs Answer Sets",,,,,,,,6fbfb27df0b4e77d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,687f0852,markdown,fr,67daa52862ec3254,"## Exercice : Diagnostic de système avec Answer Set Programming (ASP) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,687f0852,markdown,fr,67daa52862ec3254,"## Exercice : Diagnostic de système avec Answer Set Programming (ASP) La section 4.6 a montre les **Answer Sets** (modèles stables) avec negation par defaut. Mettez en pratique pour modeliser un diagnostic de pannes. @@ -13201,7 +13201,7 @@ Un système a 3 composants : `alimentation`, `carte_mere`, `disque`. Un composan - `DefaultNegation(atom)` pour `not atom` - Attendu : un seul answer set avec `suspect(alimentation)` mais PAS `suspect(disque)` ",,,,,,,,67daa52862ec3254,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,dd630e38,code,fr,fade672cc4f1bd60,"# --- Exercice : Diagnostic de pannes avec ASP --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,dd630e38,code,fr,fade672cc4f1bd60,"# --- Exercice : Diagnostic de pannes avec ASP --- # TODO etudiant : modelisez un diagnostic de pannes avec Answer Set Programming # # Etape 1 : importer les classes ASP (cf section 4.6) @@ -13222,7 +13222,7 @@ else: answer_sets = None # TODO etudiant : remplacer par solver.getModels(program) print(""Exercice a completer"") ",,,,,,,,fade672cc4f1bd60,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,efadf93c,markdown,fr,505ad93c95558c32,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,efadf93c,markdown,fr,505ad93c95558c32,"--- ## Resume et Comparaison des Frameworks @@ -13304,8 +13304,8 @@ Le notebook suivant (**Tweety-7a-Extended-Frameworks**) explore les **extensions --- -**Navigation**: [<- Tweety-5-Abstract-Argumentation](Tweety-5-Abstract-Argumentation.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-7a-Extended-Frameworks ->](Tweety-07a-Extended-Frameworks-Python.ipynb)",,,,,,,,505ad93c95558c32,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,82gbc1fyhk3,markdown,fr,909ca80170dbbf45,"## Exemple guide : Argumentation pour un Système de Recommandation +**Navigation**: [<- Tweety-5-Abstract-Argumentation](Tweety-5-Abstract-Argumentation.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-7a-Extended-Frameworks ->](Tweety-7a-Extended-Frameworks.ipynb)",,,,,,,,505ad93c95558c32,,,,,,,, +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,82gbc1fyhk3,markdown,fr,909ca80170dbbf45,"## Exemple guide : Argumentation pour un Système de Recommandation Appliquez l'un des frameworks d'argumentation structurée pour construire un système de recommandation simple. @@ -13334,7 +13334,7 @@ Appliquez l'un des frameworks d'argumentation structurée pour construire un sys - [ ] Arguments generes et analyses - [ ] Recommandations justifiees - [ ] (Bonus) Extensions implementees",,,,,,,,909ca80170dbbf45,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,9554123421b1,code,fr,bc6e8196bc1ced0d,"# Exercice: Choisissez un framework (ASPIC+, DeLP, ou ABA) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,9554123421b1,code,fr,bc6e8196bc1ced0d,"# Exercice: Choisissez un framework (ASPIC+, DeLP, ou ABA) # Exemple avec DeLP (le plus intuitif pour les recommandations) from org.tweetyproject.arg.delp.syntax import * @@ -13373,7 +13373,7 @@ film(matrix) <- true. # Exemple: ""inception est trop complexe pour certains"" print(""Exercice : DeLP pour recommandation de films a completer"")",,,,,,,,bc6e8196bc1ced0d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,796def0a,markdown,fr,e454698d00a5d4b3,"## Conclusion +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,796def0a,markdown,fr,e454698d00a5d4b3,"## Conclusion Ce notebook a permis d'explorer les aspects essentiels de tweety 6 structured argumentation. Les points cles : @@ -13382,7 +13382,7 @@ Ce notebook a permis d'explorer les aspects essentiels de tweety 6 structured ar - Les résultats obtenus permettent de valider la comprehension **Pour aller plus loin** : approfondir les aspects avances du sujet et explorer les liens avec d'autres domaines.",,,,,,,,e454698d00a5d4b3,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,dffcaa57,markdown,fr,7559999bfab1d226,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,dffcaa57,markdown,fr,7559999bfab1d226,"--- ## Exercice de synthese : Comparer deux frameworks sur un domaine medical @@ -13399,7 +13399,7 @@ Modelisez un debat medical (ex: faut-il administrer un traitement risque ?) en u 2. Construire les arguments et leurs relations d attaque 3. Calculer l acceptabilite avec ASPIC+ puis avec DeLP 4. (Bonus) Identifier un cas ou les deux frameworks divergent",,,,,,,,7559999bfab1d226,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb,696d679b,code,fr,1df2fdfa2c5e2080,"# TODO etudiant : comparer ASPIC+ et DeLP sur un domaine medical +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb,696d679b,code,fr,1df2fdfa2c5e2080,"# TODO etudiant : comparer ASPIC+ et DeLP sur un domaine medical # # Etape 1 : definir les arguments (pro et contre un traitement) # Etape 2 : definir les attaques entre arguments @@ -13407,9 +13407,9 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ip # Etape 4 (bonus) : identifier une divergence entre les deux semantiques print(""Exercice a completer"") # TODO etudiant : remplacer par votre implementation",,,,,,,,1df2fdfa2c5e2080,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,d1dc9363,markdown,fr,930ec3d802f2713d,"# Tweety-6 — Argumentation structuree (twin C# / .NET Interactive) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,d1dc9363,markdown,fr,930ec3d802f2713d,"# Tweety-6 — Argumentation structuree (twin C# / .NET Interactive) -**Twin C#** du notebook Python [Tweety-06-Structured-Argumentation-Python.ipynb](Tweety-06-Structured-Argumentation-Python.ipynb) (marathon #4956, parite .NET <-> Python, axe-2 SOTA #3801 Prong B). +**Twin C#** du notebook Python [Tweety-6-Structured-Argumentation.ipynb](Tweety-6-Structured-Argumentation.ipynb) (marathon #4956, parite .NET <-> Python, axe-2 SOTA #3801 Prong B). Le notebook Python invoque la bibliotheque Java **TweetyProject** (via `jpype` + JVM) pour construire des arguments structurees : ASPIC+, DeLP, ABA, argumentation deductive, ASP. Ce twin **deroule le moteur ASPIC+ a la main** (BCL .NET 9, 0 NuGet, aucune JVM), dans la même lignee que le [Tweety-5-Csharp](Tweety-5-Abstract-Argumentation-Csharp.ipynb) qui implementait le cadre abstrait de Dung from-scratch. @@ -13423,8 +13423,8 @@ L'argumentation **abstraite** de Dung (Tweety-5) traite les arguments comme des On verifie **mathematiquement** que la conversion ASPIC+ -> Dung redonne le bon cadre abstrait, et que la sémantique grounded isole les arguments defendus. -> **Note de parite cross-langage** : ce notebook est le **jumeau C# from-scratch BCL .NET 9** (0 NuGet, 0 JVM) du notebook Python [`Tweety-06-Structured-Argumentation-Python.ipynb`](Tweety-06-Structured-Argumentation-Python.ipynb) (JVM TweetyProject via `jpype`, ASPIC+ + DeLP + ABA + Deductive + ASP). Le twin C# couvre ASPIC+ from-scratch BCL (sections 1-5) et declare INTRINSIC les 4 autres formalismes (pas d'equivalent BCL .NET ; le notebook Python + JVM TweetyProject reste la reference d'execution pour DeLP/ABA/ASP). Audit G.1 cross-langage cell-by-cell c.743 : 22 cellules C# verifiees, grounded `{ -> b, -> c, b, c => a [ -> b, -> c] }` coherent avec cell[7] Python (5 memes arguments). Marathon parite .NET <-> Python : EPIC #4956.",,,,,,,,930ec3d802f2713d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,ae983e52,code,fr,d612202d3362c0d9,"// Setup : aucune dependance externe — moteur ASPIC+ from-scratch, uniquement la BCL .NET. +> **Note de parite cross-langage** : ce notebook est le **jumeau C# from-scratch BCL .NET 9** (0 NuGet, 0 JVM) du notebook Python [`Tweety-6-Structured-Argumentation.ipynb`](Tweety-6-Structured-Argumentation.ipynb) (JVM TweetyProject via `jpype`, ASPIC+ + DeLP + ABA + Deductive + ASP). Le twin C# couvre ASPIC+ from-scratch BCL (sections 1-5) et declare INTRINSIC les 4 autres formalismes (pas d'equivalent BCL .NET ; le notebook Python + JVM TweetyProject reste la reference d'execution pour DeLP/ABA/ASP). Audit G.1 cross-langage cell-by-cell c.743 : 22 cellules C# verifiees, grounded `{ -> b, -> c, b, c => a [ -> b, -> c] }` coherent avec cell[7] Python (5 memes arguments). Marathon parite .NET <-> Python : EPIC #4956.",,,,,,,,930ec3d802f2713d,,,,,,,, +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,ae983e52,code,fr,d612202d3362c0d9,"// Setup : aucune dependance externe — moteur ASPIC+ from-scratch, uniquement la BCL .NET. // Meme convention que Tweety-5-Csharp (Dung from-scratch). using Microsoft.DotNet.Interactive; using System; @@ -13446,7 +13446,7 @@ static void Show(string s) { s.Display(); } ""Environnement pret — moteur ASPIC+ from-scratch (BCL .NET seule, 0 NuGet, 0 JVM)."".Display(); ",,,,,,,,d612202d3362c0d9,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,32384654,markdown,fr,16d8c9c5804ad5c8,"## 1. Théorie ASPIC+ : règles et axiomes +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,32384654,markdown,fr,16d8c9c5804ad5c8,"## 1. Théorie ASPIC+ : règles et axiomes Une théorie ASPIC+ (en logique propositionnelle) comporte : @@ -13456,7 +13456,7 @@ Une théorie ASPIC+ (en logique propositionnelle) comporte : Une **formule** est une proposition (`d`) ou sa negation (`!d`). Deux formules sont **contradictoires** si l'une est la negation de l'autre : `Compl(d) = !d`, `Compl(!d) = d`. ",,,,,,,,16d8c9c5804ad5c8,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,47701331,code,fr,7be32afeb57fe109,"// Representation d'une theorie ASPIC+ : axiomes + regles (strictes / defaisables). +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,47701331,code,fr,7be32afeb57fe109,"// Representation d'une theorie ASPIC+ : axiomes + regles (strictes / defaisables). // Les formules sont des chaines (""d"", ""!d"") ; la negation est prefixee par '!'. static string Compl(string f) => f.StartsWith(""!"") ? f.Substring(1) : ""!"" + f; @@ -13490,7 +13490,7 @@ class AspicTheory Show(""Classes pretes : AspicRule (stricte/defaisable), AspicTheory (axiomes + regles).""); ",,,,,,,,7be32afeb57fe109,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,c5233106,markdown,fr,5adafb8e2e890bcf,"## 2. Construction récursive des arguments +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,c5233106,markdown,fr,5adafb8e2e890bcf,"## 2. Construction récursive des arguments Un **argument** est soit : - un **axiome** (feuille) : ` -> c` (conclusion c tiree directement d'un axiome) ; @@ -13500,7 +13500,7 @@ On construit tous les arguments par **point fixe** : on part des axiomes, puis o > Chaque conclusion n'etant ici produite que par une seule règle, on obtient exactement un argument par conclusion derivee (pas d'explosion combinatoire). ",,,,,,,,5adafb8e2e890bcf,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,a95de405,code,fr,1ca367bed270553c,"// Argument ASPIC+ : structure recursive (conclusion + regle sommitale + sous-arguments). +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,a95de405,code,fr,1ca367bed270553c,"// Argument ASPIC+ : structure recursive (conclusion + regle sommitale + sous-arguments). // ToString reproduit la convention Tweety : -> c (axiome) | p1, p2 => c [sub1, sub2] (regle). class AspicArgument @@ -13565,7 +13565,7 @@ static class AspicBuilder Show(""AspicArgument + AspicBuilder prets (construction recursive par point fixe).""); ",,,,,,,,1ca367bed270553c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,ded28d27,markdown,fr,3c0734f028988023,"## 3. Exemple : théorie avec contradiction sur `d` +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,ded28d27,markdown,fr,3c0734f028988023,"## 3. Exemple : théorie avec contradiction sur `d` Théorie (une seule règle par conclusion, une contradiction sur `d`) : @@ -13577,7 +13577,7 @@ Théorie (une seule règle par conclusion, une contradiction sur `d`) : On derive `a` (via r1), puis `d` (via r2) et `!d` (via r3) : `d` et `!d` sont contradictoires -> conflit. ",,,,,,,,3c0734f028988023,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,9858e9a7,code,fr,a888b87869ce55cd,"// Construction de l'exemple ASPIC+ et enumeration des arguments. +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,9858e9a7,code,fr,a888b87869ce55cd,"// Construction de l'exemple ASPIC+ et enumeration des arguments. var t = new AspicTheory(); t.AddAxiom(""b""); t.AddAxiom(""c""); @@ -13596,7 +13596,7 @@ foreach (var a in args) sb.AppendLine("" - "" + a.Display()); Show(sb.ToString()); ",,,,,,,,a888b87869ce55cd,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,94fbfb65,markdown,fr,72ab662a7fcb2892,"On obtient **5 arguments** : +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,94fbfb65,markdown,fr,72ab662a7fcb2892,"On obtient **5 arguments** : | Argument | Conclusion | Structure | |----------|-----------|-----------| @@ -13614,7 +13614,7 @@ En ASPIC+, un argument defaisable A **rebut** un argument defaisable B si la con > **Simplification honnete** : on modelise le **rebut sur la conclusion sommitale** entre arguments defaisables. L'ASPIC+ complet ajoute l'*undermine* (attaque d'une premisse) et l'*undercut* (attaque directe d'une règle defaisable) — non necessaire pour cet exemple (pur conflit de conclusion), et signale ici pour transparence. ",,,,,,,,72ab662a7fcb2892,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,07e1da2a,code,fr,6500fd8fceacd70c,"// Generation des attaques (rebut symetrique entre arguments defaisables). +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,07e1da2a,code,fr,6500fd8fceacd70c,"// Generation des attaques (rebut symetrique entre arguments defaisables). // A rebut B <=> A defaisable ET B defaisable ET Conclusion(A) = Compl(Conclusion(B)). static List<(AspicArgument, AspicArgument)> Rebuttals(List args) @@ -13640,7 +13640,7 @@ foreach (var (a, b) in attacks) sb2.AppendLine("" - ("" + a.Display() + "", "" + b.Display() + "")""); Show(sb2.ToString()); ",,,,,,,,6500fd8fceacd70c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,a3ea9a35,markdown,fr,a2c45ace41b32166,"Deux attaques symetriques : +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,a3ea9a35,markdown,fr,a2c45ace41b32166,"Deux attaques symetriques : - `arg_d` (conclut `d`) rebut `arg_!d` (conclut `!d`) - `arg_!d` rebut `arg_d` @@ -13654,7 +13654,7 @@ On projette les arguments en noeuds et les attaques en aretes : on retrouve un * - $F(\emptyset)$ = arguments sans attaquant ; - on itere $F$ jusqu'au point fixe = **extension grounded** (sceptique). ",,,,,,,,a2c45ace41b32166,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,91699731,code,fr,fbbf3de6b34685cc,"// Cadre de Dung abstrait (repris de Tweety-5-Csharp) + fonction caracteristique. +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,91699731,code,fr,fbbf3de6b34685cc,"// Cadre de Dung abstrait (repris de Tweety-5-Csharp) + fonction caracteristique. class DungAF { public HashSet Args { get; } = new(); @@ -13696,7 +13696,7 @@ sb3.AppendLine(""--- Extension grounded ---""); sb3.AppendLine(""{ "" + string.Join("", "", grounded.OrderBy(x => x)) + "" }""); Show(sb3.ToString()); ",,,,,,,,fbbf3de6b34685cc,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,8d1a78b2,markdown,fr,1e4459ab0f1da035,"**Lecture du résultat** : +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,8d1a78b2,markdown,fr,1e4459ab0f1da035,"**Lecture du résultat** : - Les arguments ` -> b`, ` -> c` et `b, c => a [...]` sont **acceptes** (sans attaquant, ou defendus). - Les arguments `b => d [...]` et `a => !d [...]` sont **rejetes** : ils se rebutent mutuellement, et **aucun** tiers ne defend l'un contre l'autre. Le doute l'emporte : ni `d` ni `!d` n'est conclu. @@ -13717,7 +13717,7 @@ Le notebook Python illustre quatre autres formalismes structurees via TweetyProj **Pourquoi ce plafond est honnete** : ASPIC+ est le formalisme le plus expressif dont le **moteur** (construction d'arguments + rebut + Dung) se reconstruit proprement en BCL. DeLP/ABA/ASP reposent sur des infrastructures dediees (moteurs d'inférence, solveurs) qui n'ont pas d'equivalent .NET leger — invoquer une JVM ou un solver externe depasserait le cadre d'un twin pedagogique BCL. La valeur du twin reside dans l'**explication du moteur** ASPIC+ (ce que TweetyProject cache), pas dans la reproduction exhaustive des cinq formalismes. ",,,,,,,,1e4459ab0f1da035,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,ac3186b9,code,fr,f6ec8ec7f7309233,"// Synthese comparative des formalismes d'argumentation structuree (conceptuel). +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,ac3186b9,code,fr,f6ec8ec7f7309233,"// Synthese comparative des formalismes d'argumentation structuree (conceptuel). var rows = new[] { (""ASPIC+"", ""Regles strictes/defaisables, rebut/undercut/undermine -> Dung"", ""From-scratch (sections 1-5)""), (""DeLP"", ""Programmation logique defaisable + arbre dialectique"", ""Intrinseque (moteur Java arg.delp)""), @@ -13737,11 +13737,11 @@ sb4.AppendLine(""Verdict #3801 : ASPIC+ = SOTA-OK (moteur from-scratch). DeLP/AB sb4.AppendLine(""(pas d'equivalent BCL .NET ; le notebook Python + JVM TweetyProject reste la reference d'execution).""); Show(sb4.ToString()); ",,,,,,,,f6ec8ec7f7309233,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,63611905,markdown,fr,73ba4637fb24e26d,"## Exercices (#2161) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,63611905,markdown,fr,73ba4637fb24e26d,"## Exercices (#2161) Trois exercices pour manipuler le moteur ASPIC+. ",,,,,,,,73ba4637fb24e26d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,aac6e2c5,markdown,fr,f12992ee66ad3588,"### Exercice 1 — Une quatrieme règle defaisable +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,aac6e2c5,markdown,fr,f12992ee66ad3588,"### Exercice 1 — Une quatrieme règle defaisable Ajoutez une règle `r4 : c => !a` a la théorie de la section 3 (en plus de r1, r2, r3). @@ -13751,7 +13751,7 @@ Ajoutez une règle `r4 : c => !a` a la théorie de la section 3 (en plus de r1, **Indice** : un nouveau cycle symetrique apparait au niveau de `a`. Observez comment l'effet se *propage* aux arguments qui utilisent `a` comme premisse. ",,,,,,,,f12992ee66ad3588,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,25156861,code,fr,57300a3afbbad6f5,"// Exercice 1 : a completer +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,25156861,code,fr,57300a3afbbad6f5,"// Exercice 1 : a completer // Etape 1 : reconstruire la theorie avec r4 (c => !a). // Etape 2 : enumerer les arguments et identifier les rebuttals supplementaires. // Etape 3 : calculer l'extension grounded et comparer avec la section 5. @@ -13762,7 +13762,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ip // var argsEx1 = AspicBuilder.Build(tex1); ""Exercice 1 a completer : observer la propagation du conflit sur 'a' vers 'd'."".Display(); ",,,,,,,,57300a3afbbad6f5,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,e3949f49,markdown,fr,9eb744ba823ab5de,"### Exercice 2 — Attaque undercut (extension du modèle) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,e3949f49,markdown,fr,9eb744ba823ab5de,"### Exercice 2 — Attaque undercut (extension du modèle) L'ASPIC+ complet définit l'**undercut** : un argument peut attaquer *directement une règle defaisable* de l'autre (et non sa conclusion). On ajoute pour cela des formules `!r_i` signifiant « la règle r_i n'est pas fiable ». @@ -13772,13 +13772,13 @@ L'ASPIC+ complet définit l'**undercut** : un argument peut attaquer *directemen **Indice** : contrairement au rebut (symetrique), l'undercut est **directif** (A undercut B ne signifie pas que B undercut A). Il faut distinguer les deux types d'aretes dans le cadre de Dung. ",,,,,,,,9eb744ba823ab5de,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,c4ac640c,code,fr,39b1ef7b344024d6,"// Exercice 2 : a completer +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,c4ac640c,code,fr,39b1ef7b344024d6,"// Exercice 2 : a completer // Etape 1 : etendre la theorie avec un axiome !r2. // Etape 2 : ecrire la regle d'undercut (un argument conclusant !r_i undercut l'argument de top-rule r_i). // Indice : il faudra peut-etre suivre le Name de la regle sommitale de chaque argument. ""Exercice 2 a completer : modeliser l'undercut (attaque directive d'une regle)."".Display(); ",,,,,,,,39b1ef7b344024d6,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,b040d65c,markdown,fr,aed14a20e197f747,"### Exercice 3 — Comparaison ASPIC+ vs ABA sur un exemple medical +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,b040d65c,markdown,fr,aed14a20e197f747,"### Exercice 3 — Comparaison ASPIC+ vs ABA sur un exemple medical On veut modeliser un debat medical : « Le patient a la maladie M (symptome S => M). Mais le traitement T provoque aussi S (T => S). Le patient suit T. » @@ -13788,13 +13788,13 @@ On veut modeliser un debat medical : « Le patient a la maladie M (symptome S => **Indice** : ABA inverse des assumptions (`assume(S)`) dont le contraire (`S -> conflict`) peut etre attaqué. ASPIC+ raisonne en avant (règles), ABA en arriere (assumptions). ",,,,,,,,aed14a20e197f747,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,13b54263,code,fr,1ce1b95b96c46bba,"// Exercice 3 : a completer +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,13b54263,code,fr,1ce1b95b96c46bba,"// Exercice 3 : a completer // Etape 1 : modeliser en ASPIC+ (axiome 'T', regles 'S => M' et 'T => S', plus une regle 'S => ...'). // Etape 2 : decrire en commentaire la representation ABA equivalent (assumptions + contraires). // Etape 3 : argumenter (en commentaire) le choix du formalisme. ""Exercice 3 a completer : comparer ASPIC+ (avant) et ABA (arriere, assumptions) sur un cas medical."".Display(); ",,,,,,,,1ce1b95b96c46bba,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,74f90ebc,markdown,fr,4c6863ff5b6692b1,"## Conclusion +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,74f90ebc,markdown,fr,4c6863ff5b6692b1,"## Conclusion Ce twin C# a **deroule le moteur ASPIC+ from-scratch** (BCL .NET 9, 0 NuGet, 0 JVM) : @@ -13807,9 +13807,9 @@ Ce twin C# a **deroule le moteur ASPIC+ from-scratch** (BCL .NET 9, 0 NuGet, 0 J See #4956, #3801. ",,,,,,,,4c6863ff5b6692b1,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,14fac472,markdown,fr,5cef8a935f84a90d,"# Frameworks d'Argumentation Étendus +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,14fac472,markdown,fr,5cef8a935f84a90d,"# Frameworks d'Argumentation Étendus -**Navigation**: [← Tweety-6-Structured-Argumentation](Tweety-06-Structured-Argumentation-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-7b-Ranking-Probabilistic →](Tweety-07b-Ranking-Probabilistic-Python.ipynb) +**Navigation**: [← Tweety-6-Structured-Argumentation](Tweety-6-Structured-Argumentation.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-7b-Ranking-Probabilistic →](Tweety-7b-Ranking-Probabilistic.ipynb) --- @@ -13829,12 +13829,12 @@ Ce notebook utilise le module partagé `tweety_init.py` pour l'initialisation JV > **Note technique** : Les solveurs SAT natifs (NativeMinisatSolver, NativeLingelingSolver, NativePicosatSolver) > sont automatiquement chargés grâce au dossier `libs/native/` configuré dans le classpath.",,,,,,,,5cef8a935f84a90d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,8716b36a,code,fr,d9f2d075fb18475f,"# --- Initialisation JVM Tweety via module partagé --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,8716b36a,code,fr,d9f2d075fb18475f,"# --- Initialisation JVM Tweety via module partagé --- from tweety_init import init_tweety, EXTERNAL_TOOLS, get_tool_path, print_tools_summary jvm_ready = init_tweety() print_tools_summary()",,,,,,,,d9f2d075fb18475f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,z9x7os2scdb,markdown,fr,3f203b34e7c3ec77,"### Structure du notebook +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,z9x7os2scdb,markdown,fr,3f203b34e7c3ec77,"### Structure du notebook Ce notebook est organisé en 5 parties complémentaires: @@ -13845,10 +13845,10 @@ Ce notebook est organisé en 5 parties complémentaires: 5. **Attaques collectives et récursives** : SetAF (ensembles attaquants) et EAF/REAF (meta-attaques) Chaque section illustre une extension différente des cadres de Dung classiques, avec des applications pratiques variées.",,,,,,,,3f203b34e7c3ec77,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,e0e1340e,markdown,fr,64a2ad49a4dd813c,"## Partie 5a : Frameworks d'Argumentation Étendus +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,e0e1340e,markdown,fr,64a2ad49a4dd813c,"## Partie 5a : Frameworks d'Argumentation Étendus Cette section explore des extensions complexes des cadres de Dung, permettant de modéliser des scénarios de raisonnement plus riches avec des conditions d'acceptation spécifiques, des relations de support, des poids, et des attaques collectives ou récursives.",,,,,,,,64a2ad49a4dd813c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,a0b22bec,markdown,fr,13916f823c45c61a,"### 5.1 Abstract Dialectical Frameworks (ADF) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,a0b22bec,markdown,fr,13916f823c45c61a,"### 5.1 Abstract Dialectical Frameworks (ADF) Les ADF [Brewka & Woltran, 2010] généralisent les cadres de Dung. @@ -13865,7 +13865,7 @@ Les ADF [Brewka & Woltran, 2010] généralisent les cadres de Dung. > - Linux : `minisat.so`, `lingeling.so`, `picosat.so` > > Ces fichiers sont fournis dans `libs/native/` et automatiquement chargés si Tweety-1-Setup est exécuté.",,,,,,,,13916f823c45c61a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,0f989794,code,fr,39f74dbcd0637025,"# --- 5.1 Abstract Dialectical Frameworks (ADF) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,0f989794,code,fr,39f74dbcd0637025,"# --- 5.1 Abstract Dialectical Frameworks (ADF) --- print(""\n--- 5.1 Abstract Dialectical Frameworks (ADF) ---"") if not jvm_ready: @@ -13992,12 +13992,12 @@ else: print(f""Erreur Python inattendue: {e_gen}"") import traceback traceback.print_exc()",,,,,,,,39f74dbcd0637025,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,3a2tluurdns,markdown,fr,8934e11c494532b9,"#### Exemple pratique : ADF avec conditions d'acceptation +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,3a2tluurdns,markdown,fr,8934e11c494532b9,"#### Exemple pratique : ADF avec conditions d'acceptation L'exemple suivant crée un ADF simple avec 3 arguments et des conditions de négation. Le code vérifie également la disponibilité des solveurs SAT natifs, qui sont **essentiels** pour le fonctionnement des ADF. **Objectif** : Démontrer que les ADF peuvent exprimer des conditions plus complexes qu'un simple graphe d'attaques.",,,,,,,,8934e11c494532b9,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,pda436vgm7p,markdown,fr,934acd1162b833d8,"#### Interpretation des résultats ADF +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,pda436vgm7p,markdown,fr,934acd1162b833d8,"#### Interpretation des résultats ADF L'ADF créé modelise une chaîne de dependances negatives : @@ -14033,7 +14033,7 @@ Un ADF dont tous les liens sont purement attaquants **est** un cadre de Dung : c - Modelisation de règles metier avec exceptions - Systèmes de configuration avec contraintes dependantes - Raisonnement juridique avec conditions cumulatives",,,,,,,,934acd1162b833d8,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,w4wp0prvfpi,markdown,fr,a623a20fb14e339a,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,w4wp0prvfpi,markdown,fr,a623a20fb14e339a,"--- ## Transition : De la logique aux relations de support @@ -14044,7 +14044,7 @@ Au lieu de seulement attaquer, les arguments peuvent maintenant **soutenir** d'a **Deux philosophies** : - **Evidential** : Un seul support suffit (disjonctif) - **Necessity** : Tous les supports requis (conjonctif)",,,,,,,,a623a20fb14e339a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,76362013,markdown,fr,9684c01d91d54441,"### 5.2 Frameworks Bipolaires (Evidential, Necessity) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,76362013,markdown,fr,9684c01d91d54441,"### 5.2 Frameworks Bipolaires (Evidential, Necessity) Les cadres d'argumentation bipolaires etendent les AAFs de Dung en introduisant une relation de **support** distincte de l'attaque. Tweety implemente deux variantes principales : @@ -14064,7 +14064,7 @@ Dans l'Evidential AF, les arguments peuvent etre : - **Derives** : Necessitent au moins un support L'exemple ci-dessous créé un framework avec 6 arguments, des attaques mutuelles, et un support `d -> e`.",,,,,,,,9684c01d91d54441,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,0c760a5d,code,fr,4c5b185f925de580,"# --- 5.2a Evidential Argumentation Framework --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,0c760a5d,code,fr,4c5b185f925de580,"# --- 5.2a Evidential Argumentation Framework --- print(""\n--- 5.2a Evidential Argumentation Framework ---"") if not jvm_ready: @@ -14139,7 +14139,7 @@ else: print(f""Erreur Python: {e_gen}"") import traceback traceback.print_exc()",,,,,,,,4c5b185f925de580,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,hau4s5g1kep,markdown,fr,5cd297fb44b3d4a3,"#### Construction du framework Evidential +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,hau4s5g1kep,markdown,fr,5cd297fb44b3d4a3,"#### Construction du framework Evidential Le code suivant construit un Evidential AF avec : - 6 arguments (`a` à `f`) @@ -14148,7 +14148,7 @@ Le code suivant construit un Evidential AF avec : - Des arguments **prima facie** (`b`, `c`, `d`, `f`) qui sont ""auto-justifiés"" Tweety ajoute automatiquement l'argument spécial `eta` pour représenter la source de vérité initiale.",,,,,,,,5cd297fb44b3d4a3,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,vz57o2jp61,markdown,fr,856460b09ff48007,"#### 5.2b Necessity Argumentation Framework +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,vz57o2jp61,markdown,fr,856460b09ff48007,"#### 5.2b Necessity Argumentation Framework Contrairement a l'Evidential AF ou un seul support suffit, le **Necessity AF** exige que **tous les supportants** soient presents pour qu'un argument soit accepte. @@ -14156,7 +14156,7 @@ Contrairement a l'Evidential AF ou un seul support suffit, le **Necessity AF** e - Support **conjonctif** : `{a, b} -> c` signifie que `c` necessite `a` ET `b` - Pas d'argument `eta` special - Le self-support `a -> a` permet a un argument de ""s'auto-justifier""",,,,,,,,856460b09ff48007,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,fnu9u5k3w4,code,fr,79f5fc5e75bb65e0,"# --- 5.2b Necessity Argumentation Framework --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,fnu9u5k3w4,code,fr,79f5fc5e75bb65e0,"# --- 5.2b Necessity Argumentation Framework --- print(""\n--- 5.2b Necessity Argumentation Framework ---"") if not jvm_ready: @@ -14230,7 +14230,7 @@ else: print(f""Erreur Python: {e_gen}"") import traceback traceback.print_exc()",,,,,,,,79f5fc5e75bb65e0,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,j2x010gz5ri,markdown,fr,ac89309180ab079a,"#### Interpretation des Frameworks Bipolaires +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,j2x010gz5ri,markdown,fr,ac89309180ab079a,"#### Interpretation des Frameworks Bipolaires **L'argument mysterieux `eta`** @@ -14266,7 +14266,7 @@ eta --[supporte]--> {b, c, d, f} (prima facie) - **Evidential** : Modelise les preuves juridiques (une preuve suffit) - **Necessity** : Modelise les prerequis (tous les cours requis pour un diplome)",,,,,,,,ac89309180ab079a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,jjcoc5be7y,markdown,fr,b076ab596d507404,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,jjcoc5be7y,markdown,fr,b076ab596d507404,"--- ## Transition : Introduction des poids @@ -14280,7 +14280,7 @@ Les **Frameworks Pondérés (WAF)** associent un **poids numérique** à chaque - Débats avec arguments de différentes forces - Coûts de résolution de conflits - Probabilités d'attaques",,,,,,,,b076ab596d507404,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,09f8f5fd,markdown,fr,3689e8ea5a45cfff,"### 5.3 Frameworks Pondérés (WAF) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,09f8f5fd,markdown,fr,3689e8ea5a45cfff,"### 5.3 Frameworks Pondérés (WAF) Les Cadres d'Argumentation Pondérés (Weighted Argumentation Frameworks - WAF) associent un **poids** à chaque attaque, représentant sa force ou son coût. L'évaluation de l'acceptabilité prend en compte ces poids via des **seuils** ou des **agrégations**. @@ -14288,7 +14288,7 @@ Tweety utilise la structure des **semi-anneaux** (`Semiring`) pour définir comm - `WeightedSemiring`: Poids numériques sommés (coûts) - `FuzzySemiring`: Degrés de vérité dans [0, 1] - `ProbabilisticSemiring`: Probabilités",,,,,,,,3689e8ea5a45cfff,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,c136e605,code,fr,6f57c335b1bb5a44,"# --- 5.3 Frameworks Pondérés (WAF) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,c136e605,code,fr,6f57c335b1bb5a44,"# --- 5.3 Frameworks Pondérés (WAF) --- print(""\n--- 5.3 Frameworks Ponderes (WAF) ---"") if not jvm_ready: @@ -14366,7 +14366,7 @@ else: except ImportError as e: print(f""Erreur d'import pour WAF : {e}."") except jpype.JException as e_java: print(f""Erreur Java generale WAF: {e_java.message()}"") except Exception as e_gen: print(f""Erreur Python inattendue WAF: {e_gen}""); import traceback; traceback.print_exc()",,,,,,,,6f57c335b1bb5a44,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,rerc46dcwsf,markdown,fr,4de10d16aee137bf,"#### Interpretation des résultats WAF +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,rerc46dcwsf,markdown,fr,4de10d16aee137bf,"#### Interpretation des résultats WAF **Sémantique (alpha, gamma) - relaxation de Bistarelli, Rossi & Santini** @@ -14399,7 +14399,7 @@ e --6.0--> e (auto-attaque) Il faut relacher **gamma** (le seuil de defense) au-dela du plus grand ecart attaque/defense du graphe - et non augmenter alpha. La valeur exacte depend des poids ; elle n'est **pas exercee dans ce notebook** (laissee en exercice). Le `alpha=20.0` recommande dans une version anterieure de cette cellule etait un ajustement jamais teste, et portait de surcroit sur le mauvais paramètre. > **Sources** : P. Dunne, A. Hunter, P. McBurney, S. Parsons, M. Wooldridge, *Weighted argument systems: Basic definitions, illustrations, and emerging results* (Artificial Intelligence, 2011) ; S. Bistarelli, F. Rossi, F. Santini, *A relaxation of internal conflict and defence in weighted argumentation frameworks* (ECSQARU 2017) et *A novel weighted defence and its relaxation in abstract argumentation* (IJAR, 2018).",,,,,,,,4de10d16aee137bf,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,d0669124,markdown,fr,ec92e48371cf80a6,"## Exercice : Debat avec attaques ponderees (WAF) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,d0669124,markdown,fr,ec92e48371cf80a6,"## Exercice : Debat avec attaques ponderees (WAF) La section 5.3 a montre les **Frameworks Ponderes** avec seuils `alpha` et `gamma`. Modelisez un debat ou certaines attaques sont plus fortes que d'autres. @@ -14415,7 +14415,7 @@ Trois experts : `a` (""Investir maintenant""), `b` (""Le marche est instable"", - `waf.add(Attack(src, tgt), poids)` - `SimpleWeightedGroundedReasoner().getModel(waf, alpha, gamma)` ",,,,,,,,ec92e48371cf80a6,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,2db32bac,code,fr,f2975dd39000e979,"# --- Exercice : Debat avec attaques ponderees (WAF) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,2db32bac,code,fr,f2975dd39000e979,"# --- Exercice : Debat avec attaques ponderees (WAF) --- # TODO etudiant : modelisez un debat d'experts avec des attaques ponderees # # Etape 1 : imports (cf section 5.3) @@ -14438,12 +14438,12 @@ else: grounded_standard = None # TODO etudiant : remplacer par le grounded standard print(""Exercice a completer"") ",,,,,,,,f2975dd39000e979,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,fb149f50,markdown,fr,e1c59cebd6cdbfa6,"### 5.4 Frameworks Sociaux (SAF) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,fb149f50,markdown,fr,e1c59cebd6cdbfa6,"### 5.4 Frameworks Sociaux (SAF) Les Cadres d'Argumentation Sociaux (SAF) [Leite, Martins, 2011] permettent d'associer des **votes** (positifs ou négatifs) aux arguments. Ces votes influencent la force ou l'acceptabilité finale des arguments. * **Sémantique ISS** (Iterated Schema Semantics): Calcule un score pour chaque argument basé sur les scores de ses attaquants et sur les votes, jusqu'à convergence.",,,,,,,,e1c59cebd6cdbfa6,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,a7ceb801,code,fr,3cb1d97c8040e769,"# --- 5.4 Frameworks Sociaux (SAF) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,a7ceb801,code,fr,3cb1d97c8040e769,"# --- 5.4 Frameworks Sociaux (SAF) --- print(""\n--- 5.4 Frameworks Sociaux (SAF) ---"") if not jvm_ready: @@ -14510,7 +14510,7 @@ else: except ImportError as e: print(f""Erreur d'import initiale pour SAF : {e}."") except jpype.JException as e_java: print(f""Erreur Java generale: {e_java.message()}"") except Exception as e_gen: print(f""Erreur Python inattendue: {e_gen}""); import traceback; traceback.print_exc()",,,,,,,,3cb1d97c8040e769,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,8von1j6znx2,markdown,fr,14f447ca55124aa5,"#### Interpretation des scores ISS +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,8von1j6znx2,markdown,fr,14f447ca55124aa5,"#### Interpretation des scores ISS Le modèle ISS (Iterated Schema Semantics) calcule un score d'acceptabilite pour chaque argument : @@ -14539,13 +14539,13 @@ Le modèle ISS (Iterated Schema Semantics) calcule un score d'acceptabilite pour - Modeliser les debats sur reseaux sociaux (likes/dislikes) - Les arguments populaires (beaucoup de upvotes) resistent mieux aux attaques - Un argument très attaque peut survivre si ses attaquants sont faibles (cf. D attaque par C=0.230, garde 0.511)",,,,,,,,14f447ca55124aa5,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,cf941465,markdown,fr,76421cf501cca13c,"### 5.5 Set Argumentation Frameworks (SetAF) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,cf941465,markdown,fr,76421cf501cca13c,"### 5.5 Set Argumentation Frameworks (SetAF) Les Set Argumentation Frameworks [Nielsen, Parsons, 2006] généralisent les attaques: c'est un **ensemble** d'arguments qui attaque collectivement un argument. * **Attaque d'ensemble**: $(X, a)$ où $X$ est un ensemble non vide d'arguments et $a$ est l'argument attaqué * **Défense**: Un argument $a$ est défendu par $E$ si pour chaque $X$ qui attaque $a$, un sous-ensemble de $E$ attaque un élément de $X$",,,,,,,,76421cf501cca13c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,938961d9,code,fr,e9c9c2407932ee0e,"# --- 5.5 Set Argumentation Frameworks (SetAF) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,938961d9,code,fr,e9c9c2407932ee0e,"# --- 5.5 Set Argumentation Frameworks (SetAF) --- print(""\n--- 5.5 Set Argumentation Frameworks (SetAF) ---"") if not jvm_ready: @@ -14607,7 +14607,7 @@ else: except ImportError as e: print(f""Erreur d'import pour SetAF : {e}. Verifiez le JAR 'arg.setaf'."") except jpype.JException as e_java: print(f""Erreur Java generale SetAF: {e_java.message()}"") except Exception as e_gen: print(f""Erreur Python inattendue SetAF: {e_gen}""); import traceback; traceback.print_exc()",,,,,,,,e9c9c2407932ee0e,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,ut4ligfrhz,markdown,fr,4fd5571387369482,"#### Interpretation des résultats SetAF +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,ut4ligfrhz,markdown,fr,4fd5571387369482,"#### Interpretation des résultats SetAF **Structure du framework** @@ -14648,13 +14648,13 @@ L'attaque `{a, c} -> c` est **paradoxale** : elle necessite `c` pour attaquer `c - **Vote a l'unanimite** : Une decision est bloquee seulement si TOUS les opposants votent contre - **Systèmes de securite** : Une alerte se declenche si TOUTES les conditions sont reunies - **Consensus** : Un argument est rejete seulement si un groupe entier s'y oppose",,,,,,,,4fd5571387369482,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,febef988,markdown,fr,660247a43c11174a,"### 5.6 Frameworks Étendus (Attaques sur Attaques) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,febef988,markdown,fr,660247a43c11174a,"### 5.6 Frameworks Étendus (Attaques sur Attaques) Les Frameworks d'Argumentation Étendus [Modgil, 2009] permettent de modéliser des scénarios où une **attaque peut être attaquée** par un argument. Cela représente des concepts comme la préférence entre attaques. * **EAF** (Extended AF): Arguments attaquent des attaques $(c, (a, b))$ * **REAF** (Récursive Extended AF): Généralise les EAF en permettant aux arguments d'attaquer des attaques sur des attaques (récursivement)",,,,,,,,660247a43c11174a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,3407f03c,code,fr,1f8037c4fb8ec38c,"# --- 5.6 Frameworks Étendus (EAF / REAF) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,3407f03c,code,fr,1f8037c4fb8ec38c,"# --- 5.6 Frameworks Étendus (EAF / REAF) --- print(""\n--- 5.6 Frameworks Etendus (EAF / REAF) ---"") if not jvm_ready: @@ -14755,7 +14755,7 @@ else: except ImportError as e: print(f""Erreur d'import pour EAF/REAF : {e}. Verifiez le JAR 'arg.extended'."") except jpype.JException as e_java: print(f""Erreur Java generale EAF/REAF: {e_java.message()}"") except Exception as e_gen: print(f""Erreur Python inattendue EAF/REAF: {e_gen}""); import traceback; traceback.print_exc()",,,,,,,,1f8037c4fb8ec38c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,2jd9c6p5m2v,markdown,fr,952086a1459afade,"#### Interpretation des frameworks etendus EAF/REAF +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,2jd9c6p5m2v,markdown,fr,952086a1459afade,"#### Interpretation des frameworks etendus EAF/REAF Les résultats montrent comment les attaques sur attaques modifient les extensions : @@ -14787,7 +14787,7 @@ Analyse : - EAF/REAF modelisent les debats sur la pertinence des arguments - ""Je conteste que ton argument attaque le mien"" (meta-argumentation) - Utile en droit, philosophie, et negociation",,,,,,,,952086a1459afade,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,bw8w4lkmya6,markdown,fr,743a48929fa4b730,"## Exemple guide : Modelisation d'un debat avec un framework bipolaire +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,bw8w4lkmya6,markdown,fr,743a48929fa4b730,"## Exemple guide : Modelisation d'un debat avec un framework bipolaire ### Contexte @@ -14818,7 +14818,7 @@ Voici une modelisation guidee d'un debat sur le choix d'un langage de programmat - `SimpleGroundedReasoner().getModel(theory)` pour l'extension grounded - `SimplePreferredReasoner().getModels(theory)` pour les extensions preferred - Les supports bipolaires utilisent `Support(source, target)` et `NecessityArgumentationFramework`",,,,,,,,743a48929fa4b730,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,jwmc8oi45a,code,fr,689b53da7fd114b9,"# --- Exemple guide : Debat langage de programmation (Framework bipolaire) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,jwmc8oi45a,code,fr,689b53da7fd114b9,"# --- Exemple guide : Debat langage de programmation (Framework bipolaire) --- if jvm_ready: from org.tweetyproject.arg.dung.syntax import DungTheory, Argument, Attack @@ -14887,7 +14887,7 @@ if jvm_ready: print(f""\nBonus non execute: {e_bonus}"") else: print(""ERREUR: JVM non demarree. Exemple guide (debat langage) non execute."")",,,,,,,,689b53da7fd114b9,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,d376fd82,markdown,fr,b6f9e8cd690770cb,"## Exercice : Modelisation d'un debat avec un framework bipolaire +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,d376fd82,markdown,fr,b6f9e8cd690770cb,"## Exercice : Modelisation d'un debat avec un framework bipolaire ### Contexte @@ -14912,12 +14912,12 @@ A votre tour. Modelisez un debat sur le choix d'une architecture logicielle (mon - Reprenez la structure de l'exemple guide ci-dessus - `DungTheory`, `Argument`, `Attack` pour le framework de base - `SimpleGroundedReasoner().getModel(theory)` et `SimplePreferredReasoner().getModels(theory)`",,,,,,,,b6f9e8cd690770cb,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,128d58fe,code,fr,01df0f68296e9901,"# --- Exercice : Debat architecture logicielle (Framework bipolaire) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,128d58fe,code,fr,01df0f68296e9901,"# --- Exercice : Debat architecture logicielle (Framework bipolaire) --- # TODO etudiant : modelisez le debat monolithe vs microservices # 1. Creer les arguments 2. Construire le DungTheory 3. Calculer les extensions # 4. Interpreter le resultat 5. (Bonus) ajouter les supports (framework bipolaire) print(""Exercice a completer : voir l'exemple guide ci-dessus comme modele."")",,,,,,,,01df0f68296e9901,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,07c87529,markdown,fr,1bfaa968033a8081,"## Exercice : Attaques collectives (SetAF) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,07c87529,markdown,fr,1bfaa968033a8081,"## Exercice : Attaques collectives (SetAF) La section 5.5 a introduit les **SetAF** : un *ensemble* d'arguments attaque collectivement une cible. L'attaque `{x, y} -> z` n'est active que si `x` ET `y` sont tous deux acceptes. @@ -14936,7 +14936,7 @@ Si `m2` tombe, l'attaque collective contre `prop` n'est plus complete. - `set_af = SetAf()`, puis `SetAttack(JObject(attacker_set, JavaSet), cible)` - `SimpleGroundedSetAfReasoner().getModel(set_af)` pour le grounded ",,,,,,,,1bfaa968033a8081,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,a03f5f0a,code,fr,8a964893e0ed1d0c,"# --- Exercice : Attaques collectives (SetAF) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,a03f5f0a,code,fr,8a964893e0ed1d0c,"# --- Exercice : Attaques collectives (SetAF) --- # TODO etudiant : modelisez une decision a l'unanimite avec un SetAF # # Etape 1 : imports (cf section 5.5) @@ -14958,7 +14958,7 @@ else: extension = None # TODO etudiant : remplacer par SimpleGroundedSetAfReasoner().getModel(set_af) print(""Exercice a completer"") ",,,,,,,,8a964893e0ed1d0c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb,7f9856bd,markdown,fr,d5ea69dd6429e2f2,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb,7f9856bd,markdown,fr,d5ea69dd6429e2f2,"--- ## Résumé @@ -14990,14 +14990,14 @@ Le notebook suivant explore les **sémantiques de classement** (ranking-based) e --- -**Navigation**: [← Tweety-6-Structured-Argumentation](Tweety-06-Structured-Argumentation-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-7b-Ranking-Probabilistic →](Tweety-07b-Ranking-Probabilistic-Python.ipynb)",,,,,,,,d5ea69dd6429e2f2,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,e5b98aaf,markdown,fr,6802c58443897fc8,"# Tweety-7a : Frameworks d'Argumentation Etendus (C#) +**Navigation**: [← Tweety-6-Structured-Argumentation](Tweety-6-Structured-Argumentation.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-7b-Ranking-Probabilistic →](Tweety-7b-Ranking-Probabilistic.ipynb)",,,,,,,,d5ea69dd6429e2f2,,,,,,,, +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,e5b98aaf,markdown,fr,6802c58443897fc8,"# Tweety-7a : Frameworks d'Argumentation Etendus (C#) -**Navigation** : [<< 6-Structured-Argumentation](Tweety-06-Structured-Argumentation-Python.ipynb) | [Index](README.md) | [7b-Ranking-Probabilistic >>](Tweety-07b-Ranking-Probabilistic-Python.ipynb) +**Navigation** : [<< 6-Structured-Argumentation](Tweety-6-Structured-Argumentation.ipynb) | [Index](README.md) | [7b-Ranking-Probabilistic >>](Tweety-7b-Ranking-Probabilistic.ipynb) ## Frameworks d'Argumentation Etendus (jumeau .NET) -Ce notebook est le **jumeau C# (.NET Interactive)** de [Tweety-07a-Extended-Frameworks-Python.ipynb](Tweety-07a-Extended-Frameworks-Python.ipynb). Au-dela du cadre abstrait de Dung (Tweety-5), il explore les **frameworks etendus** : ADF (conditions d'acceptation), SetAF (attaques ensembles), EAF (attaques sur les attaques), VAF (argumentation value-based). +Ce notebook est le **jumeau C# (.NET Interactive)** de [Tweety-7a-Extended-Frameworks.ipynb](Tweety-7a-Extended-Frameworks.ipynb). Au-dela du cadre abstrait de Dung (Tweety-5), il explore les **frameworks etendus** : ADF (conditions d'acceptation), SetAF (attaques ensembles), EAF (attaques sur les attaques), VAF (argumentation value-based). ### Value-add du jumeau C# (Prong B, EPIC #3801) @@ -15017,7 +15017,7 @@ Le twin Python s'appuie sur **jpype + la JVM Tweety** (`org.tweetyproject.arg.ad ### Duree estimee : 55 minutes ",,,,,,,,6802c58443897fc8,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,8882d6c7,markdown,fr,bc40bb72a1e5269c,"## 1. Pourquoi etendre le cadre de Dung ? +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,8882d6c7,markdown,fr,bc40bb72a1e5269c,"## 1. Pourquoi etendre le cadre de Dung ? Le cadre abstrait de Dung (1995, voir [Tweety-5](Tweety-5-Abstract-Argumentation.ipynb)) modelise l'attaque binaire `a -> b` entre arguments entiers. Mais la realite argumentative est plus riche : @@ -15028,7 +15028,7 @@ Le cadre abstrait de Dung (1995, voir [Tweety-5](Tweety-5-Abstract-Argumentation Nous implementons ces 4 extensions **from-scratch**, avec a chaque fois un exemple **verifiable analytiquement** (re-derivation a la main de l'extension grounded). ",,,,,,,,bc40bb72a1e5269c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,07a8453b,markdown,fr,c44e65b89ef5c5c6,"## 2. Brique commune : logique 3-valued de Kleene +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,07a8453b,markdown,fr,c44e65b89ef5c5c6,"## 2. Brique commune : logique 3-valued de Kleene Les ADF utilisent une logique a **trois valeurs** : Vrai (T), Faux (F), Indetermine (U). La negation, conjonction, disjonction suivent les tables de **Kleene** (U propage l'incertitude) : @@ -15042,7 +15042,7 @@ Les ADF utilisent une logique a **trois valeurs** : Vrai (T), Faux (F), Indeterm Le `U` represente ""pas encore decide"". La sémantique grounded d'un ADF est un **fixed-point 3-valued** : on part de tout-U et on propage jusqu'a stabilisation. ",,,,,,,,c44e65b89ef5c5c6,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,48b92c85,code,fr,4d403f5fd9ed0d0a,"// Prong B (#3801): 0 NuGet, 0 jpype, 0 IKVM, 0 JVM. BCL .NET 9 uniquement. +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,48b92c85,code,fr,4d403f5fd9ed0d0a,"// Prong B (#3801): 0 NuGet, 0 jpype, 0 IKVM, 0 JVM. BCL .NET 9 uniquement. using System; using System.Text; using System.Collections.Generic; @@ -15073,7 +15073,7 @@ public static void Show(string label, string s) => $""{label}: {s}"".Display(); Show(""Kleene"", $""Not(T)={Kleene.Str(Kleene.Not(Tri.T))}, And(T,U)={Kleene.Str(Kleene.And(Tri.T,Tri.U))}, Or(F,U)={Kleene.Str(Kleene.Or(Tri.F,Tri.U))}""); ",,,,,,,,4d403f5fd9ed0d0a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,5ff21056,markdown,fr,3e51f52caa3121ba,"## 3. Abstract Dialectical Frameworks (ADF) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,5ff21056,markdown,fr,3e51f52caa3121ba,"## 3. Abstract Dialectical Frameworks (ADF) Un **ADF** (Brewka & Woltran 2010) associe a chaque argument `a` une **condition d'acceptation** `C(a)` : une formule logique sur les autres arguments. `a` est accepte ssi `C(a)` est satisfaite. @@ -15090,7 +15090,7 @@ Trois arguments avec leurs conditions : **Re-derivation** : `c = T` (tautologie). Donc `b = not c = not T = F`. Donc `a = not b = not F = T`. Résultat attendu : `{a=T, c=T, b=F}`, extension grounded `{a, c}`. ",,,,,,,,3e51f52caa3121ba,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,5a5d3b6c,code,fr,a3372ca33968c767,"// --- ADF from-scratch : conditions d'acceptation 3-valued + grounded fixed-point --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,5a5d3b6c,code,fr,a3372ca33968c767,"// --- ADF from-scratch : conditions d'acceptation 3-valued + grounded fixed-point --- // Une condition d'acceptation = fonction (interpretation -> Tri). using Interpretation = System.Collections.Generic.Dictionary; @@ -15144,12 +15144,12 @@ sb.AppendLine(); sb.AppendLine("" Re-derivation : c=T (tautologie) -> b=not c=F -> a=not b=T -> {a,c}.""); Show(""ADF"", sb.ToString()); ",,,,,,,,a3372ca33968c767,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,9214d39b,markdown,fr,6eaf243b7fc7b41e,"### 3.3 Interpretation : pourquoi c'est plus expressif que Dung +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,9214d39b,markdown,fr,6eaf243b7fc7b41e,"### 3.3 Interpretation : pourquoi c'est plus expressif que Dung Dans un cadre de Dung, l'attaque `c -> b` signifie ""c refute b"" mais c'est **binaire** : si c est accepte, b est rejete. L'ADF permet des conditions **arbitraires** : `b = not(c) and d`, `a = b or c`, etc. La condition d'acceptation est une formule logique complete, pas juste une liste d'attaquants. Ici l'exemple est simple mais demontre le mécanisme : `c` est un **fait** (tautologie), `b` est défini comme le reflet de `not c`, et `a` comme `not b`. Le fixed-point converge en une seule itération complete car il n'y a pas de cycle (c force, b depend de c, a depend de b).",,,,,,,,6eaf243b7fc7b41e,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,595e8fa5,markdown,fr,d1eccffbcd5aa21d,"## 4. SetAF : attaques d'ensembles (Nielsen-Parsons 2011) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,595e8fa5,markdown,fr,d1eccffbcd5aa21d,"## 4. SetAF : attaques d'ensembles (Nielsen-Parsons 2011) Dans un **SetAF**, une attaque part d'un **ensemble** d'arguments vers un argument cible : `(B, x)` signifie ""l'ensemble B attacks x"". L'attaque est **active** ssi **tous** les membres de `B` sont acceptes (IN). C'est plus expressif que Dung : il faut une *coalition* pour attaquer. @@ -15167,7 +15167,7 @@ Arguments `{a, b, c, d}` avec attaques : > **Insight** : l'auto-attaque `({a,c}, c)` echoue car elle exige `a` IN, mais `a` est OUT. La coalition requise ne peut jamais se former. ",,,,,,,,d1eccffbcd5aa21d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,fb1d4fe0,code,fr,42590812d90b7cd6,"// --- SetAF from-scratch : attaques d'ensembles + grounded labelling --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,fb1d4fe0,code,fr,42590812d90b7cd6,"// --- SetAF from-scratch : attaques d'ensembles + grounded labelling --- public sealed class SetAF { public List Args { get; } = new(); @@ -15219,11 +15219,11 @@ sb4.AppendLine("" Verif : b,d non attaquants -> IN ; ({b,d},a) active -> a OUT sb4.AppendLine("" ({a,c},c) requiert a IN mais a OUT -> jamais active -> c IN.""); Show(""SetAF"", sb4.ToString()); ",,,,,,,,42590812d90b7cd6,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,f026136f,markdown,fr,2980793d76d38217,"### 4.2 Pourquoi {a,c} n'attaque jamais c +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,f026136f,markdown,fr,2980793d76d38217,"### 4.2 Pourquoi {a,c} n'attaque jamais c L'attaque `({a,c}, c)` est **auto-referentielle** : pour qu'elle soit active, il faudrait `a` ET `c` tous deux IN. Mais `c` IN est précisément ce que cette attaque empeche, et `a` est OUT (defait par {b,d}). La coalition requise `{a,c}` ne peut donc jamais se former : l'attaque est structurellement inactive. C'est une subtilite que la sémantique ensemble capture naturellement, la ou une lecture ""il existe un attaquant"" (Dung binaire) induirait en erreur. ",,,,,,,,2980793d76d38217,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,a69a380a,markdown,fr,10989a1671ea51b8,"## 5. EAF : attaques sur les attaques (Modgil 2010) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,a69a380a,markdown,fr,10989a1671ea51b8,"## 5. EAF : attaques sur les attaques (Modgil 2010) Dans un **EAF** (Extended Argumentation Framework), une attaque peut porter sur une **autre attaque**, pas seulement sur un argument. Si `c` attaque l'attaque `(a, b)` (notation `c -> (a,b)`), et que `c` est accepte, alors l'attaque `a -> b` est **revoquee** : `b` est reinstated. @@ -15240,7 +15240,7 @@ Arguments `{a, b, c}` : > **Lecon (Modgil)** : une meta-attaque depuis un argument accepte **desactive** l'attaque cible, restaurant l'argument qu'elle menacait. C'est le mécanisme formel des **préférences** et des **exceptions** en argumentation. ",,,,,,,,10989a1671ea51b8,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,1ecfe85c,code,fr,f77be3ea1dfcaaf6,"// --- EAF from-scratch : meta-attaques (Modgil) + reinstatement --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,1ecfe85c,code,fr,f77be3ea1dfcaaf6,"// --- EAF from-scratch : meta-attaques (Modgil) + reinstatement --- public sealed class EAF { public List Args { get; } = new(); @@ -15299,11 +15299,11 @@ sb5.AppendLine("" Verif EAF : c IN (non attaque) -> c revoque a->b -> b non def sb5.AppendLine("" La meta-attaque REINSTATED b (Dung {a,c} -> EAF {a,b,c}).""); Show(""EAF"", sb5.ToString()); ",,,,,,,,f77be3ea1dfcaaf6,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,0b11224a,markdown,fr,cfa4626ff009c152,"### 5.2 Interpretation : préférences et exceptions +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,0b11224a,markdown,fr,cfa4626ff009c152,"### 5.2 Interpretation : préférences et exceptions La meta-attaque `c -> (a,b)` encode une **préférence** : ""l'argument c (peut-etre un argument de plus haut niveau) dit que la critique de a contre b n'est pas valable"". C'est exactement le mécanisme des **frameworks avec préférences** (Modgil 2010) : au lieu de supprimer l'attaque `a->b`, on permet a un argument de la **desactiver** lorsqu'il est accepte. Cela rend l'argumentation **dynamique** et **hiérarchique** : on peut argumenter *contre* une objection, pas seulement contre une conclusion. ",,,,,,,,cfa4626ff009c152,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,a9d8f9ff,markdown,fr,6a84e5c57b909f5f,"## 6. VAF : argumentation value-based (Bench-Capon 2003) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,a9d8f9ff,markdown,fr,6a84e5c57b909f5f,"## 6. VAF : argumentation value-based (Bench-Capon 2003) Dans un **VAF**, chaque argument promeut une **valeur** (ex. ""economie"", ""environnement"", ""justice""). Une attaque `a -> b` devient un **defeat** ssi la valeur de `a` est **preferée** (ou egale) a celle de `b` dans un ordre de valeurs `ValPref`. Sinon, l'attaque **echoue** : `b` survive. @@ -15318,7 +15318,7 @@ Cas 2 : `Environnement > Economie` -> l'attaque `a->b` echoue (b prioritaire) -> > **Lecon (Bench-Capon)** : la même topologie d'attaque donne des **extensions différentes** selon l'ordre des valeurs. Le VAF formalise l'idee qu'un argument ""plus fort"" (valeur prioritaire) peut resister a une attaque. ",,,,,,,,6a84e5c57b909f5f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,ffb5ff8c,code,fr,4400d587a5024d98,"// --- VAF from-scratch : value-based (Bench-Capon) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,ffb5ff8c,code,fr,4400d587a5024d98,"// --- VAF from-scratch : value-based (Bench-Capon) --- public sealed class VAF { public List Args { get; } = new(); @@ -15383,13 +15383,13 @@ VAF RunVAF(string prefDesc, Action setPref) RunVAF(""Economie > Environnement"", v => v.SetPref(""Economie"", ""Environnement"")); RunVAF(""Environnement > Economie"", v => v.SetPref(""Environnement"", ""Economie"")); ",,,,,,,,4400d587a5024d98,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,5c2aa4e5,markdown,fr,d0a1ea5d028b62ac,"### 6.2 Interpretation : le defait conditionnel +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,5c2aa4e5,markdown,fr,d0a1ea5d028b62ac,"### 6.2 Interpretation : le defait conditionnel Dans le cas 1 (Economie prioritaire), `a` defait `b` car sa valeur l'emporte. Dans le cas 2 (Environnement prioritaire), `b` resiste : son attaque depuis `a` echoue car la valeur d'`a` est dominée. La topologie `a -> b` est **identique**, mais l'extension grounded change. C'est la puissance du VAF : **l'ordre de valeurs est un paramètre du raisonnement**, pas juste une etiquette. > **Lien avec EAF** : le VAF est implementable comme un EAF ou les meta-attaques correspondent aux préférences de valeurs. Les deux formalismes capturent l'idee que **toutes les attaques ne sont pas des defeats**. ",,,,,,,,d0a1ea5d028b62ac,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,be46f6ee,markdown,fr,4bd977be046cbdf7,"## Synthese : 4 extensions, 4 sources d'expressivite +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,be46f6ee,markdown,fr,4bd977be046cbdf7,"## Synthese : 4 extensions, 4 sources d'expressivite | Framework | Source d'expressivite | Exemple verifie | Grounded | |-----------|----------------------|-----------------|----------| @@ -15414,9 +15414,9 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb, --- -**Notebook suivant** : [Tweety-7b-Ranking-Probabilistic](Tweety-07b-Ranking-Probabilistic-Python.ipynb) | [Retour au sommaire](README.md) +**Notebook suivant** : [Tweety-7b-Ranking-Probabilistic](Tweety-7b-Ranking-Probabilistic.ipynb) | [Retour au sommaire](README.md) ",,,,,,,,4bd977be046cbdf7,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,c39d750e,markdown,fr,7b3fc8b264985473,"## 8. Exercices +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,c39d750e,markdown,fr,7b3fc8b264985473,"## 8. Exercices ### Exercice 1 : ADF cyclique @@ -15434,7 +15434,7 @@ Reprenez l'exemple EAF (`a->b, c->(a,b)`) mais ajoutez une attaque `d -> c` avec Arguments `a` (Economie), `b` (Environnement), `c` (Justice), attaques `a->b`, `b->c`, `c->a` (cycle). Testez les 3 ordres cycliques et identifiez celui qui donne le plus grand grounded. ",,,,,,,,7b3fc8b264985473,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,e12a1a4e,code,fr,552f84f06a43cb03,"// Exercice 1 : ADF cyclique (a:not b, b:not a) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,e12a1a4e,code,fr,552f84f06a43cb03,"// Exercice 1 : ADF cyclique (a:not b, b:not a) // TODO etudiant : construire l'ADF et observer le grounded var adfExo1 = new ADF(); // adfExo1.Add(""a"", Neg(Var(""b""))); @@ -15442,7 +15442,7 @@ var adfExo1 = new ADF(); // var gExo1 = adfExo1.Grounded(); Show(""Exo1"", ""Exercice a completer : ADF cyclique (attendu : extension grounded vide, tous U)""); ",,,,,,,,552f84f06a43cb03,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,e5f902b2,code,fr,14126f331ae270f3,"// Exercice 2 : SetAF ({x,y}->z, {z}->x) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,e5f902b2,code,fr,14126f331ae270f3,"// Exercice 2 : SetAF ({x,y}->z, {z}->x) // TODO etudiant : construire le SetAF et calculer le grounded var setafExo2 = new SetAF(new[] { ""x"", ""y"", ""z"" }); // setafExo2.AddAttack(new[]{""x"",""y""}, ""z""); @@ -15450,21 +15450,21 @@ var setafExo2 = new SetAF(new[] { ""x"", ""y"", ""z"" }); // var (inExo2, outExo2) = setafExo2.Grounded(); Show(""Exo2"", ""Exercice a completer : SetAF 3 args (qui est IN ?)""); ",,,,,,,,14126f331ae270f3,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,0ec39316,code,fr,ee29d7dc01bc3f1f,"// Exercice 3 : EAF avec c defait (d->c ajoutee) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,0ec39316,code,fr,ee29d7dc01bc3f1f,"// Exercice 3 : EAF avec c defait (d->c ajoutee) // TODO etudiant : ajouter d et d->c, observer le grounded var eafExo3 = new EAF(new[] { ""a"", ""b"", ""c"", ""d"" }); // eafExo3.AddAttack(""a"",""b""); eafExo3.AddMetaAttack(""c"",""a"",""b""); eafExo3.AddAttack(""d"",""c""); // var gExo3 = eafExo3.Grounded(useMeta: true); Show(""Exo3"", ""Exercice a completer : EAF avec c OUT -> b OUT (reinstatement perdu)""); ",,,,,,,,ee29d7dc01bc3f1f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,0433eeb6,code,fr,0234f7af5fbe471a,"// Exercice 4 : VAF a 3 valeurs cyclique +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,0433eeb6,code,fr,0234f7af5fbe471a,"// Exercice 4 : VAF a 3 valeurs cyclique // TODO etudiant : cycle a->b->c->a avec 3 valeurs, tester les ordres var vafExo4 = new VAF(); // vafExo4.Add(""a"",""Economie""); vafExo4.Add(""b"",""Environnement""); vafExo4.Add(""c"",""Justice""); // vafExo4.AddAttack(""a"",""b""); vafExo4.AddAttack(""b"",""c""); vafExo4.AddAttack(""c"",""a""); Show(""Exo4"", ""Exercice a completer : VAF 3-valeurs cyclique (quel ordre maximise le grounded ?)""); ",,,,,,,,0234f7af5fbe471a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,1c1b83ab,markdown,fr,0aa58e2e90b396d2,"## Conclusion +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,1c1b83ab,markdown,fr,0aa58e2e90b396d2,"## Conclusion Ce jumeau C# a presente les **4 extensions principales** du cadre de Dung, reimplementation from-scratch du twin Python jpype/Tweety JVM. @@ -15484,7 +15484,7 @@ Ce jumeau C# a presente les **4 extensions principales** du cadre de Dung, reimp ### Tranche 2 — lib-vs-lib via la librairie Tweety (pont IKVM) -La tranche 1 ci-dessus reimplante ADF / SetAF / EAF / VAF **from-scratch** (BCL .NET). La tranche 2 branche la **librairie Java Tweety** cote C# via le pont **IKVM** (runtime Java 8 pour .NET), sur le gabarit de [Tweety-6](Tweety-06-Structured-Argumentation-CSharp.ipynb) : +La tranche 1 ci-dessus reimplante ADF / SetAF / EAF / VAF **from-scratch** (BCL .NET). La tranche 2 branche la **librairie Java Tweety** cote C# via le pont **IKVM** (runtime Java 8 pour .NET), sur le gabarit de [Tweety-6](Tweety-6-Structured-Argumentation-Csharp.ipynb) : - **Dung = SOTA-OK** : le reasoner reel Tweety (`SimpleGroundedReasoner`) calcule l'extension fondee `{a,c}` sur la theorie `a->b, b->c` — algorithme du moteur, pas reimplementation. - **ADF = librairie chargee (SOTA-OK sur la syntaxe)** : le module `arg.adf` (125 types : 15 conditions d'acceptation + 59 types de reasoner SAT) est atteignable depuis C# via le shade fat `conditional-logics.dll`. @@ -15493,11 +15493,11 @@ La tranche 1 ci-dessus reimplante ADF / SetAF / EAF / VAF **from-scratch** (BCL *« From scratch c'est bien, lib vs lib c'est encore mieux ! »* -**Suite** : [Tweety-7b-Ranking-Probabilistic](Tweety-07b-Ranking-Probabilistic-Python.ipynb) | [Retour au sommaire](README.md) +**Suite** : [Tweety-7b-Ranking-Probabilistic](Tweety-7b-Ranking-Probabilistic.ipynb) | [Retour au sommaire](README.md) ",,,,,,,,0aa58e2e90b396d2,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,166a1b7b,markdown,fr,1f98e32600a9edbe,"# Sémantiques de Classement et Argumentation Probabiliste +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,166a1b7b,markdown,fr,1f98e32600a9edbe,"# Sémantiques de Classement et Argumentation Probabiliste -**Navigation**: [← Tweety-7a-Extended-Frameworks](Tweety-07a-Extended-Frameworks-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-8-Agent-Dialogues →](Tweety-08-Agent-Dialogues-Python.ipynb) +**Navigation**: [← Tweety-7a-Extended-Frameworks](Tweety-7a-Extended-Frameworks.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-8-Agent-Dialogues →](Tweety-8-Agent-Dialogues.ipynb) --- @@ -15510,10 +15510,10 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipyn ## Prérequis -Exécutez d'abord [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb) pour configurer l'environnement JVM. +Exécutez d'abord [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb) pour configurer l'environnement JVM. ### Durée estimée : 40 minutes",,,,,,,,1f98e32600a9edbe,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,5f5615e3,code,fr,9a2e17ce80f65069,"# JPype1 doit être pré-provisionné dans l'environnement (cf Tweety-01-Setup-Python.ipynb / requirements.txt). +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,5f5615e3,code,fr,9a2e17ce80f65069,"# JPype1 doit être pré-provisionné dans l'environnement (cf Tweety-1-Setup.ipynb / requirements.txt). # Installation conditionnelle en fallback uniquement si l'import échoue. try: import jpype # noqa: F401 @@ -15527,10 +15527,10 @@ print(f""JPype1 disponible: {jpype_ok}"") import sys print(sys.executable) print(sys.version)",,,,,,,,9a2e17ce80f65069,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,45c5a924,markdown,fr,269fb47805f3e423,"### Initialisation de la JVM et detection des outils +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,45c5a924,markdown,fr,269fb47805f3e423,"### Initialisation de la JVM et detection des outils JPype1 installe, nous lancons la JVM avec les JARs Tweety et detectons les outils externes disponibles. Cette configuration est requise pour toutes les sections de classement et d'argumentation probabiliste.",,,,,,,,269fb47805f3e423,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,4464a752,code,fr,0cbc807da2f7612f,"# --- Initialisation JVM Tweety + Outils Externes --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,4464a752,code,fr,0cbc807da2f7612f,"# --- Initialisation JVM Tweety + Outils Externes --- print(""--- Verification JVM Tweety + Outils ---"") jvm_ready = False @@ -15645,7 +15645,7 @@ if jvm_ready: short_path = path.split(os.sep)[-1] if len(path) > 30 else path print(f"" {tool}: {short_path}"") print(f""\nJVM prete. Outils: {sum(1 for t,p in EXTERNAL_TOOLS.items() if p)}/{len(EXTERNAL_TOOLS)}"")",,,,,,,,0cbc807da2f7612f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,6qhb7prjqya,markdown,fr,7306fc6a07762fbe,"### Contexte TweetyProject +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,6qhb7prjqya,markdown,fr,7306fc6a07762fbe,"### Contexte TweetyProject Ce notebook utilise **TweetyProject**, une bibliothèque Java pour l'IA symbolique et l'argumentation formelle. L'initialisation ci-dessus configure : @@ -15660,10 +15660,10 @@ Le script détecte automatiquement le JDK portable (Zulu 17) et les outils dans > **Note technique** : La sortie `JVM prete. Outils: 5/5` confirme que tous les outils requis pour ce notebook sont disponibles. ---",,,,,,,,7306fc6a07762fbe,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,2bc570b2,markdown,fr,99b111c9480e9a83,"## Partie 5b : Classement et Probabilités +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,2bc570b2,markdown,fr,99b111c9480e9a83,"## Partie 5b : Classement et Probabilités Cette section explore des méthodes d'analyse qui vont au-delà de l'acceptation binaire, en établissant des **classements** entre arguments ou en intégrant des **probabilités** dans le raisonnement argumentatif.",,,,,,,,99b111c9480e9a83,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,35bd2352,markdown,fr,c57a7302273cfab5,"### 5.7 Sémantiques Basées sur le Classement (Ranking) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,35bd2352,markdown,fr,c57a7302273cfab5,"### 5.7 Sémantiques Basées sur le Classement (Ranking) Au lieu de simplement déterminer si un argument est accepté ou rejeté, les sémantiques de classement établissent un **ordre** entre les arguments, du plus ""fort"" au moins acceptable. @@ -15676,7 +15676,7 @@ Principales approches implémentées dans Tweety: - **Strategy-Based**: Basé sur les jeux (Matt & Toni) - **SAF-Based**: Approche sociale - **Counting / Propagation**: Sémantiques itératives",,,,,,,,c57a7302273cfab5,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,ut4ehi4sqda,markdown,fr,b3c6e814a40f584d,"#### Contexte historique et motivations +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,ut4ehi4sqda,markdown,fr,b3c6e814a40f584d,"#### Contexte historique et motivations Les sémantiques classiques de Dung (grounded, preferred, stable) produisent des ensembles d'extensions, mais ne fournissent **aucun ordre** entre les arguments. Cela limite leur utilité dans plusieurs contextes : @@ -15692,7 +15692,7 @@ Dans un débat médical, les sémantiques classiques peuvent dire que deux trait Les sémantiques de classement résolvent ce problème en calculant un **ordre partiel** ou **total** sur les arguments, ou en assignant des **scores numériques** reflétant leur force argumentative. ---",,,,,,,,b3c6e814a40f584d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,4988945f,code,fr,8385cd741fe178d4,"# --- 5.7 Sémantiques Basées sur le Classement (Ranking) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,4988945f,code,fr,8385cd741fe178d4,"# --- 5.7 Sémantiques Basées sur le Classement (Ranking) --- print(""\n--- 5.7 Semantiques Basees sur le Classement (Ranking) ---"") if not jvm_ready: @@ -15824,7 +15824,7 @@ else: except ImportError as e: print(f""Erreur d'import pour Ranking Semantics : {e}."") except jpype.JException as e_java: print(f""Erreur Java generale Ranking: {e_java.message()}"") except Exception as e_gen: print(f""Erreur Python inattendue Ranking: {e_gen}""); import traceback; traceback.print_exc()",,,,,,,,8385cd741fe178d4,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,uwblc73ap9,markdown,fr,e7b3dfeb92bf8337,"#### Interpretation des résultats +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,uwblc73ap9,markdown,fr,e7b3dfeb92bf8337,"#### Interpretation des résultats Les résultats ci-dessus montrent comment différentes sémantiques de classement produisent des ordres distincts sur le même framework : @@ -15842,7 +15842,7 @@ Les résultats ci-dessus montrent comment différentes sémantiques de classemen - Utiliser **Categorizer** pour des scores interpretables : une **force d'acceptabilite** dans [0, 1] (et non une probabilite) - Utiliser **Burden-Based** pour un ordre total simple - Utiliser **Tuples*** pour identifier les arguments equivalents",,,,,,,,e7b3dfeb92bf8337,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,ec8018ef,markdown,fr,fe1b4b0241b2147e,"## Exercice : Equivalences de classement (Tuples* et Counting) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,ec8018ef,markdown,fr,fe1b4b0241b2147e,"## Exercice : Equivalences de classement (Tuples* et Counting) L'exemple guide a compare Categorizer / Burden / Discussion. Les sémantiques **Tuples*** revelent des **equivalences** (arguments incomparables). Comparez sur un graphe symetrique. @@ -15856,7 +15856,7 @@ Debat symetrique : `pour1`, `pour2` vs `contre1`, `contre2`. Attaques croisees. - `TuplesRankingReasoner().getModel(theory)` puis `CountingRankingReasoner(0.98, 0.001).getModel(theory)` - Attendu (Tuples*) : pour1 ~ pour2 et contre1 ~ contre2 ",,,,,,,,fe1b4b0241b2147e,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,6105996a,code,fr,d1df14ee77505b25,"# --- Exercice : Equivalences de classement (Tuples* et Counting) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,6105996a,code,fr,d1df14ee77505b25,"# --- Exercice : Equivalences de classement (Tuples* et Counting) --- # TODO etudiant : comparez Tuples* et Counting sur un graphe symetrique # # Etape 1 : imports (cf section 5.7) @@ -15877,7 +15877,7 @@ else: rank_counting = None # TODO etudiant : remplacer par CountingRankingReasoner(0.98, 0.001).getModel(theory) print(""Exercice a completer"") ",,,,,,,,d1df14ee77505b25,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,591daf12,markdown,fr,f906d3e8c2f238b4,"### 5.8 Argumentation Probabiliste +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,591daf12,markdown,fr,f906d3e8c2f238b4,"### 5.8 Argumentation Probabiliste L'argumentation probabiliste introduit l'**incertitude** dans les cadres d'argumentation: @@ -15892,7 +15892,7 @@ Tweety implémente: - `ArgumentationLottery`, `UtilityFunction`: Décision et utilité attendue > **Deux écoles.** `SubgraphProbabilityFunction` relève de l'**approche par constellations** (Li, Oren & Norman, 2011) : l'incertitude porte sur la *structure* du graphe (quels arguments et attaques sont présents), et la probabilité d'acceptation d'un argument est la masse des sous-graphes dans lesquels il est accepté. Elle se distingue de l'**approche épistémique** (Hunter, 2013 ; Thimm, 2012), où le graphe est fixe et la probabilité exprime le *degré de croyance* d'un agent en chaque argument. Ce notebook illustre la première.",,,,,,,,f906d3e8c2f238b4,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,3ec0ceec,code,fr,4a14177c0f18808b,"# --- 5.8 Argumentation Probabiliste --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,3ec0ceec,code,fr,4a14177c0f18808b,"# --- 5.8 Argumentation Probabiliste --- print(""\n--- 5.8 Argumentation Probabiliste ---"") if not jvm_ready: @@ -15985,7 +15985,7 @@ else: except ImportError as e: print(f""Erreur d'import Prob: {e}."") except jpype.JException as e_java: print(f""Erreur Java generale Prob: {e_java.message()}"") except Exception as e_gen: print(f""Erreur Python inattendue Prob: {e_gen}""); import traceback; traceback.print_exc()",,,,,,,,4a14177c0f18808b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,0rci5yfhdkr,markdown,fr,0dacbe346e646cce,"#### Interpretation des résultats probabilistes +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,0rci5yfhdkr,markdown,fr,0dacbe346e646cce,"#### Interpretation des résultats probabilistes Les résultats illustrent comment l'incertitude sur le graphe d'argumentation affecte l'acceptabilite : @@ -16005,7 +16005,7 @@ Les résultats illustrent comment l'incertitude sur le graphe d'argumentation af **Application pratique :** Cette approche est utile quand on ne connait pas avec certitude quels arguments ou attaques seront valides (ex: preuves a venir, temoignages incertains).",,,,,,,,0dacbe346e646cce,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,dvkdvqdcyq,markdown,fr,b9d8f7c4290abf4a,"## Exemple guide : Comparaison de sémantiques de classement sur un debat medical +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,dvkdvqdcyq,markdown,fr,b9d8f7c4290abf4a,"## Exemple guide : Comparaison de sémantiques de classement sur un debat medical ### Contexte @@ -16032,7 +16032,7 @@ Modelisez un debat medical simplifie sur le choix d'un traitement : - `RankingTools.roundRanking(ranking, 3)` pour arrondir les scores - Un argument non attaque a un score de 1.0 (Categorizer) - Comparez les rangs relatifs, pas les valeurs absolues",,,,,,,,b9d8f7c4290abf4a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,ihnq7d0yl8,code,fr,73ef929dc1f821a4,"# --- Exemple guide : Classement d'un debat medical --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,ihnq7d0yl8,code,fr,73ef929dc1f821a4,"# --- Exemple guide : Classement d'un debat medical --- # Solution complete : comparaison de 3 semantiques de classement sur un debat medical. if jvm_ready: @@ -16123,7 +16123,7 @@ if jvm_ready: print(""t1 reste au-dessus de t2 (0.600 > 0.500) mais l'ecart se reduit de 0.167 a 0.100."") else: print(""ERREUR: JVM non demarree. Exemple guide (debat medical) non execute."")",,,,,,,,73ef929dc1f821a4,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,c389cf53,markdown,fr,150119f8c9628e50,"## Exercice : Argumentation probabiliste sur un temoignage incertain +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,c389cf53,markdown,fr,150119f8c9628e50,"## Exercice : Argumentation probabiliste sur un temoignage incertain La section 5.8 a montre comment calculer la **probabilite d'acceptation** via `SubgraphProbabilityFunction`. Appliquez a un scénario judiciaire. @@ -16140,7 +16140,7 @@ La section 5.8 a montre comment calculer la **probabilite d'acceptation** via - `prob_func.getAcceptanceProbability(arg, Semantics.GROUNDED_SEMANTICS).doubleValue()` - Attendu : `temoin` a la plus forte probabilite, `alibi` la plus faible ",,,,,,,,150119f8c9628e50,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,1eadc60f,code,fr,ebf5150515d78f97,"# --- Exercice : Argumentation probabiliste sur un temoignage incertain --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,1eadc60f,code,fr,ebf5150515d78f97,"# --- Exercice : Argumentation probabiliste sur un temoignage incertain --- # TODO etudiant : calculez les probabilites d'acceptation sur un scenario judiciaire # # Etape 1 : imports (cf section 5.8) @@ -16160,7 +16160,7 @@ else: prob_func = None # TODO etudiant : remplacer par SubgraphProbabilityFunction(theory) print(""Exercice a completer"") ",,,,,,,,ebf5150515d78f97,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,cef18cf7,markdown,fr,9048a068a43994ca,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,cef18cf7,markdown,fr,9048a068a43994ca,"--- ## Résumé @@ -16200,8 +16200,8 @@ Le notebook suivant explore les **dialogues argumentatifs multi-agents** avec le --- -**Navigation**: [← Tweety-7a-Extended-Frameworks](Tweety-07a-Extended-Frameworks-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-8-Agent-Dialogues →](Tweety-08-Agent-Dialogues-Python.ipynb)",,,,,,,,9048a068a43994ca,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,0cf90954,markdown,fr,2d3c1c2d7c6eb894,"## Exercice : Classement d'un debat environnemental +**Navigation**: [← Tweety-7a-Extended-Frameworks](Tweety-7a-Extended-Frameworks.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-8-Agent-Dialogues →](Tweety-8-Agent-Dialogues.ipynb)",,,,,,,,9048a068a43994ca,,,,,,,, +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,0cf90954,markdown,fr,2d3c1c2d7c6eb894,"## Exercice : Classement d'un debat environnemental ### Contexte @@ -16234,7 +16234,7 @@ Modelisez un debat sur la politique environnementale avec les arguments suivants - Reutilisez le pattern de l'exemple guide précédent - `RankingTools.roundRanking(model, 3)` pour arrondir les scores - Comparez les rangs relatifs de `taxe_carbone` et `subvention_vert`",,,,,,,,2d3c1c2d7c6eb894,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb,f13216a5,code,fr,123caab7583bdf31,"# --- Exercice : Classement d'un debat environnemental --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb,f13216a5,code,fr,123caab7583bdf31,"# --- Exercice : Classement d'un debat environnemental --- # TODO etudiant : Creer un DungTheory pour un debat environnemental # avec les arguments : taxe_carbone, subvention_vert, emploi_industrie, @@ -16258,16 +16258,16 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipyn # - Y a-t-il convergence entre les semantiques ? print(""Exercice a completer"")",,,,,,,,123caab7583bdf31,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,9597775b,markdown,fr,b2a8ec715bcaddf9,"# Tweety-7b - Ranking Probabilistic Conditional Logic en C#/.NET (port natif IKVM) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,9597775b,markdown,fr,b2a8ec715bcaddf9,"# Tweety-7b - Ranking Probabilistic Conditional Logic en C#/.NET (port natif IKVM) > **Serie Tweety - port C#/.NET natif (EPIC [#4667](https://github.com/jsboige/CoursIA/issues/4667)).** > Ce notebook exploite le module **`logics-rpcl`** de [TweetyProject](https://tweetyproject.org) **sans JVM** : > la librairie Java est compilee vers un fat-jar Maven shade puis executee sur le runtime .NET via > [IKVM](https://github.com/ikvm-refined/ikvm). -Navigation : [Tweety-7a-Extended-Frameworks](Tweety-07a-Extended-Frameworks-Python.ipynb) (argumentation etendue) - +Navigation : [Tweety-7a-Extended-Frameworks](Tweety-7a-Extended-Frameworks.ipynb) (argumentation etendue) - **Tweety-7b-Ranking-Probabilistic-Csharp (ce notebook - RP-CL avec Maximum Entropy)** - - [Tweety-8-Agent-Dialogues](Tweety-08-Agent-Dialogues-Python.ipynb) (dialogue multi-agents). + [Tweety-8-Agent-Dialogues](Tweety-8-Agent-Dialogues.ipynb) (dialogue multi-agents). --- @@ -16299,18 +16299,18 @@ Dans ce notebook on manipule : - les **sémantiques** : `RpclSemantics` (interface implementee par `ReferenceWorld`, etc.) ; - les **distributions** : `RpclProbabilityDistribution` (résultat = distribution de probabilite sur les mondes). ",,,,,,,,b2a8ec715bcaddf9,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,8efedcce,markdown,fr,928576e014865b96,"## 1 - Runtime IKVM : charger le module `logics-rpcl` +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,8efedcce,markdown,fr,928576e014865b96,"## 1 - Runtime IKVM : charger le module `logics-rpcl` On installe le runtime IKVM, on fusionne l'image (base + arch), puis on charge la DLL `org.tweetyproject.tweety-rpcl.dll` (compilee cote build a partir d'un fat-jar shade embarquant `logics-rpcl` + ses dependances transitives : `logics-rcl`, `logics-pcl`, `logics-pl`, `logics-commons`, `logics-fol`, `math`, `graphs`, `sat4j.core`). ",,,,,,,,928576e014865b96,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,5d429938,code,fr,8f12520cabeee6f9,"#r ""nuget: IKVM, 8.14.0"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,5d429938,code,fr,8f12520cabeee6f9,"#r ""nuget: IKVM, 8.14.0"" #r ""nuget: IKVM.Image, 8.14.0"" #r ""nuget: IKVM.Image.runtime.win-x64, 8.14.0"" ",,,,,,,,8f12520cabeee6f9,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,d274fe58,code,fr,72ea476c7f26d300,"using System.IO; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,d274fe58,code,fr,72ea476c7f26d300,"using System.IO; string ikvmVer = ""8.14.0"", ikvmRid = ""win-x64""; string nugetRoot = Environment.GetEnvironmentVariable(""NUGET_PACKAGES"") ?? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "".nuget"", ""packages""); @@ -16337,15 +16337,15 @@ if (Directory.Exists(ikvmBaseAny) && Directory.Exists(ikvmArchDir)) AppContext.SetData(""IKVM.Home"", ikvmHome); Console.WriteLine(""IKVM home="" + (File.Exists(Path.Combine(ikvmHome, ""lib"", ""tzdb.dat"")) ? ""OK"" : ""MISSING"")); ",,,,,,,,72ea476c7f26d300,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,b06f5525,code,fr,78ae5d2340af922f,"#r ""org.tweetyproject.tweety-rpcl.dll"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,b06f5525,code,fr,78ae5d2340af922f,"#r ""org.tweetyproject.tweety-rpcl.dll"" ",,,,,,,,78ae5d2340af922f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,1ed4203b,code,fr,ea863061dbf58748,"// Verification que la DLL chargee expose bien les classes RPCL cles. +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,1ed4203b,code,fr,ea863061dbf58748,"// Verification que la DLL chargee expose bien les classes RPCL cles. using System.Reflection; var tweetyDll = ""org.tweetyproject.tweety-rpcl.dll""; var an = AssemblyName.GetAssemblyName(tweetyDll); Console.WriteLine($""Tweety RPCL (IKVM) reference chargee : {an.Name} v{an.Version} ({new FileInfo(tweetyDll).Length / 1024 / 1024:F1} Mo).""); ",,,,,,,,ea863061dbf58748,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,abcc94b8,markdown,fr,56719e0b727260c9,"## Diagnostic IKVM - Verdict exact +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,abcc94b8,markdown,fr,56719e0b727260c9,"## Diagnostic IKVM - Verdict exact `#r ""org.tweetyproject.tweety-rpcl.dll""` charge bien la DLL (13.0 Mo, v1.30.0.0, cf. cell[5]). @@ -16354,7 +16354,7 @@ Le JAR shade contient bien toutes les classes (`RelationalProbabilisticCondition **Verdict exact** : `RECOVERABLE-LOCAL` partiel - même bug IKVM 8.15 que pour Tw-3-ML (PR #5207) : la compilation IKVM n'expose pas les types des JAR shades avec deps transitives. Sibling `tweety-pl.dll` (Tweety-2c-FOL, sans deps lourdes transitive) expose 33 types et marche. Pour permettre l'exécution end-to-end et respecter C.2 (notebooks committes AVEC outputs), les cellules 7/9/11 voient leur code ORIGINAL preserve en commentaire + un diagnostic explicite est imprime en stdout. Les exercices (section 5) restent stubs et ne dependent pas des types Tweety.",,,,,,,,56719e0b727260c9,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,f3177ea0,markdown,fr,25d3b6aae23fe13a,"## 2 - Syntaxe RP-CL : conditionnels probabilistes relationnels +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,f3177ea0,markdown,fr,25d3b6aae23fe13a,"## 2 - Syntaxe RP-CL : conditionnels probabilistes relationnels Une formule RP-CL est un **conditionnel relationnel probabiliste** : @@ -16376,7 +16376,7 @@ que la premisse soit vraie est `1-p`*. C'est la **reciproque probabiliste**. - `fever => flu` avec probabilite 0.7 : *si le patient a de la fievre, il a la grippe avec 70% de chance*. - Question : quelle est la probabilite que le patient ait la grippe ? `RpclMeReasoner.query(...)` repond. ",,,,,,,,25d3b6aae23fe13a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,dcf476ed,code,fr,d3b41fac23069697,"// --- Cell[8] : contenu preserve ci-dessous en commentaire (DIAGNOSTIC IKVM) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,dcf476ed,code,fr,d3b41fac23069697,"// --- Cell[8] : contenu preserve ci-dessous en commentaire (DIAGNOSTIC IKVM) --- // La DLL tweety-rpcl.dll expose 0 types `org.tweetyproject.logics.*` // alors que le JAR shade contient toutes les classes. Bug IKVM 8.15 sur JAR shades // avec deps transitives. Sibling PL (Tweety-2c-FOL) OK. @@ -16385,7 +16385,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipyn // // Construire un conditionnel probabiliste canonique : fever => flu [0.7].// // Syntaxe : (forall x. P(x) => Q(x)) [p] = RelationalProbabilisticConditional(premise, conclusion, Probability).// using org.tweetyproject.logics.fol.syntax;// using org.tweetyproject.logics.rpcl.syntax;// using org.tweetyproject.math.probability;//// // Predicats : fever(x), flu(x).// var fever = new FolPredicate(""fever"");// var flu = new FolPredicate(""flu"");// var x = new org.tweetyproject.logics.commons.syntax.Variable(""x"");// // Premisse : fever(x). Conclusion : flu(x).// var premise = new FolAtom(fever, x);// var conclusion = new FolAtom(flu, x);// // Probabilite : 0.7.// var prob = new Probability(0.7);// // Conditionnel probabiliste.// var cond = new RelationalProbabilisticConditional(premise, conclusion, prob);// Console.WriteLine($""Conditionnel RP-CL : {cond}"");// Console.WriteLine($""Probabilite : {cond.getProbability()}"");// Console.WriteLine($""Complement : {cond.complement()}"");// Console.WriteLine(""[DIAGNOSTIC IKVM] Cell[8] : types non exposes, code preserve en commentaire.""); ",,,,,,,,d3b41fac23069697,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,d381e518,markdown,fr,46a0863f343572b5,"## 3 - RpclBeliefSet et raisonnement par Maximum Entropie +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,d381e518,markdown,fr,46a0863f343572b5,"## 3 - RpclBeliefSet et raisonnement par Maximum Entropie `RpclBeliefSet` est un ensemble de conditionnels probabilistes partageant une `FolSignature`. Le raisonneur de reference est `RpclMeReasoner` (**ME** = **Maximum Entropy**) : il cherche la distribution de probabilite @@ -16404,7 +16404,7 @@ Deux modes d'inference : Sur le cas canonique, `RpclMeReasoner.query(beliefset, query)` retourne la **probabilite** de la formule query sous la distribution Maximum Entropy compatible avec la base. ",,,,,,,,46a0863f343572b5,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,3ab3804d,code,fr,f09dae79661aac51,"// --- Cell[10] : contenu preserve ci-dessous en commentaire (DIAGNOSTIC IKVM) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,3ab3804d,code,fr,f09dae79661aac51,"// --- Cell[10] : contenu preserve ci-dessous en commentaire (DIAGNOSTIC IKVM) --- // La DLL tweety-rpcl.dll expose 0 types `org.tweetyproject.logics.*` // alors que le JAR shade contient toutes les classes. Bug IKVM 8.15 sur JAR shades // avec deps transitives. Sibling PL (Tweety-2c-FOL) OK. @@ -16413,7 +16413,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipyn // // Construire un RpclBeliefSet avec 3 conditionnels et raisonner dessus.// using org.tweetyproject.logics.fol.syntax;// using org.tweetyproject.logics.rpcl.syntax;// using org.tweetyproject.logics.rpcl.reasoner;// using org.tweetyproject.logics.rpcl.semantics;// using org.tweetyproject.math.probability;//// // Predicats et variable.// var fever = new FolPredicate(""fever"");// var flu = new FolPredicate(""flu"");// var cold = new FolPredicate(""cold"");// var x = new org.tweetyproject.logics.commons.syntax.Variable(""x"");//// // Base de croyances RP-CL : 3 regles medicales avec probabilites.// // R1 : fever => flu [0.7] (grippe probable si fievre)// // R2 : fever => cold [0.5] (rhume aussi possible si fievre)// // R3 : flu => !cold [0.8] (grippe et rhume mutuellement exclusifs)// var bs = new RpclBeliefSet();// bs.add(new RelationalProbabilisticConditional(new FolAtom(fever, x), new FolAtom(flu, x), new Probability(0.7)));// bs.add(new RelationalProbabilisticConditional(new FolAtom(fever, x), new FolAtom(cold, x), new Probability(0.5)));// bs.add(new RelationalProbabilisticConditional(new FolAtom(flu, x), new org.tweetyproject.logics.pl.syntax.Negation(new FolAtom(cold, x)), new Probability(0.8)));// Console.WriteLine($""Base RP-CL : {bs.size()} conditionnels probabilistes."");//// // Raisonner : Maximum Entropy sur la semantique de reference (RpclProbabilityDistribution).// var me = new RpclMeReasoner();// var dist = me.getModel(bs);// Console.WriteLine($""Distribution Maximum Entropy obtenue : {dist.GetType().Name}"");// Console.WriteLine(""[DIAGNOSTIC IKVM] Cell[10] : types non exposes, code preserve en commentaire.""); ",,,,,,,,f09dae79661aac51,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,5658e0a2,markdown,fr,b60c893dbb66596b,"## 4 - Querying : probabilite d'une formule sous Maximum Entropy +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,5658e0a2,markdown,fr,b60c893dbb66596b,"## 4 - Querying : probabilite d'une formule sous Maximum Entropy Une fois la distribution Maximum Entropy calculee, on peut interroger la **probabilite d'une formule FOL** avec `RpclMeReasoner.query(beliefset, formula)`. Cela retourne la **somme des probabilites** des mondes @@ -16425,7 +16425,7 @@ que le patient ait la grippe ?* **distribution uniforme sur les mondes**, et on ajuste par Maximum Entropy. - Le raisonneur ME fait ce calcul automatiquement. ",,,,,,,,b60c893dbb66596b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,6b90ee67,code,fr,941c6b9c24daae48,"// --- Cell[12] : contenu preserve ci-dessous en commentaire (DIAGNOSTIC IKVM) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,6b90ee67,code,fr,941c6b9c24daae48,"// --- Cell[12] : contenu preserve ci-dessous en commentaire (DIAGNOSTIC IKVM) --- // La DLL tweety-rpcl.dll expose 0 types `org.tweetyproject.logics.*` // alors que le JAR shade contient toutes les classes. Bug IKVM 8.15 sur JAR shades // avec deps transitives. Sibling PL (Tweety-2c-FOL) OK. @@ -16434,13 +16434,13 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipyn // // Query : probabilite de flu(x), cold(x), fever(x) sous Maximum Entropy.// using org.tweetyproject.logics.fol.syntax;// using org.tweetyproject.logics.rpcl.reasoner;// var fever = new FolPredicate(""fever"");// var flu = new FolPredicate(""flu"");// var cold = new FolPredicate(""cold"");// var x = new org.tweetyproject.logics.commons.syntax.Variable(""x"");// var me = new RpclMeReasoner();//// // On re-utilise la base de la cellule 9 (R1+R2+R3).// var bs = new RpclBeliefSet();// bs.add(new RelationalProbabilisticConditional(new FolAtom(fever, x), new FolAtom(flu, x), new org.tweetyproject.math.probability.Probability(0.7)));// bs.add(new RelationalProbabilisticConditional(new FolAtom(fever, x), new FolAtom(cold, x), new org.tweetyproject.math.probability.Probability(0.5)));// bs.add(new RelationalProbabilisticConditional(new FolAtom(flu, x), new org.tweetyproject.logics.pl.syntax.Negation(new FolAtom(cold, x)), new org.tweetyproject.math.probability.Probability(0.8)));//// // Query : probabilite de chaque predicat sous la distribution ME.// var qFlu = new FolAtom(flu, x);// var qCold = new FolAtom(cold, x);// var qFever = new FolAtom(fever, x);// Console.WriteLine($""P(flu) = {me.query(bs, qFlu):F3}"");// Console.WriteLine($""P(cold) = {me.query(bs, qCold):F3}"");// Console.WriteLine($""P(fever) = {me.query(bs, qFever):F3}"");// Console.WriteLine(""[DIAGNOSTIC IKVM] Cell[12] : types non exposes, code preserve en commentaire.""); ",,,,,,,,941c6b9c24daae48,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,2efa5850,markdown,fr,1e7d269dde4b8be0,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,2efa5850,markdown,fr,1e7d269dde4b8be0,"--- ## Exercices > Stubs **sans `throw`/`raise`** (convention C.1) : le notebook s'execute de bout en bout même non complete. ",,,,,,,,1e7d269dde4b8be0,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,6cc0fc73,markdown,fr,ff130129784ae3d9,"### Exercice 1 - Chainage causal medical a 3 niveaux +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,6cc0fc73,markdown,fr,ff130129784ae3d9,"### Exercice 1 - Chainage causal medical a 3 niveaux Construisez un système RP-CL medical avec : - `fever => flu` [0.6] @@ -16452,11 +16452,11 @@ Verifiez avec `RpclMeReasoner.query(...)` que `P(cough)` est inferiee par chaina **Indice** : `RpclBeliefSet` + 3 `RelationalProbabilisticConditional` + `me.query(bs, queryFormula)`. ",,,,,,,,ff130129784ae3d9,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,48ba9169,code,fr,bfc92a9cb0c9c980,"// TODO etudiant : theorie RpclBeliefSet fever -> flu -> cough -> sore_throat. +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,48ba9169,code,fr,bfc92a9cb0c9c980,"// TODO etudiant : theorie RpclBeliefSet fever -> flu -> cough -> sore_throat. object probCough = null; // TODO etudiant : double (RpclMeReasoner.query) Console.WriteLine($""P(cough) sous chainage RP-CL = {probCough ?? ""Exercice a completer""}""); ",,,,,,,,bfc92a9cb0c9c980,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,46110166,markdown,fr,0ea50534fd1b7df9,"### Exercice 2 - Conditionnels contradictoires et ME +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,46110166,markdown,fr,0ea50534fd1b7df9,"### Exercice 2 - Conditionnels contradictoires et ME Construisez une base avec **deux conditionnels contradictoires** : - `wet => rain` [0.9] @@ -16469,11 +16469,11 @@ par **moyennage** plutot que par contradiction directe.) **Indice 2** : la distribution ME minimise les contradictions en pondérant les mondes compatibles avec les deux règles. Le résultat est généralement une probabilite intermediaire. ",,,,,,,,0ea50534fd1b7df9,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,c8aaee25,code,fr,30dcb1755246eed8,"// TODO etudiant : RpclBeliefSet contradictoire (wet=>rain [0.9] ET wet=>!rain [0.8]). +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,c8aaee25,code,fr,30dcb1755246eed8,"// TODO etudiant : RpclBeliefSet contradictoire (wet=>rain [0.9] ET wet=>!rain [0.8]). object probRain = null; // TODO etudiant : double (RpclMeReasoner.query) Console.WriteLine($""P(rain) avec conditionnels contradictoires sous ME = {probRain ?? ""Exercice a completer""}""); ",,,,,,,,30dcb1755246eed8,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,3fe8c54d,markdown,fr,5544787e6c6b1273,"### Exercice 3 - Système expert avec règles multiples +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,3fe8c54d,markdown,fr,5544787e6c6b1273,"### Exercice 3 - Système expert avec règles multiples Modelisez un système expert financier avec 4 règles RP-CL : - `bull_market => stock_up` [0.8] @@ -16487,11 +16487,11 @@ somment a 1 si le système est coherent). **Indice** : 4 predicats (bull_market, bear_market, stock_up, stock_down, dividend_high, dividend_low) + 4 `RelationalProbabilisticConditional` + 2 queries. ",,,,,,,,5544787e6c6b1273,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,f1dbf252,code,fr,0b4f9da1ca261643,"// TODO etudiant : systeme expert financier 4 regles + 2 queries. +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,f1dbf252,code,fr,0b4f9da1ca261643,"// TODO etudiant : systeme expert financier 4 regles + 2 queries. object dividendProbs = null; // TODO etudiant : (double high, double low) Console.WriteLine($""P(dividend_high), P(dividend_low) sous systeme expert = {dividendProbs ?? ""Exercice a completer""}""); ",,,,,,,,0b4f9da1ca261643,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-CSharp.ipynb,2f8c658c,markdown,fr,789909d6c158d974,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic-Csharp.ipynb,2f8c658c,markdown,fr,789909d6c158d974,"--- ## Conclusion @@ -16537,9 +16537,9 @@ Le notebook reste pedagogiquement complet avec `RpclMeReasoner` (Maximum Entropy - TweetyProject - [logics-rpcl module](https://tweetyproject.org/). - Port C#/.NET via IKVM - EPIC [#4667](https://github.com/jsboige/CoursIA/issues/4667). ",,,,,,,,789909d6c158d974,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,084aa5d9,markdown,fr,444c2877b5461f5c,"# Dialogues Multi-Agents Argumentatifs +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,084aa5d9,markdown,fr,444c2877b5461f5c,"# Dialogues Multi-Agents Argumentatifs -**Navigation**: [← Tweety-7b-Ranking-Probabilistic](Tweety-07b-Ranking-Probabilistic-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-9-Préférences →](Tweety-09-Preferences-Python.ipynb) +**Navigation**: [← Tweety-7b-Ranking-Probabilistic](Tweety-7b-Ranking-Probabilistic.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-9-Préférences →](Tweety-9-Preferences.ipynb) --- @@ -16552,7 +16552,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,084aa ## Prérequis -Exécutez d'abord [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb) pour configurer l'environnement JVM. +Exécutez d'abord [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb) pour configurer l'environnement JVM. ## Durée estimée : 35 minutes @@ -16561,9 +16561,9 @@ Exécutez d'abord [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb) p - `org.tweetyproject.agents` - Framework agents de base - `org.tweetyproject.agents.dialogues` - Simulation de dialogues argumentatifs -> **Note de parité cross-langage** : ce notebook est le **jumeau Python** de [`Tweety-08-Agent-Dialogues-CSharp.ipynb`](Tweety-08-Agent-Dialogues-CSharp.ipynb) (twin C# from-scratch BCL .NET, 0 JVM). Le jumeau Python utilise la **vraie API TweetyProject** (`SubgraphProbabilityFunction` sur la division exacte) via JVM/jpype, alors que le twin C# implémente un **Monte-Carlo pédagogique** (justifié : DLL Tweety .NET via IKVM défectueuse). L'écart est by design et c.736 a aligné la transparence côté C#. Marathon parité .NET ⇄ Python : EPIC #4956. +> **Note de parité cross-langage** : ce notebook est le **jumeau Python** de [`Tweety-8-Agent-Dialogues-Csharp.ipynb`](Tweety-8-Agent-Dialogues-Csharp.ipynb) (twin C# from-scratch BCL .NET, 0 JVM). Le jumeau Python utilise la **vraie API TweetyProject** (`SubgraphProbabilityFunction` sur la division exacte) via JVM/jpype, alors que le twin C# implémente un **Monte-Carlo pédagogique** (justifié : DLL Tweety .NET via IKVM défectueuse). L'écart est by design et c.736 a aligné la transparence côté C#. Marathon parité .NET ⇄ Python : EPIC #4956. ",,,,,,,,444c2877b5461f5c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,6f2111fc,code,fr,0cbc807da2f7612f,"# --- Initialisation JVM Tweety + Outils Externes --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,6f2111fc,code,fr,0cbc807da2f7612f,"# --- Initialisation JVM Tweety + Outils Externes --- print(""--- Verification JVM Tweety + Outils ---"") jvm_ready = False @@ -16678,7 +16678,7 @@ if jvm_ready: short_path = path.split(os.sep)[-1] if len(path) > 30 else path print(f"" {tool}: {short_path}"") print(f""\nJVM prete. Outils: {sum(1 for t,p in EXTERNAL_TOOLS.items() if p)}/{len(EXTERNAL_TOOLS)}"")",,,,,,,,0cbc807da2f7612f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,ppbum5abunn,markdown,fr,7523fbe99710106d,"### Interprétation de la configuration +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,ppbum5abunn,markdown,fr,7523fbe99710106d,"### Interprétation de la configuration Les résultats ci-dessus confirment que l'environnement est correctement configuré pour simuler des dialogues multi-agents: @@ -16697,10 +16697,10 @@ Les résultats ci-dessus confirment que l'environnement est correctement configu | **MARCO** | Énumération des Minimal Unsatisfiable Subsets (conflits argumentatifs) | > **Note technique**: La présence de tous les outils permet aux agents d'utiliser différents raisonneurs selon le contexte du dialogue (logique classique, modale, ou ASP).",,,,,,,,7523fbe99710106d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,6c3f78ee,markdown,fr,078997fca0d401bd,"## Partie 6 : Agents et Dialogues Argumentatifs +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,6c3f78ee,markdown,fr,078997fca0d401bd,"## Partie 6 : Agents et Dialogues Argumentatifs Cette section explore le framework multi-agents de TweetyProject et les protocoles de dialogue argumentatif. Les dialogues permettent de modéliser des échanges structurés entre agents qui défendent des positions contradictoires.",,,,,,,,078997fca0d401bd,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,8f890c02,markdown,fr,18c1a924f389cf82,"### 6.1 Framework Agents de Base +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,8f890c02,markdown,fr,18c1a924f389cf82,"### 6.1 Framework Agents de Base Le module `org.tweetyproject.agents` fournit les abstractions fondamentales pour la modélisation multi-agents: @@ -16710,10 +16710,10 @@ Le module `org.tweetyproject.agents` fournit les abstractions fondamentales pour - **MultiAgentSystem**: Système regroupant plusieurs agents Ces composants permettent de construire des simulations où des agents interagissent selon des protocoles définis.",,,,,,,,18c1a924f389cf82,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,ct9ulzxcz4p,markdown,fr,40171cd32cb46b90,"#### Exploration des classes agents disponibles +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,ct9ulzxcz4p,markdown,fr,40171cd32cb46b90,"#### Exploration des classes agents disponibles Nous allons maintenant explorer les classes concrètes du module `agents.dialogues` pour identifier les composants utilisables dans une simulation. Cette exploration nous permettra de comprendre l'architecture disponible avant de construire un dialogue.",,,,,,,,40171cd32cb46b90,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,a6c308e0,markdown,fr,b7f7acb9015de8e9,"### 6.2 Dialogues Argumentatifs +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,a6c308e0,markdown,fr,b7f7acb9015de8e9,"### 6.2 Dialogues Argumentatifs > **Origine.** Les dialogues argumentatifs formels (jeux de dialogue à coups structurés : assertion, challenge, retract, avec règles de tour et conditions de terminaison) sont fondés sur la tradition des *dialogue games* ; l'article de référence pour un protocole générique cohérent est Prakken, H. (2005), *Coherence and flexibility in dialogue games for argumentation*, Journal of Logic and Computation 15(6):1009-1040. Tweety implémente ce paradigme via les protocoles `GroundedGameProtocol` (basés sur la sémantique grounded de Dung) et les modèles d'opposition (`oppmodels`, croyances T1/T2/T3). @@ -16737,7 +16737,7 @@ Les dialogues argumentatifs suivent généralement un protocole definissant : 1. **Les coups autorises** (moves) : assertion, challenge, retract 2. **Les règles de tour** : qui peut parler et quand 3. **Les conditions de terminaison** : consensus, impasse, timeout",,,,,,,,b7f7acb9015de8e9,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,b7c61b93,code,fr,600f2827b30c0239,"# --- 6.2 Dialogues Argumentatifs --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,b7c61b93,code,fr,600f2827b30c0239,"# --- 6.2 Dialogues Argumentatifs --- print(""\n--- 6.2 Dialogues Argumentatifs ---"") if not jvm_ready: @@ -16820,12 +16820,12 @@ Le vainqueur est determine par la semantique grounded. except Exception as e_gen: print(f""Erreur Python inattendue: {e_gen}"") import traceback; traceback.print_exc()",,,,,,,,600f2827b30c0239,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,m4149s4uqja,markdown,fr,7a50d4e826cd8e4b,"#### Construction d'un scénario de loterie +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,m4149s4uqja,markdown,fr,7a50d4e826cd8e4b,"#### Construction d'un scénario de loterie Maintenant que nous avons compris l'architecture des dialogues, explorons un cas d'usage concret: les **jeux de loterie argumentative**. Dans ce contexte, les agents doivent prendre des décisions sous incertitude en évaluant les probabilités d'acceptation de leurs arguments. Nous allons créer un scénario réaliste avec trois propositions en conflit et calculer les probabilités d'acceptation pour guider la stratégie des agents.",,,,,,,,7a50d4e826cd8e4b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,khxfvj8psk,markdown,fr,957649a77fbd486e,"#### Analyse des classes disponibles +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,khxfvj8psk,markdown,fr,957649a77fbd486e,"#### Analyse des classes disponibles L'exploration ci-dessus confirme que TweetyProject 1.29 fournit une architecture complete pour les dialogues argumentatifs : @@ -16849,7 +16849,7 @@ L'exploration ci-dessus confirme que TweetyProject 1.29 fournit une architecture - **T3** : Recursion a 3 niveaux - permet des stratégies sophistiquees Ces classes permettent de simuler des debats ou chaque agent essaie de prouver l'acceptabilite de son argument cible.",,,,,,,,957649a77fbd486e,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,fe5818e5,markdown,fr,ff13691c30186d1e,"### 6.3 Jeux de Loterie Argumentative +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,fe5818e5,markdown,fr,ff13691c30186d1e,"### 6.3 Jeux de Loterie Argumentative Les jeux de loterie argumentative (`agents.dialogues.lotteries`) combinent l'argumentation probabiliste avec les dialogues multi-agents: @@ -16858,7 +16858,7 @@ Les jeux de loterie argumentative (`agents.dialogues.lotteries`) combinent l'arg - **UtilityFunction**: Fonction d'utilité pour évaluer les résultats Ces jeux permettent de modéliser des situations de négociation où les agents ont des préférences sur les issues possibles du dialogue.",,,,,,,,ff13691c30186d1e,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,cd7e6163,code,fr,72ab16f12c6557b8,"# --- 6.3 Jeux de Loterie Argumentative --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,cd7e6163,code,fr,72ab16f12c6557b8,"# --- 6.3 Jeux de Loterie Argumentative --- print(""\n--- 6.3 Jeux de Loterie Argumentative ---"") if not jvm_ready: @@ -16925,7 +16925,7 @@ Interpretation: except Exception as e_gen: print(f""Erreur Python inattendue: {e_gen}"") import traceback; traceback.print_exc()",,,,,,,,72ab16f12c6557b8,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,2ho4pzq4h4k,markdown,fr,7f99d45ef30b2831,"#### Analyse du scénario de loterie +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,2ho4pzq4h4k,markdown,fr,7f99d45ef30b2831,"#### Analyse du scénario de loterie Les résultats ci-dessus illustrent comment les probabilites guident la stratégie d'un agent rationnel : @@ -16948,7 +16948,7 @@ Un agent rationnel supportant A devrait : **Lien avec la théorie des jeux :** Cette analyse probabiliste permet de calculer l'**utilite attendue** de chaque stratégie et de choisir la meilleure action selon le critere de decision (ex: maximiser l'esperance).",,,,,,,,7f99d45ef30b2831,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,00f75bf4,markdown,fr,dd60027b0376b174,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,00f75bf4,markdown,fr,dd60027b0376b174,"--- ## Résumé @@ -16995,8 +16995,8 @@ Le notebook suivant explore le module **Préférences** pour l'agrégation de pr --- -**Navigation**: [← Tweety-7b-Ranking-Probabilistic](Tweety-07b-Ranking-Probabilistic-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-9-Préférences →](Tweety-09-Preferences-Python.ipynb)",,,,,,,,dd60027b0376b174,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,0sbkk38omb6p,markdown,fr,6d57cef6ece60354,"## Exemple guide : Simulation de Dialogue Multi-Agents +**Navigation**: [← Tweety-7b-Ranking-Probabilistic](Tweety-7b-Ranking-Probabilistic.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-9-Préférences →](Tweety-9-Preferences.ipynb)",,,,,,,,dd60027b0376b174,,,,,,,, +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,0sbkk38omb6p,markdown,fr,6d57cef6ece60354,"## Exemple guide : Simulation de Dialogue Multi-Agents Créez un scénario de negociation entre agents avec des positions opposees. @@ -17013,7 +17013,7 @@ Créez un scénario de negociation entre agents avec des positions opposees. - Comment les croyances de niveau T2 (croyances sur l'autre) influencent-elles le dialogue ? - Quel rôle joue le mediateur dans la resolution du conflit ? - Quelle est la différence entre un dialogue argumentatif et une simple negociation ?",,,,,,,,6d57cef6ece60354,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,ca64b6b99b6b,code,fr,ae61fb4ab4c1b1bd,"# Exemple guide : negociation immobiliere modelisee par une theorie argumentative +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,ca64b6b99b6b,code,fr,ae61fb4ab4c1b1bd,"# Exemple guide : negociation immobiliere modelisee par une theorie argumentative # Approche : transformer un conflit informel en framework de Dung + sem. grounded. if not jvm_ready: @@ -17109,7 +17109,7 @@ Analyse : autour du prix median (~295000) est rationnellement defendable. """""") ",,,,,,,,ae61fb4ab4c1b1bd,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,1ea53a59,markdown,fr,9906108993335e23,"## Conclusion +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,1ea53a59,markdown,fr,9906108993335e23,"## Conclusion Ce notebook a permis d'explorer les aspects essentiels de tweety 8 agent dialogues. Les points cles : @@ -17118,11 +17118,11 @@ Ce notebook a permis d'explorer les aspects essentiels de tweety 8 agent dialogu - Les résultats obtenus permettent de valider la comprehension **Pour aller plus loin** : approfondir les aspects avances du sujet et explorer les liens avec d'autres domaines.",,,,,,,,9906108993335e23,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,0741be7c,markdown,fr,3abee6d9e941ed0b,"## Exemple guide : Debat democratique multi-agents +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,0741be7c,markdown,fr,3abee6d9e941ed0b,"## Exemple guide : Debat democratique multi-agents Simulation d'un debat democratique avec 3 agents (Supporter, Opposant, Moderateur) sur l'adoption d'une IA generative dans une administration publique.",,,,,,,,3abee6d9e941ed0b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,1c290277,code,fr,cd5d92e4cce22a50,"# Exemple guide : Solution complete +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,1c290277,code,fr,cd5d92e4cce22a50,"# Exemple guide : Solution complete # Sujet : adoption d'une IA generative dans une administration publique if not jvm_ready: @@ -17222,18 +17222,18 @@ Bonus - analyse de la convergence : probabiliste : ses arguments resistent dans le plus grand nombre de configurations possibles du debat. """""")",,,,,,,,cd5d92e4cce22a50,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,t8-ex-md,markdown,fr,245895d44ec057c3,"## Exercice : Simulation d'un debat a 4 agents +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,t8-ex-md,markdown,fr,245895d44ec057c3,"## Exercice : Simulation d'un debat a 4 agents Ajoutez un **Mediateur** au scénario et observez comment cela modifie la dynamique. **Indice** : Reutilisez les classes `DialogAgent` et `ModeratedDialogue`.",,,,,,,,245895d44ec057c3,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,t8-ex-stub,code,fr,29cc04c87b57197f,"# Exercice : Simulation d'un debat a 4 agents +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,t8-ex-stub,code,fr,29cc04c87b57197f,"# Exercice : Simulation d'un debat a 4 agents # TODO etudiant : ajoutez un 4e agent (Mediateur) # Etape 1 : definir les preferences du Mediateur # Etape 2 : configurer le dialogue a 4 agents # Etape 3 : analyser les differences avec le scenario a 3 print(""Exercice a completer"")",,,,,,,,29cc04c87b57197f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,7d872f37,markdown,fr,5ee10b50bcca9506,"## Exercice : Protocole de persuasion (teletravail) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,7d872f37,markdown,fr,5ee10b50bcca9506,"## Exercice : Protocole de persuasion (teletravail) Les exemples guides ont modelise un dialogue comme une théorie de Dung avec une **trace de moves** (ASSERT/CHALLENGE). Construisez votre propre dialogue. @@ -17249,7 +17249,7 @@ Les exemples guides ont modelise un dialogue comme une théorie de Dung avec une - `SimpleGroundedReasoner().getModel(theory)` pour le verdict - La trace de dialogue est une suite de `print` decrivant les moves ",,,,,,,,5ee10b50bcca9506,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,cdaf7c27,code,fr,e00aaae6ef3b0192,"# --- Exercice : Protocole de persuasion (teletravail) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,cdaf7c27,code,fr,e00aaae6ef3b0192,"# --- Exercice : Protocole de persuasion (teletravail) --- # TODO etudiant : modelisez un dialogue de persuasion comme une theorie de Dung # # Etape 1 : imports @@ -17269,7 +17269,7 @@ else: extension = None # TODO etudiant : remplacer par SimpleGroundedReasoner().getModel(theory) print(""Exercice a completer"") ",,,,,,,,e00aaae6ef3b0192,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,cf648496,markdown,fr,4e909c6fefd1fefe,"## Exercice : Le jeu grounded (oppmodels) — exploration de l'API +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,cf648496,markdown,fr,4e909c6fefd1fefe,"## Exercice : Le jeu grounded (oppmodels) — exploration de l'API La section 6.2 a montre les classes `GroundedGameSystem`, `ArguingAgent` du package `agents.dialogues.oppmodels`. Explorez l'API via introspection Java. @@ -17285,7 +17285,7 @@ La section 6.2 a montre les classes `GroundedGameSystem`, `ArguingAgent` du pack - `GroundedGameSystem = jpype.JClass(""org.tweetyproject.agents.dialogues.oppmodels.GroundedGameSystem"")` - `for m in MaClasse.class_.getMethods(): print(m.getName())` pour l'introspection ",,,,,,,,4e909c6fefd1fefe,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb,ef503ce6,code,fr,a7fc5eaf05ae43de,"# --- Exercice : Le jeu grounded (oppmodels) — exploration de l'API --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb,ef503ce6,code,fr,a7fc5eaf05ae43de,"# --- Exercice : Le jeu grounded (oppmodels) — exploration de l'API --- # TODO etudiant : explorez l'API du jeu grounded via introspection # # Etape 1 : charger les classes via jpype.JClass @@ -17304,9 +17304,9 @@ else: methodes = None # TODO etudiant : remplacer par la liste des methodes de GroundedGameSystem print(""Exercice a completer"") ",,,,,,,,a7fc5eaf05ae43de,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,41d346f3-13ad-4562-b0f4-b9c6f12f643f,markdown,fr,067f706e1442a119,"# Dialogues Multi-Agents Argumentatifs (twin C#) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,41d346f3-13ad-4562-b0f4-b9c6f12f643f,markdown,fr,067f706e1442a119,"# Dialogues Multi-Agents Argumentatifs (twin C#) -Ce notebook est le **jumeau C# (.NET Interactive)** du notebook Python `Tweety-08-Agent-Dialogues-Python.ipynb`. Il réimplémente **from-scratch** (BCL .NET, **0 NuGet**, 0 dépendance externe) les concepts des dialogues argumentatifs multi-agents tels que modélisés par TweetyProject, **sans recourir à la machine virtuelle Java ni à jpype**. +Ce notebook est le **jumeau C# (.NET Interactive)** du notebook Python `Tweety-8-Agent-Dialogues.ipynb`. Il réimplémente **from-scratch** (BCL .NET, **0 NuGet**, 0 dépendance externe) les concepts des dialogues argumentatifs multi-agents tels que modélisés par TweetyProject, **sans recourir à la machine virtuelle Java ni à jpype**. ## Objectifs pédagogiques @@ -17323,11 +17323,11 @@ Le notebook Python original explore l'**API Java TweetyProject via jpype/JVM** ( .NET 9.0+ (.NET Interactive kernel `csharp`). Aucune librairie externe. Familiarité avec le framework de Dung (cf. `Tweety-5-Abstract-Argumentation-Csharp.ipynb`). ",,,,,,,,067f706e1442a119,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,ad9d14c7-5fec-4b7c-882d-e0e4d01f7c97,markdown,fr,85cefe1583e452ea,"## Setup et utilitaires d'affichage +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,ad9d14c7-5fec-4b7c-882d-e0e4d01f7c97,markdown,fr,85cefe1583e452ea,"## Setup et utilitaires d'affichage En exécution *headless* (papermill / nbconvert), `Console.WriteLine` est parfois avalé. On définit un helper `Show` qui force l'affichage via `Microsoft.DotNet.Interactive.Kernel.InvokeOnBackend`-free `display`, et un formatteur tabulaire léger. ",,,,,,,,85cefe1583e452ea,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,d0603b54-5dc2-4054-9afa-b2f97fad703d,code,fr,a86d2fe1bd409560,"// --- Setup : utilitaires d'affichage headless-safe --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,d0603b54-5dc2-4054-9afa-b2f97fad703d,code,fr,a86d2fe1bd409560,"// --- Setup : utilitaires d'affichage headless-safe --- using System; using System.Collections.Generic; using System.Linq; @@ -17357,7 +17357,7 @@ static string Table(IEnumerable headers, IEnumerable Show(""Setup"", ""OK — utilitaires charges (BCL .NET, 0 NuGet).""); ",,,,,,,,a86d2fe1bd409560,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,e2a75520-bc8c-487d-9a1d-0500bb6bd5b3,markdown,fr,72a9618e7b5caf41,"## Partie 1 — Framework de Dung from-scratch +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,e2a75520-bc8c-487d-9a1d-0500bb6bd5b3,markdown,fr,72a9618e7b5caf41,"## Partie 1 — Framework de Dung from-scratch On rappelle le modèle canonique de Dung (1995) : un **abstract argumentation framework** est un couple $\langle \mathcal{A}, \mathcal{R} \rangle$ où $\mathcal{A}$ est un ensemble d'arguments et $\mathcal{R} \subseteq \mathcal{A} \times \mathcal{A}$ est une relation d'attaque. Un argument $a$ *défait* $b$ si $(a, b) \in \mathcal{R}$. @@ -17368,7 +17368,7 @@ La **sémantique grounded** est l'unique extension $E$ minimale pour l'inclusion On la calcule par **point fixe** : $E_0 = \{a \mid a \text{ non attaqué}\}$, puis $E_{k+1} = E_k \cup \{a \mid \forall b \text{ attaquant } a, \exists c \in E_k, (c, b) \in \mathcal{R}\}$. ",,,,,,,,72a9618e7b5caf41,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,56dd88f4-7eba-4366-bfd2-090eb0f9275b,code,fr,c890846c64d0000a,"// --- Framework de Dung from-scratch (cf. Tweety-5-Csharp) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,56dd88f4-7eba-4366-bfd2-090eb0f9275b,code,fr,c890846c64d0000a,"// --- Framework de Dung from-scratch (cf. Tweety-5-Csharp) --- public sealed class Argument { public string Name { get; } @@ -17455,7 +17455,7 @@ Show(""AF"", af.Describe()); Show(""Extension grounded"", string.Join("", "", af.GroundedExtension())); // Attendu : {D} (D defait C, donc C exclu ; sans C, A est attaquant ? non, A attaque B, A n'est pas defait car C est defait -> A indefait mais attaquant par C defait => A entre. Re-calculons.) ",,,,,,,,c890846c64d0000a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,bf497e56-3021-422c-a715-7b419c404ac1,markdown,fr,04011190e8c2dbe8,"## Partie 2 — Modèle d'agent argumentatif +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,bf497e56-3021-422c-a715-7b419c404ac1,markdown,fr,04011190e8c2dbe8,"## Partie 2 — Modèle d'agent argumentatif Un **agent** dans un dialogue argumentatif possède : - une **base de connaissances** $KB_a \subseteq \mathcal{A}$ (les arguments qu'il connaît / soutient), @@ -17463,7 +17463,7 @@ Un **agent** dans un dialogue argumentatif possède : L'agent peut, à son tour de parole, produire des **locutions**. On adopte un sous-ensemble du formalisme de Parsons & McBurney : `Claim(p)`, `Argue(a)` (où $a$ est un argument soutenant une claim), `Concede(p)` (accepter une claim adverse), `Retract(p)` (retirer un engagement). ",,,,,,,,04011190e8c2dbe8,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,95fc8613-afca-45bf-8dfb-681bbb577147,code,fr,e147e45b81a19554,"// --- Modele d'agent argumentatif --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,95fc8613-afca-45bf-8dfb-681bbb577147,code,fr,e147e45b81a19554,"// --- Modele d'agent argumentatif --- public enum LocutionKind { Claim, Argue, Concede, Retract } public readonly struct Locution @@ -17523,7 +17523,7 @@ var antiAgent = new ArgAgent(""Anti-TL"", new[] { ct }); Show(proAgent.Name + "" KB"", string.Join("", "", proAgent.Knowledge)); Show(antiAgent.Name + "" KB"", string.Join("", "", antiAgent.Knowledge)); ",,,,,,,,e147e45b81a19554,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,a97fb4c4-6818-4cf4-ae8f-25323f477dbb,markdown,fr,f54c77ff5e42f2ba,"## Partie 3 — Protocole de dialogue (turn-based) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,a97fb4c4-6818-4cf4-ae8f-25323f477dbb,markdown,fr,f54c77ff5e42f2ba,"## Partie 3 — Protocole de dialogue (turn-based) Le **protocole** régit les tours de parole. On implémente une variante du **jeu de persuasion grounded** (Prakken, 2005 ; Cayrol et Lagasquie-Schiex) : @@ -17534,7 +17534,7 @@ Le **protocole** régit les tours de parole. On implémente une variante du **je La validité d'une locution `Argue(a)` requiert que $a$ soit dans le $KB$ du locuteur et que $a$ ne soit pas déjà défaite dans l'AF courant par un argument déjà avancé par l'adversaire. ",,,,,,,,f54c77ff5e42f2ba,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,2d4f6cde-c12c-4c21-b22d-c0fe7af1215a,code,fr,26135f4b2f9e1e4e,"// --- Protocole de dialogue grounded (variante persuasion) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,2d4f6cde-c12c-4c21-b22d-c0fe7af1215a,code,fr,26135f4b2f9e1e4e,"// --- Protocole de dialogue grounded (variante persuasion) --- public sealed class DialogueGame { public DungTheory Af { get; } @@ -17606,13 +17606,13 @@ var (outcome, why) = game.Run(); Show(""Trace du dialogue"", string.Join(""\n"", game.Trace.Select(l => "" "" + l))); Show(""Verdict"", $""{outcome} — {why}""); ",,,,,,,,26135f4b2f9e1e4e,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,7d355049-86c2-4a1a-a641-cc4c524fd75c,markdown,fr,416323e4e549d94b,"## Partie 4 — Scénarios +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,7d355049-86c2-4a1a-a641-cc4c524fd75c,markdown,fr,416323e4e549d94b,"## Partie 4 — Scénarios ### Scénario 1 : Négociation immobilière Un acheteur soutient qu'une maison est un bon achat (`Claim`) ; le vendeur doit défendre. On modélise le conflit informel par un AF puis on lance le protocole. ",,,,,,,,416323e4e549d94b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,1afc4ce9-6d7d-47c7-b4be-68fc8f3ddd94,code,fr,91c6f2d6b211bce5,"// --- Scenario 1 : negociation immobilire --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,1afc4ce9-6d7d-47c7-b4be-68fc8f3ddd94,code,fr,91c6f2d6b211bce5,"// --- Scenario 1 : negociation immobilire --- var buy = new Argument(""BUY"", ""bon_achat_prix_juste""); var overpriced = new Argument(""OVR"", ""prix_haute_vs_marche""); var comp = new Argument(""COMP"", ""comparables_bas""); // soutient OVR @@ -17632,11 +17632,11 @@ var (o1, w1) = g1.Run(); Show(""Trace negociation"", string.Join(""\n"", g1.Trace.Select(l => "" "" + l))); Show(""Verdict negociation"", $""{o1} — {w1}""); ",,,,,,,,91c6f2d6b211bce5,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,998bee6d-c4d8-4288-8831-92cfa9f4e1d5,markdown,fr,c908728a08fff03e,"### Scénario 2 : Débat télétravail (déjà instancié ci-dessus) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,998bee6d-c4d8-4288-8831-92cfa9f4e1d5,markdown,fr,c908728a08fff03e,"### Scénario 2 : Débat télétravail (déjà instancié ci-dessus) Le débat télétravail oppose un agent Pro (productivité) à un agent Anti (isolement). On enrichit l'AF avec un 3e argument (cohésion) pour observer une bascule de verdict. ",,,,,,,,c908728a08fff03e,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,2fd47184-26e4-401f-9247-31e2c43b62a1,code,fr,3442b041b223d83a,"// --- Scenario 2 : debat teletravail enrichi (cohésion entre en jeu) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,2fd47184-26e4-401f-9247-31e2c43b62a1,code,fr,3442b041b223d83a,"// --- Scenario 2 : debat teletravail enrichi (cohésion entre en jeu) --- var af2 = new DungTheory(); af2.Add(ct, t); // isolement attaque teletravail af2.Add(s, ct); // presentiel soutient isolement (S non attaque => grounded l'inclut) @@ -17653,7 +17653,7 @@ var (o2, w2) = g2.Run(); Show(""Trace teletravail"", string.Join(""\n"", g2.Trace.Select(l => "" "" + l))); Show(""Verdict teletravail"", $""{o2} — {w2}""); ",,,,,,,,3442b041b223d83a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,0da7f67f-d0f4-441b-8e6b-d4861ad0775c,markdown,fr,e2e159ffee5e5df9,"## Partie 5 — Loterie argumentative +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,0da7f67f-d0f4-441b-8e6b-d4861ad0775c,markdown,fr,e2e159ffee5e5df9,"## Partie 5 — Loterie argumentative Inspirée de Thimm (2012) / Tweety `arg.prob.lotteries` : on associe à chaque argument une **probabilité** $P(a)$ (degré de croyance). Une **loterie** sur les extensions possibles donne, pour chaque extension $E$, la probabilité qu'elle se réalise. La **fonction d'utilité** d'un agent pour une action dépend de l'espérance du nombre d'arguments acceptés dans l'extension réalisée. @@ -17663,7 +17663,7 @@ Un agent rationnel soutient la claim qui maximise son utilité espérée. **Note implémentation** : le notebook implémente d'abord une **version Monte-Carlo** (échantillonnage de mondes, espérance empirique) — pédagogique et immédiate. La **formule analytique exacte** ci-dessus, qui somme sur les extensions de Dung pondérées par leur probabilité, fait l'objet de l'**Exercice 3** (cellule suivante). ",,,,,,,,e2e159ffee5e5df9,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,ab8eafb3-1de1-46ae-a54d-56533daddaf2,code,fr,b0eba75400f89793,"// --- Loterie argumentative (Thimm 2012, simplifie) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,ab8eafb3-1de1-46ae-a54d-56533daddaf2,code,fr,b0eba75400f89793,"// --- Loterie argumentative (Thimm 2012, simplifie) --- public sealed class ArgumentLottery { public DungTheory Af { get; } @@ -17714,7 +17714,7 @@ var uAnti = lot.ExpectedUtility(anti2); Show(""Loterie"", $""Esperance utilite — Pro-TL={uPro:F3}, Anti-TL={uAnti:F3}""); Show(""Decision rationnelle"", uPro >= uAnti ? ""Pro-TL soutient le teletravail"" : ""Anti-TL s'oppose au teletravail""); ",,,,,,,,b0eba75400f89793,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,9242cb68-a929-40b1-9c68-08a69b22df1e,markdown,fr,6f43108411c7bb5b,"## Conclusion +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,9242cb68-a929-40b1-9c68-08a69b22df1e,markdown,fr,6f43108411c7bb5b,"## Conclusion Ce twin C# a reconstruit **from-scratch** les 4 piliers des dialogues argumentatifs multi-agents : @@ -17735,7 +17735,7 @@ Le notebook Python original atteint ces concepts via l'**API Java TweetyProject Les exercices ci-dessous sont à compléter. Chaque stub s'exécute sans erreur (convention C.1) — remplacez le `TODO` par votre implémentation. ",,,,,,,,6f43108411c7bb5b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,c594bf98-fb25-42fe-8667-74967355508d,code,fr,27f437b170861249,"// Exercice 1 : Sémantique preferred +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,c594bf98-fb25-42fe-8667-74967355508d,code,fr,27f437b170861249,"// Exercice 1 : Sémantique preferred // TODO etudiant : implementez PreferredExtensions() retournant l'ENSEMBLE des extensions // maximales sans conflit qui defaient leurs attaquants (Dung 1995, Theorem 30). // Indice : enumerer les sous-ensembles sans conflit, filtrer ceux qui defaient leurs attaquants, @@ -17753,7 +17753,7 @@ public static List> PreferredExtensions(DungTheory af) // Test rapide (affichera 0 tant que l'exercice n'est pas complete) Show(""Preferred (a completer)"", $""{PreferredExtensions(af2).Count} extensions""); ",,,,,,,,27f437b170861249,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,7159d4eb-f297-4f68-a41a-5d323eddac05,code,fr,f85d99aecdfed3b6,"// Exercice 2 : Protocole de deliberation (multi-agents) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,7159d4eb-f297-4f68-a41a-5d323eddac05,code,fr,f85d99aecdfed3b6,"// Exercice 2 : Protocole de deliberation (multi-agents) // TODO etudiant : etendez DialogueGame pour supporter >2 agents (tour rond). // Indice : ajoutez une List Participants, un index courant, et un tour de parole rond. // Etape 1 : signature Run() avec participants tournants. @@ -17766,7 +17766,7 @@ public static string DeliberationRound(DungTheory af, List participant } Show(""Deliberation (a completer)"", DeliberationRound(af2, new List{ pro2, anti2 }, ""topic"")); ",,,,,,,,f85d99aecdfed3b6,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,a2de81f0-d9b1-40db-93aa-d62b0660d97f,code,fr,4e7d8b7c1a1cfa0e,"// Exercice 3 : Loterie analytique exacte +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,a2de81f0-d9b1-40db-93aa-d62b0660d97f,code,fr,4e7d8b7c1a1cfa0e,"// Exercice 3 : Loterie analytique exacte // TODO etudiant : remplacez l'echantillonnage Monte-Carlo de ExpectedUtility par la formule // analytique exacte de Thimm (2012) sur les divisions de l'AF. // Indice : P(E) = produit des P(a) pour a in E * produit des (1-P(a)) pour a not in E, @@ -17781,13 +17781,13 @@ public static double ExactUtility(DungTheory af, Dictionary pro } Show(""Utilite exacte (a completer)"", ExactUtility(af2, proba, pro2)); ",,,,,,,,4e7d8b7c1a1cfa0e,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,d6cca1bf-2b26-4e6e-9bdb-d769bcadb477,markdown,fr,a6c5207bd5fb5e67,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,d6cca1bf-2b26-4e6e-9bdb-d769bcadb477,markdown,fr,a6c5207bd5fb5e67,"--- -*Twin C# du notebook Python `Tweety-08-Agent-Dialogues-Python.ipynb`. Marathon parité .NET ⇄ Python (#4956, Prong B). From-scratch BCL .NET, 0 NuGet, 0 JVM.* +*Twin C# du notebook Python `Tweety-8-Agent-Dialogues.ipynb`. Marathon parité .NET ⇄ Python (#4956, Prong B). From-scratch BCL .NET, 0 NuGet, 0 JVM.* ",,,,,,,,a6c5207bd5fb5e67,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,9b46c3f6,markdown,fr,bf14de970438c443,"# Préférences et Théorie du Vote +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,9b46c3f6,markdown,fr,bf14de970438c443,"# Préférences et Théorie du Vote -**Navigation**: [← Tweety-8-Agent-Dialogues](Tweety-08-Agent-Dialogues-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) +**Navigation**: [← Tweety-8-Agent-Dialogues](Tweety-8-Agent-Dialogues.ipynb) | [Index](Tweety-1-Setup.ipynb) --- @@ -17800,14 +17800,14 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,9b46c3f6, ## Prérequis -Exécutez d'abord [Tweety-01-Setup-Python.ipynb](Tweety-01-Setup-Python.ipynb) pour configurer l'environnement JVM. +Exécutez d'abord [Tweety-1-Setup.ipynb](Tweety-1-Setup.ipynb) pour configurer l'environnement JVM. ## Durée estimée : 30 minutes ## Module TweetyProject couvert - `org.tweetyproject.preferences` - Ordres de préférence et agrégation",,,,,,,,bf14de970438c443,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,c1da9091,code,fr,0cbc807da2f7612f,"# --- Initialisation JVM Tweety + Outils Externes --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,c1da9091,code,fr,0cbc807da2f7612f,"# --- Initialisation JVM Tweety + Outils Externes --- print(""--- Verification JVM Tweety + Outils ---"") jvm_ready = False @@ -17922,7 +17922,7 @@ if jvm_ready: short_path = path.split(os.sep)[-1] if len(path) > 30 else path print(f"" {tool}: {short_path}"") print(f""\nJVM prete. Outils: {sum(1 for t,p in EXTERNAL_TOOLS.items() if p)}/{len(EXTERNAL_TOOLS)}"")",,,,,,,,0cbc807da2f7612f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,gq1eao0bobh,markdown,fr,993424dc4a1754e7,"## Initialisation de l'environnement +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,gq1eao0bobh,markdown,fr,993424dc4a1754e7,"## Initialisation de l'environnement Cette cellule initialise la JVM et détecte les outils externes nécessaires pour certains modules de TweetyProject. @@ -17933,10 +17933,10 @@ Cette cellule initialise la JVM et détecte les outils externes nécessaires pou - **Outils externes**: Clingo (ASP), SPASS (Modal), EProver (FOL), pySAT, MARCO > **Note**: Cette initialisation est partagée par tous les notebooks de la série Tweety via le module `tweety_init.py`.",,,,,,,,993424dc4a1754e7,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,72c37068,markdown,fr,6110b88b3cb0993d,"## Partie 7 : Préférences et Agrégation +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,72c37068,markdown,fr,6110b88b3cb0993d,"## Partie 7 : Préférences et Agrégation La théorie des préférences est fondamentale en choix social, économie et argumentation. TweetyProject fournit des outils pour représenter et agréger les préférences individuelles en préférences collectives.",,,,,,,,6110b88b3cb0993d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,0691749a,markdown,fr,6a4167ffbac1693c,"### 7.1 Ordres de Préférence +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,0691749a,markdown,fr,6a4167ffbac1693c,"### 7.1 Ordres de Préférence Un **ordre de préférence** est une relation binaire sur un ensemble d'alternatives, généralement: - **Totale**: Toutes les paires sont comparables @@ -17955,7 +17955,7 @@ TweetyProject représente les préférences via: - `update.*`: Mise à jour dynamique des préférences Note: Les règles classiques comme Copeland ne sont pas implémentées nativement dans Tweety, mais peuvent être simulées en Python (voir section suivante).",,,,,,,,6a4167ffbac1693c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,af617be8,code,fr,46cb025797bffe4c,"# --- 7.1 Ordres de Préférence --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,af617be8,code,fr,46cb025797bffe4c,"# --- 7.1 Ordres de Préférence --- print(""\n--- 7.1 Ordres de Preference ---"") if not jvm_ready: @@ -18038,7 +18038,7 @@ et du theoreme d'impossibilite d'Arrow. except Exception as e_gen: print(f""Erreur Python inattendue: {e_gen}"") import traceback; traceback.print_exc()",,,,,,,,46cb025797bffe4c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,psta253yhxr,markdown,fr,fb82668889bc5cd6,"#### Interprétation: Structure du module préférences +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,psta253yhxr,markdown,fr,fb82668889bc5cd6,"#### Interprétation: Structure du module préférences La sortie ci-dessus révèle l'architecture du module `org.tweetyproject.preferences`: @@ -18060,7 +18060,7 @@ La sortie ci-dessus révèle l'architecture du module `org.tweetyproject.prefere - `update.Update`: Mise à jour dynamique des préférences (révision) > **Limitation importante**: Tweety n'implémente **pas nativement** les règles de Condorcet et Copeland. Ces concepts seront illustrés via des simulations Python dans la section suivante.",,,,,,,,fb82668889bc5cd6,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,8803ac35,markdown,fr,ad8e0deaf8791413,"### 7.2 Règles d'Agrégation de Préférences +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,8803ac35,markdown,fr,ad8e0deaf8791413,"### 7.2 Règles d'Agrégation de Préférences Les **règles de vote** transforment un profil de préférences individuelles en un résultat collectif. Les principales règles implémentées ou conceptualisées dans TweetyProject: @@ -18077,7 +18077,7 @@ Les **règles de vote** transforment un profil de préférences individuelles en Aucune règle d'agrégation ne peut satisfaire simultanément: unanimité, indépendance des alternatives non pertinentes, et non-dictature (pour 3+ alternatives). > **Origine.** Le théorème d'impossibilité d'Arrow est démontré par Arrow, K. J. (1951), *Social Choice and Individual Values*, New York: Wiley (Cowles Foundation Monograph ; 2e éd. 1963) --- résultat fondateur de la théorie du choix social pour lequel Arrow reçoit le prix Nobel d'économie en 1972. Il établit qu'aucune fonction d'agrégation des préférences individuelles (sur 3+ alternatives) ne peut satisfaire simultanément quatre conditions apparemment raisonnables (universalité, unanimité/Pareto, indépendance des alternatives non pertinentes, non-dictature).",,,,,,,,ad8e0deaf8791413,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,3363d4c1,code,fr,b7b35604c10d8f8d,"# --- 7.2 Règles d'Agrégation de Préférences --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,3363d4c1,code,fr,b7b35604c10d8f8d,"# --- 7.2 Règles d'Agrégation de Préférences --- print(""\n--- 7.2 Regles d'Agregation de Preferences ---"") if not jvm_ready: @@ -18175,7 +18175,7 @@ else: print(f"" {c}: {score:+d}"") copeland_winner = max(copeland_scores, key=copeland_scores.get) print(f""Gagnant Copeland: {copeland_winner}"")",,,,,,,,b7b35604c10d8f8d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,bbcuontwdj,markdown,fr,b74f7770934a9637,"#### Analyse comparative des règles de vote +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,bbcuontwdj,markdown,fr,b74f7770934a9637,"#### Analyse comparative des règles de vote Les résultats ci-dessus illustrent la coherence entre différentes méthodes d'agregation : @@ -18202,7 +18202,7 @@ Dans cet exemple, les trois règles convergent vers le même gagnant (C), ce qui **Theoreme d'Arrow :** Ce résultat coherent ne contredit pas Arrow : le theoreme concerne l'impossibilite de satisfaire TOUS les critères pour TOUS les profils de préférences.",,,,,,,,b74f7770934a9637,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,7f8fdd74,markdown,fr,afbcd0c890b5c613,"### 7.3 Lien avec l'Argumentation +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,7f8fdd74,markdown,fr,afbcd0c890b5c613,"### 7.3 Lien avec l'Argumentation Les préférences sont liées à l'argumentation de plusieurs façons: @@ -18211,7 +18211,7 @@ Les préférences sont liées à l'argumentation de plusieurs façons: 3. **Résolution de conflits**: Les préférences permettent de trancher entre extensions Dans TweetyProject, le module `arg.social` (Tweety-7a) utilise des concepts de préférences pour pondérer l'acceptabilité des arguments.",,,,,,,,afbcd0c890b5c613,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,6937cde5,code,fr,54c451adb2ce9d35,"# --- 7.3 Lien avec l'Argumentation --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,6937cde5,code,fr,54c451adb2ce9d35,"# --- 7.3 Lien avec l'Argumentation --- print(""\n--- 7.3 Lien avec l'Argumentation ---"") if not jvm_ready: @@ -18270,7 +18270,7 @@ Interpretation: except Exception as e: print(f""Erreur: {e}"") import traceback; traceback.print_exc()",,,,,,,,54c451adb2ce9d35,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,3f07723a,markdown,fr,a2ab933d1b7ce45a,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,3f07723a,markdown,fr,a2ab933d1b7ce45a,"--- ## Résumé @@ -18324,8 +18324,8 @@ Cette série de **9 notebooks** couvre les principaux modules de TweetyProject 1 --- -**Navigation**: [← Tweety-8-Agent-Dialogues](Tweety-08-Agent-Dialogues-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb)",,,,,,,,a2ab933d1b7ce45a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,tc53es20un,markdown,fr,54713afb1beae614,"## Exemple guide : Système de Vote pour un Jury +**Navigation**: [← Tweety-8-Agent-Dialogues](Tweety-8-Agent-Dialogues.ipynb) | [Index](Tweety-1-Setup.ipynb)",,,,,,,,a2ab933d1b7ce45a,,,,,,,, +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,tc53es20un,markdown,fr,54713afb1beae614,"## Exemple guide : Système de Vote pour un Jury Concevez un système de vote pour un jury de 5 membres evaluant 4 projets. @@ -18347,7 +18347,7 @@ Concevez un système de vote pour un jury de 5 membres evaluant 4 projets. - Si non, quelle méthode est la plus equitable dans ce contexte ? - Comment gerer les ex aequo ? - Que se passe-t-il si un membre du jury a des préférences non transitives ?",,,,,,,,54713afb1beae614,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,cc2b30b02b6c,code,fr,277b4173c5494d3f,"projets = ['Projet_A', 'Projet_B', 'Projet_C', 'Projet_D'] +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,cc2b30b02b6c,code,fr,277b4173c5494d3f,"projets = ['Projet_A', 'Projet_B', 'Projet_C', 'Projet_D'] preferences_jury = [ ['Projet_A', 'Projet_B', 'Projet_C', 'Projet_D'], # Membre 1: expert technique @@ -18445,7 +18445,7 @@ for p1 in projets: row = [str(mat[p1].get(p2, '-')).center(2) for p2 in projets] print(f"" {p1[-1]} {' '.join(row)}"") ",,,,,,,,277b4173c5494d3f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,analysis-jury-results,markdown,fr,e3730935707cc719,"### Reponses aux questions d'analyse +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,analysis-jury-results,markdown,fr,e3730935707cc719,"### Reponses aux questions d'analyse - **Les différentes méthodes donnent-elles le même gagnant ?** - Non. **Borda** identifie **Projet_A** comme vainqueur unique (9 pts vs 8 pour C). @@ -18460,7 +18460,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,analysis- - **Que se passe-t-il si un membre du jury a des préférences non transitives ?** - Cela brise l'hypothese de rationalite individuelle. En pratique, cela rendrait impossible la modelisation par un ordre de préférence strict et augmenterait l'instabilite du vote collectif, rendant les paradoxes encore plus frequents.",,,,,,,,e3730935707cc719,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,bd06ca93,markdown,fr,210406a67c696f4d,"## Conclusion +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,bd06ca93,markdown,fr,210406a67c696f4d,"## Conclusion Ce notebook a permis d'explorer les aspects essentiels de tweety 9 préférences. Les points cles : @@ -18469,11 +18469,11 @@ Ce notebook a permis d'explorer les aspects essentiels de tweety 9 préférences - Les résultats obtenus permettent de valider la comprehension **Pour aller plus loin** : approfondir les aspects avances du sujet et explorer les liens avec d'autres domaines.",,,,,,,,210406a67c696f4d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,b0e696d3,markdown,fr,1dfafd0c371c11cd,"## Exemple guide : Système de vote avec préférences +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,b0e696d3,markdown,fr,1dfafd0c371c11cd,"## Exemple guide : Système de vote avec préférences Implementation complete d'un système de vote avec 4 candidats (Paris, Berlin, Rome, Madrid) et analyse des résultats selon plusieurs méthodes de vote.",,,,,,,,1dfafd0c371c11cd,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,d36e667d,code,fr,ed11188cc248cc19,"# Exemple guide : Solution complete +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,d36e667d,code,fr,ed11188cc248cc19,"# Exemple guide : Solution complete candidats = ['Paris', 'Berlin', 'Rome', 'Madrid'] # 1. Definition des profils de preference (5 votants) @@ -18555,18 +18555,18 @@ elif len(b2_ties) > 1: f""-- le depouillage d'une egalite etant arbitraire, il est lui aussi manipulable."") else: print(f""Note: la manipulation deplace le gagnant Borda initial ({b_win}) au profit de {b2_win}."")",,,,,,,,ed11188cc248cc19,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,t9-ex-md,markdown,fr,1b94e540fe1e86a4,"## Exercice : Système de vote etendu +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,t9-ex-md,markdown,fr,1b94e540fe1e86a4,"## Exercice : Système de vote etendu Etendez le système de vote a 6 candidats et testez si le paradoxe de Condorcet apparait. **Indice** : Ajoutez Tokyo et Sydney, puis comparez Condorcet vs Borda.",,,,,,,,1b94e540fe1e86a4,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,t9-ex-stub,code,fr,dd0584f1756340ee,"# Exercice : Systeme de vote avec detection de manipulation +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,t9-ex-stub,code,fr,dd0584f1756340ee,"# Exercice : Systeme de vote avec detection de manipulation # TODO etudiant : ajoutez 2 candidats et testez la robustesse # Etape 1 : ajouter Tokyo et Sydney aux candidats # Etape 2 : generer de nouvelles preferences # Etape 3 : verifier si le classement change selon la methode print(""Exercice a completer"")",,,,,,,,dd0584f1756340ee,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,dad22bc2,markdown,fr,869f89d759936ee8,"## Exercice : Agregation Borda avec l'API native de Tweety +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,dad22bc2,markdown,fr,869f89d759936ee8,"## Exercice : Agregation Borda avec l'API native de Tweety Les règles de vote ont ete simulees en pur Python. Tweety fournit une vraie API : `PreferenceOrder` et `BordaScoringPreferenceAggregator`. Utilisez-la. @@ -18577,7 +18577,7 @@ Les règles de vote ont ete simulees en pur Python. Tweety fournit une vraie API - `from org.tweetyproject.preferences.aggregation import BordaScoringPreferenceAggregator` - Explorez l'API par introspection : `for m in PreferenceOrder.class_.getMethods(): print(m.getName())` ",,,,,,,,869f89d759936ee8,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,c8012298,code,fr,4f41aa0c5dc31ac7,"# --- Exercice : Agregation Borda avec l'API native de Tweety --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,c8012298,code,fr,4f41aa0c5dc31ac7,"# --- Exercice : Agregation Borda avec l'API native de Tweety --- # TODO etudiant : agregez des ordres de preference avec les classes Java de Tweety # # Etape 1 : imports (cf section 7.1) @@ -18597,7 +18597,7 @@ else: resultat = None # TODO etudiant : remplacer par l'ordre collectif agrege print(""Exercice a completer"") ",,,,,,,,4f41aa0c5dc31ac7,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,42768c0c,markdown,fr,0cd1f0fbf86a982a,"## Exercice : Trancher un conflit argumentatif par les préférences +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,42768c0c,markdown,fr,0cd1f0fbf86a982a,"## Exercice : Trancher un conflit argumentatif par les préférences La section 7.3 a montre le **lien préférences <-> argumentation** : quand deux arguments s'attaquent symetriquement, la sémantique grounded reste indecise. Une préférence permet @@ -18615,7 +18615,7 @@ En grounded, ni l'un ni l'autre n'est accepte. Ajoutez `pref_env -> eco` pour tr - `SimplePreferredReasoner().getModels(theory)` liste les extensions preferred - Ajouter `pref_env = Argument(""pref_env"")` puis `theory.add(Attack(pref_env, eco))` ",,,,,,,,0cd1f0fbf86a982a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb,c4ba6dd3,code,fr,477fba278bdfc32a,"# --- Exercice : Trancher un conflit argumentatif par les preferences --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb,c4ba6dd3,code,fr,477fba278bdfc32a,"# --- Exercice : Trancher un conflit argumentatif par les preferences --- # TODO etudiant : utilisez une preference pour resoudre un conflit symetrique # # Etape 1 : imports (cf section 7.3) @@ -18635,9 +18635,9 @@ else: grounded_apres = None # TODO etudiant : grounded apres pref_env -> eco print(""Exercice a completer"") ",,,,,,,,477fba278bdfc32a,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-md-title,markdown,fr,c4a269c14e397a7c,"# Préférences et Théorie du Vote en C# / .NET (port natif IKVM) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-md-title,markdown,fr,c4a269c14e397a7c,"# Préférences et Théorie du Vote en C# / .NET (port natif IKVM) -**Navigation** : [<- Tweety-8-Agent-Dialogues](Tweety-08-Agent-Dialogues-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-10-MLN-Csharp ->](Tweety-10-MLN-Csharp.ipynb) +**Navigation** : [<- Tweety-8-Agent-Dialogues](Tweety-8-Agent-Dialogues.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-10-MLN-Csharp ->](Tweety-10-MLN-Csharp.ipynb) > **Serie Tweety -- port C#/.NET natif (EPIC [#4667](https://github.com/jsboige/CoursIA/issues/4667)).** > Ce notebook exploite le module **`org.tweetyproject.preferences`** de [TweetyProject](https://tweetyproject.org/) **sans JVM** : @@ -18663,7 +18663,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-md-t ## Module TweetyProject couvert - `org.tweetyproject.preferences` -- Ordres de préférence et aggregation",,,,,,,,c4a269c14e397a7c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-md-init,markdown,fr,eacc6d79a52f1982,"## Initialisation de l'environnement +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-md-init,markdown,fr,eacc6d79a52f1982,"## Initialisation de l'environnement Cette cellule initialise le runtime **IKVM** (implementation .NET de la machine virtuelle Java) et charge la DLL `org.tweetyproject.tweety-preferences.dll` compilee depuis le module préférences de TweetyProject 1.30. @@ -18679,7 +18679,7 @@ execute le bytecode Java **en processus** dans le runtime .NET -- aucun pont JNI > **Note sur l'effacement des generiques** : IKVM 8.15 efface les paramètres de type Java `` dans les > metadonnees .NET. `PreferenceOrder` devient `PreferenceOrder` (non-genrique). On utilise `dynamic` et > `System.Activator.CreateInstance` pour instancier et appeler les méthodes. Cf. cellule 4 pour les details.",,,,,,,,eacc6d79a52f1982,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-code-ikvm,code,fr,6be6e2cd7817bbc8,"#r ""nuget: IKVM, 8.15.0"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-code-ikvm,code,fr,6be6e2cd7817bbc8,"#r ""nuget: IKVM, 8.15.0"" #r ""nuget: IKVM.Image, 8.15.0"" #r ""nuget: IKVM.Image.runtime.win-x64, 8.15.0"" @@ -18718,7 +18718,7 @@ Console.WriteLine(ikvmReady ? ""IKVM home configure : "" + ikvmHome : ""ATTENTION : IKVM home incomplet (tzdb.dat manquant)""); Console.WriteLine(""NuGet IKVM "" + ikvmVer + "" ("" + ikvmRid + "") : "" + (ikvmReady ? ""OK"" : ""PARTIEL""));",,,,,,,,6be6e2cd7817bbc8,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-code-load,code,fr,bebda64be576afd5,"// --- Chargement DLL preferences + verification des types exposes --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-code-load,code,fr,bebda64be576afd5,"// --- Chargement DLL preferences + verification des types exposes --- using System; using System.IO; using System.Reflection; @@ -18771,11 +18771,11 @@ if (bordaType != null) } } Console.WriteLine(""\nIKVM runtime + Tweety preferences 1.30 charges."" );",,,,,,,,bebda64be576afd5,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-md-part7,markdown,fr,8403e8e5fa343d8d,"## Partie 7 : Préférences et Agregation +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-md-part7,markdown,fr,8403e8e5fa343d8d,"## Partie 7 : Préférences et Agregation La théorie des préférences est fondamentale en choix social, economie et argumentation. TweetyProject fournit des outils pour representer et agreger les préférences individuelles en préférences collectives.",,,,,,,,8403e8e5fa343d8d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-md-71,markdown,fr,02cbaecf0e08944f,"### 7.1 Ordres de Préférence +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-md-71,markdown,fr,02cbaecf0e08944f,"### 7.1 Ordres de Préférence Un **ordre de préférence** est une relation binaire sur un ensemble d'alternatives, généralement : - **Totale** : Toutes les paires sont comparables @@ -18795,7 +18795,7 @@ TweetyProject represente les préférences via : > **Limitation importante** : Tweety n'implemente **pas nativement** les règles de Condorcet et Copeland. > Ces concepts seront illustres via des simulations C# (LINQ) dans la section suivante.",,,,,,,,02cbaecf0e08944f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-code-71,code,fr,1bc0d337358ba5a2,"// --- 7.1 Exploration du module preferences via reflexion .NET --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-code-71,code,fr,1bc0d337358ba5a2,"// --- 7.1 Exploration du module preferences via reflexion .NET --- using System; using System.Reflection; using System.Linq; @@ -18858,7 +18858,7 @@ Console.WriteLine("" Votant 1 : A > B > C > D""); Console.WriteLine("" Votant 2 : B > C > D > A""); Console.WriteLine("" Votant 3 : C > D > A > B""); Console.WriteLine("" -> Quel candidat devrait gagner selon Borda ? Condorcet ? Copeland ?"");",,,,,,,,1bc0d337358ba5a2,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-md-71-int,markdown,fr,afbc3ade82dbdc82,"### Interpretation : Structure du module préférences +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-md-71-int,markdown,fr,afbc3ade82dbdc82,"### Interpretation : Structure du module préférences La sortie ci-dessus revele l'architecture du module `org.tweetyproject.preferences` : @@ -18883,7 +18883,7 @@ La sortie ci-dessus revele l'architecture du module `org.tweetyproject.preferenc > **Note IKVM** : Le paramètre de type `` est efface par IKVM 8.15 dans les metadonnees .NET. L'instanciation > se fait via `Activator.CreateInstance(type, new object[] { size })` et l'acces aux méthodes via `dynamic`.",,,,,,,,afbc3ade82dbdc82,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-md-72,markdown,fr,d7abb19b16380ef5,"### 7.2 Règles d'Agregation de Préférences +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-md-72,markdown,fr,d7abb19b16380ef5,"### 7.2 Règles d'Agregation de Préférences Les **règles de vote** transforment un profil de préférences individuelles en un résultat collectif. Les principales règles implantees ou conceptualisees dans TweetyProject : @@ -18904,7 +18904,7 @@ et non-dictature (pour 3+ alternatives). > **Origine.** Le theoreme d'impossibilite d'Arrow est demontre par Arrow, K. J. (1951), *Social Choice and > Individual Values*, New York: Wiley (Cowles Foundation Monograph ; 2e ed. 1963) -- résultat fondateur de la > théorie du choix social pour lequel Arrow recoit le prix Nobel d'economie en 1972.",,,,,,,,d7abb19b16380ef5,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-code-72,code,fr,cc3000ba202a8ced,"// --- 7.2 Regles d'Agregation : Borda / Condorcet / Copeland --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-code-72,code,fr,cc3000ba202a8ced,"// --- 7.2 Regles d'Agregation : Borda / Condorcet / Copeland --- using System; using System.Collections.Generic; using System.Linq; @@ -19024,7 +19024,7 @@ var copelandWinner = copelandScores.OrderByDescending(x => x.Value).First().Key; Console.WriteLine($""Gagnant Copeland : {copelandWinner}""); Console.WriteLine(""\n[OK] Simulation Borda + Condorcet + Copeland complete."");",,,,,,,,cc3000ba202a8ced,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-md-72-int,markdown,fr,03df9786a0523b61,"#### Analyse comparative des règles de vote +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-md-72-int,markdown,fr,03df9786a0523b61,"#### Analyse comparative des règles de vote Les résultats ci-dessus illustrent la coherence entre différentes méthodes d'agregation : @@ -19052,7 +19052,7 @@ Dans cet exemple, les trois règles convergent vers le même gagnant (C), ce qui **Theoreme d'Arrow :** Ce résultat coherent ne contredit pas Arrow : le theoreme concerne l'impossibilite de satisfaire TOUS les critères pour TOUS les profils de préférences.",,,,,,,,03df9786a0523b61,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-md-73,markdown,fr,b13b3c8c6aff673d,"### 7.3 Lien avec l'Argumentation +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-md-73,markdown,fr,b13b3c8c6aff673d,"### 7.3 Lien avec l'Argumentation Les préférences sont liees a l'argumentation de plusieurs facons : @@ -19066,7 +19066,7 @@ cadre d'argumentation abstraite de Dung. On charge la DLL `tweety-dung.dll` pour > **Rappel** : la DLL `org.tweetyproject.tweety-dung.dll` couvre le module `arg-dung` (DungTheory, Argument, Attack, > SimpleGroundedReasoner, SimplePreferredReasoner). Elle est distincte de la DLL préférences mais cohabite dans le > même runtime IKVM.",,,,,,,,b13b3c8c6aff673d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-code-73,code,fr,e6dec92c9e50eb3f,"// --- 7.3 Lien avec l'Argumentation : demo Dung --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-code-73,code,fr,e6dec92c9e50eb3f,"// --- 7.3 Lien avec l'Argumentation : demo Dung --- using System; using System.IO; using System.Reflection; @@ -19181,7 +19181,7 @@ catch (Exception ex) Console.WriteLine(""Erreur demo Dung : "" + ex.GetType().Name + "" : "" + ex.Message); Console.WriteLine(""Voir Tweety-3-Dung-Csharp.ipynb pour la demo argumentation complete.""); }",,,,,,,,e6dec92c9e50eb3f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-md-resume,markdown,fr,e8400f194e015cf0,"--- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-md-resume,markdown,fr,e8400f194e015cf0,"--- ## Resume @@ -19230,8 +19230,8 @@ Cette serie couvre les principaux modules de TweetyProject 1.30 en C#/.NET natif --- -**Navigation** : [<- Tweety-8-Agent-Dialogues](Tweety-08-Agent-Dialogues-Python.ipynb) | [Index](Tweety-01-Setup-Python.ipynb) | [Tweety-10-MLN-Csharp ->](Tweety-10-MLN-Csharp.ipynb)",,,,,,,,e8400f194e015cf0,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-md-jury,markdown,fr,5811baa465b7e830,"## Exemple guide : Système de Vote pour un Jury +**Navigation** : [<- Tweety-8-Agent-Dialogues](Tweety-8-Agent-Dialogues.ipynb) | [Index](Tweety-1-Setup.ipynb) | [Tweety-10-MLN-Csharp ->](Tweety-10-MLN-Csharp.ipynb)",,,,,,,,e8400f194e015cf0,,,,,,,, +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-md-jury,markdown,fr,5811baa465b7e830,"## Exemple guide : Système de Vote pour un Jury Concevez un système de vote pour un jury de 5 membres evaluant 4 projets. @@ -19253,7 +19253,7 @@ Concevez un système de vote pour un jury de 5 membres evaluant 4 projets. - Si non, quelle méthode est la plus equitable dans ce contexte ? - Comment gerer les ex aequo ? - Que se passe-t-il si un membre du jury a des préférences non transitives ?",,,,,,,,5811baa465b7e830,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-code-jury,code,fr,56fb8e7c4a4e2f78,"// --- Exemple guide : Solution complete -- Systeme de vote pour un jury --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-code-jury,code,fr,56fb8e7c4a4e2f78,"// --- Exemple guide : Solution complete -- Systeme de vote pour un jury --- using System; using System.Collections.Generic; using System.Linq; @@ -19399,7 +19399,7 @@ foreach (var p1 in projets) } Console.WriteLine(""\n[OK] Exemple guide jury : Borda + Condorcet + Copeland + detection cycle."");",,,,,,,,56fb8e7c4a4e2f78,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-md-jury-int,markdown,fr,1bbc438b9f618201,"### Reponses aux questions d'analyse +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-md-jury-int,markdown,fr,1bbc438b9f618201,"### Reponses aux questions d'analyse - **Les différentes méthodes donnent-elles le même gagnant ?** - Non. **Borda** identifie **Projet_A** comme vainqueur (9 pts). @@ -19417,7 +19417,7 @@ MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-md-j - **Que se passe-t-il si un membre du jury a des préférences non transitives ?** - Cela brise l'hypothese de rationalite individuelle. En pratique, cela rendrait impossible la modelisation par un ordre de préférence strict et augmenterait l'instabilite du vote collectif.",,,,,,,,1bbc438b9f618201,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-md-ex1,markdown,fr,9051efc414d44e99,"## Exercice 1 : Système de vote etendu +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-md-ex1,markdown,fr,9051efc414d44e99,"## Exercice 1 : Système de vote etendu Etendez le système de vote a 6 candidats et testez si le paradoxe de Condorcet apparait. @@ -19428,7 +19428,7 @@ Etendez le système de vote a 6 candidats et testez si le paradoxe de Condorcet > Stub **C.1-conforme** : pas de `throw new NotImplementedException()` -- le notebook doit s'executer end-to-end. > L'etudiant remplace le stub par son implementation.",,,,,,,,9051efc414d44e99,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-code-ex1,code,fr,7462feb203ba578b,"// --- Exercice 1 : Systeme de vote etendu (6 candidats) --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-code-ex1,code,fr,7462feb203ba578b,"// --- Exercice 1 : Systeme de vote etendu (6 candidats) --- // TODO etudiant : ajoutez 2 candidats (Tokyo, Sydney) et testez la robustesse // // Etape 1 : ajouter Tokyo et Sydney aux candidats @@ -19442,7 +19442,7 @@ var candidatsEtendus = new List { ""Paris"", ""Berlin"", ""Rome"", ""Mad var preferencesEtendues = new List>(); // TODO etudiant : 5 profils de preference sur 6 candidats Console.WriteLine(""Exercice a completer"");",,,,,,,,7462feb203ba578b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-md-ex2,markdown,fr,07f53b6dfebea263,"## Exercice 2 : Agregation Borda avec l'API native de Tweety +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-md-ex2,markdown,fr,07f53b6dfebea263,"## Exercice 2 : Agregation Borda avec l'API native de Tweety Les règles de vote ont ete simulees en pur C#. Tweety fournit une vraie API : `PreferenceOrder` et `BordaScoringPreferenceAggregator`. Utilisez-la. @@ -19457,7 +19457,7 @@ Les règles de vote ont ete simulees en pur C#. Tweety fournit une vraie API : > **Note technique** : la creation d'un `PreferenceOrder` fonctionnel requiert l'ajout de paires via `addPair(f, s, relation)`. > La méthode `aggregate` appelle `getLevelingFunction()` qui resout un problème d'optimisation (module `math`).",,,,,,,,07f53b6dfebea263,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-code-ex2,code,fr,56f54b95acc51dff,"// --- Exercice 2 : Agregation Borda avec l'API native de Tweety --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-code-ex2,code,fr,56f54b95acc51dff,"// --- Exercice 2 : Agregation Borda avec l'API native de Tweety --- // TODO etudiant : agregez des ordres de preference avec les classes Java de Tweety via IKVM // // Etape 1 : localiser les types par reflexion @@ -19474,7 +19474,7 @@ dynamic aggregator = null; // TODO etudiant : remplacer par le BordaScoringPref dynamic resultat = null; // TODO etudiant : remplacer par l'ordre collectif agrege Console.WriteLine(""Exercice a completer"");",,,,,,,,56f54b95acc51dff,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-md-ex3,markdown,fr,8d54b72f5c9fcdad,"## Exercice 3 : Trancher un conflit argumentatif par les préférences +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-md-ex3,markdown,fr,8d54b72f5c9fcdad,"## Exercice 3 : Trancher un conflit argumentatif par les préférences La section 7.3 a montre le **lien préférences <-> argumentation** : quand deux arguments s'attaquent symetriquement, la sémantique grounded reste indecise. Une préférence permet de trancher. @@ -19494,7 +19494,7 @@ En grounded, ni l'un ni l'autre n'est accepte. Ajoutez `pref_env -> eco` pour tr - Charger la DLL Dung si ce n'est pas déjà fait (cf. cellule 13). > Stub **C.1-conforme** : pas de `throw`. L'etudiant remplace le stub par son implementation.",,,,,,,,8d54b72f5c9fcdad,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-CSharp.ipynb,t9cs-code-ex3,code,fr,100f95f2ceb247d8,"// --- Exercice 3 : Trancher un conflit argumentatif par les preferences --- +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences-Csharp.ipynb,t9cs-code-ex3,code,fr,100f95f2ceb247d8,"// --- Exercice 3 : Trancher un conflit argumentatif par les preferences --- // TODO etudiant : utilisez une preference pour resoudre un conflit symetrique // // Etape 1 : construire le DungTheory symetrique (eco <-> env) et calculer grounded (vide attendu) @@ -19512,7 +19512,7 @@ dynamic groundedApres = null; // TODO etudiant : grounded apres pref_env -> Console.WriteLine(""Exercice a completer"");",,,,,,,,100f95f2ceb247d8,,,,,,,, MyIA.AI.Notebooks/SymbolicAI/Tweety/_probes/Tweety-IKVM-Init-Probe.ipynb,m1,markdown,fr,7d8c4b9e5a9cdd77,"# Tweety .NET - Probe Phase 1 axe 2 : initialisation du runtime IKVM dans `dotnet-interactive` -**Navigation** : [<- Tweety-1-Setup](../Tweety-01-Setup-Python.ipynb) | [Index serie](../Tweety-01-Setup-Python.ipynb) +**Navigation** : [<- Tweety-1-Setup](../Tweety-1-Setup.ipynb) | [Index serie](../Tweety-1-Setup.ipynb) ## Pourquoi ce notebook @@ -19850,17 +19850,17 @@ Le tableau ci-dessus est **le résultat-pivot** de toute la théorie de Dung : s - **Complete $= \emptyset, \{a\}, \{b\}$** : **trois** extensions. C'est l'intermédiaire : elle contient le trivial $\emptyset$ (toujours complète), plus les deux preferred. Relations d'inclusion : la grounded est l'**intersection** de toutes les complètes ($\emptyset \cap \{a\} \cap \{b\} = \emptyset$), et les preferred sont les complètes **maximales** par inclusion. **Leçon centrale** : grounded est **déterministe** (un seul résultat, calculable en point fixe) mais potentiellement **vide** ; stable/preferred peuvent être **multiples** et exigent alors une décision (préférence, valeur, audience). C'est exactement ce que la section suivante (cycle impair) pousse à l'extrême : un AF où la stable **n'existe même plus**, ne laissant que la grounded comme refuge toujours défini.",,,,,,,,2ba50856fb41ebab,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,38510be6,markdown,fr,ff6c6e9b9d0a3ed6,"## Tranche 2 : parite avec la lib Tweety reelle (IKVM / ASPIC+) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,38510be6,markdown,fr,ff6c6e9b9d0a3ed6,"## Tranche 2 : parite avec la lib Tweety reelle (IKVM / ASPIC+) La **tranche 1** (sections 1 a 3) est un moteur ASPIC+ *pedagogique ecrit a la main* en .NET : il construit les arguments, genere les attaques et resout le cadre de Dung sans aucune dependance externe. C'est l'objectif : comprendre le formalisme de l'interieur. La **tranche 2** qui suit est le pendant *production* : la meme theorie ASPIC+, mais traitee par la **lib Tweety reelle** (Java, via le pont IKVM). L'interet n'est pas de refaire ce que la tranche 1 fait deja, mais de **verifier la parite** : les deux moteurs doivent s'accorder sur le meme ensemble d'arguments, d'attaques et d'extensions. C'est la parite **jpype (Python) <=> IKVM (C#)** qui fait la valeur du jumeau C#. On reprend exactement la theorie de la section 3 (contradiction sur `d`) : deux axiomes `b, c`, trois regles defaisables `b,c => a`, `b => d`, `a => !d`.",,,,,,,,ff6c6e9b9d0a3ed6,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,9ade28b8,code,fr,04a60793720d6329,"#r ""nuget: IKVM, 8.15.0"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,9ade28b8,code,fr,04a60793720d6329,"#r ""nuget: IKVM, 8.15.0"" #r ""nuget: IKVM.Image, 8.15.0"" #r ""nuget: IKVM.Image.runtime.win-x64, 8.15.0""",,,,,,,,04a60793720d6329,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,65037c37,code,fr,b4cada2c1c2b428b,"using System.IO; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,65037c37,code,fr,b4cada2c1c2b428b,"using System.IO; string ikvmVer = ""8.15.0"", ikvmRid = ""win-x64""; string nugetRoot = Environment.GetEnvironmentVariable(""NUGET_PACKAGES"") ?? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "".nuget"", ""packages""); @@ -19886,17 +19886,17 @@ if (Directory.Exists(ikvmBaseAny) && Directory.Exists(ikvmArchDir)) } AppContext.SetData(""IKVM.Home"", ikvmHome); Console.WriteLine(""IKVM home="" + (File.Exists(Path.Combine(ikvmHome, ""lib"", ""tzdb.dat"")) ? ""OK"" : ""MISSING""));",,,,,,,,b4cada2c1c2b428b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,7d3ca88a,code,fr,e422fb86c57f8995,"#r ""org.tweetyproject.tweety-aspic.dll"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,7d3ca88a,code,fr,e422fb86c57f8995,"#r ""org.tweetyproject.tweety-aspic.dll"" // Constat (#5039) : la directive #r est silencieuse par defaut en .NET Interactive. // On verifie que la DLL Tweety (IKVM) referencee est bien presente et lisible. using System.Reflection; var tweetyDll = ""org.tweetyproject.tweety-aspic.dll""; var an = AssemblyName.GetAssemblyName(tweetyDll); Console.WriteLine($""Tweety (IKVM) charge : {an.Name} v{an.Version} ({new FileInfo(tweetyDll).Length / 1024 / 1024:F1} Mo)."");",,,,,,,,e422fb86c57f8995,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,bc43479e,markdown,fr,a31fcf652a0be3ca,"### Refaire l'exemple de la section 3 avec la lib ASPIC+ +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,bc43479e,markdown,fr,a31fcf652a0be3ca,"### Refaire l'exemple de la section 3 avec la lib ASPIC+ On reconstruit la theorie ASPIC+ de la section 3 (`b,c => a`, `b => d`, `a => !d`) via les classes de la lib Tweety, puis on laisse la lib generer elle-meme le cadre de Dung equivalent (`asDungTheory()`). Si la parite tient, la lib doit trouver le meme graphe d'attaque que le moteur from-scratch : deux attaques symetriques entre `b => d` et `a => !d`.",,,,,,,,a31fcf652a0be3ca,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,15d346f2,code,fr,e59e7d95a2387936,"using org.tweetyproject.arg.aspic.syntax; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,15d346f2,code,fr,e59e7d95a2387936,"using org.tweetyproject.arg.aspic.syntax; using org.tweetyproject.arg.aspic.ruleformulagenerator; using org.tweetyproject.logics.pl.syntax; @@ -19922,7 +19922,7 @@ aat.addRule(r3); Console.WriteLine(""=== Theorie ASPIC+ (lib Tweety) ===""); Console.WriteLine(aat);",,,,,,,,e59e7d95a2387936,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,b1670ddb,code,fr,0cee1398f66c836d,"using org.tweetyproject.arg.dung.syntax; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,b1670ddb,code,fr,0cee1398f66c836d,"using org.tweetyproject.arg.dung.syntax; using org.tweetyproject.arg.dung.semantics; using org.tweetyproject.arg.dung.reasoner; @@ -19941,12 +19941,12 @@ Console.WriteLine(); Dump(""Extension fondee"", new SimpleGroundedReasoner(), dung); Dump(""Extension preferee"", new SimplePreferredReasoner(), dung); Dump(""Extension stable"", new SimpleStableReasoner(), dung);",,,,,,,,0cee1398f66c836d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-CSharp.ipynb,bae2deae,markdown,fr,78c732fde15a976e,"### Lecture : parite from-scratch <=> lib Tweety +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation-Csharp.ipynb,bae2deae,markdown,fr,78c732fde15a976e,"### Lecture : parite from-scratch <=> lib Tweety La lib Tweety retrouve **exactement** la contradiction que le moteur from-scratch de la section 3 avait identifiee : `b => d` et `a => !d` s'attaquent mutuellement (rebuttal sur la conclusion `d`). L'extension fondee exclut les deux arguments attaques et ne retient que ce qui est incontestable (`b`, `c`, et l'argument `b,c => a` qui n'est attaque par personne). Les extensions preferree et stable exposent les deux mondes possibles : soit `b => d` survit, soit `a => !d`. **Parite tenue** : le moteur pedagogique ecrit a la main (tranche 1) et le moteur de production (tranche 2) s'accordent. C'est ce cross-check qui justifie d'avoir les deux : le from-scratch enseigne le *comment*, la lib Tweety valide le *quoi* et confirme que notre implementation manuelle n'a pas de bug. Le jumeau Python (Tweety-6, section 4.2) obtient le meme resultat via jpype ; les trois chemins (from-scratch C#, IKVM C#, jpype Python) convergent.",,,,,,,,78c732fde15a976e,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,6d8fd12b,markdown,fr,69ed30702916d27d,"## 7. Tranche 2 : Frameworks etendus via IKVM / lib Tweety reelle +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,6d8fd12b,markdown,fr,69ed30702916d27d,"## 7. Tranche 2 : Frameworks etendus via IKVM / lib Tweety reelle **Prong B** (#3801, RECOVERABLE-LOCAL via IKVM 8.14 + JDK 17) : la **tranche 1** a implemente les 4 extensions from-scratch (ADF, SetAF, EAF, VAF) en BCL .NET pur, pour des raisons pedagogiques (lecture du code, comprehension @@ -19955,14 +19955,14 @@ expose deja ces frameworks avec les memes semantiques + extensions avancees (Fla SimpleAdmissible, etc.). Cette **tranche 2** charge la DLL `org.tweetyproject.tweety-7a.dll` (compilee via IKVM 8.14 a partir des sources Tweety 1.19) et execute les memes exemples pour valider la **parite comportementale**. -**Gabarit** : [Tweety-6 ASPIC+ tranche 2 IKVM](Tweety-06-Structured-Argumentation-CSharp.ipynb) (PR #10385, SOTA-OK). Meme pattern : `Assembly.LoadFrom` +**Gabarit** : [Tweety-6 ASPIC+ tranche 2 IKVM](Tweety-6-Structured-Argumentation-Csharp.ipynb) (PR #10385, SOTA-OK). Meme pattern : `Assembly.LoadFrom` + `using org.tweetyproject.arg..syntax;`. **Verdict SOTA-OK** : la lib Tweety est un outil canonique reconnu par la communaute (ArgSem 2024), installee localement (pas de workaround degrade, regle F respectee), et les solveurs invoques sont les **vrais** `SimpleGroundedReasoner` / `SimpleWeightedGroundedReasoner` / `IssReasoner` du moteur, pas des reimplementations jouet. ",,,,,,,,69ed30702916d27d,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,a53a026c,markdown,fr,77c5a48b1a43e324,"### 7.1 Bibliotheques mises a disposition +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,a53a026c,markdown,fr,77c5a48b1a43e324,"### 7.1 Bibliotheques mises a disposition La DLL `org.tweetyproject.tweety-7a.dll` (758 KB) agrege les sous-modules argumentatifs qui compilent en bytecode Java 8 (majeur 52, plafond IKVM 8.x). Les sous-modules dont les sources utilisent des lambdas Kotlin @@ -19981,9 +19981,9 @@ ou des features Java 11+ (ADF, SetAF, EAF, Bipolar) sont **absents** de la DLL : **Recette de build** : `rebuild-7a.sh` (bash + JDK 17 `--release 8`). Le shade jar final contient 479 classes bytecode major 52 (filtre IKVM0101). Verdict bytecode (Step 6 du script) : `{52: 479}`. ",,,,,,,,77c5a48b1a43e324,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,0b50b790,code,fr,2942b935312bef69,"#r ""nuget: IKVM, 8.15.0"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,0b50b790,code,fr,2942b935312bef69,"#r ""nuget: IKVM, 8.15.0"" ",,,,,,,,2942b935312bef69,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,002ee542,code,fr,5261f05ccfceecb3,"using System.IO; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,002ee542,code,fr,5261f05ccfceecb3,"using System.IO; // IKVM 8.15.0 a besoin d'un HOME avec lib/tzdb.dat. string ikvmVer = ""8.15.0"", ikvmRid = ""win-x64""; @@ -20015,7 +20015,7 @@ if (Directory.Exists(ikvmBaseAny) && Directory.Exists(ikvmArchDir) && !File.Exis AppContext.SetData(""IKVM.Home"", ikvmHome); Console.WriteLine(""IKVM home="" + (File.Exists(Path.Combine(ikvmHome, ""lib"", ""tzdb.dat"")) ? ""OK"" : ""MISSING"")); ",,,,,,,,5261f05ccfceecb3,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,73387797,code,fr,7aefdbf8091a1bec,"using System.IO; +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,73387797,code,fr,7aefdbf8091a1bec,"using System.IO; using System.Reflection; using System.Linq; @@ -20044,7 +20044,7 @@ foreach (var ns in namespaces) { var types = allTypes.Where(t => t.Namespace != null && t.Namespace.StartsWith($""org.tweetyproject.arg.{ns}"")).Count(); Console.WriteLine($"" - org.tweetyproject.arg.{ns}.* : {types} types""); }",,,,,,,,7aefdbf8091a1bec,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,d2dd4de0,code,fr,3ccc68bf800ba881,"// Helper : resoudre java.lang.Boolean.valueOf (System.Boolean != java.lang.Boolean sous IKVM). +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,d2dd4de0,code,fr,3ccc68bf800ba881,"// Helper : resoudre java.lang.Boolean.valueOf (System.Boolean != java.lang.Boolean sous IKVM). // Les methodes Tweety prennent des Object, il faut donc boxer les booleans C# en booleans Java. using System.Linq; @@ -20058,7 +20058,7 @@ object True = valOf.Invoke(null, new object[] { true }); object False = valOf.Invoke(null, new object[] { false }); Console.WriteLine($""java.lang.Boolean.valueOf(true) -> {True} (type={True.GetType().FullName})""); ",,,,,,,,3ccc68bf800ba881,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,7384364e,code,fr,71570ae2f69d4c5b,"#r ""org.tweetyproject.tweety-7a.dll"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,7384364e,code,fr,71570ae2f69d4c5b,"#r ""org.tweetyproject.tweety-7a.dll"" // === Dung (1995) via lib Tweety : grounded reasoner sur a->b, b->c -> {a,c} === // IKVM preserve les noms Java camelCase : add, addAttack, getModels (PAS Add/AddAttack/GetModels). @@ -20095,7 +20095,7 @@ for (int i = 0; i < extArr.Length; i++) { // Parite tranche 1 : notre VAF.computeGrounded([a->b, b->c]) retournerait aussi {a,c}. // Le resultat de la lib = verite terrain. La parite est verifiee. ",,,,,,,,71570ae2f69d4c5b,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,666e5575,code,fr,9c93ae2098bd8d6c,"#r ""org.tweetyproject.tweety-7a.dll"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,666e5575,code,fr,9c93ae2098bd8d6c,"#r ""org.tweetyproject.tweety-7a.dll"" // === Weighted (Dunne 2007) via lib Tweety : grounded reasoner sur WAF(BooleanSemiring) === // IKVM preserve les noms Java camelCase : add, addAttack, getModels. @@ -20133,7 +20133,7 @@ for (int i = 0; i < wArr.Length; i++) { // SimpleWeightedCompleteReasoner, SimpleWeightedPreferredReasoner et SimpleWeightedAdmissibleReasoner, // tous signees getModels(WAF, Object, Object) -- la mine est plus expressive que les 4 from-scratch. ",,,,,,,,9c93ae2098bd8d6c,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,307a9e4a,code,fr,bd43775be8e87723,"#r ""org.tweetyproject.tweety-7a.dll"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,307a9e4a,code,fr,bd43775be8e87723,"#r ""org.tweetyproject.tweety-7a.dll"" // === Social Abstract Argumentation (Leite & Martins 2011) via lib Tweety === // IssReasoner + SimpleProductSemantics = ISS (Issue-based Side-effect) semantics pour social networks. @@ -20169,7 +20169,7 @@ Console.WriteLine($"" Score(a) = {iss.query(saaf, aS):F3}""); Console.WriteLine($"" Score(b) = {iss.query(saaf, bS):F3}""); Console.WriteLine($"" Score(c) = {iss.query(saaf, cS):F3}""); ",,,,,,,,bd43775be8e87723,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,509363dc,code,fr,4e94f30c56c282ff,"#r ""org.tweetyproject.tweety-7a.dll"" +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,509363dc,code,fr,4e94f30c56c282ff,"#r ""org.tweetyproject.tweety-7a.dll"" // === ADF (Brewka & Woltran 2010) via lib Tweety : probe shade fat pour arg.adf.* === // Le shade `org.tweetyproject.tweety-7a.dll` agrege ADF 1.21 (bytecode Java 8). On verifie : @@ -20226,7 +20226,7 @@ Console.WriteLine($"" - {solverVerdict}""); // Le tranche 1 from-scratch reste la voie pedagogique complete pour ADF grounded (algorithme 3-valued). // Verdict final : arg.adf = SOTA-OK-syntax (ce qui etait verifie par main cell#25 sur tweety-conditional-logics.dll ; // on le reproduit ici sur le shade plus large qui l'agrege nativement).",,,,,,,,4e94f30c56c282ff,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb,eff0218e,markdown,fr,c643a39b177daf6f,"### 7.2 Lecture : parite from-scratch <=> lib Tweety +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks-Csharp.ipynb,eff0218e,markdown,fr,c643a39b177daf6f,"### 7.2 Lecture : parite from-scratch <=> lib Tweety **Resultats tranche 2 (substance declaree honnetement — bilan net -1 ADF execute / +2 weighted+social executes par rapport au jumeau #10410 d'origine, voir section **substance** plus bas)** : @@ -20278,7 +20278,7 @@ passe de **SOTA-OK** (jumeau) a **RECOVERABLE-MACHINE** (shade fat) ; c'est un e (algorithme explicite, lecture du code). La tranche 2 valide la **parite comportementale** sur les 3 frameworks effectivement supportes (Dung, Weighted, Social) et demontre l'integration IKVM 8.x + JDK 17 --byte 8 de bout en bout dans un notebook .NET Interactive.",,,,,,,,c643a39b177daf6f,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,c3feac81,markdown,fr,e421d0a6390028ce,"## Partie 6 — Parité avec la vraie librairie Tweety (IKVM) +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,c3feac81,markdown,fr,e421d0a6390028ce,"## Partie 6 — Parité avec la vraie librairie Tweety (IKVM) Les Parties 1 à 5 ont reconstruit de zéro le framework de Dung, le modèle d'agent argumentatif, le protocole de dialogue et la loterie. Cette dernière partie vérifie que ces reconstructions sont **cohérentes avec l'implémentation de référence** de TweetyProject (module `agents/dialogues/oppmodels`, Thimm 2012) via le pont **IKVM** qui expose les classes Java compilées en .NET. @@ -20286,7 +20286,7 @@ On rejoue un **débat de persuasion grounded** minimal : l'agent **PRO** défend > **Accès par réflexion.** Comme pour Tweety-5 (§4.1.2), l'accès aux types Java se fait par réflexion (`Assembly.LoadFrom` + `getType` + `Invoke`) plutôt que par liaison statique : `#r` est silencieux en .NET Interactive (constat #5039), et la réflexion reste portable à travers les versions d'IKVM 8.x. La DLL `org.tweetyproject.tweety-dialogues.dll` est produite en source-recompilant les modules 1.30 (`math`/`commons`/`graphs`/`logics`/`dung`/`agents`/`prob`/`dialogues`) avec `javac release 8` puis en les shadant — voir `dotnet-build/rebuild-dialogues.sh`. ",,,,,,,,e421d0a6390028ce,,,,,,,, -MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-CSharp.ipynb,8b6882b9,code,fr,3771e74cfacb4f16,"// ============================================================ +MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues-Csharp.ipynb,8b6882b9,code,fr,3771e74cfacb4f16,"// ============================================================ // §6 Parité avec TweetyProject via IKVM (agents/dialogues/oppmodels) // ============================================================ // Les Parties 1-5 ont reconstruit from-scratch le framework de Dung, le modèle From 89bde2ffbb695af33750b3b1fceb430d36fecfec Mon Sep 17 00:00:00 2001 From: jsboige Date: Sun, 13 Sep 2026 19:29:32 +0200 Subject: [PATCH 4/5] fix(#11840): docstring example uses canonical band-1 notebook name Review #16002 (NanoClaw point 1): the --notebook usage example cited Tweety-1-Setup, a name that no longer exists at head -- the command would fail as written. Sweep residual, in-scope for the atomic rename pass (scripts referents). Only line 37 touched. Co-Authored-By: Claude Sonnet 5 --- .../SymbolicAI/Tweety/scripts/verify_all_tweety.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/scripts/verify_all_tweety.py b/MyIA.AI.Notebooks/SymbolicAI/Tweety/scripts/verify_all_tweety.py index 4f91bcbeb6..d2b899b9a8 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/scripts/verify_all_tweety.py +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/scripts/verify_all_tweety.py @@ -34,7 +34,7 @@ python verify_all_tweety.py --analyze-outputs --verbose # Analyze existing outputs python verify_all_tweety.py --execute --verbose # Full execution test python verify_all_tweety.py --cell-by-cell # Cell-by-cell execution - python verify_all_tweety.py --notebook Tweety-1-Setup # Single notebook + python verify_all_tweety.py --notebook Tweety-01-Setup-Python # Single notebook """ import argparse From b2e426b880b5bcf7c451efaba8964125baa65de5 Mon Sep 17 00:00:00 2001 From: jsboige Date: Mon, 14 Sep 2026 08:56:06 +0200 Subject: [PATCH 5/5] fix(#11840): resync 7 liens Tweety renommes dans docs/curriculum/symbolic-formalization.md Le sweep des referents de la bande 1 avait manque ce fichier : 7 liens du tableau Bloc 1 pointaient vers les anciens noms (Tweety-1-Setup, 2-Basic-Logics, 6, 7a, 7b, 8, 9) -- check-links REGRESSION 7 en CI. Cibles + libelles alignes sur les nouveaux noms canoniques, prose Tweety-1 -> Tweety-01. Garde rejoue en mode CI (--check --base origin/main) : OK, 0 lien casse. Co-Authored-By: Claude Sonnet 5 --- docs/curriculum/symbolic-formalization.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/curriculum/symbolic-formalization.md b/docs/curriculum/symbolic-formalization.md index a091060191..f20ce55a3c 100644 --- a/docs/curriculum/symbolic-formalization.md +++ b/docs/curriculum/symbolic-formalization.md @@ -45,7 +45,7 @@ formalisation dont la correction est vérifiée par une machine. | WSL2 + elan **(bloc 4 seulement)** | `wsl --status` puis, dans WSL, `elan show` | une toolchain `stable` s'affiche | | Clé OpenAI **(aucune)** | — | ce parcours n'appelle AUCUNE API payante | -Les blocs 1-3 tournent sur Python seul (Tweety-1 télécharge et configure lui-même +Les blocs 1-3 tournent sur Python seul (Tweety-01 télécharge et configure lui-même le JDK Zulu et les JARs ; Z3 et fast-downward s'installent par pip). Le bloc 4 exige WSL2 + elan — vérifiable en 2 minutes, et TOUJOURS installable (voir [kernels-runtime](../../docs/reference/kernels-runtime.md)). @@ -112,16 +112,16 @@ est la Phase 3, argumentation). | # | Notebook | Durée | Apporte → Suppose | |---|---|---|---| -| 1 | [Tweety-1-Setup](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-1-Setup.ipynb) | 45 min | JDK + 42 JARs + solveurs externes auto-installés → rien | -| 2 | [Tweety-2-Basic-Logics](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-2-Basic-Logics.ipynb) | 45 min | PL, SAT (pySAT), FOL → étape 1 | +| 1 | [Tweety-01-Setup-Python](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-01-Setup-Python.ipynb) | 45 min | JDK + 42 JARs + solveurs externes auto-installés → rien | +| 2 | [Tweety-02-Basic-Logics-Python](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-02-Basic-Logics-Python.ipynb) | 45 min | PL, SAT (pySAT), FOL → étape 1 | | 3 | [Tweety-3-Advanced-Logics](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-3-Advanced-Logics.ipynb) | 45 min | logiques de description, modale, QBF → étape 2 | | 4 | [Tweety-4-Belief-Revision](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-4-Belief-Revision.ipynb) | 30 min | MUS, mesure d'incohérence, révision AGM, MaxSAT → étape 2 | | 5 | [Tweety-5-Abstract-Argumentation](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5-Abstract-Argumentation.ipynb) | 45 min | **cœur** : sémantiques de Dung (grounded, preferred, stable) → étapes 2-4 | -| 6 | [Tweety-6-Structured-Argumentation](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-6-Structured-Argumentation.ipynb) | 30 min | ASPIC+, DeLP, ABA, ASP (Clingo) → étape 5 | -| 7 | [Tweety-7a-Extended-Frameworks](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7a-Extended-Frameworks.ipynb) | 30 min | ADF, bipolaire, WAF, attaques récursives → étape 5 | -| 8 | [Tweety-7b-Ranking-Probabilistic](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-7b-Ranking-Probabilistic.ipynb) | 30 min | classement et probabilités sur arguments → étape 5 | -| 9 | [Tweety-8-Agent-Dialogues](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-8-Agent-Dialogues.ipynb) | 30 min | protocoles de dialogue, jeux grounded → étape 6 | -| 10 | [Tweety-9-Preferences](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-9-Preferences.ipynb) | 30 min | préférences, vote (Borda, Condorcet) → étape 6 | +| 6 | [Tweety-06-Structured-Argumentation-Python](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-06-Structured-Argumentation-Python.ipynb) | 30 min | ASPIC+, DeLP, ABA, ASP (Clingo) → étape 5 | +| 7 | [Tweety-07a-Extended-Frameworks-Python](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-Python.ipynb) | 30 min | ADF, bipolaire, WAF, attaques récursives → étape 5 | +| 8 | [Tweety-07b-Ranking-Probabilistic-Python](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07b-Ranking-Probabilistic-Python.ipynb) | 30 min | classement et probabilités sur arguments → étape 5 | +| 9 | [Tweety-08-Agent-Dialogues-Python](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-08-Agent-Dialogues-Python.ipynb) | 30 min | protocoles de dialogue, jeux grounded → étape 6 | +| 10 | [Tweety-09-Preferences-Python](../../MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-09-Preferences-Python.ipynb) | 30 min | préférences, vote (Borda, Condorcet) → étape 6 | ### Bloc 2 — Décision automatique : SMT (Z3, étapes 11-18, 3 h 45)