ÉTUDES
RECHERCHE
Contact   |   À propos du site

Madame Bovary en Logique Linéaire

 

Anne-Gwenn Bosser et Marc Cavazza

 

Nous avons récemment utilisé la matière de Madame Bovary ainsi que des manuscrits de Flaubert mis en valeur sur ce site pour illustrer des travaux sur la génération narrative et l’analyse de ces récits, qui reposent sur la Logique Linéaire, proposée par Jean-Yves Girard[1].

Alors que la Logique dite Classique s’intéresse à l’établissement de la validité d’une formule, la Logique Linéaire permet de mettre en valeur la façon dont cette formule se construit ou se déconstruit, ce qui permet de représenter comment des événements affectent l’environnement : l’implication linéaire, qui se note –o (lollipop), permet d’exprimer des transitions, de représenter des actions par l’impact qu’elles ont sur l’environnement. Par exemple, on pourra décrire l’action « Alice achète une chanson » par la formule : Possède(Alice, 1 euro) –o Possède(Alice, chanson).

On exprime ainsi qu’avant l’exécution de l’action, Alice possède un euro (la formule Possède(Alice,1 euro)). Après avoir exécuté l’action, elle a un euro en moins, mais elle possède une chanson (représenté par la formule Possède(Alice, chanson)).

Considérer ainsi des formules comme des ressources qu’on peut produire et consommer permet de représenter une causalité discrète (au sens mathématique du terme, sans notion de continuité), en explicitant quelles sont les réactions à une action dans l’environnement dans lequel elle s’exécute, ainsi que les conditions initiales d’une telle exécution.

La suite de ce texte va décrire comment, en formalisant un environnement narratif (des événements possibles sous forme d’actions, des personnages, leurs états d’esprit et autres objets du récit) dans cette logique, nous pouvons produire et étudier la structure causale de récits : c’est-à-dire lier les événements de l’histoire entre eux dans un diagramme qui permet de visualiser leurs causes et conséquences. Un programme que nous avons écrit peut ainsi reproduire l’enchaînement des actions du roman original... mais aussi créer des histoires alternatives à partir des mêmes conditions initiales.

La recherche en narration computationnelle

La narration computationnelle est un sous-domaine de l’Intelligence Artificielle, qui s’intéresse aux objets narratifs (littéraires, interactifs, cinématographiques) pour les comprendre, les analyser, ou les construire, en proposant des techniques qui peuvent être mises en œuvre par des programmes et systèmes informatiques.

Par exemple, la narration interactive étudie la création, l’intégration et l’adaptation d’une narration dans un contexte dynamique, mouvant et souvent multimédia (comme cela peut être le cas pour un jeu-vidéo par exemple). Les techniques de génération narrative ont-elles pour but de créer des scénarios à partir de données narratives : c’est un autre exemple d’application qui est lié à la créativité computationnelle, parfois considérée comme la dernière grande frontière de l’Intelligence Artificielle. Ces deux domaines peuvent être liés : si on dispose d’un algorithme efficace, qui peut générer rapidement des histoires, alors on peut s’en servir aussi dans un contexte dynamique, pour s’adapter aux changements dus par exemple à des choix de l’utilisateur.

Se pose pour les chercheurs en Intelligence Artificielle qui travaillent sur ces problèmes la question du corpus sujet des travaux : une démarche courante consiste à utiliser des œuvres narratives existantes (contes traditionnels, romans, pièces de théâtre, jeux-vidéo,...) pour illustrer les techniques. Cependant, une telle solution oblige souvent à interpréter les intentions de l’auteur lorsque celui ou celle-ci n’est pas partie prenante du projet.

Il est donc particulièrement intéressant de pouvoir disposer des documents de travail d’un auteur afin de limiter la portée de l’interprétation. C’est pour cette raison que David Pizzi et Marc Cavazza (dans une approche très différente de celle que nous décrivons ici) avaient utilisé la matière des Plans et scénarios de Madame Bovary[2] pour illustrer un algorithme utilisant un modèle des aspirations et états émotionnels d’un acteur synthétique au travers d’une simulation interactive inspirée par le personnage d’Emma Bovary. Une vidéo décrivant le système EmoEmma est disponible ici.

Madame Bovary en logique linéaire

Notre hypothèse de recherche actuelle est que la causalité narrative est formalisable. Le souci particulier de Flaubert pour l’établissement du flot causal du récit (son insatisfaction au sujet de L’Éducation sentimentale de 1845 est décrite dans une lettre à Louise Colet datée du 16 Janvier 1852) nous semble faire écho à ce projet.

Partant du constat que les théories issues de la Narratologie sont souvent difficilement transposable et généralisables d’un point de vue formel, nous avons proposé de considérer et modéliser les événements de base qui constituent une histoire : les actions narratives.

Nous appliquons ce traitement à Madame Bovary à titre illustratif : notre but est de voir si, à partir d’une modélisation des actions narratives du roman, on peut expliciter de manière automatique la structure causale de l’histoire originale, générer des variantes, et les étudier.

Les événements de l’histoire : des actions narratives formulées à l’aide de l’implication linéaire -o

Nous modélisons une action narrative (les événements possibles d’une histoire) en termes de « ressources » consommées, produites, ou préservées, décrivant l’impact que cette action a sur les personnages, leur état d’esprit, et sur les autres éléments narratifs représentant l’état de l’histoire à un moment donné. Cette description des éléments constitutifs de base d’une histoire s’exprime d’une façon particulièrement élégante en logique linéaire[3] : l’implication linéaire, notée -o, permet de représenter une action au travers de son impact sur un contexte, de l’opérationnaliser : A-o B peut se comprendre comme une opération qui consomme A et produit B.

Appliquons ce traitement à Madame Bovary : les plans et scénarios de Madame Bovary, ainsi que les notes s’y rapportant, attestent de l’importance, pour Flaubert, des lectures d’Emma sur ses aspirations et on pourrait alors modéliser par :

 

Ennui ⊗ Roman –o DesirEvasion

 

l’action narrative correspondant à la lecture par la jeune Emma, alors au couvent, de nouvelles romantiques : en consommant à la fois les ressources Ennui et Roman (opérateur ⊗), on produit la ressource DesirEvasion. Ennui et Roman sont des pré-requis à l’action narrative, qui correspondent respectivement à l’ennui qu’Emma trompe ainsi, et à la disponibilité d’un roman non encore lu prêté par la Dumesnil (plans et scénarios, f° 18 ; manuscrit définitif, f° 74). Ceci stimule ses aspirations à une vie romantique. Les manuscrits de Flaubert complètent également le roman par de nombreuses notes permettant de modéliser états d’esprits, sentiments, et leur évolution, ce qui peut permettre, au besoin, d’affiner la modélisation (voir par exemple le folio 14v des plans et scénarios).

Spécification d’environnement narratif sous forme d’un séquent

Nous voulons maintenant définir un environnement narratif complet, c’est-à-dire l’ensemble des briques élémentaires qui vont ensuite servir à générer des récits. Ces récits auront donc un certain nombre de caractéristiques communes.

Par exemple, on veut pouvoir spécifier quels sont les événements possibles, quels sont les personnages, et peut-être même des caractéristiques de l’état final de cette histoire. À partir d’une telle spécification, on pourra ensuite chercher à créer les structures causales des histoires possibles (un diagramme permettant d’observer quel(s) événement(s) sont les causes et conséquences d’autres événements).

Ceci s’effectue au moyen d’une notation spéciale nommée séquent, à laquelle est associé un calcul qui permettra ensuite d’obtenir les structures recherchées. En logique, un séquent est un couple formé d’un multi-ensemble (les répétitions comptent) de formules hypothèses (soit H par exemple), et d’un multi-ensemble de formules conclusions (soit C par exemple), qu’on note généralement H ⊢ C, et qui signifie, intuitivement : « si les hypothèses dans H sont vérifiées, alors au moins une conclusion de C est vérifiée ».

Ainsi, une fois décrites sous formes de formules les actions narratives possibles (A), les conditions et ressources initiales d’une histoire (R) et les conditions et ressources finales désirée pour cette histoire, on peut construire un séquent qui s’écrit ainsi : A,R ⊢ F

Pour fixer les idées, nous donnons comme exemple le séquent ci-dessous qui représente un environnement narratif avec deux actions et des conditions initiales de déclenchement, librement inspiré par un fragment du roman : la lingère qui visite le couvent peut prêter un roman (Lingere –o Roman), qu’Emma peut lire pour tromper son ennui (Ennui ⊗ Roman –o DesirEvasion). Au départ, on dispose de deux ressources, la présence de la lingère et l’ennui d’Emma. L’état final de ce fragment narratif sera le désir d’évasion d’Emma, exacerbé par la lecture.

 

Correspondance preuve et histoire

Une fois un environnement narratif spécifié au travers d’un séquent, on peut considérer les inférences (déductions) possibles grâce au calcul des séquents de la logique linéaire. Ce calcul fixe les règles de déduction permettant de prouver la validité d’un séquent, en construisant un arbre de preuve, dont le séquent est la racine et des axiomes de la logique linéaire, les feuilles.

Par exemple, pour notre cas d’école, on regarde quelles sont les règles applicables en partant du séquent que nous venons de construire comme racine, et en travaillant de bas en haut, jusqu’à ce que tous les séquents restant soient des axiomes (la règle id pour identité).


Agrandir

 

(Calcul des séquents pour la Logique Linéaire Intuitionniste)

 

On obtient :


Agrandir

 

 

En lisant l’arbre de preuve de bas en haut et en considérant les applications de la règle (–o gauche) qui correspondent au déclenchement d’actions narratives, on obtient une trame de deux actions successives, La Lingère prête un roman, Emma lit un roman.

 

Les travaux décrits en note[4] fournissent des explications et exemples plus complets et détaillés pour interpréter des arbres de preuve en histoires.

Causalité narrative et analyse du récit

À terme, l’utilisation de techniques basées sur la logique linéaire pourrait également permettre d’étudier de manière formelle la structure narrative d’un récit (linéaire ou interactif). La logique classique a déjà été utilisée pour analyser la chronologie d’objets littéraires (voir par exemple les travaux qui tentent d’établir la chronologie d’une nouvelle de Faulkner en programmation logique[5]) mais une approche logique linéaire permet d’aller plus loin et d’exhiber la structure causale.

Lorsqu’une ressource produite (à droite du -o) par l’encodage d’une action narrative est consommée (à gauche du -o) par l’encodage d’une autre action narrative, on pourra par exemple établir que la première est une cause de la deuxième. Dans notre exemple canonique, c’est parce que la lingère lui a prêté un roman qu’Emma a pu le lire.

On pourra alors également faire des hypothèses sur la concurrence, l’indépendance causale de deux fragments d’une histoire. Cela permettra de raisonner sur leur modularité, par exemple pour ordonner le récit, en composer un autre ou le modifier à partir de sous-extraits indépendants : des pistes de travail dans cette direction ont été ébauchées[6]. Dans ces travaux, nous utilisons le logiciel Coq (http://coq.inria.fr/ ), un outil d’aide à la preuve formelle, qui a la particularité de simplifier l’établissement de propriétés sur la structure même d’une preuve (et donc d’une histoire) ou d’un ensemble de preuves (ensemble d’histoires) issues des mêmes conditions initiales.

Programmer Madame Bovary

Nous avons aussi proposé d’utiliser un langage de programmation logique linéaire pour la génération narrative. Pour montrer le potentiel de cette approche, nous nous sommes ici inspirés de la trame originelle de Madame Bovary et avons décrit à l’aide du langage de programmation Celf[7], un environnement narratif (des actions narratives et conditions initiales) proche d’un extrait du roman.

La figure ci-dessous reprend un extrait de ce code. Sans rentrer dans le détail de la programmation logique en Celf, notons que le connecteur de l’implication linéaire se note « -o » et que ⊗ devient « * ». On commence par déclarer les ressources de base, atomiques, puis les actions narratives. On déclare ensuite l’environnement initial « init », qui contient les actions et les ressources narratives initialement disponibles. On utilise le connecteur « ! » pour préfixer une action ou une ressource qui sera toujours utilisable. Sinon, par défaut, elles seront utilisables une seule fois par le système. La dernière ligne définit la question que cherche à résoudre le programme, ici : exhiber 100 preuves qui permettent d’aller de l’état initial de l’environnement narratif à un état qui contient « emmaIsDead », c’est-à-dire trouver 100 histoires se terminant par le décès d’Emma Bovary.

 

%% Un modèle de Madame Bovary

%% Ressources
emma : type.
charles : type.
escapism : type.
arsenic : type.
[…]
inheritance : type.
denounced : type.
ruin : type.
emmaIsDead : type.

%% Actions narratives
emmaSpendsYearsInCovent : type = emma * covent -o {!novels * !grace * !education * @emma}.
emmaReadsRomanticNovels : type = emma * novels -o {@escapism * @escapism * @emma}.
emmaGœsToBall : type = emma * ball * escapism -o {@escapism * @escapism * @escapism * @escapism * @emma}.
emmaAcceptsRodolpheAdvances : type = emma * escapism * escapism * escapism * escapism * escapism * escapism * rodolpheDecidedToSeduce -o {@rodolpheEmmaTogether * @emma}.
<…>
emmaCommitsSuicide : type = emma * ruin * arsenic * emmaRebels -o {@emmaIsDead}.
init : type =
{ covent * @emma * @leonIsBored * !charles * !rodolphePastLoveLife * !homais
* @emmaSpendsYearsInCovent
* @emmaReadsRomanticNovels
* @emmaReadsRomanticNovels
* @emmaInvitedToBall
* @emmaMarriesCharles
<…>
* @emmaJumpsThroughWindow
* @emmaGetsSick
* @emmaMeetsLeon
* @emmaCommitsSuicide
<…>
}.

#query * * * 100 (init -o {emmaIsDead}).

 

En plus du code des événements du récit originel, nous avons ajouté le code d’événements évoqués par Flaubert comme des possibilités non réalisées. Par exemple, lorsque dans le roman Emma lit la lettre de rupture de Rodolphe, elle songe très fort à se jeter par la fenêtre et seul le hasard l’en empêche. Nous avons donc modélisé l’action narrative correspondante. Ainsi, nous avons pu générer des trames narratives correspondant au roman initial, mais aussi des variantes. Certaines de ces variantes utilisent une fin alternative mais d’autres peuvent différer par l’omission de certaines actions, ou par différents liens de causalité entre deux événements.

Un programme additionnel dédié (disponible en ligne sur la page du projet TeLLer[8]) permet alors de reconstruire les structures causales des histoires correspondantes. Les trames obtenues sont représentées sous forme d’un graphe, qui présente les actions narratives ainsi que des relations causales entre ces dernières, ce qui permet d’en analyser la structure. Cet outil permet également d’exhiber les trames vérifiant des propriétés particulières : par exemple, y a t-il des trames où Emma ne se suicide pas avec de l’arsenic ? Y a t-il des trames où l’opération d’Hippolyte ne figurerait pas parmi les causes de ce suicide ? Par exemple, dans toutes les histoires que nous avons pu générer, l’amputation d’Hippolyte fait partie des causes du suicide d’Emma. Dans notre modèle, il s’agit donc d’un point de basculement de l’histoire.

Voici quelques exemples que nous avons obtenus :
 

 

Agrandir

 

(Exemple 1 : une des structures causales correspondant à Madame Bovary)

 

Ce graphe représente la structure causale d’un déroulement du roman généré à partir de la spécification d’actions narratives en logique linéaire. Dans ce cas précis, la trame correspond à celle du roman de Flaubert. On peut voir que le bal de la Vaubyessard (emmaGœsToBall) est une des causes directes du début de la liaison avec Rodolphe (emmaAcceptsRodolpheAdvances) : une ressource introduite par le codage du bal est donc consommée par le codage du second événement. Il s’agit du désir d’évasion d’Emma, exacerbé après le bal.

 

Agrandir

 

(Exemple 2 : structure causale correspondant à une variante cohérente de Madame Bovary)

Dans cette variante, Emma n’assiste pas au bal organisé à la Vaubyessard, mais son désir d’évasion est tout de même suffisant pour qu’elle cède aux avances de Rodolphe. Elle se défénestre lorsque Rodolphe la quitte. Nous pouvons remarquer ici à quel point les décisions de modélisation influent sur les histoires générées, en regardant le détail de ces actions :

 

emmaReadsRomanticNovels : type = emma * novels -o {@escapism * @escapism * @emma}.
emmaGœsToBall : type = emma * ball * escapism -o {@escapism * @escapism * @escapism * @escapism * @emma}.
emmaAcceptsRodolpheAdvances : type = emma * escapism * escapism * escapism * escapism * escapism * escapism * rodolpheDecidedToSeduce -o {@rodolpheEmmaTogether * @emma}.

 

Il y a ici un effet de seuil, créé par l’ampleur du désir d’évasion d’Emma (escapism), qui doit atteindre un certain niveau pour qu’elle accepte les avances de Rodolphe. Peut-être n’aurait-il pas été suffisant pour qu’elle cède aux avances de Rodolphe sans avoir été exacerbé par le bal de la Vaubyessard et une modélisation très légèrement différente aurait pu aboutir à ce résultat, en limitant par exemple le nombre de fois où l’action narrative modélisée par « emmaReadsRomanticNovels » peut être utilisée. Il faut donc être très prudent si on veut utiliser de telles techniques pour analyser une œuvre préexistante : même lorsque l’on dispose de documents écrits par l’auteur donnant un meilleur éclairage sur les effets des événements narratifs, il est parfois délicat de se garder de toute décision arbitraire de modélisation qui aura des conséquences sur les possibilités narratives.

Conclusion et perspectives

Après ces premières explorations, la logique linéaire nous semble bien correspondre au type de causalité, discret (au sens mathématique) dont on a besoin pour représenter des récits. Elle permet, dans la mesure où l’on dispose d’une description suffisante des événements narratifs, d’explorer ces réseaux de causalité et d’améliorer la compréhension de problèmes tels que la portée, ou granularité de la causalité des récits et de variantes cohérentes possibles. Elle fournit également un outil pour la génération narrative, interactive, pouvant par-là contribuer à l’émergence d’une nouvelle forme d’écriture.

Quant à l’utilisation d’une telle démarche pour l’étude d’une œuvre littéraire existante comme Madame Bovary, il nous faut être prudent : les choix de modélisation ont un impact fort sur les résultats. Ceux-ci seront d’autant plus fiables que la modélisation est fidèle. Les manuscrits de Flaubert présentés sur ce site sont précieux pour ce travail d’expert littéraire.

Les auteurs

Anne-Gwenn Bosser

Anne-Gwenn Bosser est Enseignante-Chercheuse à l'ENI Brest depuis fin 2013 où elle est membre du Centre Européen de Réalité Virtuelle et du Lab-STICC (CNRS UMR 6285, équipe IHSEV).

Après des études de Logique philosophique et Logique mathématique, un passage par l’industrie du jeu-vidéo, et une thèse en Informatique, elle a travaillé pendant plusieurs années au sein du laboratoire Intelligent Virtual Environments fondé par Marc Cavazza à l'université de Teesside (Royaume-Uni).

Contact : bosser@enib.fr

http://www.cerv.fr

 

Marc Cavazza

Marc Cavazza est Professeur à l’Université de Teesside (Royaume-Uni), où il a fondé un groupe de recherche dont la fiction interactive est l’un des thèmes principaux (Intelligent Virtual Environments).

On doit à son équipe de nombreuses innovations techniques, comme le premier prototype entièrement immersif en réalité virtuelle, et la première fiction interactive utilisant une interface neurale. Le groupe de Teesside a produit plus d’une dizaine de prototypes de fiction interactive, s’inspirant à la fois d’œuvres classiques (Madame Bovary, Le Marchand de Venise) ou de fictions populaires (sitcoms ou séries médicales).

http://ive.tees.ac.uk

Remerciements

Merci à François Lapelerie pour son aide précieuse lors de la rédaction de ce texte et à James Harland (RMIT) pour les discussions intéressantes autour de la programmation logique linéaire en Lygon et son application potentielle à la génération de variantes.

Liens

Projet TeLLer: page maintenue par Joao F. Ferreira (Université de Teesside) rassemblant des programmes pour expérimenter l’utilisation de la logique linéaire pour la narration computationnelle: https://github.com/jff/TeLLer et listant les participants au projet.

Le site du réseau d’excellence Integrating Research in Interactive Storytelling, un projet financé par l’union européenne et clôturé en 2012, comprend une bibliographie du domaine : http://iris.scm.tees.ac.uk

Pages professionnelles de chercheurs impliqués dans des travaux mentionnés

Anne-Gwenn Bosser

Marc Cavazza

Ronan Champagnat

Pierre Courtieu

Julien Forest

João F. Ferreira

Chris Martens

Sur la Logique Linéaire

Jean-Yves Girard, Le point aveugle, Hermann, collection « Vision des Sciences ». Tome I, Vers la perfection, Juin 2006, 296 p. ; tome II, Vers l’imperfection, Mars 2013, 299 p.

Le wiki hébergé par l’ENS Lyon :
http://llwiki.ens-lyon.fr/mediawiki/index.php/Main_Page

Di Cosmo, Roberto and Miller, Dale, “Linear Logic”, The Stanford Encyclopedia of Philosophy (Fall 2014 Edition), Edward N. Zalta (ed.),
http://plato.stanford.edu/archives/fall2014/entries/logic-linear/

Autres systèmes inspirés par Madame Bovary

Le projet BARDS

David Pizzi, Fred Charles, Jean-Luc Lugrin, Marc Cavazza. Interactive Storytelling with Literary Feelings Proceedings of the Second International Conference on Affective Computing and Intelligent Interaction (ACII2007), Lisbon, Portugal, September 2007.

Une vidéo du système : (insérer un lien vers la vidéo EmoEmma.wmv)

(The EmoVoice Speech Recognition system has been used courtesy of the University of Augsburg)

Marc Cavazza, Jean-Luc Lugrin, David Pizzi, Fred Charles; Madame Bovary on the Holodeck : Immersive Interactive Storytelling Proceedings of the ACM Multimedia 2007, ACM Press, Augsburg, Germany, 2007.

../etudes/mb_logiquelineaire/.pdf

NOTES

[1] Girard, J.-Y. Press, C. U. (Ed.), Linear Logic : its syntax and semantics Workshop on Advances in Linear Logic, 1995.
[2] David Pizzi, Fred Charles, Jean-Luc Lugrin, Marc Cavazza, Interactive Storytelling with Literary Feelings, ACII 2007.
[3] Voir la note 1.
[4] Bosser, A.-G.; Courtieu, P.; Forest, J. & Cavazza, M., Structural Analysis of Narratives with the Coq Proof Assistant ITP, 2011.
[5] Jennifer Burg, Anne Boyle, Sheau-Dong Lang, Using Constraint Logic Programming to Analyze the Chronology in “A Rose for Emily’’. Computers and the Humanities, Kluwer Academic Publishers, 2000.
[6] Voir la note 4.
[8] Projet TeLLer : page maintenue par Joao F. Ferreira (Université de Teesside) rassemblant des programmes pour expérimenter l’utilisation de la logique linéaire pour la narration computationnelle : https://github.com/jff/TeLLer et listant les participants au projet.


Mentions légales