From 345dce5abb719a1db4f8bac4e2a410d14736f05c Mon Sep 17 00:00:00 2001 From: jsboige Date: Sun, 20 Sep 2026 22:51:11 +0200 Subject: [PATCH 1/6] =?UTF-8?q?fix(density,#17040):=20Tweety-11-Causal=20?= =?UTF-8?q?=E2=80=94=205=20cellules=20markdown=20campagne=20supprim=C3=A9e?= =?UTF-8?q?s=20(lecture=20exercices=20+=20doublons)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Paquet P20 — campagne densite #13410 (PR #16319) sur Tweety-11-Causal-Csharp : - cell 13 (Que lit-on dans la chirurgie) = doublon de cell 11 [84511081] « Visualisation de la chirurgie » preexistante - cell 25 (Lecture du pont) = doublon de cell 26 [7c9dd2d6] « Parité confirmée » preexistante - cell 29 (Le protocole des exercices) = lecture des cellules d'exercice 31/33/35 (solution-leak) - cell 30 (Attendu exercice 1) = lecture de la cellule d'exercice 31 (solution-leak) - cell 36 (Synthèse 3 barreaux) = doublon de cell 37 [02c12c96] « Synthèse » preexistante Cellules code, outputs, execution_count et IDs preserves byte-identique (14/14 cellules code verifiees, 0 modif). markdown-only, exception C.2. Co-Authored-By: Claude Haiku 4.5 (1M context) --- .../Tweety/Tweety-11-Causal-Csharp.ipynb | 72 ------------------- 1 file changed, 72 deletions(-) diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-11-Causal-Csharp.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-11-Causal-Csharp.ipynb index a919eedd2f..98934bc85c 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-11-Causal-Csharp.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-11-Causal-Csharp.ipynb @@ -821,20 +821,6 @@ "Show(\" Le lien storm -> drops est ROMPU : drops ne depend plus de storm.\");\n" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Que lit-on dans la chirurgie ?** En comparant les deux affichages : le SCM original porte trois\n", - "équations (`drops <=> storm`, `rain <=> storm`) ; le SCM après `do(drops=True)` ne porte plus\n", - "l'équation de `drops` — remplacée par une constante. Deux conséquences immédiates :\n", - "\n", - "- l'observation `drops=True` n'informe plus sur `storm` (plus de canal) : `P(rain | do(drops))`\n", - " retombe sur la valeur de base — le baromètre cassé ne fait pas pleuvoir ;\n", - "- la *corrélation* `drops ⇔ rain` de la section 3 a disparu **par construction**, sans toucher aux\n", - " données : c'est une modification du mécanisme générateur, pas un filtrage d'échantillons." - ] - }, { "cell_type": "markdown", "id": "fa30c257", @@ -1409,17 +1395,6 @@ "Show(\" coupe bien le lien cloudy -> sprinkler, exactement comme la chirurgie from-scratch du §3.\");" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Lecture du pont.** Les trois sorties ci-dessus montrent le même réseau, la même intervention et le\n", - "même contrefactuel que les sections 3-5, mais calculés par le moteur **TweetyProject** (Java) exécuté\n", - "dans le processus .NET via IKVM. L'intérêt pédagogique est la **parité** : notre implémentation\n", - "from-scratch des sections 1-2 n'est pas une simplification qualitative, elle reproduit le comportement\n", - "de la référence académique — l'écart éventuel serait un bug de notre moteur, pas une limite de méthode." - ] - }, { "cell_type": "markdown", "id": "7c9dd2d6", @@ -1494,34 +1469,6 @@ "> mais l'intervention `do(education)` coupe ce lien — l'effet direct devrait tomber à False." ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Le protocole des exercices.** Les trois exercices suivants rejouent les gestes des sections 3-5 sur\n", - "des réseaux inédits, chacun ciblant une confusion classique : l'exercice 1 distingue observation et\n", - "intervention sur une chaîne `education → skill → income` ; l'exercice 2 montre qu'un `do` ne remonte\n", - "pas la flèche causale (intervenir sur un effet ne change pas la cause) ; l'exercice 3 demande le\n", - "contrefactuel *sur la cause* cette fois — le miroir de la section 5. Les squelettes sont exécutables\n", - "tels quels (C.1) : chaque cellule affiche ce qu'il faut construire, et les indices suffisent à écrire\n", - "les 3-5 lignes attendues avec l'API des sections 1-2." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Attendu de l'exercice 1, pour auto-vérification.** Si votre implémentation est juste :\n", - "`observe(skill=True)` doit propager vers `income=True` (la corrélation se lit dans les deux sens sur\n", - "la chaîne), tandis que `do(skill=True)` doit laisser `education` à sa valeur de fond — l'intervention\n", - "coupe la flèche entrante, elle ne la remonte pas. Ce couple de verdicts est le même discriminant que\n", - "le réseau Sprinkler de la section 4 : c'est la signature qu'on interroge le mécanisme, pas seulement\n", - "la corrélation.\n", - "\n", - "Un contrôle anti-piège utile : si vos deux verdicts sont identiques, vous avez probablement écrit\n", - "`observe` aux deux endroits — le `do` se reconnaît à ce que SA cible garde sa valeur de fond." - ] - }, { "cell_type": "code", "execution_count": 12, @@ -1713,25 +1660,6 @@ "Show(\" (reflechir : cloudy est la cause de rain ; si cloudy avait ete faux, rain n'aurait pas eu lieu)\");\n" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Synthèse — les trois barreaux de l'échelle causale\n", - "\n", - "Les sections précédentes ont gravi, dans l'ordre, les trois barreaux de l'échelle de la causalité (Pearl) :\n", - "\n", - "| Barreau | Question | Outil du notebook | Exemple mesuré |\n", - "|---|---|---|---|\n", - "| 1. **Associer** | *que voit-on ensemble ?* | `observe` sur le SCM propagé | `observe(drops)` → `rain=True` (corrélation baromètre/pluie) |\n", - "| 2. **Intervenir** | *que se passe-t-il si je force ?* | `do` = chirurgie sur l'équation | `do(rain)` n'active plus `sprinkler` dans le réseau de sec. 4 |\n", - "| 3. **Imaginer** | *qu'aurait-il fallu d'autre ?* | contrefactuel `cf` | herbe mouillée même avec `sprinkler=OFF` car `rain` suffisait |\n", - "\n", - "La coupure entre barreau 1 et barreau 2 est LA leçon du notebook : aucune quantité d'observation, aussi\n", - "grande soit-elle, ne remplace l'intervention — c'est une différence de *nature* (le modèle structural),\n", - "pas de degré (plus de données)." - ] - }, { "cell_type": "markdown", "id": "02c12c96", From 06cbe8ec1bac7c554dc54e70ac0ee326caee9db1 Mon Sep 17 00:00:00 2001 From: jsboige Date: Sun, 20 Sep 2026 22:51:22 +0200 Subject: [PATCH 2/6] =?UTF-8?q?fix(density,#17040):=20Tweety-3-Advanced-Lo?= =?UTF-8?q?gics=20=E2=80=94=201=20cellule=20markdown=20campagne=20supprim?= =?UTF-8?q?=C3=A9e=20(lecture=20exercices)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Paquet P20 — campagne densite #13410 (PR #16396) sur Tweety-3-Advanced-Logics-Csharp : - cell 21 (Les trois exercices : une echelle sur la meme API) = lecture des cellules d'exercice 16/18/20 (solution-leak) Cellules code, outputs, execution_count et IDs preserves byte-identique (10/10 cellules code verifiees, 0 modif). markdown-only, exception C.2. Co-Authored-By: Claude Haiku 4.5 (1M context) --- .../Tweety/Tweety-3-Advanced-Logics-Csharp.ipynb | 13 ------------- 1 file changed, 13 deletions(-) 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 1b591156a6..f0a74fb660 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 @@ -542,19 +542,6 @@ "\n" ] }, - { - "cell_type": "markdown", - "id": "8a2e56b2", - "metadata": { - "papermill": {}, - "tags": [] - }, - "source": [ - "### Les trois exercices : une échelle sur la même API\n", - "\n", - "Les stubs forment une progression sur la surface vue aux sections 2 et 3. **Exercice 1** — une chaîne de subsomption à trois niveaux (`Salarie`/`Personne`/`Employe`) : le même geste que le test 1 de la section 3, porté à deux arêtes au lieu d'une, avec la question du sens des flèches (`Salarie subsume Personne` vs `Salarie subsume Employe` — les deux lignes du stub les distinguent). **Exercice 2** — un rôle et une **restriction existentielle** : là où la section 2 ne posait que des concepts atomiques et une intersection, il faut ici un rôle binaire (`hasParent`) et l'assertion `alice : exists hasParent . Human` — l'API des rôles vue vide dans la signature de la cellule 8 entre enfin en scène. **Exercice 3** — la cohabitation exemple + exercice dans la même base : la conjonction de deux assertions sur `alice` (Human et Salarie) vérifie que l'étudiant combine les constructions au lieu de les copier. Les sorties `Exercice a completer` sont les diagnostics conventionnels des stubs (règle C.1) : le notebook s'exécute de bout en bout incomplet." - ] - }, { "cell_type": "markdown", "id": "4b71c541e959", From 0b644a8cf3d39b86887dd05a51a4c99ca12eb5b8 Mon Sep 17 00:00:00 2001 From: jsboige Date: Sun, 20 Sep 2026 22:51:31 +0200 Subject: [PATCH 3/6] =?UTF-8?q?fix(density,#17040):=20Tweety-4-Aspic=20?= =?UTF-8?q?=E2=80=94=201=20cellule=20markdown=20campagne=20supprim=C3=A9e?= =?UTF-8?q?=20(lecture=20exercices)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Paquet P20 — campagne densite #13410 (PR #16396) sur Tweety-4-Aspic-Csharp : - cell 29 (Les trois exercices : retrouver les fleches du pingouin) = lecture des cellules d'exercice 24/26/28 (solution-leak) Cellules code, outputs, execution_count et IDs preserves byte-identique (12/12 cellules code verifiees, 0 modif). markdown-only, exception C.2. Co-Authored-By: Claude Haiku 4.5 (1M context) --- .../SymbolicAI/Tweety/Tweety-4-Aspic-Csharp.ipynb | 13 ------------- 1 file changed, 13 deletions(-) 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 c35d219e42..da6e062b03 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-4-Aspic-Csharp.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-4-Aspic-Csharp.ipynb @@ -888,19 +888,6 @@ "\n" ] }, - { - "cell_type": "markdown", - "id": "100b1042", - "metadata": { - "papermill": {}, - "tags": [] - }, - "source": [ - "### Les trois exercices : retrouver les flèches du pingouin\n", - "\n", - "Les trois stubs ramènent au contraste des sections 2 et 4. **Exercice 1** — lever l'indétermination du vol par une **règle stricte** : l'énoncé reprend l'exemple Tweety et demande la règle qui fait de `!flies` une conséquence certaine (la même idée que `penguin -> bird`) ; la question « `!flies` skeptiquement accepté ? » teste la lecture de la fondée. **Exercice 2** — un **cycle défaisable à trois** (`p => q => r => p`) : l'énigme posée aux préférées ; la sortie attendue énumèrera les extensions, et le contraste avec le cas sans cycle répond tout seul. **Exercice 3** — une mini-théorie libre (juridique ou médical) : combiner un fait, une règle et une contradiction réaliste, et prédire le verdict fondé avant de l'afficher. Les sorties `Exercice a completer` sont les diagnostics C.1 des stubs : le notebook s'exécute incomplet." - ] - }, { "cell_type": "markdown", "id": "m28626", From b3e44c1b41fa55e5134a7df74bc43a3311af361b Mon Sep 17 00:00:00 2001 From: jsboige Date: Sun, 20 Sep 2026 22:51:41 +0200 Subject: [PATCH 4/6] =?UTF-8?q?fix(density,#17040):=20Tweety-5d-Stable-Syn?= =?UTF-8?q?thesis=20=E2=80=94=204=20cellules=20markdown=20campagne=20suppr?= =?UTF-8?q?im=C3=A9es=20(3=20doublons=20+=201=20lecture=20exercices)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Paquet P20 — campagne densite #13410 (PR #16402) sur Tweety-5d-Stable-Synthesis-Lean : - cell 6 (Lire la specification) = doublon de cell 7 [b6f47728] « Lecture : ce que la specification exige » preexistante - cell 10 (Lire le verdict sat) = doublon de cell 11 [c2f7be1c] « Interpretation : le temoin que personne n'a ecrit a la main » preexistante - cell 16 (Lire l'unsat) = doublon de cell 17 [4edacdd4] « Interpretation : l'echec est un livrable » preexistante - cell 28 (Lire les trois exercices) = lecture des cellules d'exercice 23/25/27 (solution-leak) Cellules code, outputs, execution_count et IDs preserves byte-identique (9/9 cellules code verifiees, 0 modif). markdown-only, exception C.2. Co-Authored-By: Claude Haiku 4.5 (1M context) --- .../Tweety-5d-Stable-Synthesis-Lean.ipynb | 52 ------------------- 1 file changed, 52 deletions(-) diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5d-Stable-Synthesis-Lean.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5d-Stable-Synthesis-Lean.ipynb index 1686eda4cf..3d06fb5c0e 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5d-Stable-Synthesis-Lean.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-5d-Stable-Synthesis-Lean.ipynb @@ -193,19 +193,6 @@ " print(f\" {a} attaque {b}\")" ] }, - { - "cell_type": "markdown", - "id": "4105e589", - "metadata": { - "papermill": {}, - "tags": [] - }, - "source": [ - "### Lire la spécification : six arguments, huit attaques, deux paires mutuelles\n", - "\n", - "La sortie est la transcription du graphe `AF-A` : un en-tête qui nomme les compteurs (`6 arguments, 8 attaques`) puis huit lignes, une par arête, dans l'ordre où elles ont été déclarées. Deux lectures structurales. **Les paires mutuelles** : `0 attaque 1` et `1 attaque 0`, `4 attaque 5` et `5 attaque 4` — deux conflits bidirectionnels, les seuls qui interdisent frontalement la coexistence de deux arguments dans une extension. **Les attaques unidirectionnelles** : `2 attaque 3`, `1 attaque 3`, `3 attaque 4`, `0 attaque 5` — elles relient les paires entre elles et donnent au graphe sa connectivité. Le dernier point de lecture est l'ordre : les huit lignes s'impriment dans l'ordre source, pas triées — c'est le graphe « brut » que les sections suivantes soumettent tel quel au solveur." - ] - }, { "cell_type": "markdown", "id": "b6f47728", @@ -307,19 +294,6 @@ "print(f\"Témoin S = {{{witness}}}\")" ] }, - { - "cell_type": "markdown", - "id": "bfbe6f90", - "metadata": { - "papermill": {}, - "tags": [] - }, - "source": [ - "### Lire le verdict sat : un témoin de trois arguments\n", - "\n", - "Deux lignes, deux informations. `Z3 : sat` dit que la spécification est satisfiable — il existe au moins un sous-ensemble stable ; le solveur l'affirme par modèle, et la `sanity` de la cellule suivante le relit par les deux prédicats. `Témoin S = {[1, 2, 5]}` imprime ensuite le choix : trois arguments sur six, dans l'ordre croissant 1, 2, 5. Ce que la sortie ne dit pas, et que la lecture doit mesurer, c'est la taille du rôle : parmi les 2⁶ = 64 candidats du sous-ensemble, le solveur en a visité l'espace par contraintes et rend un témoin que la section suivante soumettra à une vérification indépendante — le geste « constructeur » de la Loi II, une valeur à la main, jamais affirmée." - ] - }, { "cell_type": "markdown", "id": "c2f7be1c", @@ -476,19 +450,6 @@ "print(\"Dissociation confirmee a la borne n = 3 : aucune extension stable n'existe.\")" ] }, - { - "cell_type": "markdown", - "id": "efddd20c", - "metadata": { - "papermill": {}, - "tags": [] - }, - "source": [ - "### Lire l'unsat : AUCUN et une borne\n", - "\n", - "La sortie déclare l'absence en trois lignes de plus en plus fortes : `Z3 sur le 3-cycle : unsat` (le solveur ne trouve pas de modèle), `Ensembles sans conflit ET dominants : AUCUN` (la quantification sur les 2³ = 8 sous-ensembles du 3-cycle est exhaustive), `Dissociation confirmee a la borne n = 3 : aucune extension stable n'existe.` (le verdict passe au général). La lecture honnête du triplet : l'UNSAT est une preuve d'absence par contraintes — Z3 ne parcourt pas les candidats, il montre qu'aucun modèle de la spécification n'existe, et son verdict vaut pour ce graphe et cette taille. C'est exactement le contraste que la section creuse : le même outil qui a rendu sat sur AF-A rend unsat ici, et les deux verdicts sont imprimés avec le même statut — le notebook enregistre la dissociation entre substrats comme un résultat." - ] - }, { "cell_type": "markdown", "id": "4edacdd4", @@ -810,19 +771,6 @@ "print(\"Exercice a completer\")" ] }, - { - "cell_type": "markdown", - "id": "bc9a37e8", - "metadata": { - "papermill": {}, - "tags": [] - }, - "source": [ - "### Lire les trois exercices : l'échelle qui vérifie la loi\n", - "\n", - "Les trois cellules d'exercice impriment la même invite (`Exercice a completer`) — le contrat C.1 : le notebook s'exécute d'un bout à l'autre, la vérification est l'étudiant. L'échelle se lit dans les énoncés : **Exercice 1** ajoute un septième argument (arêtes (2, 6) et (6, 5)) et demande si le témoin {1, 2, 5} tient encore — un premier test de robustesse du témoin face à une spécification étendue ; **Exercice 2** passe du 3-cycle au 4-cycle (0 → 1 → 2 → 3 → 0) et questionne les cycles pairs : le 3-cycle n'a pas d'extension stable, le 4-cycle en a-t-il une ? — la parité devient l'hypothèse ; **Exercice 3** généralise par l'expérience (tester les 1-AF et 2-AF exhaustivement) le fait que l'ensemble vide n'est jamais stable dès qu'il y a un argument — la clause de dominance qui l'interdit est à nommer exactement. Trois exercices, trois niveaux : re-mesurer un objet, changer l'hypothèse, exhiber la clause." - ] - }, { "cell_type": "markdown", "id": "1428a951", From 2686273b1d964dfa34694f96c3ea98fc892b5d7b Mon Sep 17 00:00:00 2001 From: jsboige Date: Sun, 20 Sep 2026 22:51:51 +0200 Subject: [PATCH 5/6] =?UTF-8?q?fix(density,#17040):=20Tweety-7a-Extended-F?= =?UTF-8?q?rameworks=20=E2=80=94=204=20cellules=20markdown=20campagne=20su?= =?UTF-8?q?pprim=C3=A9es=20(doublons=20d'exercices)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Paquet P20 — campagne densite #13410 (PR #14145) sur Tweety-07a-Extended-Frameworks-CSharp : - cell 43 (8.1 Exercice 1 : ADF cyclique) = doublon de la section exercice deja presente dans cell 42 [c39d750e] - cell 45 (8.2 Exercice 2 : SetAF) = doublon de la section exercice deja presente dans cell 42 [c39d750e] - cell 47 (8.3 Exercice 3 : EAF) = doublon de la section exercice deja presente dans cell 42 [c39d750e] - cell 49 (8.4 Exercice 4 : VAF) = doublon de la section exercice deja presente dans cell 42 [c39d750e] Les 13 cellules de la campagne conservées (sections intro 7.2-7.7.3 + lectures 7.3.2-7.7.4) : lecture legitime de sortie de code, position correcte (apres code pour les lectures, avant code pour les introspectives qui n'invoquent pas la sortie). Cellules code, outputs, execution_count et IDs preserves byte-identique (18/18 cellules code verifiees, 0 modif). markdown-only, exception C.2. Co-Authored-By: Claude Haiku 4.5 (1M context) --- ...weety-07a-Extended-Frameworks-CSharp.ipynb | 84 ------------------- 1 file changed, 84 deletions(-) diff --git a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb index 12d67a2ab8..d17720cbcf 100644 --- a/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb +++ b/MyIA.AI.Notebooks/SymbolicAI/Tweety/Tweety-07a-Extended-Frameworks-CSharp.ipynb @@ -2511,27 +2511,6 @@ "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.\n" ] }, - { - "cell_type": "markdown", - "id": "1171b43b", - "metadata": { - "tags": [], - "papermill": { - "duration": 0.024846, - "end_time": "2026-09-02T02:09:42.703295+00:00", - "exception": false, - "start_time": "2026-09-02T02:09:42.678449+00:00", - "status": "completed" - } - }, - "source": [ - "### 8.1 Exercice 1 : ADF cyclique\n", - "\n", - "Construire l'ADF a deux arguments `a : not b` et `b : not a` avec la classe `ADF` de la tranche 1, puis calculer le grounded.\n", - "\n", - "Le cycle est symetrique : aucun des deux arguments ne peut etre decide sans supposer l'autre deja decide. Observer ce que le point fixe 3-valued en fait, et comparer avec ce que produirait un cadre de Dung sur deux arguments qui s'attaquent mutuellement." - ] - }, { "cell_type": "code", "execution_count": 15, @@ -2573,27 +2552,6 @@ "Show(\"Exo1\", \"Exercice a completer : ADF cyclique (attendu : extension grounded vide, tous U)\");\n" ] }, - { - "cell_type": "markdown", - "id": "494d68d7", - "metadata": { - "tags": [], - "papermill": { - "duration": 0.019217, - "end_time": "2026-09-02T02:09:42.887796+00:00", - "exception": false, - "start_time": "2026-09-02T02:09:42.868579+00:00", - "status": "completed" - } - }, - "source": [ - "### 8.2 Exercice 2 : SetAF, une attaque qui n'existe qu'a plusieurs\n", - "\n", - "Construire le SetAF sur `{x, y, z}` avec les attaques d'ensembles `{x,y} -> z` puis `{z} -> x`, et calculer le grounded.\n", - "\n", - "Tout l'interet est dans la premiere attaque : elle n'est portee par aucun des deux arguments pris isolement. Determiner lesquels sortent *in*, puis se demander ce que deviendrait le resultat si `{x,y} -> z` etait remplacee par les deux attaques simples `x -> z` et `y -> z`." - ] - }, { "cell_type": "code", "execution_count": 16, @@ -2635,27 +2593,6 @@ "Show(\"Exo2\", \"Exercice a completer : SetAF 3 args (qui est IN ?)\");\n" ] }, - { - "cell_type": "markdown", - "id": "6a2e0a41", - "metadata": { - "tags": [], - "papermill": { - "duration": 0.021203, - "end_time": "2026-09-02T02:09:43.039345+00:00", - "exception": false, - "start_time": "2026-09-02T02:09:43.018142+00:00", - "status": "completed" - } - }, - "source": [ - "### 8.3 Exercice 3 : EAF, casser une reinstallation\n", - "\n", - "Reprendre l'EAF de la section 5 (`a -> b`, plus la meta-attaque de `c` sur l'attaque `a -> b`), ajouter l'argument `d` et l'attaque `d -> c`, puis recalculer le grounded avec `useMeta: true`.\n", - "\n", - "`c` neutralisait l'attaque `a -> b` : tant que `c` tient, `b` survit. En mettant `c` *out*, on rend son effet a `a -> b`. Suivre la chaine et verifier ce que devient `b`." - ] - }, { "cell_type": "code", "execution_count": 17, @@ -2696,27 +2633,6 @@ "Show(\"Exo3\", \"Exercice a completer : EAF avec c OUT -> b OUT (reinstatement perdu)\");\n" ] }, - { - "cell_type": "markdown", - "id": "43c8c22a", - "metadata": { - "tags": [], - "papermill": { - "duration": 0.018281, - "end_time": "2026-09-02T02:09:43.172395+00:00", - "exception": false, - "start_time": "2026-09-02T02:09:43.154114+00:00", - "status": "completed" - } - }, - "source": [ - "### 8.4 Exercice 4 : VAF, l'ordre des valeurs decide du cycle\n", - "\n", - "Construire le VAF cyclique `a -> b -> c -> a` en affectant a chaque argument une valeur distincte (Economie, Environnement, Justice), puis faire varier l'ordre de preference sur les valeurs.\n", - "\n", - "Un cycle impair est le cas ou Dung ne tranche rien. Ici l'ordre des valeurs peut rendre une des trois attaques inoperante et debloquer le cycle : tester plusieurs ordres, identifier ceux qui maximisent l'extension fondee — et voir s'il en existe qui ne debloquent rien du tout." - ] - }, { "cell_type": "code", "execution_count": 18, From 7335406294fc71b820d8cc557bab2d4bcca09c9e Mon Sep 17 00:00:00 2001 From: Claude Sonnet 5 Date: Fri, 25 Sep 2026 10:49:14 +0200 Subject: [PATCH 6/6] fix(ci,#8057): rebaseline twin parity des 3 paires Tweety du paquet P20 Le redressement densite #17058 (retrait de 15 cellules markdown de remplissage cote C#/Lean) a introduit 3 paires en DRIFT_INTRODUCED : Tweety-3 Advanced-Logics, Tweety-11 Causal, Tweety-7a Extended-Frameworks. Re-audit firsthand avant rebaseline : - cellules code et outputs byte-identiques main <-> tete (10/10, 14/14, 18/18) ; - les jumeaux Python ne portent AUCUNE des cellules supprimees (0 occurrence) -- l'enrichissement de #16319/#16396/#14145 etait C# seul, la suppression reduit l'asymetrie au lieu d'en creer une ; - chaque exercice garde son enonce propre (Tweety-3 : md[15], md[17], md[19]) ; les cellules retirees sont des doublons de lectures existantes ou des lectures redondantes de cellules d'exercice. Registre : 3 nouvelles attestations (content_python_sha / content_csharp_sha) + mise a jour du known_differences de Tweety-11 pour consigner le retrait. Co-Authored-By: Claude Code --- scripts/notebook_tools/twin_pairs.d/tweety-11-causal.yaml | 1 + .../0011-2026-09-25-myia-po-2025-CoursIA-2.yaml | 6 ++++++ .../0007-2026-09-25-myia-po-2025-CoursIA-2.yaml | 6 ++++++ .../0014-2026-09-25-myia-po-2025-CoursIA-2.yaml | 6 ++++++ 4 files changed, 19 insertions(+) create mode 100644 scripts/notebook_tools/twin_pairs.d/tweety-11-causal/0011-2026-09-25-myia-po-2025-CoursIA-2.yaml create mode 100644 scripts/notebook_tools/twin_pairs.d/tweety-3-advanced-logics/0007-2026-09-25-myia-po-2025-CoursIA-2.yaml create mode 100644 scripts/notebook_tools/twin_pairs.d/tweety-7a-extended-frameworks/0014-2026-09-25-myia-po-2025-CoursIA-2.yaml diff --git a/scripts/notebook_tools/twin_pairs.d/tweety-11-causal.yaml b/scripts/notebook_tools/twin_pairs.d/tweety-11-causal.yaml index f4c00eafa1..44dc72877a 100644 --- a/scripts/notebook_tools/twin_pairs.d/tweety-11-causal.yaml +++ b/scripts/notebook_tools/twin_pairs.d/tweety-11-causal.yaml @@ -7,5 +7,6 @@ bridge_verdict_reason: "Python = JPype vers la vraie lib Java Tweety causal-1.30 (`from org.tweetyproject.causal.reasoner import ArgumentationBasedCausalReasoner`). C# = §§1-5 from-scratch pedagogique (do-calculus reimplemente, titre 'twin C# from-scratch') + §6 (PR #10570) pont IKVM chargeant `org.tweetyproject.tweety-causal.dll` (DLL build #10566, 13/13 classes causales actives, verifie firsthand via Assembly.GetExportedTypes) : `StructuralCausalModel.intervene()` Java reel invoque sous le runtime IKVM 8.15. Verdict SOTA-OK (pas de workaround degrade) : §6 prouve la parite moteur-contre-moteur -- `do(sprinkler=True)` produit `sprinkler <=> +` (surgery Java reel) IDENTIQUE au do-calculus from-scratch §3 `do(drops=True)` -> `drops <=> +`. Les DEUX cotes executent le meme moteur Java Tweety causal (Python via JPype, C# via IKVM). parity_level reste `surface` car le mode pedagogique primaire reste §§1-5 from-scratch ; §6 est le pont de validation qui confirme la conformite du from-scratch au moteur de reference." known_differences: - "2026-09-15 (PR #16319, myia-po-2026:CoursIA) : enrichissement markdown-only cote C# (tranche densite #13410, +9 cellules d'interpretation) ; cellules code et outputs byte-identiques (md5 avant/apres), twin Python intact." + - "2026-09-25 (PR #17058, myia-po-2025:CoursIA-2, redressement densite #17040) : retrait de 5 de ces cellules cote C# (3 doublons de lectures deja presentes, 2 lectures de cellules d'exercice) ; 4 cellules d'interpretation conservees (4, 7, 16, 21) ; cellules code et outputs byte-identiques (14/14 verifiees main vs tete), twin Python intact -- le Python n'a jamais porte ces cellules, la suppression ne fait que reduire l'asymetrie ouverte par #16319." - "Socle commun : inference causale et do-calculus (Pearl) sur modeles causaux structurels." - "Asymetrie de profondeur (surface) : le Python s'appuie sur la vraie bibliotheque Java Tweety `causal-1.30.jar` via JPype (`from org.tweetyproject.causal.reasoner import ArgumentationBasedCausal`). C# §§1-5 = jumeau **from-scratch** pedagogique (titre 'twin C# from-scratch', reimplemente le do-calcul) ; §6 (PR #10570) ajoute un pont IKVM vers la meme DLL Java `tweety-causal.dll` (build #10566) -- §§1-5 from-scratch et pont §6 donnent le meme resultat surgery (`<=> +`), validant la conformite du from-scratch au moteur de reference. Parite `surface` (mode primaire = from-scratch) avec pont de validation SOTA-OK en §6." diff --git a/scripts/notebook_tools/twin_pairs.d/tweety-11-causal/0011-2026-09-25-myia-po-2025-CoursIA-2.yaml b/scripts/notebook_tools/twin_pairs.d/tweety-11-causal/0011-2026-09-25-myia-po-2025-CoursIA-2.yaml new file mode 100644 index 0000000000..5e50c51e4f --- /dev/null +++ b/scripts/notebook_tools/twin_pairs.d/tweety-11-causal/0011-2026-09-25-myia-po-2025-CoursIA-2.yaml @@ -0,0 +1,6 @@ +date: '2026-09-25' +by: myia-po-2025:CoursIA-2 +python_sha: 31af5d293d415afd765bad5163f120d5afec8ad1 +csharp_sha: c431cd2f654382e09af4675ea8677b41135d586f +content_python_sha: 0aac270d1addf04051129029a59e070afb362893d1d490eb1c6bfbc0dd4d5a87 +content_csharp_sha: 2afffe6eeaffbe21e0e1eed0bd2c999e3728c0095b9c8540bb79bc4e26372740 diff --git a/scripts/notebook_tools/twin_pairs.d/tweety-3-advanced-logics/0007-2026-09-25-myia-po-2025-CoursIA-2.yaml b/scripts/notebook_tools/twin_pairs.d/tweety-3-advanced-logics/0007-2026-09-25-myia-po-2025-CoursIA-2.yaml new file mode 100644 index 0000000000..b17c23447a --- /dev/null +++ b/scripts/notebook_tools/twin_pairs.d/tweety-3-advanced-logics/0007-2026-09-25-myia-po-2025-CoursIA-2.yaml @@ -0,0 +1,6 @@ +date: '2026-09-25' +by: myia-po-2025:CoursIA-2 +python_sha: aebffde4c2a7da67d2834d8072f2fe6d54287764 +csharp_sha: f0a74fb660f41983664c968a69de45addadf592c +content_python_sha: 9eaf16b3f99c3b984d924fe6d58ff023c43793e57d3ccb6bd1eaf2bc56360a3b +content_csharp_sha: d8147a65db1d386a32007f2706eb4ded5e86f90f58f573f425d34208b28fdcc7 diff --git a/scripts/notebook_tools/twin_pairs.d/tweety-7a-extended-frameworks/0014-2026-09-25-myia-po-2025-CoursIA-2.yaml b/scripts/notebook_tools/twin_pairs.d/tweety-7a-extended-frameworks/0014-2026-09-25-myia-po-2025-CoursIA-2.yaml new file mode 100644 index 0000000000..e78f488b61 --- /dev/null +++ b/scripts/notebook_tools/twin_pairs.d/tweety-7a-extended-frameworks/0014-2026-09-25-myia-po-2025-CoursIA-2.yaml @@ -0,0 +1,6 @@ +date: '2026-09-25' +by: myia-po-2025:CoursIA-2 +python_sha: dea6b917d24172003a44ae27e5713c31cd9fc193 +csharp_sha: d17720cbcf977664e914e5fd031e8e9d7aa7c62c +content_python_sha: 82435911c2efa65ea80a5f304092417e508f61abb1ff3ae247e1a17f517bb41a +content_csharp_sha: 17b933735f17ea6535c7dc8e7a3a11182908aab1a5aa27445863f084ea837f65