Skip to content

GT-02: aligner le stub IESDS C# sur la rigueur Python (suivi #21192) #21215

Closed

Description

@jsboige

Parent

Part of #21192 — la PR #21212 a fixé find_dominant_strategy (renommé find_weakly_dominant_strategy + clause stricte) et la garde IESDS 1x1 sur le jumeau Python GameTheory-02-NormalForm-Python.ipynb.

Asymétrie à corriger

Le jumeau C# GameTheory-02-NormalForm-CSharp.ipynb n'a pas la même asymétrie :

  • Python a une fonction find_dominant_strategy (devenue find_weakly_dominant_strategy + clause stricte + find_strictly_dominant_strategy symétrique).
  • C# utilise une méthode IsStrictlyDominated(a, b, U1, U2) (cellule 11) — abstraction différente, pas de find_dominant_strategy.
  • Python avait un IESDS pré-écrit avec affichage « Issue prédite » sans garde 1x1 (corrigé).
  • C# a un stub d'exercice en cellule 26 : // Exercice 2 : trace IESDS étape par étape sur le Dilemme du Prisonnier (étudiant à compléter) — l'étudiant écrit le code, le notebook ne fait pas l'élimination automatiquement.

Diagnostic

Cette asymétrie est structurelle et légitime (abstractions Python vs C# différentes), documentée dans le bridge_verdict: SOTA-OK du registre gametheory-2-normalform.yaml (#10382).

Mais elle crée un gap pédagogique : un étudiant qui fait la version Python puis la version C# constatera que le C# n'a pas le même niveau de robustesse sur l'IESDS. Le stub est une invitation à l'exercice, pas une correction appliquée — donc la rigueur du Python n'est pas reportée côté C#.

Suggestion

Une PR sœur qui ajoute au jumeau C# :

  • Une fonction d'élimination itérée (équivalent Python eliminate_dominated_strategies) avec garde sur la taille du jeu réduit.
  • Une fonction de pure-NE qui itère sur les profils de stratégies pures restantes.

Le scope exact reste à définir après lecture complète du jumeau C#.

Acceptation

  • PR sœur C# mergée + vérif Papermill .NET Interactive 100%
  • Registre gametheory-2-normalform.yaml mis à jour si sémantique change

Refs

Activity

  1. jsboige commented on Oct 17, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED] lane myia-po-2023:CoursIA-2 -- GT-02 IESDS C# alignement sur rigueur Python. Grain DEEP/notebook-dotnet CONTENU. Cf NAMING c.1541-N1 (twin-parity unilateral) + c.1537-N1 (injection selective). Cf PR #21212 (c.1537) jumeau Python. Cf registre scripts/notebook_tools/twin_pairs.d/gametheory-2-normalform.yaml -- a MAJ si semantique change.

  2. added 5 commits that reference this issue on Oct 17, 2026
  3. myia-po-2023 commented on Oct 21, 2026

    @myia-po-2023
    Collaborator

    [myia-po-2023:CoursIA-2] Fermeture : les fonctions demandées existent déjà dans le jumeau C#.

    Réévaluation du besoin réel, à la suite de la relecture de l'avis ciblé (PR #21212, c.6312412401) : les deux fonctions que cette issue propose d'ajouter au jumeau C# GameTheory-02-NormalForm-CSharp.ipynb existent déjà :

    Fonction demandée dans l'issue Présence dans le jumeau C#
    « fonction d'élimination itérée (équivalent Python eliminate_dominated_strategies) avec garde sur la taille du jeu réduit » IESDS — cellule 11 (22 occurrences dans le carnet)
    « fonction de pure-NE qui itère sur les profils de stratégies pures restantes » PureNashEquilibria — cellule 8 (10 occurrences)
    dominance stricte StrictlyDominated1 / StrictlyDominated2 — cellule 11 (3 occurrences)

    Vérification firsthand : grep du jumeau C# sur main — PureNashEquilibria (10), IESDS (22), StrictlyDominated (3). L'asymétrie Python/C# relevée dans le body est bien structurelle et légitime (abstractions différentes, bridge_verdict: SOTA-OK du registre gametheory-2-normalform.yaml), mais elle ne crée pas le gap supposé : le C# ne « manque pas » de l'algorithme IESDS ni de la pure-NE, il les implémente sous des noms et une abstraction différents.

    Une « PR sœur » qui ajouterait ces fonctions serait donc une duplication d'implémentations existantes — c'est précisément ce que l'avis ciblé demande d'éviter. Aucune implémentation n'est ouverte.

    Le suivi #21192 reste porté par la PR #21212 (côté Python) ; le body de celle-ci est réaligné en conséquence (jumeau C# attesté Python/C#, 30 cellules, fonctions déjà présentes).

    → Fermeture : besoin déjà couvert, pas de duplication.

  4. added a commit that references this issue on Oct 21, 2026
  5. added a commit that references this issue on Oct 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions