Modélisation d'ondes sismo-acoustiques par la méthode des éléments spectraux. Application à un séisme dans l'Atlantique Nord. - Thèse Informatique
Modélisation d'ondes sismo-acoustiques par la méthode des éléments spectraux. Application à un séisme dans l'Atlantique Nord. - Thèse Informatique
- Revenir à l'accueil
Autres thèses en informatique :
Etude-theorique-cryp..> 06-Jan-2015 13:08 3.0M
Modelisation-qualita..> 06-Jan-2015 13:08 2.6M
Etude-de-representat..> 06-Jan-2015 13:07 3.0M
Exploration-et-struc..> 06-Jan-2015 13:07 3.4M
Analyse-de-dependanc..> 06-Jan-2015 13:06 4.5M
Scenarisation-d-envi..> 06-Jan-2015 13:06 4.1M
De-l-auto-evaluation..> 06-Jan-2015 06:51 6.2M
APISENSE-a-distribut..> 05-Jan-2015 08:09 5.7M
APISENSE-terminaux-i..> 04-Jan-2015 21:53 5.4M
Addition-formulae-on..> 04-Jan-2015 21:26 3.0M
Algorithmique-distri..> 05-Jan-2015 23:00 4.2M
Approche-algorithmiq..> 05-Jan-2015 22:53 3.5M
Architecture-de-comm..> 05-Jan-2015 08:04 4.4M
Bornes-inferieures-e..> 05-Jan-2015 15:39 1.6M
CONTRIBUTION-A-LA-ST..> 05-Jan-2015 22:56 5.5M
Caracterisation-auto..> 05-Jan-2015 16:34 5.1M
Caracterisation-et-d..> 05-Jan-2015 22:51 4.5M
Catalogage-de-petits..> 05-Jan-2015 08:06 3.8M
Classification-et-ca..> 04-Jan-2015 11:58 1.3M
Collaboration-de-tec..> 04-Jan-2015 21:27 2.4M
Completion-combinato..> 05-Jan-2015 15:41 2.6M
Contribution-a-l-etu..> 05-Jan-2015 22:54 3.2M
Contribution-a-la-co..> 05-Jan-2015 16:10 3.5M
Contributions-a-la-v..> 04-Jan-2015 21:51 5.4M
Controle-de-la-puiss..> 05-Jan-2015 22:52 3.6M
Coordination-Modulai..> 05-Jan-2015 15:58 2.2M
Couplage-de-modeles-..> 05-Jan-2015 22:46 5.3M
Cryptographie-sur-le..> 05-Jan-2015 08:01 3.4M
De-l-auto-evaluation..> 05-Jan-2015 22:44 6.2M
Detection-de-rails-m..> 05-Jan-2015 08:04 5.1M
Dispositifs-spatiaux..> 05-Jan-2015 22:59 5.2M
Dynamique-des-graphe..> 05-Jan-2015 22:56 5.5M
Environnements-urbai..> 05-Jan-2015 08:03 6.3M
Equilibrage-de-charg..> 04-Jan-2015 21:25 3.2M
Etude-de-la-synchron..> 05-Jan-2015 15:58 2.4M
Etude-des-facteurs-d..> 05-Jan-2015 15:38 1.8M
Evaluation-analytiqu..> 05-Jan-2015 08:07 3.5M
Evaluation-de-la-sur..> 05-Jan-2015 15:39 1.4M
Execution-efficace-d..> 05-Jan-2015 15:39 1.4M
Faciliter-le-develop..> 04-Jan-2015 21:56 4.4M
Factorisation-matric..> 04-Jan-2015 11:59 2.7M
Formes-et-fonctions-..> 05-Jan-2015 22:49 4.5M
Generation-automatiq..> 03-Jan-2015 22:04 2.6M
Generation-de-modele..> 05-Jan-2015 15:41 3.2M
Gestion-de-la-variab..> 04-Jan-2015 21:55 4.8M
Idéalisation-d-asse..> 04-Jan-2015 11:57 2.1M
Inference-d-invarian..> 04-Jan-2015 11:58 1.5M
Influence-du-mapping..> 05-Jan-2015 22:49 4.6M
Integration-de l-inf..> 04-Jan-2015 21:25 3.4M
Integration-et-explo..> 05-Jan-2015 16:35 4.8M
Intelligence-en-essa..> 05-Jan-2015 08:03 5.6M
Interaction-entre-al..> 05-Jan-2015 22:51 4.1M
Interrogation-de-gra..> 03-Jan-2015 22:04 2.9M
L-architecture-du-di..> 05-Jan-2015 15:40 1.2M
La-gestion-du-trafic..> 03-Jan-2015 22:01 4.1M
Langage-de-mashup-Th..> 04-Jan-2015 21:24 4.1M
Les-logiciels-de-ges..> 03-Jan-2015 22:03 3.1M
Lh-rs-p2p-une-nouvel..> 04-Jan-2015 11:59 2.7M
Mesure-de-la-fragili..> 04-Jan-2015 21:24 3.8M
Meta-modelisation-du..> 04-Jan-2015 21:56 4.1M
Methode-de-classific..> 04-Jan-2015 11:58 1.3M
Methode-de-game-desi..> 05-Jan-2015 08:10 4.2M
Methodes-de-reconstr..> 05-Jan-2015 23:05 6.1M
Methodes-et-structur..> 05-Jan-2015 22:46 5.6M
Methodes-numeriques-..> 05-Jan-2015 22:52 3.9M
Methodes-sequentiell..> 04-Jan-2015 21:27 2.2M
Mise-en-oeuvre-appli..> 04-Jan-2015 21:54 4.4M
Mise-en-oeuvre-de-cr..> 05-Jan-2015 23:03 6.3M
Modele-de-comporteme..> 05-Jan-2015 16:10 3.2M
Modele-et-experience..> 05-Jan-2015 08:01 3.8M
Modelisation-d-un-re..> 05-Jan-2015 23:03 7.2M
Modelisation-d-une-a..> 04-Jan-2015 21:53 5.0M
Modelisation-de-la-p..> 05-Jan-2015 15:59 1.9M
Modelisation-et-dete..> 04-Jan-2015 11:57 1.6M
Modelisation-et-scor..> 05-Jan-2015 16:09 4.4M
Normalisation-et-App..> 03-Jan-2015 22:01 4.1M
Nouvelles-approches-..> 05-Jan-2015 08:09 2.3M
Periodes-d-integrale..> 05-Jan-2015 22:54 3.0M
Planification-d-une-..> 05-Jan-2015 08:06 4.1M
Positionnement-robus..> 05-Jan-2015 15:39 1.5M
Prise-en-compte-de-l..> 03-Jan-2015 22:04 2.8M
Proposition-d-approc..> 05-Jan-2015 22:58 5.2M
Proposition-d-une-ar..> 05-Jan-2015 22:48 5.0M
Protection-obligatoi..> 05-Jan-2015 22:44 6.0M
Qualification-system..> 04-Jan-2015 21:26 2.8M
Reconnaissance-de-co..> 03-Jan-2015 22:03 3.6M
Reseaux-urbains-de-c..> 05-Jan-2015 16:34 5.6M
Samsung-Telephone-Mo..> 05-Jan-2015 15:41 2.4M
Segmentation-par-cou..> 05-Jan-2015 23:01 3.9M
Segmentation-supervi..> 04-Jan-2015 11:58 1.3M
Services-de-repartit..> 03-Jan-2015 21:59 4.7M
Simulation-credible-..> 05-Jan-2015 22:58 5.2M
Simulations-numeriqu..> 05-Jan-2015 22:48 4.8M
Systeme-de-mesure-d-..> 05-Jan-2015 15:40 1.3M
Techniques-de-codage..> 05-Jan-2015 22:53 3.5M
Techniques-visuelles..> 04-Jan-2015 21:27 2.7M
The-Emergence-of-Mul..> 03-Jan-2015 22:05 2.5M
Thermoformage-du-ver..> 05-Jan-2015 22:59 4.4M
Trigraphes-de-Berge-..> 03-Jan-2015 22:02 3.9M
Typologies-textuelle..> 05-Jan-2015 23:05 6.1M
Un-ilot-formel-pour-..> 05-Jan-2015 08:07 3.1M
Une-approche-agile-f..> 05-Jan-2015 16:09 4.0M
Une-approche-d-align..> 05-Jan-2015 15:40 2.9M
Vers-une-capitalisat..> 03-Jan-2015 22:00 4.6M
Cours d'informatique :
Analyse-numerique-Co..> 03-Jan-2015 17:33 3.0M
Approches-m-k-firm-p..> 03-Jan-2015 17:27 3.7M
COURS-LA-CULTURE-INF..> 03-Jan-2015 17:25 3.8M
CRYPTANALYSE-DE-RSA-..> 03-Jan-2015 17:33 3.0M
Cours-Interconnexion..> 03-Jan-2015 17:34 3.0M
Cours-d-Analyse-et-C..> 03-Jan-2015 17:22 3.9M
Efficient-C++finite-..> 03-Jan-2015 17:30 3.5M
Efficient-C++finite-..> 03-Jan-2015 17:31 3.2M
Fondements-de-l-Info..> 03-Jan-2015 17:22 4.0M
INTRODUCTION-A-L-INF..> 03-Jan-2015 17:24 3.8M
Informatique-et-Ling..> 03-Jan-2015 17:24 3.8M
Initiation-a-l-infor..> 03-Jan-2015 17:26 3.8M
Intelligence-Artific..> 03-Jan-2015 15:16 2.5M
Introduction-a-l-ana..> 03-Jan-2015 17:27 3.7M
Introduction-a-la-ge..> 03-Jan-2015 17:26 3.8M
Le-routage-externe-B..> 03-Jan-2015 17:32 3.1M
Le-systeme-d-informa..> 03-Jan-2015 17:32 3.1M
Lecture1_Linear_SVM_..> 03-Jan-2015 14:57 2.4M
Lecture2_Linear_SVM_..> 03-Jan-2015 14:56 2.4M
Lecture3_Linear_SVM_..> 03-Jan-2015 14:56 2.4M
Lecture4_Kenrels_Fun..> 03-Jan-2015 14:55 2.4M
Lecture5_Kernel_SVM...> 03-Jan-2015 14:55 2.4M
Lecture6_SVDD.pdf.htm 03-Jan-2015 14:54 2.4M
Lecture7_Cross_Valid..> 03-Jan-2015 14:54 2.4M
Lecture8_Multi_Class..> 03-Jan-2015 14:57 2.4M
Lecture9_Multi_Kerne..> 03-Jan-2015 14:53 2.5M
Lecture10_Outilier_L..> 03-Jan-2015 14:53 2.5M
Les-reseaux-sans-fil..> 03-Jan-2015 15:17 2.5M
NooJ-pour-l-Intellig..> 03-Jan-2015 17:30 3.2M
Outils-Logiques-pour..> 03-Jan-2015 15:15 2.8M
Presentation-de-la-r..> 03-Jan-2015 17:33 3.0M
Projet-IP-SIG-Signal..> 03-Jan-2015 15:16 2.5M
Robotique-Mobile-PDF..> 03-Jan-2015 15:16 2.6M
Systeme-informatique..> 03-Jan-2015 15:17 2.5M
Systemes-Multi-Agent..> 03-Jan-2015 17:28 3.5M
Tutoriel-Android-TP-..> 03-Jan-2015 14:57 2.3M
Understanding-SVM-th..> 03-Jan-2015 14:57 2.4M
Une-histoire-de-la-m..> 03-Jan-2015 17:28 3.5M
Une-introduction-aux..> 03-Jan-2015 17:31 3.1M
Vers-une-signalisati..> 03-Jan-2015 17:25 3.8M
Analyse de d´ependances ML pour les ´evaluateurs de
logiciels critiques.
Vincent Benayoun
To cite this version:
Vincent Benayoun. Analyse de d´ependances ML pour les ´evaluateurs de logiciels critiques..
Software Engineering. Conservatoire national des arts et metiers - CNAM, 2014. French.
.
HAL Id: tel-01062785
https://tel.archives-ouvertes.fr/tel-01062785
Submitted on 10 Sep 2014
HAL is a multi-disciplinary open access
archive for the deposit and dissemination of scientific
research documents, whether they are published
or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.
L’archive ouverte pluridisciplinaire HAL, est
destin´ee au d´epˆot et `a la diffusion de documents
scientifiques de niveau recherche, publi´es ou non,
´emanant des ´etablissements d’enseignement et de
recherche fran¸cais ou ´etrangers, des laboratoires
publics ou priv´es.CONSERVATOIRE NATIONAL DES
ARTS ET MÉTIERS
École Doctorale Informatique, Télécommunication et Électronique
CEDRIC - Centre d’Étude et De Recherche en Informatique et Communications
THÈSE DE DOCTORAT
présentée par : Vincent BENAYOUN
soutenue le : 16 MAI 2014
pour obtenir le grade de : Docteur du Conservatoire National des Arts et Métiers
Discipline / Spécialité : Informatique / Preuve formelle
Analyse de dépendances ML
pour les évaluateurs de logiciels critiques
THÈSE dirigée par
Mme. DUBOIS Catherine Professeur, ENSIIE - CEDRIC
M. PESSAUX François Maître de conférences, ENSTA ParisTech
RAPPORTEURS
M. DI COSMO Roberto Professeur, Université Paris Diderot
Mme. BLAZY Sandrine Professeur, Université de Rennes 1
EXAMINATEURS
M. RAJCHENBACH-TELLER David Ingénieur R&D, Mozilla
M. POTET Marie-Laure (Présidente) Professeur, Ensimag - VERIMAG2Remerciements
Je tiens tout d’abord à remercier vivement Catherine Dubois, qui m’a guidé tout au
long de mon parcours depuis mon passage à l’école d’ingénieur jusqu’à aujourd’hui. Elle
m’a fait découvrir OCaml sous un nouveau jour et m’a ainsi permis d’apprécier à leur juste
valeur les bienfaits du typage fort. Elle m’a ensuite donné le goût des méthodes formelles et
m’a introduit dans l’équipe CPR du CNAM où j’ai découvert le monde de la recherche en
réalisant ma première véritable modélisation formelle sous la direction de Maria-Virginia
Aponte et de Marianne Simonot, que je remercie également pour cette expérience très inté-
ressante. Catherine a ensuite pris la direction de ma thèse lors mon entrée à MLstate jusqu’à
la rédaction de ce manuscrit. Elle a su gérer les nombreuses péripéties de mon parcours
de thèse et m’accompagner jusqu’au bout en me prodiguant de nombreux conseils précieux.
Je remercie Roberto Di Cosmo et Sandrine Blazy d’avoir accepté le rôle de rapporteurs
de cette thèse et d’avoir fourni les efforts nécessaires à compréhension fine de mon travail.
Merci pour leurs remarques judicieuses et leurs questions pertinentes. Je remercie également
Marie-Laure Potet pour son implication dans mon jury de thèse en tant que présidente.
Mon parcours de thèse à commencé à MLstate. Je remercie donc Henri Binsztok de
m’avoir proposé de rejoindre MLstate en thèse CIFRE. J’ai eu l’occasion d’y travailler
avec une équipe géniale. Je souhaite tout particulièrement remercier mes encadrants Catherine,
David Teller, Pierre Courtieu et Adam Koprowski qui m’ont beaucoup apporté.
David m’a guidé au quotidien dans toutes mes activités à MLstate, il s’est battu sans
cesse pour la réussite de ma thèse, comme il l’a fait pour tout le projet OPA en géné-
ral. C’est un homme qui a les épaules pour être partout à la fois et s’occuper de chaque
chose avec intelligence et efficacité. Pierre et Adam m’ont appris à maîtriser Coq, ce qui
m’a beaucoup aidé pour réaliser les preuves que je présente dans ce manuscrit. Je remercie
également tous les membres de l’équipe avec qui j’ai travaillé à MLstate, en particulier
Mikołaj Konarski avec qui j’ai eu grand plaisir à travailler et pour qui j’ai un grand respect.
Catherine m’a donné toute sa confiance et ses encouragements en me permettant de
continuer mon parcours de thèse après mon départ de MLstate. Elle m’a proposé avec le
concours de Thérèse Hardin un nouveau sujet de thèse que je présente aujourd’hui dans ce
manuscrit. Je tiens à remercier sincèrement Thérèse qui a suivi mon parcours d’un œil bienveillant
et m’a donné des conseils judicieux aux moments opportuns. Sur son conseil, je me
suis dirigé vers MLstate et sur son conseil, j’ai pris la suite de la thèse de Philippe Ayrault.
Je remercie d’ailleurs Philippe pour le temps qu’il m’a consacré afin de m’expliquer les dé-
tails de son analyse de dépendances ainsi que les besoins spécifiques, en tant qu’évaluateur
de logiciels critiques, qui l’ont amené à faire certains choix. Je remercie François Pessaux
d’avoir assuré l’encadrement de ma thèse aux côtés de Catherine. Il a su me transmettre son
expérience et sa rigueur intellectuelle. En particulier il m’a permis de mieux comprendre les
besoins des évaluateurs de logiciels critiques en partageant son expérience dans le domaine.
Ces remerciements ne pourraient être complets sans remercier mes parents et mon frère
qui m’ont toujours apporté leur soutien et leurs encouragements ainsi que ma chère femme
qui me soutient par son amour et ses délicates attentions et nos deux petites princesses,
qui par leurs jolies voix m’ont aidé à ne pas somnoler devant l’ordinateur pendant les
nombreuses nuits passées en compagnie de Coq et de Latex.REMERCIEMENTS
4Résumé
Les logiciels critiques nécessitent l’obtention d’une évaluation de conformité aux normes
en vigueur avant leur mise en service. Cette évaluation est obtenue après un long travail
d’analyse effectué par les évaluateurs de logiciels critiques. Ces derniers peuvent être aidés
par des outils utilisés de manière interactive pour construire des modèles, en faisant appel à
des analyses de flots d’information. Des outils comme SPARK-Ada existent pour des sousensembles
du langage Ada utilisés pour le développement de logiciels critiques. Cependant,
des langages émergents comme ceux de la famille ML ne disposent pas de tels outils adaptés.
La construction d’outils similaires pour les langages ML demande une attention particulière
sur certaines spécificités comme les fonctions d’ordre supérieur ou le filtrage par motifs. Ce
travail présente une analyse de flot d’information pour de tels langages, spécialement conçue
pour répondre aux besoins des évaluateurs. Cette analyse statique prend la forme d’une
interprétation abstraite de la sémantique opérationnelle préalablement enrichie par des
informations de dépendances. Elle est prouvée correcte vis-à-vis d’une définition formelle
de la notion de dépendance, à l’aide de l’assistant à la preuve Coq. Ce travail constitue une
base théorique solide utilisable pour construire un outil efficace pour l’analyse de tolérance
aux pannes.
Mots clés : analyse de dépendances, logiciels critiques, langages fonctionnels, Coq,
preuve de correction, analyse statique, interprétation abstraite
5Abstract
Critical software needs to obtain an assessment before commissioning in order to ensure
compliance with standards. This assessment is given after a long task of software analysis
performed by assessors. They may be helped by tools, used interactively, to build models
using information-flow analyses. Tools like SPARK-Ada exist for Ada subsets used for critical
software. But some emergent languages such as those of the ML family lack such
adapted tools. Providing similar tools for ML languages requires special attention on specific
features such as higher-order functions and pattern-matching. This work presents an
information-flow analysis for such a language specifically designed according to the needs
of assessors. This analysis is built as an abstract interpretation of the operational semantics
enriched with dependency information. It is proved correct according to a formal definition
of the notion of dependency using the Coq proof assistant. This work gives a strong
theoretical basis for building an efficient tool for fault tolerance analysis.
Keywords : dependency analysis, critical software, functional languages, Coq, proof of
correctness, static analysis, abstract interpretation
7Table des matières
Introduction 19
Évaluation des logiciels critiques . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Outils automatiques, interactifs et corrects . . . . . . . . . . . . . . . . . . . . . . 20
Pourquoi une analyse de dépendances pour ML ? . . . . . . . . . . . . . . . . . . 21
Contribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Plan de la thèse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1 État de l’art 27
1.1 Analyse de dépendances pour les logiciels critiques . . . . . . . . . . . . . . 27
1.1.1 Les langages ML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.1.2 SPARK/Ada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.2 Analyse de flot pour les langages fonctionnels . . . . . . . . . . . . . . . . . 32
1.3 Analyse de teintes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
1.4 Interprétation abstraite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2 Notion de dépendance 41
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.2 Le langage : algèbre des expressions . . . . . . . . . . . . . . . . . . . . . . . 43
2.3 Sémantique opérationnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.3.1 Valeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
9TABLE DES MATIÈRES
2.3.2 Environnements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.3.3 Règles d’inférence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.3.4 Sémantique des programmes mal typés et filtrage par motif . . . . . 45
2.4 Points d’injection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.4.1 Dans le programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.4.2 Dans l’environnement . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.5 Sémantique opérationnelle avec injection . . . . . . . . . . . . . . . . . . . . 49
2.5.1 Règles d’inférence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.5.2 Correction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.5.2.1 Énoncé informel du théorème . . . . . . . . . . . . . . . . . 51
2.5.2.2 Illustration par l’exemple . . . . . . . . . . . . . . . . . . . 51
2.5.2.3 Énoncé formel du théorème . . . . . . . . . . . . . . . . . . 54
2.5.2.4 Preuve de correction . . . . . . . . . . . . . . . . . . . . . . 54
2.6 Impact d’une injection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
2.6.1 Impact sur la terminaison . . . . . . . . . . . . . . . . . . . . . . . . 57
2.6.2 Impact sur la valeur . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.7 Dépendances d’une expression . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.7.1 Dépendances de terminaison . . . . . . . . . . . . . . . . . . . . . . . 58
2.7.2 Dépendances de valeur . . . . . . . . . . . . . . . . . . . . . . . . . . 58
2.7.3 Illustration par l’exemple . . . . . . . . . . . . . . . . . . . . . . . . 58
3 Analyse dynamique 61
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.2 Sur-instrumentation des valeurs . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.2.1 Valeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.2.2 Ensembles de dépendances . . . . . . . . . . . . . . . . . . . . . . . . 65
10TABLE DES MATIÈRES
3.2.3 Environnements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.2.4 Valeur de référence d’une valeur sur-instrumentée . . . . . . . . . . . 66
3.2.5 Instanciation d’une valeur sur-instrumentée . . . . . . . . . . . . . . 67
3.2.6 Conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
3.3 Sémantique avec injection dans un t-environnement sur-instrumenté . . . . . 70
3.3.1 Règles d’inférence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
3.3.2 Correction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
3.3.2.1 Énoncé informel du théorème . . . . . . . . . . . . . . . . . 72
3.3.2.2 Illustration par l’exemple . . . . . . . . . . . . . . . . . . . 74
3.3.2.3 Énoncé formel du théorème . . . . . . . . . . . . . . . . . . 76
3.3.2.4 Preuve de correction . . . . . . . . . . . . . . . . . . . . . . 76
3.4 Sémantique sur-instrumentée . . . . . . . . . . . . . . . . . . . . . . . . . . 78
3.4.1 Règles d’inférence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.4.1.1 Explication des règles avec dépendances indirectes . . . . . 85
3.4.1.2 Spécification des dépendances indirectes . . . . . . . . . . . 93
3.4.2 Correction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
3.4.2.1 Énoncé informel du théorème . . . . . . . . . . . . . . . . . 102
3.4.2.2 Illustration par l’exemple . . . . . . . . . . . . . . . . . . . 103
3.4.2.3 Énoncé formel du théorème . . . . . . . . . . . . . . . . . . 113
3.4.2.4 Preuve de correction . . . . . . . . . . . . . . . . . . . . . . 113
3.5 Sémantique instrumentée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
3.5.1 Algèbre des valeurs instrumentées . . . . . . . . . . . . . . . . . . . . 121
3.5.1.1 Valeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
3.5.1.2 Ensembles de dépendances . . . . . . . . . . . . . . . . . . 121
3.5.1.3 Environnements . . . . . . . . . . . . . . . . . . . . . . . . 122
11TABLE DES MATIÈRES
3.5.2 Règles d’inférence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
3.5.3 Correction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
3.5.3.1 Énoncé informel du théorème . . . . . . . . . . . . . . . . . 127
3.5.3.2 Illustration par l’exemple . . . . . . . . . . . . . . . . . . . 127
3.5.3.3 Énoncé formel du théorème . . . . . . . . . . . . . . . . . . 131
3.5.3.4 Preuve de correction . . . . . . . . . . . . . . . . . . . . . . 134
3.6 Correction de l’analyse dynamique . . . . . . . . . . . . . . . . . . . . . . . 138
3.6.1 Énoncé informel du théorème . . . . . . . . . . . . . . . . . . . . . . 138
3.6.2 Illustration par l’exemple . . . . . . . . . . . . . . . . . . . . . . . . 138
3.6.3 Énoncé formel du théorème . . . . . . . . . . . . . . . . . . . . . . . 140
3.6.4 Preuve de correction . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
4 Analyse statique 145
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
4.2 Sémantique instrumentée multiple . . . . . . . . . . . . . . . . . . . . . . . 147
4.2.1 Présentation informelle . . . . . . . . . . . . . . . . . . . . . . . . . . 147
4.2.2 Définition formelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
4.3 Sémantique collectrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
4.3.1 Algèbre des valeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
4.3.1.1 Valeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
4.3.1.2 Ensembles de dépendances . . . . . . . . . . . . . . . . . . 150
4.3.1.3 Environnements . . . . . . . . . . . . . . . . . . . . . . . . 150
4.3.2 Règles d’inférence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
4.3.3 Correction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
4.3.3.1 Énoncé informel du théorème . . . . . . . . . . . . . . . . . 157
4.3.3.2 Illustration par l’exemple . . . . . . . . . . . . . . . . . . . 158
12TABLE DES MATIÈRES
4.3.3.3 Énoncé formel du théorème . . . . . . . . . . . . . . . . . . 159
4.3.3.4 Preuve de correction . . . . . . . . . . . . . . . . . . . . . . 162
4.4 Sémantique abstraite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
4.4.1 Algèbre des valeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
4.4.1.1 Valeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
4.4.1.2 Ensembles de dépendances . . . . . . . . . . . . . . . . . . 173
4.4.1.3 Environnements . . . . . . . . . . . . . . . . . . . . . . . . 176
4.4.2 Règles d’inférence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
4.4.3 Correction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
4.4.3.1 Énoncé informel du théorème . . . . . . . . . . . . . . . . . 182
4.4.3.2 Illustration par l’exemple . . . . . . . . . . . . . . . . . . . 182
4.4.3.3 Énoncé formel du théorème . . . . . . . . . . . . . . . . . . 183
4.4.3.4 Preuve de correction . . . . . . . . . . . . . . . . . . . . . . 184
4.5 Correction de l’analyse statique . . . . . . . . . . . . . . . . . . . . . . . . . 192
4.5.1 Énoncé informel du théorème . . . . . . . . . . . . . . . . . . . . . . 192
4.5.2 Illustration par l’exemple . . . . . . . . . . . . . . . . . . . . . . . . 193
4.5.3 Énoncé formel du théorème . . . . . . . . . . . . . . . . . . . . . . . 194
4.5.4 Preuve de correction . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
5 Implémentation et preuve 197
5.1 Prototypes implémentés en OCaml . . . . . . . . . . . . . . . . . . . . . . . 197
5.2 Développement Coq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
5.2.1 Contenu du développement . . . . . . . . . . . . . . . . . . . . . . . 198
5.2.2 Intérêt du choix de Coq . . . . . . . . . . . . . . . . . . . . . . . . . 199
5.3 Extraction de Coq vers OCaml . . . . . . . . . . . . . . . . . . . . . . . . . 200
13TABLE DES MATIÈRES
Conclusion 203
Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Perspectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
Bibliographie 205
Annexes 213
A Définitions des sémantiques en Coq 213
A.1 Sémantique opérationnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
A.2 Sémantique avec injection . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
A.3 Sémantique sur-instrumentée . . . . . . . . . . . . . . . . . . . . . . . . . . 217
A.4 Sémantique instrumentée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
A.5 Sémantique instrumentée multiple . . . . . . . . . . . . . . . . . . . . . . . 221
A.6 Sémantique collectrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
A.7 Sémantique abstraite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
B Énoncés des théorèmes en Coq 229
B.1 Correction de la sémantique avec injection . . . . . . . . . . . . . . . . . . . 229
B.2 Correction de la sémantique sur-instrumentée . . . . . . . . . . . . . . . . . 230
B.3 Correction de la sémantique instrumentée . . . . . . . . . . . . . . . . . . . 230
B.4 Correction de la sémantique collectrice . . . . . . . . . . . . . . . . . . . . . 231
B.5 Correction de la sémantique abstraite . . . . . . . . . . . . . . . . . . . . . . 231
Index 233
14Table des figures
2.1 Algèbre des expressions du langage . . . . . . . . . . . . . . . . . . . . . . . 43
2.2 Règles d’inférence de la sémantique opérationnelle . . . . . . . . . . . . . . 46
2.3 Règles d’inférence du filtrage de la sémantique opérationnelle . . . . . . . . 46
2.4 Sémantique opérationnelle avec injection : règles d’inférence identiques à la
sémantique usuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.5 Sémantique opérationnelle avec injection : règles d’inférence spécifiques . . . 50
2.6 Prédicat de non-apparition d’un label lors d’une évaluation . . . . . . . . . 55
2.7 Prédicat de non-apparition d’un label dans une valeur . . . . . . . . . . . . 55
3.1 Sémantiques intermédiaires pour l’analyse dynamique . . . . . . . . . . . . . 62
3.2 Enchaînement des preuves des sémantiques intermédiaires pour l’analyse
dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.3 Sémantique avec injection dans un t-environnement sur-instrumenté : règles
d’inférence identiques à la sémantique usuelle . . . . . . . . . . . . . . . . . 73
3.4 Sémantique avec injection dans un t-environnement sur-instrumenté : règles
d’inférence spécifiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
3.5 Sémantique sur-instrumentée . . . . . . . . . . . . . . . . . . . . . . . . . . 80
3.6 Sémantique sur-instrumentée : règles de filtrage . . . . . . . . . . . . . . . . 81
3.7 Valeurs sur-instrumentées : suppression des t-dépendances . . . . . . . . . . 81
3.8 Valeurs sur-instrumentées : ajout de t-dépendances . . . . . . . . . . . . . . 82
15TABLE DES FIGURES
3.9 Exemple 1 : arbre de dérivation du jugement d’évaluation sur-instrumentée 105
3.10 Exemple 1 : arbre de dérivation du jugement d’évaluation avec injection si
l = l
′
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
3.11 Exemple 1 : arbre de dérivation du jugement d’évaluation avec injection si
l ̸= l
′
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
3.12 Exemple 2 : arbre de dérivation du jugement d’évaluation sur-instrumentée 109
3.13 Exemple 2 : sous-arbre de dérivation sur-instrumentée du filtrage . . . . . . 109
3.14 Exemple 2 : arbre de dérivation du jugement d’évaluation avec injection sur l1110
3.15 Exemple 2 : sous-arbre de dérivation du filtrage avec injection sur l1 . . . . 110
3.16 Exemple 2 : arbre de dérivation du jugement d’évaluation avec injection sur l2111
3.17 Exemple 2 : sous-arbre de dérivation du filtrage avec injection sur l2 . . . . 111
3.18 Exemple 2 : arbre de dérivation du jugement d’évaluation avec injection sur
l ̸∈ {l1, l2} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
3.19 Exemple 2 : sous-arbre de dérivation du filtrage avec injection sur l ̸∈ {l1, l2} 112
3.20 Sémantique instrumentée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
3.21 Sémantique instrumentée : règles de filtrage . . . . . . . . . . . . . . . . . . 123
3.22 Valeurs instrumentées : suppression des t-dépendances . . . . . . . . . . . . 124
3.23 Valeurs instrumentées : ajout de t-dépendances . . . . . . . . . . . . . . . . 125
3.24 Exemple 1 : arbre de dérivation du jugement d’évaluation instrumentée . . . 128
3.25 Exemple 2 : arbre de dérivation du jugement d’évaluation instrumentée . . . 130
3.26 Exemple 2 : sous-arbre de dérivation instrumentée du filtrage . . . . . . . . 130
3.27 Prédicat de non-apparition d’un label lors d’une évaluation instrumentée . . 140
3.28 Prédicat de non-apparition d’un label dans une valeur instrumentée . . . . . 141
3.29 Prédicat de non-apparition d’un label dans un environnement instrumenté . 141
4.1 Sémantiques intermédiaires pour l’analyse statique . . . . . . . . . . . . . . 146
16TABLE DES FIGURES
4.2 Enchaînement des preuves des sémantiques intermédiaires pour l’analyse
statique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
4.3 Sémantique collectrice : première partie . . . . . . . . . . . . . . . . . . . . 151
4.4 Sémantique collectrice : seconde partie . . . . . . . . . . . . . . . . . . . . . 152
4.5 Sémantique collectrice : règles de filtrage . . . . . . . . . . . . . . . . . . . . 152
4.6 Sémantique collectrice : prédicat d’application instrumentée multiple . . . . 154
4.7 Sémantique collectrice : Définition de la fonction d’abstraction . . . . . . . . 160
4.8 Sémantique collectrice : Définition de la fonction de concrétisation . . . . . 161
4.9 Relation d’ordre sur les valeurs et environnements instrumentés . . . . . . . 161
4.10 Relation d’ordre sur les valeurs et environnements instrumentés multiples . 161
4.11 Sémantique abstraite : Définition de la fonction d’abstraction (partie 1/2) . 174
4.12 Sémantique abstraite : Définition de la fonction d’abstraction (partie 2/2) . 175
4.13 Sémantique abstraite : Définition de la fonction de concrétisation . . . . . . 175
4.14 Sémantique abstraite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
4.15 Sémantique abstraite : v-dépendances des identificateurs libres d’une expression
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
4.16 Sémantique abstraite : règles de filtrage . . . . . . . . . . . . . . . . . . . . 178
4.17 Valeurs abstraites : suppression des t-dépendances . . . . . . . . . . . . . . 179
4.18 Valeurs abstraites : ajout de t-dépendances . . . . . . . . . . . . . . . . . . 180
4.19 Relation d’ordre sur les valeurs collectrices . . . . . . . . . . . . . . . . . . . 184
4.20 Prédicat de non-apparition d’un label lors d’une évaluation abstraite . . . . 195
4.21 Prédicat de non-apparition d’un label dans une valeur abstraite . . . . . . . 195
4.22 Prédicat de non-apparition d’un label dans un environnement abstrait . . . 195
17TABLE DES FIGURES
18Introduction
Depuis son apparition jusqu’à aujourd’hui, l’informatique s’est développée à une vitesse
phénoménale. Les systèmes informatiques sont devenus de plus en plus complexes et
« l’intelligence » de ces systèmes a progressivement migré du matériel vers le logiciel. Les
logiciels sont maintenant présents partout et s’occupent de tâches de plus en plus importantes
et complexes. On les retrouve aussi bien dans nos téléphones portables que dans nos
voitures. Ils nous permettent de nous divertir, de communiquer mais aussi de piloter des
avions ou de gérer des systèmes bancaires.
Compte tenu des conséquences dramatiques que peut engendrer une défaillance dans
certains logiciels, une rigueur particulière doit être exigée pour la conception et le développement
de ces logiciels dits « critiques ».
Les logiciels critiques sont présents dans divers domaines dont le nucléaire, le transport
(aéronautique, ferroviaire et automobile), le médical, le bancaire et l’armement. Certains
dysfonctionnements peuvent causer des pertes financières de l’ordre de plusieurs centaines
de millions d’euros, comme le montrent les exemples récents de dysfonctionnements [Kni12]
dans des logiciels automatiques de spéculation boursière. D’autres peuvent mettre en jeu
des vies humaines, comme on a pu en être témoin lors des accidents de voiture provoqués
par des dysfonctionnements du régulateur de vitesse du véhicule. Les conséquences d’un
dysfonctionnement dans le logiciel de pilotage d’un train, d’un avion ou d’une fusée peuvent
se révéler dramatiques. La destruction de la fusée Arianne V lors de son vol inaugural
en 1996 est un exemple bien connu de catastrophe provoquée par un dysfonctionnement
logiciel. Le domaine médical n’est pas non plus épargné. La machine de radiothérapie
Therac-25 a provoqué le décès de plusieurs patients à cause d’un dysfonctionnement logiciel
passé inaperçu pendant plusieurs années.
19INTRODUCTION
Évaluation des logiciels critiques
La prise de conscience de l’importance d’un haut niveau de sûreté de fonctionnement
des logiciels critiques a conduit les autorités à établir différentes normes selon les différents
domaines d’application (EN-50128 [Sta99] pour le ferroviaire, DO-178B/C [RTC92] pour
l’avionique, . . . ). Ces normes spécifient les exigences que doivent respecter les logiciels critiques
de la conception à la mise en fonctionnement voire au démantèlement, en fonction de
leur niveau de criticité. La vérification de la conformité d’un logiciel aux normes en vigueur
nécessite de faire appel à un évaluateur indépendant engageant personnellement sa responsabilité
pénale. Celui-ci va alors produire une démonstration du respect des normes par le
système critique évalué. Cette démonstration est constituée d’un ensemble de documents
ayant pour but de justifier un certain niveau de confiance. La justification est basée sur
l’utilisation de méthodes de développement rigoureuses, de tests unitaires et d’intégration
(avec un taux de couverture raisonnable) voire de preuves mathématiques dans les cas les
plus critiques. La démonstration produite sera alors soumise à l’approbation d’une autorité
de tutelle qui délivre alors l’autorisation de mise en exploitation.
Outils automatiques, interactifs et corrects
La tâche d’évaluation d’un logiciel critique est particulièrement coûteuse en temps et en
main d’œuvre. On estime [Ayr11] le coût du développement d’un logiciel critique entre 6 et
10 hommes-années pour mille lignes de code dont environ 60% sont attribuables aux phases
de vérification, validation et évaluation. Des outils automatiques permettant de simplifier
une partie de ce travail de vérification peuvent donc être fortement appréciés, moyennant
le respect de certaines contraintes dues à leur utilisation.
Ces outils automatiques doivent être utilisés uniquement comme une aide pour l’évaluateur.
L’interactivité est primordiale dans ce type d’outil pour que l’évaluateur puisse
utiliser son expertise pour guider l’outil et obtenir ainsi les résultats dont il a besoin.
La question de la correction des outils utilisés par l’évaluateur de logiciels critiques est
une question essentielle. Pour que l’évaluateur puisse faire confiance à l’outil et utiliser les
résultats fournis par celui-ci pour prendre des décisions, il faut que cet outil bénéficie d’un
20INTRODUCTION
haut niveau de fiabilité. Par exemple une preuve formelle de la correction de l’outil peut
être un gage de fiabilité acceptable par l’évaluateur.
Pourquoi une analyse de dépendances pour ML ?
Divers outils peuvent permettre d’alléger le travail d’évaluation d’un logiciel critique.
Parmi ces outils, l’analyse des dépendances dans le code source du logiciel a une importance
particulière. En effet, ce type d’analyse peut permettre à l’évaluateur d’identifier les
parties du programme qui n’ont aucune influence sur la partie critique du système évalué.
L’évaluateur peut alors se reposer sur la fiabilité de l’outil d’analyse pour s’épargner un
long travail de vérification sur les parties du programme pour lesquelles il a une garantie
qu’elles ne peuvent en aucune manière influencer les fonctionnalités critiques du système :
elles ne font alors pas partie de la « cible d’analyse » (Target of Analysis).
D’autre part, l’analyse des dépendances du code source peut permettre à l’évaluateur
de visualiser les interactions entre les différentes parties du logiciel. Il acquiert ainsi une
meilleure compréhension du logiciel et de sa structure. En particulier, ces informations
se révèlent être précieuses pour construire la « modélisation fonctionnelle du système »
qui constitue une des étapes de l’AMDEC [X6086, MSA80], méthode d’analyse utilisée
fréquemment par les évaluateurs de systèmes critiques.
Les analyses de dépendances, comme les analyses de flots d’information, les analyses
de non-interférence, ou encore les analyses d’impact, sont des analyses opérant sur le code
source des logiciels. Elles sont dépendantes du langage de programmation utilisé pour dé-
velopper le logiciel à évaluer. Certains langages de programmation sont mieux outillés que
d’autres. Des outils d’analyse de dépendances existent pour le langage C, particulièrement
répandu. On peut citer par exemple le plug-in d’analyse d’impact de l’environnement d’analyse
de code source Frama-C [CKK+12]. Même si cet outil n’est pas conçu spécifiquement
pour répondre aux besoins des évaluateurs de logiciels critiques, il peut être utilisé dans une
certaine mesure pour aider à la construction d’une modélisation fonctionnelle. Le langage
SPARK [Bar03], sous-ensemble du langage ADA, est lui aussi équipé d’un outil permettant
de spécifier les dépendances d’un programme et de les vérifier.
21INTRODUCTION
D’autres langages, quant à eux, ne bénéficient pas d’un tel outillage. C’est le cas notamment
des langages fonctionnels de la famille ML qui voient leur utilisation commencer à se
répandre dans le cadre du développement de logiciels critiques. Certains développements
industriels utilisent d’ores et déjà des langages de la famille ML. La société Jane Street
Capital développe des logiciels critiques d’investissements financiers en OCaml ([MW08])
manipulant des centaines de millions de dollars chaque jour. Le générateur de code embarqué
certifié SCADE [PAC+08] est lui aussi écrit en OCaml. De nombreux autres logiciels
critiques sont développés en utilisant les langages de la famille ML comme l’analyse statique
Goanna [FHJ+06] permettant de rechercher des erreurs dans du code source critique
écrit en C/C++, ou encore la plate-forme logicielle Apropos [JES00] développée par LexiFi
pour la tarification et la gestion de produits financiers.
Contribution
Dans cette thèse, nous nous intéressons à l’analyse des dépendances d’un logiciel. Le
langage sur lequel opère notre analyse est un langage comprenant les principales fonctionnalités
présentes dans les langages de la famille ML, c’est-à-dire des fonctions d’ordre
supérieur, des constructeurs de données algébriques et du filtrage par motif. Nous participons
ainsi à combler le manque d’outils associés aux langages de la famille ML.
L’analyse que nous présentons a été spécifiquement conçue dans le but de répondre aux
besoins particuliers des évaluateurs de logiciels critiques. Ces besoins, présentés ci-dessous,
ont été identifiés suite au retour d’expérience de Philippe Ayrault, lui-même évaluateur de
logiciels critiques dans le domaine ferroviaire [ABDP12, Ayr11].
Interactivité et souplesse Notre analyse permet à l’évaluateur d’analyser n’importe
quelle partie du code source du logiciel critique à évaluer, en fournissant un environnement
d’analyse qui est une spécification plus ou moins précise de l’environnement d’évaluation.
Cet environnement d’analyse offre à l’évaluateur la possibilité de paramétrer l’analyse en
donnant pour chaque identificateur présent dans l’environnement une valeur plus ou moins
abstraite. Il est ainsi possible pour l’évaluateur d’analyser les programmes à différents niveaux
d’abstraction, de manière à avoir tantôt une vision globale des différents composants
22INTRODUCTION
du système, tantôt une vision plus fine d’un composant en particulier. C’est l’expertise de
l’évaluateur qui donne la ligne directrice du processus de vérification en utilisant l’analyse
à différentes étapes du processus, à chaque fois en utilisant le niveau d’abstraction qui
convient.
Haut niveau de confiance Pour garantir la fiabilité de notre analyse, nous sommes
remontés jusqu’aux fondements de la notion de dépendance. Nous donnons une définition
formelle de la notion de dépendance en nous appuyant directement sur la sémantique opé-
rationnelle du langage. Nous avons ensuite construit, étape par étape, une preuve formelle
permettant de fournir à l’évaluateur une garantie de la propriété de correction dont il a
besoin en établissant formellement le lien entre notre analyse et la notion de dépendance.
Une grande partie de la preuve a été réalisée et vérifiée à l’aide de l’assistant à la preuve
COQ. Nous fournissons dans le présent manuscrit une preuve papier de la partie restantes.
L’intégralité du développement Coq réalisé est disponible librement à l’adresse suivante :
https://github.com/vincent-benayoun/PhD-thesis.
Notre analyse possède une spécificité supplémentaire : la prise en compte de l’impact
d’un dysfonctionnement sur la terminaison du programme. En consultant le résultat de
l’analyse d’un programme, on peut savoir non seulement quelles sont les parties du programme
ayant une influence sur les valeurs calculées mais également celles ayant une in-
fluence sur la terminaison. Cette dernière information est intéressante pour l’évaluateur de
logiciels critiques dans la mesure où la non-terminaison d’un programme peut constituer
un réel risque de dysfonctionnement.
Plan de la thèse
La structure du manuscrit est la suivante :
Chapitre 1 : État de l’art Nous présentons le contexte scientifique de cette thèse
en mettant en relation notre analyse de dépendances avec d’autres travaux. En premier
lieu, nous expliquons en quoi notre travail s’inscrit dans la continuité de travaux existants
dans le domaine. Puis nous explicitons les liens entre notre analyse de dépendances et
23INTRODUCTION
quelques travaux similaires portant sur la non-interférence et l’analyse de teintes. Enfin
montrons en quoi notre analyse s’inscrit dans le cadre général de l’interprétation abstraite
de programmes.
Chapitre 2 : Notion de dépendance Après avoir présenté le langage sur lequel opère
notre analyse ainsi que sa sémantique opérationnelle, nous présentons une définition formelle
des notions de base utilisée pour exprimer ce que nous appelons dépendances d’un
programme. Nous commençons par présenter l’injection de valeur qui nous permet de
représenter formellement les points de programme dont on veut connaître l’impact. Nous
définissons alors formellement la notion d’impact en elle-même, qui est double : l’impact
sur la terminaison et l’impact sur la valeur du programme. Nous pouvons ensuite introduire
la notion de dépendance qui se divise également en deux : les dépendances de terminaison
et les dépendances de valeur.
Chapitre 3 : Analyse dynamique Une fois la notion de dépendance formalisée, nous
définissons une analyse dynamique permettant de calculer les dépendances d’un programme.
Ces dépendances seront fournies par l’analyse dynamique sous forme d’annotations sur chacun
des sous-termes de la valeur du programme. Nous appelons cette analyse dynamique
sémantique instrumentée et nous l’introduisons à l’aide de deux sémantiques intermé-
diaires qui nous permettent d’établir la correction de cette sémantique instrumentée.
Chapitre 4 : Analyse statique Ce chapitre touche enfin au but de cette thèse : présenter
notre analyse statique des dépendances d’un programme. Afin d’atteindre ce résultat,
nous partons de l’analyse dynamique présentée au chapitre précédent. Nous introduisons
alors, à l’aide de deux nouvelles sémantiques intermédiaires, une interprétation abstraite
de l’analyse dynamique que nous appelons sémantique abstraite. C’est cette dernière
sémantique qui constitue notre analyse statique de dépendances.
Chapitre 5 : Implémentation et preuve Nous présentons dans ce dernier chapitre les
développements effectués autour de l’analyse de dépendances. D’une part, nous exposerons
le développement au sein de l’atelier de preuve Coq, qui a permis de formaliser les différentes
24INTRODUCTION
sémantiques présentées dans cette thèse ainsi que de construire et vérifier leurs preuves de
correction. D’autre part, nous discuterons des différents prototypes réalisés.
Conclusion et perspectives Enfin, nous présentons un bilan du travail réalisé en ouvrant
la voie vers de possibles développements futurs. En particulier, nous parlerons des
possibilités d’extension du langage analysé et des pistes d’optimisation de l’analyse (performance
et précision).
25INTRODUCTION
26Chapitre 1
État de l’art
1.1 Analyse de dépendances pour les logiciels critiques
1.1.1 Les langages ML
Cette thèse s’inscrit dans la suite de la thèse de P. Ayrault [Ayr11, ABDP12] soutenue
en 2011. Elle reprend l’analyse statique de dépendances qui y était présentée, la rend plus
générale en y apportant un certain nombre de modifications et en propose une preuve
formelle vérifiée mécaniquement à l’aide de l’assistant à la preuve Coq.
La première modification réside en la manière d’annoter les programmes pour permettre
à l’évaluateur de logiciel critique de désigner les points de programme dont il
souhaite connaître l’impact. Dans l’analyse de P. Ayrault, on ne pouvait annoter que
les sous-expressions du programme explicitement nommées par une instruction de liaison
(let x = e). Dans l’analyse que nous présentons, toute sous-expression du programme
peut être marquée pour analyser son impact sur l’évaluation du programme.
La notion de marquage concret/abstrait présentée par P. Ayrault effectuait simultanément
deux opérations distinctes. Premièrement, elle permettait de désigner une sousexpression
pour connaître son impact. Deuxièmement, elle cachait la valeur de la sousexpression
désignée pour la considérer comme une boîte noire. Autrement dit, elle lui
appliquait une sorte d’abstraction. Notre approche est plus générale et permet une souplesse
accrue quant à l’utilisation de ces deux opérations. Il est maintenant possible de
réaliser ces deux opérations séparément. Plus précisément, il est toujours possible de consi-
271.1. ANALYSE DE DÉPENDANCES POUR LES LOGICIELS CRITIQUES
dérer comme une boîte noire toute sous-expression marquée pour l’analyse d’impact, mais
il est également possible de suivre l’impact d’une sous-expression tout en utilisant sa valeur
pour affiner l’analyse d’impact. Il est aussi possible de considérer une partie du programme
comme une boîte noire en cachant sa valeur sans pour autant nous intéresser à son impact.
Cette amélioration apporte une solution au problème de perte de la structure des valeurs.
Ce problème avait été soulevé dans [ABDP12] au sujet de l’analyse de dépendances qui y
était présentée.
La seconde modification est la distinction entre deux types de dépendance correspondant
aux deux types d’impact que peut avoir la valeur d’une sous-expression sur l’évaluation
du programme : impact sur la valeur du programme ou impact sur la terminaison de
son évaluation. L’analyse présentée par P. Ayrault n’effectuait pas de distinction entre ces
deux notions d’impact. Ainsi, si un identificateur se trouvait uniquement dans un certain
sous-terme du résultat de l’analyse, on ne savait pas si cet identificateur avait uniquement
un impact sur la valeur de ce sous-terme ou bien si celui-ci avait un impact global sur la
terminaison de l’évaluation du programme. L’analyse statique que nous présentons dans
cette thèse apporte une réponse plus précise quant au type d’impact. Si un identificateur se
trouve uniquement dans un certain sous-terme du résultat de l’analyse et qu’il n’apparaît
pas dans les dépendances de terminaison du programme, alors on peut être sûr qu’il n’a
d’impact que sur la valeur de ce sous-terme précis et qu’il ne peut aucunement affecter les
autres sous-termes de la valeur, ni la terminaison du calcul.
Considérons un exemple simple pour illustrer les différences entre les deux approches :
l e t a = 3 2 ; ;
l e t b = 1 8 ; ;
l e t c = b + 8 ; ;
l e t f x = ( a + 1 , x ) ; ;
l e t d = f c ; ;
Supposons que nous souhaitons analyser l’impact de a, de b et de c. Dans l’analyse
de P. Ayrault, nous marquons les trois premières définitions top-level à l’aide d’un tag
« abstrait ». Dans notre analyse, nous annotons les trois définitions correspondantes à
281.1. ANALYSE DE DÉPENDANCES POUR LES LOGICIELS CRITIQUES
l’aide de trois labels la, lb et lc. On obtient alors les résultats suivants :
Analyse de P. Ayrault Notre analyse statique
a : a a : [ ∅ | [ la | ⊤ ] ]
b : b b : [ ∅ | [ lb | ⊤ ] ]
c : c c : [ ∅ | [ lb, lc | ⊤ ] ]
f : < λx.(a + 1, x),(a, a); . . . > f : [ ∅ | [ ∅ | < λx.(a + 1, x),(a, . . .); . . . > ] ]
d : (a, c) d : [ ∅ | [ ∅ | ( [ la | ⊤ ], [ lb, lc | ⊤ ]) ] ]
L’analyse de P. Ayrault nous apprend que l’identificateur a ne dépend que de lui-même.
Elle nous apprend la même chose pour l’identificateur b et pour c. On remarque que
l’identificateur b n’apparaît pas dans le résultat de c. Ceci est dû à la notion de marquage
« abstrait » qui coupe en quelque sorte les dépendances d’un identificateur marqué. C’est
pour cette raison que le théorème exprimé dans la thèse de P. Ayrault n’est en général pas
valable s’il y a plus d’un identificateur marqué. Le résultat obtenu pour f est simplement
une fermeture. Enfin, le résultat pour d nous apprend qu’il s’agit d’un couple dont la
première composante dépend de a et la seconde composante dépend de c.
Notre analyse fournit des résultats un peu différents. Pour a (resp. b), on apprend
qu’aucune injection ne peut empêcher l’évaluation de cette partie de programme de terminer.
Par contre, une injection sur a (resp. b) peut provoquer une modification du résultat
de cette évaluation. Le symbole ⊤ indique que la valeur a été abstraite. Pour l’identificateur
c, l’analyse fournit à la fois la dépendance lb (car la valeur de c dépend de celle de b) et la
dépendance lc (car on a annoté la définition de c avec ce label). Le résultat pour f est une
fermeture. Celui pour d nous indique qu’aucune injection ne peut empêcher la terminaison
du programme et que la valeur de d est un couple dont la première composante dépend de
la et la seconde dépend de lb et lc.
Un autre apport important par rapport à la thèse de P. Ayrault concerne la preuve
de correction de l’analyse. Dans le chapitre 3 de sa thèse, P. Ayrault présente une preuve
formelle de son analyse de dépendances. Cette preuve, complexe à vérifier, a été réalisée
sur papier, bien que l’assistant à la preuve Coq ait été utilisé pour vérifier formellement
certaines propriétés (formalisation du langage et de l’analyse, preuve du déterminisme de
l’analyse). De plus, la preuve de correction proposée n’est valable que dans le cas particulier
où le programme analysé n’est marqué qu’en un unique point. Il n’est donc pas possible de
291.1. ANALYSE DE DÉPENDANCES POUR LES LOGICIELS CRITIQUES
se reposer sur ce théorème lors de l’analyse d’un programme marqué en plusieurs points
(il est facile de trouver des contre-exemples). Nous apportons dans cette thèse une preuve
formelle réalisée en Coq. Cette preuve a été réalisée par étapes successives en « instrumentant
» (c’est-à-dire en enrichissant) la sémantique opérationnelle du langage pour qu’elle
transporte toutes les informations nécessaires au calcul des dépendances, puis en prouvant
formellement des abstractions successives de cette sémantique jusqu’à obtenir l’analyse
statique désirée. Nous obtenons ainsi une plus grande clarté en mettant en exergue des
résultats intermédiaires importants et compréhensibles permettant de composer la preuve
finale de façon modulaire. Un avantage certain de cette approche est de pouvoir prouver
une version modifiée de l’analyse statique en réutilisant une grande partie des preuves déjà
effectuées. On pourra ainsi proposer par la suite de modifier l’analyse statique pour obtenir
des résultats plus précis (à l’aide d’une représentation plus fine pour les types sommes,
les entiers ou encore les fonctions) ou pour améliorer les performances de calcul (en ajoutant
des approximations). La preuve de correction d’une telle analyse sera alors obtenue à
moindre frais puisqu’il faudra uniquement prouver la toute dernière abstraction, toutes les
autres preuves étant réutilisables telles quelles.
1.1.2 SPARK/Ada
Des analyses statiques de dépendances adaptées aux évaluateurs de logiciels critiques
existent déjà. C’est notamment le cas pour SPARK [Bar03], un sous-ensemble du langage
Ada, spécialement conçu pour le développement de logiciels critiques. Il embarque toute
une série d’analyses statiques prenant en compte les annotations de l’utilisateur afin de
garantir que le programme fonctionne conformément à ses spécifications. En particulier,
SPARK est doté d’un langage d’annotations [CH04] permettant à l’utilisateur de spécifier
diverses contraintes sur les flots d’information et de contrôle de son programme.
Il est tout d’abord possible de préciser pour chaque paramètre d’une fonction s’il s’agit
d’une entrée, d’une sortie ou d’une entrée/sortie, ce qui permet de donner une direction aux
flots d’information possibles et de vérifier certaines erreurs statiquement. C’est également
une information précieuse pour l’évaluateur de logiciels critiques pour lui permettre de
comprendre de façon simple et sûre le comportement du programme. Nous ne nous sommes
301.1. ANALYSE DE DÉPENDANCES POUR LES LOGICIELS CRITIQUES
pas intéressés à ce type d’annotation puisque la distinction entre les entrées et les sorties
ainsi que la nécessité d’initialiser une variable avant son utilisation découle naturellement
des propriétés intrinsèques des langages purement fonctionnels.
Une autre fonctionnalité importante concernant la spécification du flot d’information
est la possibilité de spécifier pour chaque sortie, quelles sont les entrées utilisées pour le
calcul de sa valeur.
Voici un exemple de code annoté en SPARK spécifiant que la seule variable globale
utilisée est Count et qu’après l’appel de la fonction, la nouvelle valeur de Count dépend de
son ancienne valeur et de celle de X et la nouvelle valeur de X dépend uniquement de sa
valeur précédente.
p ro c e d u r e Inc remen t (X : i n out Counter_Type ) ;
−−# g l o b a l Count ;
−−# d e r i v e s
−−# Count from Count , X &
−−# X from X;
Le développeur peut ainsi spécifier avec précision le flot d’information pour détecter
d’éventuelles erreurs au plus tôt dans le cycle de développement. Cette spécification est
alors vérifiée statiquement par une analyse du code source. Ce type d’annotation est un
élément important dans la phase de vérification d’un logiciel critique. L’évaluateur peut
alors se reposer sur les annotations du développeur puisqu’il sait qu’une analyse du code
source a été faite par un outil logiciel fiable afin d’assurer la correction de ces annotations.
Cette garantie de fiabilité des annotations permet à l’évaluateur de logiciels critiques de
s’épargner une vérification manuelle fastidieuse et coûteuse. Cet outil de spécification et de
vérification de propriétés sur le flot d’information du programme disponible pour SPARK
(SPARK Examiner) est un outil puissant et fiable que l’évaluateur de logiciels critiques
voudrait retrouver pour d’autres langages de programmation. Notre travail s’inscrit dans
la satisfaction de ce besoin concernant les langages de la famille ML qui commencent à être
utilisés pour des développements critiques, soit pour la construction de logiciels nécessitant
un haut niveau de fiabilité [MW08], soit pour la construction d’outils logiciels nécessitant
d’être qualifiés pour leur utilisation dans le développement de logiciels critiques régis par
des normes (EN-50128, DO-178B/C, . . . ) [PAC+08, FHJ+06, JES00].
311.2. ANALYSE DE FLOT POUR LES LANGAGES FONCTIONNELS
Nous présentons dans cette thèse une analyse statique des dépendances d’un programme
ML qui pourra être utilisée comme une base théorique solide afin de développer un outil de
spécification et de vérification de propriétés sur le flot d’information adapté aux spécificités
des langages ML, en s’inspirant de l’outil analogue disponible pour SPARK.
1.2 Analyse de flot pour les langages fonctionnels
L’analyse de flot pour les langages fonctionnels d’ordre supérieur est un sujet qui a fait
l’objet de nombreux travaux dont nous mentionnons les principaux dans la suite.
En 1996, M. Abadi, B.W. Lampson et J.J. Lévy [ALL96] proposent une analyse de flot
d’information pour un lambda calcul. Le but de leur analyse est alors l’optimisation du
temps d’exécution en stockant des valeurs déjà calculées. Lors de l’évaluation d’une expression,
si celle-ci a déjà été évalué et que depuis cette première évaluation les seules valeurs
mofidiées depuis sont indépendantes, alors on utilise la valeur déjà calculée au lieu de ré-
évaluer l’expression. Dans le langage qu’ils considèrent, n’importe quelle sous-expression du
programme analysé peut être annotée avec un label. Leur analyse est construite comme une
extension de la sémantique opérationnelle usuelle du lambda calcul en ajoutant une règle
manipulant les labels. Ainsi, il s’agit d’une analyse dynamique qui évalue le programme
pour obtenir une valeur contenant certains des labels présents en tant qu’annotation dans le
programme. Si un label n’est pas présent dans la valeur, cela signifie que la sous-expression
correspondante n’a pas d’influence sur le calcul de la valeur du programme.
Pour illustrer le fonctionnement de cette analyse, reprenons l’exemple suivant que nous
avons déjà présenté plus haut :
l e t a = 3 2 ; ;
l e t b = 1 8 ; ;
l e t c = b + 8 ; ;
l e t f x = ( a + 1 , x ) ; ;
l e t d = f c ; ;
l e t d1 = f s t d ; ;
l e t d2 = snd d ; ;
321.2. ANALYSE DE FLOT POUR LES LANGAGES FONCTIONNELS
Analyse dynamique de M. Abadi et al. Notre analyse statique
a : la : 32 a : [ ∅ | [ la | ⊤ ] ]
b : lb : 18 b : [ ∅ | [ lb | ⊤ ] ]
c : lb, lc : 26 c : [ ∅ | [ lb, lc | ⊤ ] ]
f : λx.(32 + 1, x) f : [ ∅ | [ ∅ | < λx.(a + 1, x),(a, . . .); . . . > ] ]
d : (la : 32 + 1, lb, lc : 26) d : [ ∅ | [ ∅ | ( [ la | ⊤ ], [ lb, lc | ⊤ ]) ] ]
d1 : la : 33 d1 : [ ∅ | [ la | ⊤ ] ]
d2 : lb, lc : 26 d2 : [ ∅ | [ lb, lc | ⊤ ] ]
L’analyse dynamique de M. Abadi et al. est définie par une sémantique small-step et les
couples sont encodés sous forme de fonctions, ce qui explique pourquoi la valeur de d n’est
pas complètement réduite. Outre les dépendances de terminaison qui ne sont pas présentes
dans l’analyse de M. Abadi et al. et les valeurs numériques qui sont abstraites dans notre
analyse, les dépendances calculées sont identiques dans cet exemple.
M. Abadi et al. [ABHR99] montrent ensuite que plusieurs formes d’analyses de flot
d’information peuvent être construites en utilisant le même calcul de dépendances. Ils
proposent alors un cadre générique pour ces diverses formes d’analyses.
F. Pottier et S. Conchon [PC00] ont alors transformé l’analyse dynamique de [ALL96]
en une analyse statique en utilisant une « simple » traduction et un système de types
standard. Ils affirment qu’en combinant leur travail avec celui de [ABHR99], leur analyse
statique peut aussi être utilisée pour toutes les formes d’analyse de dépendances présentées
dans [ABHR99]. Plus tard, François Pottier et Vincent Simonet [PS02] ont proposé une
technique pour l’analyse de flot sur un lambda calcul étendu par la gestion des références
et des exceptions. C’est une nouvelle approche, basée sur un système de types spécifique,
qui a été proposée pour combler les manques de l’approche précédente [PC00].
Cette dernière approche, utilisée comme base pour la construction de l’outil FlowCaml
[SR03, Flo03], utilise un treillis représentant des niveaux de sécurité dans le but d’assurer
des propriétés de non-interférence. Comme il a été montré précédemment dans [ABHR99],
ce type d’analyse à base de treillis peut être utilisé pour effectuer diverses analyses de
dépendances en utilisant un treillis adapté.
La notion de non-interférence a été introduite en 1982 par J.A. Goguen et J. Meseguer
[GM82]. Il s’agit d’une propriété sur un programme manipulant des données et ayant des
331.2. ANALYSE DE FLOT POUR LES LANGAGES FONCTIONNELS
interaction avec son environnement. En langage simple, cette propriété s’exprime de la
manière suivante : « Un comportement du programme ayant un niveau de sécurité faible
n’est pas affecté par une donnée ayant un niveau de sécurité élevé ». Cette propriété permet
en particulier de ne pas révéler d’information confidentielle à des personnes non-autorisées.
On retrouve par exemple cette notion sous la forme de propriétés d’isolation sur les
programmes embarqués dans les cartes à puce [ACL03].
L’analyse de non-interférence de FlowCaml est une analyse de flot d’information pré-
sentant des similarités avec notre analyse de dépendances. On peut attribuer à certaines
valeurs du programme des niveaux de sécurité et définir un treillis spécifiant une relation
d’ordre entre les différents niveaux de sécurité. Un système de types permet alors d’inférer
les niveaux de sécurité des valeurs calculées par le programme et de vérifier la cohérence
avec les annotations de l’utilisateur. On peut ainsi vérifier qu’aucune valeur confidentielle
n’a d’influence sur une valeur moins confidentielle.
Dans l’analyse de dépendances dont nous avons besoin, la préoccupation sous-jacente
est de savoir si une défaillance quelconque à un point donné du programme peut ou non
avoir des répercussions sur une valeur considérée comme critique. Cette analyse est particulièrement
utile pour garantir qu’un point de programme (une sous-expression donnée)
n’a aucune influence sur une certaine valeur critique. On peut alors certifier que cette valeur
restera valide en cas de défaillance au point de programme. On constate que, bien que
le vocabulaire soit différent, notre besoin est assez proche de ce que propose l’analyse de
non-interférence de FlowCaml.
D’après nos expérimentations, il est possible d’utiliser FlowCaml pour calculer les dé-
pendances dont nous avons besoin (du point de vue de l’évaluateur de logiciels critiques)
en obtenant des résultats plutôt bons, jusqu’à un certain point. Pour cela, on utilise un
treillis plat (relation d’ordre vide) dont les éléments sont des identifiants désignant les
points de programmes dont nous souhaitons connaître l’impact. L’inférence de type fournit
alors l’analyse de dépendances désirée. Cependant, certains aspects de l’analyse ne sont
pas adaptés. Premièrement, le système d’annotation manque de souplesse. Par exemple,
on ne peut annoter que des valeurs mutuellement indépendantes, sans quoi il serait nécessaire
d’expliciter dans le treillis les relations entre les valeurs annotées, ce qui nous ferait
341.2. ANALYSE DE FLOT POUR LES LANGAGES FONCTIONNELS
perdre la traçabilité des différentes dépendances. Il n’est pas non plus possible d’annoter
une valeur structurée (par exemple un couple) par un label unique. On notera également
qu’il n’est pas possible d’annoter un point de programme quelconque, mais uniquement
les valeurs nommées. Deuxièmement, l’analyse de FlowCaml ne permet pas d’abstraire un
morceau de programme en le considérant comme une boîte noire. C’est un besoin important
pour l’évaluateur de logiciels critiques pour lui permettre de se concentrer sur l’analyse
d’un composant particulier du programme, en considérant les autres composants comme
opaques. Cette fonctionnalité peut aussi lui permettre d’analyser facilement un composant
isolé du programme sans connaître l’implémentation des autres composants utilisés. Par
exemple, un évaluateur peut vouloir effectuer l’évaluation d’un programme faisant appel à
des librairies dont il n’a pas accès au code source.
De plus, l’analyse de dépendances que nous présentons permet à la fois l’analyse d’impact
sur la terminaison du programme et l’analyse d’impact sur les valeurs calculées lors
de l’évaluation du programme. Cette distinction entre dépendances de terminaison et dé-
pendances de valeurs n’est pas présente dans FlowCaml.
Toujours sur le même exemple, voici une comparaison entre l’analyse de FlowCaml et
notre analyse statique :
flow ! b < ! c ; ;
l e t a : ! a i n t = 3 2 ; ;
l e t b : ! b i n t = 1 8 ; ;
l e t c : ! c i n t = b + 8 ; ;
l e t f x = ( a + 1 , x ) ; ;
l e t d = f c ; ;
Analyse statique FlowCaml Notre analyse statique
a : !a int a : [ ∅ | [ la | ⊤ ] ]
b : !b int b : [ ∅ | [ lb | ⊤ ] ]
c : [> !b, !c] int c : [ ∅ | [ lb, lc | ⊤ ] ]
f : ’a -> !a int * ’a f : [ ∅ | [ ∅ | < λx.(a + 1, x),(a, . . .); . . . > ] ]
d : !a int * [> !b, !c] int d : [ ∅ | [ ∅ | ( [ la | ⊤ ], [ lb, lc | ⊤ ]) ] ]
FlowCaml calcule les dépendances pendant le typage et fournit les résultats de types
annotés par des informations de dépendances. Les résultats nous indiquent que la valeur de
351.2. ANALYSE DE FLOT POUR LES LANGAGES FONCTIONNELS
l’identificateur a (resp. b) est un entier qui ne dépend que de lui-même. Pour la définition
de c, FlowCaml rejette cette définition si nous n’indiquons pas explicitement la relation
entre b et c à l’aide de la directive flow !b < !c ;; qui signifie que l’on autorise un flot
d’information allant d’une valeur de niveau !b vers une valeur de niveau !c. Le résultat de
c correspond au type d’une fonction prenant un paramètre et retournant un couple dont
la première composante est un entier dépendant de a et dont la seconde composante a le
même type et les mêmes dépendances que l’argument. C’est un résultat bien plus concis
et explicite que le résultat de notre analyse qui embarque le corps de la fonction ainsi que
son environnement. Le résultat de d nous fournit les mêmes informations de dépendances
que notre analyse.
Dans notre analyse, nous représentons tous les nombres entiers par la valeur ⊤ qui
représente n’importe quelle valeur. Nous pourrions ajouter à notre algèbre de valeurs abstraites
une valeur permettant de représenter uniquement les nombres entiers, mais il n’est
pas évident que ceci ait un réel intérêt. Par contre, au sujet de la représentation des fonctions
au sein de notre algèbre de valeurs abstraites, il serait sans doute intéressant de
trouver une représentation plus compacte, à l’image du type retourné par FlowCaml.
Nous nous sommes inspirés de la méthode utilisée par M. Abadi et al. [ALL96] pour
annoter à l’aide de labels les sous-expressions du programme dont nous souhaitons suivre
l’impact. Notre analyse dynamique suit le même principe que leur analyse en calculant la
valeur du programme tout en y accumulant les labels utilisés pour son élaboration. Il faut
cependant remarquer deux différences fondamentales. Premièrement, nous utilisons une sé-
mantique big-step contrairement à M. Abadi et al. qui utilisent une sémantique small-step.
L’avantage d’une sémantique big-step est de pouvoir lier directement une expression avec
le résultat de son évaluation, ce qui nous est d’une grande aide lorsque l’on veut parler de
plusieurs évaluations simultanées d’une même expression. Le choix de la sémantique bigstep
nous a permis d’exprimer les définitions de nos sémantiques de façon plus naturelle, en
particulier pour la sémantique collectrice. Ce choix nous a également permis d’obtenir des
preuves plus simples, en particulier pour les sémantiques collectrice et abstraite. Deuxiè-
mement, nous produisons des valeurs structurées dont chaque sous-terme est annoté par
ses propres dépendances, contrairement à leur analyse qui regroupe en tête de la valeur
361.3. ANALYSE DE TEINTES
produite une liste globale de tous les labels utilisés pour produire la valeur. Notre analyse
permet ainsi d’obtenir un résultat plus précis.
Nous avons ensuite transformé notre analyse dynamique en une analyse statique. Nous
avons alors marqué une rupture avec les autres travaux présentés dans cette section, puisque
contrairement à F. Pottier et S. Conchon, nous n’avons pas formalisé notre analyse statique
sous forme d’un système de types. Nous avons fait le choix d’utiliser le formalisme
de l’interprétation abstraite qui nous a permis plus de souplesse dans la définition d’une
analyse adaptée à nos besoins. En particulier, ce cadre nous a permis de définir avec aisance
l’abstraction d’une partie de programme sous forme de boîte noire.
1.3 Analyse de teintes
L’analyse de teintes telle que présentée dans [XBS06] est un cas particulier d’analyse de
flot d’information [Kri07]. Ce type d’analyse permet d’identifier les entrées (contrôlables par
l’utilisateur) ayant un impact sur certaines opérations dites « critiques » ou « dangereuses »
du point de vue de la sécurité. Par exemple, si une valeur contrôlable par l’utilisateur est
utilisée sans précaution particulière en tant qu’indice lors de la modification d’une case de
tableau, il peut y avoir une vulnérabilité de type buffer overflow. Dans ce cas, l’utilisateur
peut modifier des valeurs en mémoire auxquelles il ne devrait pas avoir accès.
Pour détecter ce type de vulnérabilité, l’analyse de teinte permet d’identifier tout au
long du programme les valeurs dites teintées (ie. contrôlables par l’utilisateur) afin de
donner une alerte si une telle valeur est utilisée pour effectuer une opération dangereuse
(accès à un tableau, instruction jump, requête SQL, . . . ).
Notre analyse a pour but, quant à elle, d’identifier tout au long du programme les valeurs
possiblement impactées par certains points de programmes (parties non vérifiées d’un
programme ou bien valeurs possiblement issues d’un dysfonctionnement). Cette information
peut alors nous permettre d’alerter l’utilisateur si une valeur critique du programme
peut être impactée par un dysfonctionnement éventuel.
On peut ainsi apercevoir la similarité entre les deux approches en considérant un point
de programme annoté pour notre analyse comme une valeur teintée. L’analyse de teinte
371.4. INTERPRÉTATION ABSTRAITE
permettrait alors de faire la distinction entre les valeurs impactées par ce point de programme
et celles qui ne le sont pas. Cependant, elles diffèrent par plusieurs aspects. Dans
l’analyse de teintes, une valeur est soit « teintée » soit « non teintée ». Il n’y a aucune distinction
entre les différents points d’entrée de l’utilisateur, Bien qu’il soit possible de relier
une valeur teintée à un point d’entrée précis en utilisant des informations supplémentaires
au sujet des chemins d’exécution, l’analyse de teintes en elle-même ne le permet pas.
Notre analyse permet d’indiquer pour chaque valeur quels sont les points d’entrée dont
elle dépend. C’est une information importante pour aider l’évaluateur à comprendre la
structure du programme et les dépendances entres ses différentes parties. De plus, comme
nous l’avons montré plus haut dans la comparaison avec les analyses de flot d’information,
nous avons besoin de pouvoir considérer certaines parties du programme comme opaques,
ce qui n’est pas le cas des analyses de teintes en général. Enfin, notre analyse s’effectue
sur un langage fonctionnel dans lequel les préoccupations de sécurité sont différentes de
celles de la plupart des analyses de teintes effectuées sur des langages impératifs. En effet,
les accès à des tableaux ou les instructions jump ne sont pas courants dans les langages
fonctionnels purs.
Une piste intéressante détaillée dans [CMP10] pour une analyse de teintes est la possibilité
de garder trace des chemins d’exécution permettant de relier un point d’entrée
à l’instruction impactée. Ce type d’information pourrait être particulièrement utile pour
notre analyse de dépendances. Ce sujet a d’ailleurs été abordé dans la thèse de P. Ayraut
[Ayr11] (Partie III, chapitre 4).
1.4 Interprétation abstraite
L’interprétation abstraite est un cadre mathématique permettant de formaliser des
analyses de programmes et de prouver leur correction. L’idée principale est d’exécuter
des programmes sur un domaine abstrait dont les éléments représentent des propriétés
sur le domaine d’évaluation standard. Pour cela, on définit explicitement des fonctions
d’abstraction et de concrétisation pour établir le lien entre le domaine d’évaluation standard
et le domaine abstrait. Une méthode générique permet alors de prouver la correction de ce
381.4. INTERPRÉTATION ABSTRAITE
genre d’analyses de programmes en prouvant certaines propriétés sur la composition des
fonctions d’abstraction, de concrétisation et d’évaluation abstraite.
À l’origine, la théorie de l’interprétation abstraite a été conçue par P. et R. Cousot
[CC77, CC79] pour des langages impératifs. Les analyses de programmes décrites par cette
méthode sont exprimées sous forme d’une sémantique opérationnelle.
Par la suite, le cadre de l’interprétation abstraite a été adapté aux langages fonctionnels
du premier ordre par A. Mycroft [Myc81]. La théorie sous-jacente est alors différente.
Contrairement au travail de P. et R. Cousot basé sur une description sous forme de sé-
mantique opérationnelle, A. Mycroft fait le choix d’utiliser une sémantique dénotationnelle
pour décrire les analyses de programmes.
G. Burn, C. Hankin et S. Abramsky [BHA86] ont alors étendu l’analyse de programmes
de A. Mycroft en l’adaptant aux langages fonctionnels d’ordre supérieur. En plus d’étendre
cette analyse qui est un cas particulier d’interprétation abstraite, ils ont également étendu
le cadre général de l’interprétation abstraite aux langages fonctionnels d’ordre supérieur.
Dans la lignée de A. Mycroft, leur travail fait usage d’une sémantique dénotationnelle pour
définir leur analyse.
D’autres travaux, comme ceux de S. Hunt [Hun91] ont appliqué l’interprétation abstraite
à des langages de programmation fonctionnels en utilisant des sémantiques dénotationnelles.
D’autres approches sont présentées par N.D. Jones et F. Nielson dans [Jon94].
Nous présentons ici une approche originale de l’interprétation abstraite pour un langage
fonctionnel d’ordre supérieur. Notre analyse de programme est exprimée sous forme d’une
sémantique opérationnelle, comme pour les langages impératifs. De plus, notre analyse
opère sur un langage de programmation comprenant des constructeurs de données récursives
ainsi que du filtrage par motifs. Pour ce qui est des fonctions récursives, nous nous
affranchissons du problème de la terminaison et de la recherche d’un point fixe à l’aide
d’une approximation permettant de casser la récursion. Cependant, le problème pourrait
resurgir en recherchant une meilleure représentation des fonctions récursives dans l’algèbre
des valeurs abstraites. En effet, il serait souhaitable d’améliorer notre analyse en trouvant
une meilleure représentation des fonctions, ce qui pourrait apporter de nombreux avantages
391.4. INTERPRÉTATION ABSTRAITE
autant du point de vue de la précision de l’analyse que du point de vue de la performance.
40Chapitre 2
Notion de dépendance
2.1 Introduction
La notion de dépendance est souvent utilisée de manière intuitive. De nombreuses
analyses de dépendances se contentent d’une définition informelle. Et quand une définition
formelle est donnée, elle est parfois incomplète et ne reflète que partiellement la notion
utilisée dans l’analyse correspondante. Nous nous appliquons dans ce chapitre à donner
une définition formelle à cette notion de dépendance.
Une particularité de la notion de dépendance que nous proposons est la distinction
entre 2 types de dépendances :
– les dépendances concernant la valeur d’une expression,
– les dépendances concernant la terminaison d’une évaluation.
Les dépendances de terminaison sont rarement prises en compte dans les analyses de dépendances.
Pourtant, la modification d’une partie d’un programme peut provoquer une boucle
infinie ou une erreur lors de son évaluation. Dès lors, la connaissance des dépendances de
terminaison constitue une information importante, en particulier pour les évaluateurs de
logiciels critiques.
Après avoir présenté la sémantique opérationnelle de notre langage (qui est la sémantique
usuelle d’un programme ML purement fonctionnel), nous expliquerons comment annoter
un programme dont on veut connaître les dépendances. Nous verrons ensuite comment
annoter les valeurs du langage avec des informations de dépendance. Nous pourrons alors
définir la sémantique opérationnelle avec injection qui nous permettra d’introduire
412.1. INTRODUCTION
les notions d’injection de valeur et d’impact d’une injection. Nous aurons alors à notre
disposition toutes les notions sous-jacentes nécessaires à la définition formelle de la notion
de dépendance. Nous présenterons alors la définition de la notion de dépendance que nous
proposons.
422.2. LE LANGAGE : ALGÈBRE DES EXPRESSIONS
2.2 Le langage : algèbre des expressions
Le langage sur lequel nous définissons notre analyse est un noyau purement fonctionnel
de la famille ML. Il contient les principales caractéristiques des langages purement fonctionnels
: les fonctions d’ordre supérieur, les constructeurs de données (types algébriques),
le filtrage par motif (pattern-matching), la liaison (let-binding).
En plus des constructions habituelles, on ajoute la possibilité d’annoter une sousexpression
à l’aide d’un label. Cette annotation permet de définir un point d’injection
(cf. section 2.4).
e := n | C | D(e) | (e1, e2) Constructeurs de données
x Identificateur
λx.e | recf.x.e Fonctions (récursive ou non)
e1 e2 Application
let x = e1 in e2 Liaison
if e then e1 else e2 Expression conditionnelle
match e with p → e1 | x → e2 Filtrage par motif
l : e Annotation d’un point d’injection
p := C | D(x) | (x1, x2) Filtres des données structurées
Figure 2.1 – Algèbre des expressions du langage
Etant donné un ensemble de constantes numériques noté Z, un ensemble de constructeurs
de donnée sans paramètre est noté Constr0 un ensemble de constructeurs de données
avec paramètre est noté Constr1
.
2.3 Sémantique opérationnelle
Il s’agit de la sémantique opérationnelle usuelle. Nous ajoutons une seule règle supplé-
mentaire permettant d’ignorer les annotations dans les programmes.
2.3.1 Valeurs
L’algèbre des valeurs comprend les valeurs constantes (entières et booléennes), des
constructeurs de données structurées (paramétrés ou non), un constructeur de couple et
des fermetures (récursives ou non).
432.3. SÉMANTIQUE OPÉRATIONNELLE
v := n | b | C | D(v) | (v1, v2) Constructeurs de données
< λx.e, Γ > Fermeture
< recf.x.e, Γ > Fermeture récursive
2.3.2 Environnements
Un environnement d’évaluation est une liste associative identificateurs → valeur.
Γ := (x1, v1) ⊕ . . . ⊕ (xn, vn) Environnement
2.3.3 Règles d’inférence
Le jugement d’évaluation de la sémantique opérationnelle prend la forme suivante :
Γ ⊢ e →→ v
Hormis la règle de l’évaluation d’une expression annotée par un label que nous avons
ajoutée, les règles d’inférence définissant la sémantique opérationnelle de notre langage
sont usuelles. Ces règles sont récapitulées dans les figures 2.2 et 2.3.
Nous donnons ci-dessous quelques explications concernant l’évaluation des fonctions et
de leur application, du filtrage par motif et des expressions annotées.
Évaluation et application des fonctions Une fonction non-récursive est évaluée en
une fermeture. Celle-ci contient la définition de la fonction ainsi que l’environnement dans
lequel elle a été définie (ce qui permet de retrouver la valeur de chaque identificateur
libre de la définition de la fonction). Une fonction récursive est évaluée en une fermeture
récursive, similaire à une fermeture non-récursive. Les deux types de fermeture permettent
de déterminer quelle règle d’inférence appliquer lors de l’application d’une fonction.
Dans notre sémantique, l’application d’une fonction (récursive ou non) se fait en appel
par valeur. C’est-à-dire que la valeur de l’argument est calculée systématiquement avant
l’évaluation du corps de la fonction (même si l’argument n’est pas utilisé dans le corps de
la fonction).
442.3. SÉMANTIQUE OPÉRATIONNELLE
Filtrage à motif unique Une particularité du filtrage par motif dans notre langage est
qu’il ne filtre que sur un seul motif. Si la valeur filtrée correspond au motif, alors l’évaluation
passe par la première branche, sinon, l’évaluation passe par la seconde branche. Bien que
cette restriction contraigne la forme des programmes, elle n’affecte en rien l’expressivité
du langage. En effet, il est toujours possible d’écrire des filtrages imbriqués, ce qui donne
la possibilité de réécrire tout programme contenant des filtrages à plusieurs motifs en un
programme équivalent contenant uniquement des filtrages à motif unique en cascade. Notre
langage peut donc être vu comme un langage noyau n’étant pas directement manipulé par
l’utilisateur. Une phase de réécriture simple sera nécessaire entre le langage utilisé en
pratique par l’utilisateur et le langage sur lequel l’analyse sera effectuée.
Expressions annotées Les annotations sont utilisées pour définir des points d’injection
(cf. section 2.4). Ces points d’injection serviront à calculer les dépendances du programme.
En ce qui concerne la sémantique opérationnelle, ils n’ont aucune signification et sont donc
ignorés. Techniquement, évaluer une expression annotée revient à évaluer sa sous-expression
sans tenir compte de l’annotation.
2.3.4 Sémantique des programmes mal typés et filtrage par motif
Le filtrage par motif que nous présentons est défini par les règles op-match et opmatch-var
ainsi que par le jugement v, p ⊢p •. On considère que le typage garantit que
toute valeur filtrée est soit un constructeur de donnée, soit un couple. Dans ces cas-là, les
règles d’inférence définissent la sémantique du filtrage. Par contre, nous ne donnons pas
de sémantique à l’évaluation des programmes mal typés pour lesquels l’expression filtrée
ne s’évalue pas en une valeur filtrable (constructeur de donnée ou couple). Par exemple, si
l’expression filtrée s’évalue en une fermeture, le filtrage n’a pas de sens et l’expression n’a
donc pas de sémantique d’évaluation.
Ce choix est cohérent avec la sémantique d’une expression conditionnelle. En effet, nous
n’explicitons pas la sémantique d’une expression conditionnelle dans le cas où la condition
s’évalue en autre chose qu’un booléen.
Dans un compilateur réel, la sémantique des programmes mal typés peut dépendre du
452.3. SÉMANTIQUE OPÉRATIONNELLE
op-num
Γ ⊢ n →→ n
op-ident
v = Γ[x]
Γ ⊢ x →→ v
op-abstr
Γ ⊢ λx.e →→< λx.e, Γ >
op-abstr-rec
Γ ⊢ recf.x.e →→< recf.x.e, Γ >
op-apply
Γ ⊢ e1 →→< λx.e, Γ1 >
Γ ⊢ e2 →→ v2 (x, v2) ⊕ Γ1 ⊢ e →→ v
Γ ⊢ e1 e2 →→ v
op-apply-rec
Γ ⊢ e1 →→ v1 v1 =< recf.x.e, Γ1 >
Γ ⊢ e2 →→ v2 (f, v1) ⊕ (x, v2) ⊕ Γ1 ⊢ e →→ v
Γ ⊢ e1 e2 →→ v
op-if-true
Γ ⊢ e →→ true Γ ⊢ e1 →→ v1
Γ ⊢ if e then e1 else e2 →→ v1
op-if-false
Γ ⊢ e →→ f alse Γ ⊢ e2 →→ v2
Γ ⊢ if e then e1 else e2 →→ v2
op-constr-0
Γ ⊢ C →→ C
op-constr-1
Γ ⊢ e →→ v
Γ ⊢ D(e) →→ D(v)
op-couple
Γ ⊢ e1 →→ v1 Γ ⊢ e2 →→ v2
Γ ⊢ (e1, e2) →→ (v1, v2)
op-match
Γ ⊢ e →→ v v, p ⊢p Γp
Γp ⊕ Γ ⊢ e1 →→ v1
Γ ⊢ match e with p → e1 | x → e2 →→ v1
op-match-var
Γ ⊢ e →→ v v, p ⊢p ⊥
(x, v) ⊕ Γ ⊢ e2 →→ v2
Γ ⊢ match e with p → e1 | x → e2 →→ v2
op-letin
Γ ⊢ e1 →→ v1 (x, v1) ⊕ Γ ⊢ e2 →→ v2
Γ ⊢ let x = e1 in e2 →→ v2
op-annot
Γ ⊢ e →→ v
Γ ⊢ l : e →→ v
Figure 2.2 – Règles d’inférence de la sémantique opérationnelle
opm-constr-0
C, C ⊢p {}
opm-constr-1
D(v), D(x) ⊢p {(x, v)}
opm-couple
(v1, v2),(x1, x2) ⊢p {(x1, v1); (x2, v2)}
opm-constr-0-not
p ̸= C
C, p ⊢p ⊥
opm-constr-1-not
p ̸= D′
(_)
D(v), p ⊢p ⊥
opm-couple-not
p ̸= (_, _)
(v1, v2), p ⊢p ⊥
Figure 2.3 – Règles d’inférence du filtrage de la sémantique opérationnelle
462.3. SÉMANTIQUE OPÉRATIONNELLE
choix de l’implémentation du compilateur. Il est en effet possible que pour des raisons de
performance, le compilateur se repose sur le typage pour limiter le nombre d’opérations
effectuées. Dans le cas de l’évaluation d’une expression conditionnelle par exemple, on
pourrait ne tester que l’égalité entre la valeur de la condition est la valeur true pour passer
dans la première branche et que dans tous les autres cas, on passe dans la seconde branche,
même si la valeur de la condition n’est pas f alse mais un couple, une fermeture ou toute
autre valeur.
De même, dans le cas de l’évaluation d’une expression de filtrage, on pourrait se reposer
sur le typage pour passer dans la seconde branche dans tous les cas où la valeur filtrée ne
correspond pas au motif, même dans les cas mal typés où la valeur de l’expression filtrée
n’est ni un constructeur de donnée, ni un couple.
Ces choix d’optimisation du compilateur se reposant sur le typage n’ont évidemment
pas d’influence sur le résultat de l’évaluation des programmes bien typés. Cependant, notre
approche de l’analyse de dépendances considère à la fois l’impact des injections bien typées
et l’impact des injections mal typées. Une injection mal typée peut survenir à diverses occasions,
par exemple lors du dysfonctionnement d’un capteur ou bien lors d’une perturbation
électromagnétique qui modifierait la mémoire de façon imprévisible.
472.4. POINTS D’INJECTION
2.4 Points d’injection
2.4.1 Dans le programme
On souhaite analyser un programme pour calculer ses dépendances vis-à-vis de certains
points du programme. Ces points de programmes sont appelés « points d’injection » et sont
représentés formellement par des annotations sur les sous-expressions du programme.
Par exemple, si l’utilisateur veut analyser l’impact d’une sous-expression sur l’évaluation
complète d’un programme, il suffira alors d’annoter cette sous-expression à l’aide d’un
label unique et de lancer l’analyse.
L’utilisateur de l’analyse (évaluateur de logiciels critiques) choisira d’après son expertise
quels sont les points de programmes qu’il souhaite annoter. Ces points d’injection peuvent
en particulier correspondre à des parties du programmes non-critiques dans le but de
s’assurer qu’un dysfonctionnement dans une partie non-critique du programme ne peut
pas se propager à une partie critique de celui-ci.
2.4.2 Dans l’environnement
La valeur d’une fonction est représentée par une fermeture contenant le corps de la
fonction. Celui-ci est une expression contenant possiblement des points d’injection. Au
cours de l’évaluation d’un programme, les points d’injection vont donc naturellement se
retrouver dans l’environnement d’évaluation.
482.5. SÉMANTIQUE OPÉRATIONNELLE AVEC INJECTION
2.5 Sémantique opérationnelle avec injection
La sémantique opérationnelle avec injection est une extension de la sémantique opérationnelle
usuelle. Son but est de donner une valeur à un programme dans un environnement
donné et ceci pour n’importe quelle injection (à un point du programme ou bien dans son
environnement d’évaluation).
Cette sémantique donne toujours le même résultat que la sémantique opérationnelle
sur les programmes ne comportant pas de point d’injection (programmes non-annotés). La
seule différence entre la sémantique opérationnelle usuelle et celle avec injection se trouve
lors de l’évaluation d’une sous-expression annotée par un label. Là où la sémantique opérationnelle
ignore tout simplement l’annotation, la sémantique opérationnelle avec injection
va effectuer ce que l’on appelle l’injection. C’est le comportement de la sémantique opérationnelle
avec injection sur les sous-expressions annotées qui constitue précisément notre
définition de la notion d’injection.
La notion d’injection définie ici est à la base de notre notion de dépendance.
2.5.1 Règles d’inférence
Formellement, la sémantique opérationnelle avec injection prend la forme d’un jugement
d’évaluation défini par des règles d’inférence. Ce jugement d’évaluation se note de la
manière suivante :
Γ ⊢l:vl
e →→ v
, où e est l’expression évaluée, Γ l’environnement d’évaluation et v la valeur résultat. Ce
jugement d’évaluation est paramétré par une injection notée en indice (⊢l:vl
), où l représente
le point du programme sur lequel on fait l’injection et vl
la valeur injectée. On dit que v est
la valeur de l’expression e dans l’environnement Γ après injection de la valeur vl au point
de programme l.
Les règles d’inférence sont toutes identiques aux règles de la sémantique opérationnelle
hormis la règle d’évaluation d’une sous-expression annotée. Cette dernière règle est divisée
en 2 cas distincts : si l’expression est annotée par le label sur lequel on fait l’injection, alors
sa valeur réelle est ignorée et remplacée par la valeur injectée vl
, sinon, l’annotation est
492.5. SÉMANTIQUE OPÉRATIONNELLE AVEC INJECTION
opinj-num
Γ ⊢l:vl n →→ n
opinj-ident
v = Γ[x]
Γ ⊢l:vl x →→ v
opinj-abstr
Γ ⊢l:vl λx.e →→< λx.e, Γ >
opinj-abstr-rec
Γ ⊢l:vl recf.x.e →→< recf.x.e, Γ >
opinj-apply
Γ ⊢l:vl
e1 →→< λx.e, Γ1 >
Γ ⊢l:vl
e2 →→ v2 (x, v2) ⊕ Γ1 ⊢l:vl
e →→ v
Γ ⊢l:vl
e1 e2 →→ v
opinj-apply-rec
Γ ⊢l:vl
e1 →→ v1 v1 =< recf.x.e, Γ1 >
Γ ⊢l:vl
e2 →→ v2 (f, v1) ⊕ (x, v2) ⊕ Γ1 ⊢l:vl
e →→ v
Γ ⊢l:vl
e1 e2 →→ v
opinj-if-true
Γ ⊢l:vl
e →→ true Γ ⊢l:vl
e1 →→ v1
Γ ⊢l:vl
if e then e1 else e2 →→ v1
opinj-if-false
Γ ⊢l:vl
e →→ f alse Γ ⊢l:vl
e2 →→ v2
Γ ⊢l:vl
if e then e1 else e2 →→ v2
opinj-match
Γ ⊢l:vl
e →→ v v, p ⊢p Γp
Γp ⊕ Γ ⊢l:vl
e1 →→ v1
Γ ⊢l:vl match e with p → e1 | x → e2 →→ v1
opinj-match-var
Γ ⊢l:vl
e →→ v v, p ⊢p ⊥
(x, v) ⊕ Γ ⊢l:vl
e2 →→ v2
Γ ⊢l:vl match e with p → e1 | x → e2 →→ v2
opinj-constr-0
Γ ⊢l:vl C →→ C
opinj-constr-1
Γ ⊢l:vl
e →→ v
Γ ⊢l:vl D(e) →→ D(v)
opinj-couple
Γ ⊢l:vl
e1 →→ v1 Γ ⊢l:vl
e2 →→ v2
Γ ⊢l:vl
(e1, e2) →→ (v1, v2)
opinj-letin
Γ ⊢l:vl
e1 →→ v1 (x, v1) ⊕ Γ ⊢l:vl
e2 →→ v2
Γ ⊢l:vl
let x = e1 in e2 →→ v2
Figure 2.4 – Sémantique opérationnelle avec injection : règles d’inférence identiques à la
sémantique usuelle
opinj-annot-same
Γ ⊢l:vl
l : e →→ vl
opinj-annot-other
Γ ⊢l:vl
e →→ v l ̸= l
′
Γ ⊢l:vl
l
′
: e →→ v
Figure 2.5 – Sémantique opérationnelle avec injection : règles d’inférence spécifiques
ignorée.
On notera qu’une injection (évaluation d’une sous-expression annotée par le label sur
lequel on fait l’injection) termine toujours. En effet, la sous-expression n’est pas évaluée et
sa valeur (qu’elle existe ou non) est remplacée par la valeur injectée.
Les règles identiques à la sémantique opérationnelle usuelle sont réunies sur la figure
2.4. Les deux règles spécifiques à la sémantique opérationnelle avec injection se trouvent
sur la figure 2.5.
502.5. SÉMANTIQUE OPÉRATIONNELLE AVEC INJECTION
2.5.2 Correction
2.5.2.1 Énoncé informel du théorème
Comme nous l’avons dit plus haut, la sémantique opérationnelle avec injection vient
introduire la notion d’injection en remplaçant une règle de la sémantique opérationnelle
usuelle par deux nouvelles règles d’inférence.
Il convient de vérifier qu’en ce qui concerne les programmes non-annotés, la sémantique
opérationnelle avec injection fournit exactement les mêmes résultats que la sémantique
opérationnelle.
En ce qui concerne la sémantique de la notion d’injection (les deux nouvelles règles d’inférence),
il n’y a pas de propriété de correction à vérifier puisque ces deux règles d’inférences
constituent notre définition de la notion d’injection.
Cependant, il y a une propriété intéressante concernant la notion d’injection : si un
label n’apparaît pas dans le programme évalué, alors aucune injection sur ce label ne peut
modifier la valeur du programme. Cette propriété engloble la propriété d’extension énoncée
ci-dessus. En effet, l’évaluation avec injection d’un programme non-annoté est un cas
particulier d’évaluation avec injection sur un label n’apparaissant pas dans le programme.
Notre théorème de correction exprimera donc la propriété la plus forte.
2.5.2.2 Illustration par l’exemple
Afin d’illustrer la notion d’injection et le fonctionnement de la sémantique opérationnelle
avec injection, voici quelques exemples d’évaluation de programmes.
Exemple 1 : programme non-annoté
Sur les programmes non-annotés les résultats de la sémantique opérationnelle avec
injection et de la sémantique opérationnelle sont les mêmes.
Notons e le programme suivant :
l e t t = 18 i n
l e t f x = ( x−t , x+t ) i n
512.5. SÉMANTIQUE OPÉRATIONNELLE AVEC INJECTION
f 32
Nous avons les deux jugements suivants :
⊢ e →→ (14, 50)
⊢l:vl
e →→ (14, 50) (pour toute injection (l, vl))
Exemple 2 : programme annoté
Maintenant voyons le cas du même programme en lui ajoutant une annotation (label
l) sur une de ses sous-expressions.
Notons e
′
le programme suivant :
l e t t = 18 i n
l e t f x = ( l : x−t , x+t ) i n
f 32
Nous avons les deux jugements suivants :
⊢ e
′
→→ (14, 50)
⊢l:vl
e
′
→→ (vl
, 50) (pour toute valeur injectée vl)
⊢l:3 e
′
→→ (3, 50) (exemple en injectant la valeur 3)
Lorsque la sous-expression f 32 est évaluée, le corps de la fonction est déplié. On évalue
alors l’expression (l :x−t, x+t) dans l’environnement {(x, 32); (t, 18)}. La valeur vl est alors
injectée lors de l’évaluation de la première composante du couple puisque celle-ci est annotée
par le label l. La seconde composante du couple est évaluée de manière usuelle.
Exemple 3 : programme annoté en plusieurs points
Modifions de nouveau notre exemple pour annoter une seconde sous-expression.
Notons e
′′ le programme suivant :
l e t t = l ’ : 1 8 i n
l e t f x = ( l : x−t , x+t ) i n
522.5. SÉMANTIQUE OPÉRATIONNELLE AVEC INJECTION
f 32
Voyons le résultat pour une injection sur l, celui pour une injection sur l
′
:
celui pour une injection sur un l
′′ n’apparaissant pas dans le programme :
⊢ e
′′ →→ (14, 50)
⊢l:vl
e
′′ →→ (vl
, 50) (pour toute valeur injectée vl)
⊢l
′
:vl
′ e
′′ →→ (14, 32 + vl
′) (pour toute valeur injectée vl
′)
⊢l
′
:5 e
′′ →→ (14, 37) (exemple en injectant la valeur 5)
⊢ l
′′ →→ vl
′′e
′′(14, 50)
Exemple 4 : programme annoté dans l’environnement
Un environnement d’évaluation peut contenir des points d’injection. En effet, un identificateur
peut être lié à une fermeture (récursive ou non) dont le corps de la fonction
contient des points d’injection.
Prenons, dans l’exemple ci-dessus, l’évaluation de la sous-expression f 32. Cette évaluation
se fait dans un environnement contenant une valeur pour t et une pour f. Ces valeurs
dépendent de l’injection considérée. Dans le cas des fermetures, l’injection est retardée pour
avoir lieu lors de l’application de la fonction.
Par exemple, pour l’injection (l
′
, 7), l’environnement d’évaluation de l’expression f 32
est le suivant :
Γ := (f, < λx.(l : x − t, x + t), {(t, 7)} >); (t, 7)
On a donc le jugement d’évaluation suivant :
⊢l
′
:7 f 32 →→ (25, 39)
Dans le cas de l’injection (l, 3), l’environnement d’évaluation de l’expression f 32 est le
suivant :
Γ := (f, < λx.(l : x − t, x + t), {(t, 18)} >); (t, 18)
On évalue alors l’expression (l : x − t, x + t) dans l’environnement {(t, 18)} pour obtenir la
valeur (3, 50). On a donc le jugement d’évaluation suivant :
532.5. SÉMANTIQUE OPÉRATIONNELLE AVEC INJECTION
⊢l:3 f 32 →→ (3, 50)
2.5.2.3 Énoncé formel du théorème
Théorème 2.5.1. ∀(Γ, e, v),
Γ ⊢ e →→ v
⇒ ∀l, ldna_in_eval(l, Γ, e)
⇒ ∀vl
. Γ ⊢l:vl
e →→ v
Le prédicat ldna_in_eval(l, Γ, e) signifie que le label l n’apparaît pas lors de l’évaluation
de e dans Γ. C’est à dire qu’il n’apparaît ni dans l’expression e, ni dans les valeurs
dans Γ des identificateurs apparaissant dans e.
Le prédicat ldna_in_val(l, v) signifie que le label l n’apparaît pas dans la valeur v.
Les figures 2.6 et 2.7 fournissent la définition formelle de ces prédicats sous forme de
règles d’inférence mutuellement récursives :
2.5.2.4 Preuve de correction
La preuve de correction se fait par induction sur le jugement d’évaluation de la sémantique
opérationnelle.
Pour effectuer la preuve par induction, nous avons besoin de prouver une propriété un
peu plus forte que celle énoncée ci-dessus. Nous modifions donc l’énoncé de la propriété
à prouver, notre théorème de correction en sera une conséquence triviale. La propriété à
prouver se formule alors :
∀(Γ, e, v),
Γ ⊢ e →→ v
⇒ ∀l, ldna_in_eval(l, Γ, e)
⇒ ∀vl
. Γ ⊢l:vl
e →→ v
∧ ldna_in_val(l, v)
Dans la majorité des cas, la preuve est triviale. Les cas intéressants sont :
– le cas Annot
542.5. SÉMANTIQUE OPÉRATIONNELLE AVEC INJECTION
ldna-e-num
ldna_in_eval(l, Γ, n)
ldna-e-constr-0
ldna_in_eval(l, Γ, C)
ldna-e-constr-1
ldna_in_eval(l, Γ, e)
ldna_in_eval(l, Γ, D(e))
ldna-e-ident
ldna_in_val(l, Γ[x])
ldna_in_eval(l, Γ, x)
ldna-e-ident-unbound
̸ ∃v, Γ[x] = v
ldna_in_eval(l, Γ, x)
ldna-e-abstr
ldna_in_eval(l, Γ, e)
ldna_in_eval(l, Γ, λx.e)
ldna-e-abstr-rec
ldna_in_eval(l, Γ, e)
ldna_in_eval(l, Γ, recf.x.e)
ldna-e-apply
ldna_in_eval(l, Γ, e1)
ldna_in_eval(l, Γ, e2)
ldna_in_eval(l, Γ, e1 e2)
ldna-e-if
ldna_in_eval(l, Γ, e)
ldna_in_eval(l, Γ, e1)
ldna_in_eval(l, Γ, e2)
ldna_in_eval(l, Γ, if e then e1 else e2)
ldna-e-match
ldna_in_eval(l, Γ, e)
ldna_in_eval(l, Γ, e1)
ldna_in_eval(l, Γ, e2)
ldna_in_eval(l, Γ, match e with p → e1 | x → e2)
ldna-e-annot
l ̸= l
′
ldna_in_eval(l, Γ, e)
ldna_in_eval(l, Γ, l : e)
ldna-e-couple
ldna_in_eval(l, Γ, e1)
ldna_in_eval(l, Γ, e2)
ldna_in_eval(l, Γ,(e1, e2))
ldna-e-letin
ldna_in_eval(l, Γ, e1)
ldna_in_eval(l, Γ, e2)
ldna_in_eval(l, Γ, let x = e1 in e2)
Figure 2.6 – Prédicat de non-apparition d’un label lors d’une évaluation
ldna-v-num
ldna_in_val(l, n)
ldna-v-bool
ldna_in_val(l, b)
ldna-v-constr-0
ldna_in_val(l, C)
ldna-v-constr-1
ldna_in_val(l, v)
ldna_in_val(l, D(v))
ldna-v-couple
ldna_in_val(l, v1)
ldna_in_val(l, v2)
ldna_in_val(l,(v1, v2))
ldna-v-closure
ldna_in_eval(l, Γ, e)
ldna_in_val(l, < λx.e, Γ >)
ldna-v-closure-rec
ldna_in_eval(l, Γ, e)
ldna_in_val(l, < recf.x.e, Γ >)
Figure 2.7 – Prédicat de non-apparition d’un label dans une valeur
552.6. IMPACT D’UNE INJECTION
– les cas effectuant une liaison dans l’environnement (Letin, Match et Apply)
– le cas Ident
cas annot Pour le cas Annot, nous utilisons l’hypothèse que le label l n’apparaît pas dans
l’expression évaluée. Dans ce cas, la règle de la sémantique opérationnelle avec injection
est la même que celle de la sémantique opérationnelle (elle ignore l’annotation).
cas des liaison Pour les cas effectuant une liaison dans l’environnement, nous avons besoin
de savoir que le label n’apparaît pas dans la valeur liée pour appliquer notre hypothèse
d’induction. Nous avons cette information grâce au renforcement de l’énoncé de notre théorème
car toute valeur liée est issue d’une évaluation, donc puisque le label n’apparaît pas
dans l’expression évaluée alors il n’apparaît pas dans la valeur résultat. Pour illustrer nos
propos, prenons le cas du let-binding. Nous avons évalué la sous-expression liée e1 dans le
même environnement que l’expression globale, donc nous savons par hypothèse d’induction
que le label n’apparaît pas dans sa valeur. Cette information nous permet de prouver que
le label n’apparaît pas dans l’environnement d’évaluation de la sous-expression e2, puisque
la valeur ajoutée à l’environnement est précisément le résultat de l’évaluation de e1. Nous
pouvons donc appliquer également l’hypothèse d’induction sur la seconde prémisse de la
règle du let-binding et conclure.
cas ident La règle Ident de la sémantique opérationnelle avec injection s’applique de
façon identique à celle de la sémantique opérationnelle. Le jugement de la sémantique
opérationnelle avec injection est donc immédiat à trouver. On déduit que le label n’apparaît
pas dans la valeur trouvée dans l’environnement à partir de l’hypothèse que le label
n’apparaît pas lors de l’évaluation.
2.6 Impact d’une injection
Maintenant que la notion d’injection a été clairement définie, nous pouvons aborder
la notion d’impact. Cette dernière nous sera utile pour définir formellement la notion de
dépendance.
562.7. DÉPENDANCES D’UNE EXPRESSION
Une fois un programme annoté par des points d’injection, on se demande si ces points
d’injection ont un « impact » sur l’évaluation du programme. Autrement dit, on souhaite
déterminer si l’injection d’une valeur à un certain point d’injection va modifier le comportement
du programme. Puisque nous nous limitons à l’analyse de programmes qui terminent,
un changement de comportement peut prendre deux formes possibles. Suite à l’injection,
l’évaluation peut terminer sur une valeur différente ou bien ne pas terminer.
2.6.1 Impact sur la terminaison
Si le programme considéré a une valeur par la sémantique opérationnelle mais qu’il n’a
pas de valeur par la sémantique avec injection pour une injection particulière (l, vl), alors
on dit que cette injection a un impact sur la terminaison de l’évaluation du programme.
On dira également que ce point d’injection (représenté par le label l) a un impact sur
la terminaison du programme puisqu’il existe une injection sur ce label ayant un impact
sur la terminaison du programme.
2.6.2 Impact sur la valeur
Si le programme considéré a une valeur par la sémantique opérationnelle et qu’il a une
valeur différente par la sémantique avec injection pour une injection particulière (l, vl),
alors on dit que cette injection a un impact sur la valeur du programme.
On dira également que ce point d’injection (représenté par le label l) a un impact sur
la valeur du programme puisqu’il existe une injection sur ce label ayant un impact sur la
valeur du programme.
2.7 Dépendances d’une expression
On distingue deux types de dépendances distincts, issus des deux types d’impact pré-
sentés plus haut : les dépendances de terminaison et les dépendances de valeur.
572.7. DÉPENDANCES D’UNE EXPRESSION
2.7.1 Dépendances de terminaison
La terminaison de l’évaluation d’un programme dépend d’un point d’injection (repré-
senté par un label) s’il existe une injection sur ce label ayant un impact sur la terminaison
de l’évaluation. On dit alors que ce label fait partie des t-dépendances de ce programme
(dans un environnement donné).
Lors de l’analyse d’un programme, le résultat de l’analyse contiendra un ensemble de
labels représentant l’ensemble des t-dépendances du programme.
2.7.2 Dépendances de valeur
La valeur résultant de l’évaluation d’un programme dépend d’un point d’injection (représenté
par un label) si il existe une injection sur ce label ayant un impact sur la valeur
de l’évaluation. On dit alors que ce label fait partie des v-dépendances de ce programme
(dans un environnement donné). Certains labels peuvent avoir un impact uniquement sur
une partie de la valeur. Dans ce cas, on voudrait savoir le plus précisément possible quelle
partie de la valeur dépend de quel label.
Lors de l’analyse d’un programme, le résultat de l’analyse devra contenir une valeur
structurée dont chaque sous-terme peut être annoté par l’ensemble de ses v-dépendances.
2.7.3 Illustration par l’exemple
Considérons le programme suivant (noté e) :
l e t c = l : t r u e i n
l e t r e c f x = match x with
| ( a , b ) −> i f a then b e l s e f x
i n
f ( c , l ’ : 17 )
Ce programme termine lors de son évaluation par la sémantique opérationnelle sur la
valeur 17. On a le jugement suivant :
⊢ e →→ 17
582.7. DÉPENDANCES D’UNE EXPRESSION
Un label n’apparaissant pas dans le programme Un label l
′′ n’apparaissant pas dans
le programme e ne peut pas faire partie de ses dépendances (que ce soit ses t-dépendances ou
ses v-dépendances) puisqu’aucune injection sur l
′′ n’affecte le comportement du programme.
On a le jugement suivant :
⊢l
′′:vl
′′ e →→ 17 (pour toute valeur injectée vl
′′)
Le label l Le point d’injection représenté par le label l fait partie des t-dépendances du
programme. En effet, il existe une injection (l, f alse) ayant un impact sur la terminaison
du programme. La sémantique avec injection ne fournit aucune valeur pour l’évaluation de
e avec l’injection (l, f alse).
̸ ∃v. ⊢l:false e →→ v
Le label l
′ Le point d’injection représenté par le label l
′
fait partie des v-dépendances
du programme. En effet, il existe une injection (l
′
, 18) ayant un impact sur la valeur du
programme. La sémantique avec injection fournit une valeur (i.e. 18) pour l’évaluation
de e avec l’injection (l
′
, 18) et cette valeur est différente de la valeur opérationnelle du
programme (i.e. 17).
⊢l
′
:18 e →→ 18
Par contre, le label l
′ ne fait pas partie des t-dépendances du programme puisque pour
toute injection sur l
′
, le programme termine :
⊢l
′
:vl
′ e →→ vl
′ (pour toute valeur injectée vl
′).
592.7. DÉPENDANCES D’UNE EXPRESSION
60Chapitre 3
Analyse dynamique
3.1 Introduction
Ce chapitre a pour but de présenter une analyse dynamique des dépendances d’un
programme et sa preuve de correction, étape préliminaire à la définition et à la preuve
d’une analyse statique présentée dans le chapitre suivant.
Notre analyse dynamique est appelée sémantique instrumentée et se trouve présentée
à la fin de ce chapitre (cf. section 3.5).
Pour présenter cette analyse et en prouver sa correction, nous devons tout d’abord introduire
deux sémantiques intermédiaires : la sémantique avec injection dans un t-environnement
sur-instrumenté (cf. section 3.3) et la sémantique sur-instrumentée (cf. section 3.4). Ces
deux sémantiques intermédiaires permettent de faire le lien entre la notion de dépendance
et la sémantique dynamique étape par étape. Chaque étape a son importance dans la
simplification de la preuve de correction. La figure 3.1 présente une vue globale des différentes
sémantiques intermédaires entre la sémantique opérationnelle avec injection et la
sémantique instrumentée.
L’analyse dynamique (sémantique instrumentée) a pour but d’analyser le programme
au cours de son évaluation. Le résultat fourni est la valeur du programme (au sens de la
sémantique opérationnelle) sur laquelle on ajoute des annotations de dépendance. Chaque
sous-terme de la valeur contient ses propres annotations pour savoir avec précision quelles
parties de la valeur dépendent de tel label et quelles parties n’en dépendent pas. Si on
613.1. INTRODUCTION
Sémantique opérationnelle avec injection :
Sémantique opérationnelle avec injection dans
t-environnement sur-instrumenté :
Sémantique sur-instrumentée :
Sémantique instrumentée :
Les flèches correspondent à des fonctions injectives entre les ensembles de valeurs
ou entre les ensembles d'environnements pour visualiser les pertes de précision et
pertes de généralité.
Figure 3.1 – Sémantiques intermédiaires pour l’analyse dynamique
La sémantique avec injection donne la même valeur
si on instancie l'environnement avant l'évaluation.
En instanciant la valeur sur-instrumentée, on peut
obtenir la valeur (ou l'absence de valeur) du
programme pour n'importe quelle injection.
Il existe une valeur sur-instrumentée pour le
programme telle que sa valeur instrumentée est
obtenue en supprimant les fonctions d'impact dans la
valeur sur-instrumentée.
Ce diagramme montre le lien entre l'analyse dynamique d'un programme (sémantique instrumentée) et la notion
d'injection (sémantique opérationnelle avec injection).
On peut ainsi visualiser l’enchaînement des preuves de correction des 3 sémantiques présentées dans ce chapitre.
Figure 3.2 – Enchaînement des preuves des sémantiques intermédiaires pour l’analyse
dynamique
623.2. SUR-INSTRUMENTATION DES VALEURS
supprime toutes les annotations de dépendance, on obtient exactement la même valeur
qu’après l’évaluation du programme par la sémantique opérationnelle.
Les annotations ajoutées par l’analyse dynamique correspondent aux dépendances du
programme (c’est-à-dire l’ensemble des labels ayant un impact sur l’évaluation de ce programme,
comme défini plus haut (cf. section 2.7)). Nous prouvons formellement cette af-
firmation par le théorème de correction de l’analyse dynamique (cf. section 3.6.4).
Pour arriver à cette preuve, nous prouvons successivement la correction de la sémantique
avec injection dans un t-environnement sur-instrumenté (cf. section 3.3.2), puis la
correction de la sémantique sur-instrumentée (cf. section 3.4.2) et enfin la correction de
la sémantique instrumentée (cf. section 3.5.3). Les propriétés de correction de ces trois
sémantiques s’enchaînent pour obtenir le théorème de correction de l’analyse dynamique.
La figure 3.2 illustre l’enchaînement de ces propriétés de correction.
Dans ce chapitre, nous présenterons tout d’abord la sur-instrumentation des valeurs
(cf. section 3.2) qui nous permettra d’introduire la première sémantique intermédiaire pour
l’analyse dynamique : la sémantique opérationnelle avec injection dans un t-environnement
sur-instrumenté (cf. section 3.3). Nous présenterons ensuite la seconde sémantique intermédiaire
: la sémantique sur-instrumentée (cf. section 3.4). Enfin nous pourrons présenter
l’analyse dynamique elle-même : la sémantique instrumentée (cf. section 3.5). La présentation
de chaque sémantique sera accompagnée de l’énoncé de son théorème de correction par
rapport à la sémantique précédente ainsi que d’une explication sur sa preuve. Nous terminerons
ce chapitre avec l’énoncé du théorème global de correction de l’analyse dynamique
et une explication sur sa preuve utilisant la propriété de correction de chaque sémantique
par rapport à la sémantique précédente.
3.2 Sur-instrumentation des valeurs
Jusqu’à maintenant, nous avons vu comment évaluer un programme à l’aide de la
sémantique opérationnelle (cf. section 2.3) pour obtenir sa valeur opérationnelle (également
appelée valeur de référence du programme). Nous avons également vu comment évaluer un
programme à l’aide de la sémantique avec injection (cf. section 2.5) pour obtenir sa valeur
633.2. SUR-INSTRUMENTATION DES VALEURS
après injection, pour n’importe quelle injection possible.
Un même programme possède donc plusieurs valeurs : sa valeur de référence (obtenue
par la sémantique opérationnelle) et une valeur après injection (ou une absence de valeur
après injection) pour chaque injection possible.
Nous souhaitons maintenant intégrer toutes ces informations sur un programme en un
seul et unique terme appelé « valeur sur-instrumentée ». La valeur sur-instrumentée d’un
programme permettra alors de retrouver, à l’aide d’un mécanisme d’instanciation, la valeur
de référence de ce programme ainsi que la valeur (ou l’absence de valeur) de ce programme
après n’importe quelle injection.
Pour cela, nous allons annoter la valeur de référence du programme avec des informations
de dépendance sur chaque sous-terme de celle-ci.
3.2.1 Valeurs
Comme nous l’avons vu plus haut (cf. section 2.7), un programme possède des tdépendances
(dépendances de terminaison) ainsi que des v-dépendances (dépendances de
valeur). Lors de la sur-instrumentation des valeurs, nous associons à toute valeur (résultat
de l’évaluation d’un programme) l’ensemble des t-dépendances du programme évalué.
Ensuite, nous associons à chaque sous-terme de la valeur un ensemble de v-dépendances
correspondant aux points d’injection ayant un impact sur ce sous-terme.
Une t-valeur sur-instrumentée (notée tuoi) est composée d’un ensemble de t-dépendances
tdoi et d’une v-valeur sur-instrumentée u
oi
.
tuoi := [ tdoi | u
oi ] Valeur avec annotation de t-dépendances
Une v-valeur sur-instrumentée (notée u
oi) est composée d’un v-ensemble de dépendances
d
oi et d’une valeur simple sur-instrumentée v
oi
.
u
oi := [ d
oi | v
oi ] Valeur avec annotation de v-dépendances
Enfin, une valeur simple sur-instrumentée (notée v
oi) est une valeur simple dont les
643.2. SUR-INSTRUMENTATION DES VALEURS
sous-termes sont des v-valeurs sur-instrumentées u
oi
.
v
oi := n | b | C | D(u
oi) | (u
oi
1
, uoi
2
) Constructeurs de données
< λx.e, Γ
oi > Fermeture
< recf.x.e, Γ
oi > Fermeture récursive
3.2.2 Ensembles de dépendances
On distingue 2 types de dépendances :
– les t-dépendances, concernant la terminaison de l’évaluation
– les v-dépendances, concernant le résultat de l’évaluation
Un ensemble de t-dépendances tdoi est un ensemble de labels dans lequel on associe à
chaque label une t-fonction d’impact. Cette t-fonction d’impact est une fonction booléenne
sur les valeurs nous indiquant pour chaque injection possible, si l’évaluation terminerait
ou non (ce qui permet de modéliser un impact aboutissant soit à une boucle infinie, soit
à une erreur d’exécution). Si une t-fonction d’impact retourne true, cela signifie qu’il y a
non-terminaison, sinon, cela signifie que l’évaluation correspondante termine.
tdoi := (l1, tf1); . . .(ln, tfn) t-dépendances
tf : v → bool t-fonction d’impact
Un ensemble de v-dépendances d
oi est un ensemble de labels dans lequel on associe à
chaque label une v-fonction d’impact. Cette v-fonction d’impact est une fonction des valeurs
vers les valeurs nous indiquant pour chaque injection possible, quelle serait la valeur de
l’évaluation avec injection.
d
oi := (l1, f1); . . .(ln, fn) v-dépendances
f : v → v v-fonction d’impact
3.2.3 Environnements
On distingue 2 types d’environnements sur-instrumentés :
– les environnements dans lesquels on évalue les expressions
– les environnements qui se trouvent encapsulés dans les valeurs (fermetures et les
fermetures récursives).
653.2. SUR-INSTRUMENTATION DES VALEURS
Dans le cas de l’évaluation d’une expression, on a besoin de connaître les t-dépendances de
chaque identificateur. On utilisera donc la notion de t-environnement sur-instrumenté.
En revanche, pour les environnements encapsulés dans une valeur (via une fermeture), il
suffit de connaître les t-dépendances globales de cette valeur et il n’est pas nécessaire d’avoir
les t-dépendances de chaque identificateur lié. Dans ce cas, on utilisera un v-environnement
sur-instrumenté sans t-dépendances. En effet, pour qu’un tel environnement ait pu être
créé et emprisonné dans une fermeture, il faut nécessairement que tout ce qui a précédé
la création de cette fermeture ait terminé. Les valeurs présentes dans l’environnement
proviennent de l’évaluation d’une expression de liaison (liaison let in, filtrage par motif
ou application de fonction). Dans tous les cas possibles, lorsqu’on effectue la liaison d’une
valeur dans l’environnement, les t-dépendances de cette valeur sont toujours ajoutés à la
valeur de l’expression évaluée (cf. figure 3.5, règles oi-letin, oi-match, oi-match-var,
oi-apply et oi-rec-apply).
Un t-environnement sur-instrumenté permet de lier chaque identificateur à une t-valeur
sur-instrumentée.
tΓ
oi := (x1, tuoi
1
); . . . ; (xn, tuoi
n
) t-environnement sur-instrumenté
Un v-environnement sur-instrumenté permet de lier chaque identificateur à une v-valeur
sur-instrumentée.
Γ
oi := (x1, uoi
1
); . . . ; (xn, uoi
n
) v-environnement sur-instrumenté
3.2.4 Valeur de référence d’une valeur sur-instrumentée
Pour obtenir la valeur de référence d’une valeur sur-instrumentée, il suffit de retirer
toutes les annotations de dépendance. La valeur de référence d’une valeur sur-instrumentée
est notée ↑toi(tuoi).
Formellement, l’extraction de la valeur de référence d’une t-valeur sur-instrumentée se
définit comme suit :
663.2. SUR-INSTRUMENTATION DES VALEURS
Valeur de référence d’une t-valeur sur-instrumentée :
↑toi( [ tdoi | u
oi ]) := ↑oi(u
oi)
Valeur de référence d’une v-valeur sur-instrumentée :
↑oi( [ d
oi | v
oi ]) := ↑oi(v
oi)
Valeur de référence d’une valeur simple sur-instrumentée :
↑oi(n) := n
↑oi(b) := b
↑oi(C) := C
↑oi(D(u
oi)) := D(↑oi(u
oi))
↑oi((u
oi
1
, uoi
2
)) := (↑oi(u
oi
1
), ↑oi(u
oi
2
))
↑oi(< λx.e, Γ
oi >) := < λx.e, ↑oi(Γoi) >
↑oi(< recf.x.e, Γ
oi >) := < recf.x.e, ↑oi(Γoi) >
Environnement de référence d’un t-environnement sur-instrumenté :
↑toi(∅) := ∅
↑toi((x, tuoi) ⊕ tΓ
oi) := (x, ↑toi(tuoi))⊕ ↑toi(tΓ
oi)
Environnement de référence d’un v-environnement sur-instrumenté :
↑oi(∅) := ∅
↑oi((x, uoi) ⊕ Γ
oi) := (x, ↑oi(u
oi))⊕ ↑oi(Γoi)
3.2.5 Instanciation d’une valeur sur-instrumentée
La valeur sur-instrumentée d’un programme contient toute l’information nécessaire
pour savoir quelle serait le comportement du programme lors de son évaluation par la
sémantique avec injection et ce pour n’importe quelle injection.
Pour extraire la valeur après une injection (l, vl) depuis une valeur sur-instrumentée
tuoi, on utilise une fonction d’instanciation notée ↓
l:vl(tuoi).
Tout d’abord, il faut regarder si le label l appartient à l’ensemble des t-dépendances.
Si c’est le cas, la t-fonction d’impact associée au label nous indique si le programme aurait
ou non terminé sur une valeur lors de son évaluation par la sémantique avec injection. Si
le label l n’appartient pas aux t-dépendances, alors le programme a forcément une valeur
si on l’évalue à l’aide de la sémantique avec injection.
673.2. SUR-INSTRUMENTATION DES VALEURS
Ensuite, pour chaque sous-terme de la valeur, on regarde si le label l appartient aux
v-dépendances correspondant au sous-terme considéré. Si c’est le cas, alors la v-fonction
d’impact nous indique la valeur du sous-terme pour l’injection considérée. Si le label l
n’appartient pas aux v-dépendances du sous-terme, alors la valeur du sous-terme après
injection correspond à sa valeur de référence dans laquelle on a instancié chaque sousterme.
On remarquera que puisque les valeurs simples sur-instrumentées (v
oi) ne contiennent
que des valeurs sur-instrumentées (u
oi), il n’est pas question de terminaison lors du parcours
de ces sous-termes. Ceci est parfaitement justifié puisque la terminaison est une propriété
globale pour une t-valeur sur-instrumentée.
La fonction d’instanciation d’une t-valeur sur-instrumentée se définit formellement
comme suit :
Instanciation des t-valeurs sur-instrumentées :
↓
l:vl( [ tdoi | u
oi ]) := ↓
l:vl(u
oi) si atifl:vl
(tdoi) = f alse
La fonction d’instanciation des t-valeurs sur-instrumentées est une fonction partielle. Elle
n’est définie que lorsque atifl:vl
(tdoi) = f alse. Dans le cas où atifl:vl
(tdoi) = true, on dit
que la t-valeur sur-instrumentée n’est pas instanciable et on écrit ̸ ∃v. ↓
l:vl( [ tdoi | u
oi ]) =
v.
Instanciation des valeurs sur-instrumentées :
↓
l:vl( [ d
oi | v
oi ]) := aifl:vl
(d
oi) si l ∈ d
oi
↓
l:vl( [ d
oi | v
oi ]) := ↓
l:vl(v
oi) si l ̸∈ d
oi
Instanciation des valeurs simples sur-instrumentées :
↓
l:vl(n) := n
↓
l:vl(b) := b
↓
l:vl(C) := C
↓
l:vl(D(u
oi)) := D(↓
l:vl(u
oi))
↓
l:vl((u
oi
1
, uoi
2
)) := (↓
l:vl(u
oi
1
), ↓
l:vl(u
oi
2
))
↓
l:vl(< λx.e, Γ
oi >) := < λx.e, ↓
l:vl(Γoi) >
↓
l:vl(< recf.x.e, Γ
oi >) := < recf.x.e, ↓
l:vl(Γoi) >
683.2. SUR-INSTRUMENTATION DES VALEURS
Instanciation des environnements sur-instrumentés :
↓
l:vl({}) := {}
↓
l:vl((x, uoi) ⊕ Γ
oi) := (x, ↓
l:vl(u
oi))⊕ ↓l:vl(Γoi)
Application des t-fonctions d’impact :
atifl:vl
((l, tf oi);tdoi) := tf oi(vl) ∨ atifl:vl
(tdoi)
atifl:vl
((l
′
, tf oi);tdoi) := atifl:vl
(tdoi) si l
′ ̸= l
atifl:vl
(∅) := f alse
Application des fonctions d’impact :
aifl:vl
((l, f oi); d
oi) := f
oi(vl)
aifl:vl
((l
′
, f oi); d
oi) := aifl:vl
(d
oi) si l
′ ̸= l
3.2.6 Conversion
Compte tenu du nombre de notions similaires à propos des environnements et des
valeurs, et pour éviter toute confusion, les conversions seront toujours explicites.
Par exemple, la notation Γ
oi désigne un environnement sur-instrumenté qui n’est pas
forcément en relation avec le t-environnement sur-instrumenté tΓ
oi. Lorsqu’il y a une relation
entre deux environnements, celle-ci est exprimée explicitement à l’aide d’une fonction
de conversion. Par exemple Γ
oi =↑
oi
toi(tΓ
oi) exprime que l’environnement Γ
oi est le résultat
de l’application de la fonction de conversion ↑
oi
toi(•) à l’environnement tΓ
oi. Cette fonction
convertit un t-environnement sur-instrumenté (resp. une t-valeur sur-instrumentée) en un
v-environnement sur-instrumenté (resp. une v-valeur sur-instrumentée).
693.3. SÉMANTIQUE AVEC INJECTION DANS UN T-ENVIRONNEMENT
SUR-INSTRUMENTÉ
3.3 Sémantique avec injection dans un t-environnement surinstrumenté
La sémantique avec injection que nous avons présentée plus haut (cf. section 2.5) nous a
permis de définir formellement la notion de dépendance vis-à-vis de laquelle nous pourrons
prouver la correction de notre analyse.
Nous avons également défini (cf. section 3.2) une manière d’annoter la valeur d’un programme
avec des informations de dépendance de façon à intégrer en un seul et même terme
le comportement du programme pour toute injection. Plus loin, nous définirons (cf. section
3.4) une sémantique permettant d’inférer une valeur sur-instrumentée pour tout programme
dont l’évaluation de référence termine. Cette sémantique sur-instrumentée devra manipuler
au sein de l’environnement d’évaluation des valeurs elles-mêmes sur-instrumentées (obtenues
par l’évaluation d’un programme précédent ou spécifiées par l’utilisateur) et non des
valeurs simples comme dans la sémantique opérationnelle.
Afin de faciliter la preuve de correction de la sémantique sur-instrumentée, nous introduisons
maintenant une extension de la sémantique avec injection. Cette extension
donnera un sens à l’évaluation avec injection d’un programme dans un environnement
sur-instrumenté.
L’expression est évaluée dans un t-environnement sur-instrumenté, ce qui permet de
spécifier pour chaque identificateur présent dans l’environnement, quelle aurait été sa valeur
si on l’avait obtenue après telle ou telle injection. Le résultat de l’évaluation d’une
expression par la sémantique avec injection dans un t-environnement sur-instrumenté est
une valeur sans annotation, tout comme pour la sémantique opérationnelle avec injection
ou pour la sémantique opérationnelle usuelle. Lorsque les annotations du t-environnement
sur-instrumenté sont vides, alors la sémantique avec injection dans le t-environnement
sur-instrumenté coïncide avec la sémantique avec injection dans son environnement de
référence.
703.3. SÉMANTIQUE AVEC INJECTION DANS UN T-ENVIRONNEMENT
SUR-INSTRUMENTÉ
3.3.1 Règles d’inférence
Formellement, la sémantique avec injection dans un t-environnement sur-instrumenté
prend la forme d’un jugement d’évaluation similaire à celui de la sémantique opérationnelle
avec injection. On note le jugement d’évaluation de la manière suivante :
tΓ
oi ⊢l:vl
e →→ v
La seule différence par rapport à la sémantique opérationnelle avec injection est l’environnement
d’évaluation. Dans la sémantique que nous définissons ici, l’environnement
d’évaluation est un t-environnement sur-instrumenté. Il contient plus d’information que
l’environnement d’évaluation de la sémantique opérationnelle avec injection. En effet dans
l’environnement opérationnel, chaque identificateur est lié à une unique valeur. Celle-ci représente
la valeur de l’identificateur quelque soit l’injection considérée. Par contre, dans un
t-environnement sur-instrumenté, la valeur d’un identificateur dans l’environnement peut
changer en fonction de l’injection considérée.
Cette nouvelle sémantique est plus générale que la sémantique opérationnelle avec injection
que nous avions définie pour introduire notre notion de dépendance. En utilisant
la fonction injective ↑
toi(•) qui décore tout environnement opérationnel avec des annotations
de dépendance vides, on obtient un plongement de l’ensemble des jugements de la
sémantique opérationnelle avec injection vers l’ensemble des jugements de la sémantique
avec injection dans un t-environnement sur-instrumenté.
Ainsi lorsque nous prouverons la correction de la sémantique avec injection dans un tenvironnement
sur-instrumenté, nous en déduirons trivialement la correction de la sémantique
opérationnelle avec injection par une simple spécialisation du théorème de correction.
De même lorsque nous prouverons la correction de la sémantique sur-instrumentée par
rapport à la sémantique avec injection dans un t-environnement sur-instrumenté, nous en
déduirons trivialement la correction de la sémantique sur-instrumentée par rapport à la
sémantique opérationnelle avec injection.
Remarque : de la même manière que la sémantique opérationnelle avec injection, la
sémantique avec injection dans un t-environnement sur-instrumenté est paramétrée par le
713.3. SÉMANTIQUE AVEC INJECTION DANS UN T-ENVIRONNEMENT
SUR-INSTRUMENTÉ
label l sur lequel on effectue l’injection et par la valeur injectée vl
. Ces paramètres sont
notés en indice du jugement d’évaluation (⊢l:vl
).
Bien que l’environnement d’évaluation contienne des annotations de dépendance,
la sémantique avec injection ne fait qu’utiliser ces annotations. Cette
sémantique n’a pas pour but de calculer des dépendances. Lors de l’évaluation
d’un programme, elle ne produit aucune annotation. En particulier, lorsqu’une
valeur est ajoutée à l’environnement, elle contient toujours des annotations
vides, la valeur ajoutée n’étant utilisée que pour une injection particulière :
l’injection se trouvant en paramètre du jugement d’évaluation.
Les règles identiques à la sémantique opérationnelle usuelle sont réunies sur la figure
3.3. Les deux règles spécifiques à la sémantique opérationnelle avec injection se trouvent
sur la figure 3.4.
La majorité des règles sont identiques à la sémantique opérationnelle (modulo l’ajout
d’annotations vides via la fonction ↑
toi(•) lors de la construction d’un environnement). En
plus des deux règles d’évaluation d’une expression annotée, trois autres règles sont spéci-
fiques à la sémantique avec injection dans un t-environnement sur-instrumenté. Lorsqu’on
va chercher la valeur d’un identificateur dans l’environnement, on instancie la t-valeur surinstrumentée
trouvée pour l’injection considérée. Lorsqu’on construit une fermeture (ou
une fermeture récursive), on instancie le t-environnement sur-instrumenté pour l’injection
considérée avant de l’encapsuler dans la fermeture.
3.3.2 Correction
3.3.2.1 Énoncé informel du théorème
La sémantique avec injection dans un t-environnement sur-instrumenté permet de calculer
la valeur d’un programme dans un t-environnement sur-instrumenté. Pour chaque
identificateur, cet environnement contient une t-valeur sur-instrumentée. Cette valeur nous
permet de connaître la valeur opérationnelle de l’identificateur pour n’importe quelle injection.
En particulier, lorsque l’on évalue un programme pour une injection particulière
(l, vl), sa valeur opérationnelle est l’instanciation de sa t-valeur sur-instrumentée pour l’in-
723.3. SÉMANTIQUE AVEC INJECTION DANS UN T-ENVIRONNEMENT
SUR-INSTRUMENTÉ
inj-num
tΓ
oi ⊢l:vl n →→ n
inj-letin
tΓ
oi ⊢l:vl
e1 →→ v1 (x, ↑
toi(v1)) ⊕ tΓ
oi ⊢l:vl
e2 →→ v2
tΓ
oi ⊢l:vl
let x = e1 in e2 →→ v2
inj-apply
tΓ
oi ⊢l:vl
e1 →→< λx.e, Γ1 >
tΓ
oi ⊢l:vl
e2 →→ v2
(x, ↑
toi(v2))⊕ ↑toi(Γ1) ⊢l:vl
e →→ v
tΓ
oi ⊢l:vl
e1 e2 →→ v
inj-apply-rec
tΓ
oi ⊢l:vl
e1 →→ v1 v1 =< recf.x.e, Γ1 >
tΓ
oi ⊢l:vl
e2 →→ v2
(f, ↑
toi(v1)) ⊕ (x, ↑
toi(v2))⊕ ↑toi(Γ1) ⊢l:vl
e →→ v
tΓ
oi ⊢l:vl
e1 e2 →→ v
inj-if-true
tΓ
oi ⊢l:vl
e →→ true tΓ
oi ⊢l:vl
e1 →→ v1
tΓ
oi ⊢l:vl
if e then e1 else e2 →→ v1
inj-if-false
tΓ
oi ⊢l:vl
e →→ f alse tΓ
oi ⊢l:vl
e2 →→ v2
tΓ
oi ⊢l:vl
if e then e1 else e2 →→ v2
inj-match
tΓ
oi ⊢l:vl
e →→ v v, p ⊢p Γp
↑
toi(Γp) ⊕ tΓ
oi ⊢l:vl
e1 →→ v1
tΓ
oi ⊢l:vl match e with p → e1 | x → e2 →→ v1
inj-match-var
tΓ
oi ⊢l:vl
e →→ v v, p ⊢p ⊥
(x, ↑
toi(v)) ⊕ tΓ
oi ⊢l:vl
e2 →→ v2
tΓ
oi ⊢l:vl match e with p → e1 | x → e2 →→ v2
inj-constr-0
tΓ
oi ⊢l:vl C →→ C
inj-constr-1
tΓ
oi ⊢l:vl
e →→ v
tΓ
oi ⊢l:vl D(e) →→ D(v)
inj-couple
tΓ
oi ⊢l:vl
e1 →→ v1 tΓ
oi ⊢l:vl
e2 →→ v2
tΓ
oi ⊢l:vl
(e1, e2) →→ (v1, v2)
Figure 3.3 – Sémantique avec injection dans un t-environnement sur-instrumenté : règles
d’inférence identiques à la sémantique usuelle
inj-ident
v =↓
l:vl
(tΓ
oi[x])
tΓ
oi ⊢l:vl x →→ v
inj-annot-same
tΓ
oi ⊢l:vl
l : e →→ vl
inj-annot-other
tΓ
oi ⊢l:vl
e →→ v l ̸= l
′
tΓ
oi ⊢l:vl
l
′
: e →→ v
inj-abstr
tΓ
oi ⊢l:vl λx.e →→< λx.e, ↓
l:vl
(tΓ
oi) >
inj-abstr-rec
tΓ
oi ⊢l:vl recf.x.e →→< recf.x.e, ↓
l:vl
(tΓ
oi) >
Figure 3.4 – Sémantique avec injection dans un t-environnement sur-instrumenté : règles
d’inférence spécifiques
733.3. SÉMANTIQUE AVEC INJECTION DANS UN T-ENVIRONNEMENT
SUR-INSTRUMENTÉ
jection (l, vl). L’évaluation d’un programme dans un t-environnement sur-instrumenté pour
une injection (l, vl) doit donc retourner la même valeur que son évaluation opérationnelle
pour l’injection (l, vl) dans l’environnement opérationnel obtenu par instanciation du tenvironnement
sur-instrumenté pour l’injection (l, vl).
Dit d’une manière plus concise, on peut exprimer informellement le théorème de correction
de notre sémantique avec injection dans un t-environnement sur-instrumenté ainsi : la
sémantique avec injection doit être la même si on instancie ou non l’environnement avant
l’évaluation.
3.3.2.2 Illustration par l’exemple
Pour mieux appréhender la signification de ce théorème de correction, voici un exemple
très simple d’évaluation de programme par la sémantique avec injection dans un t-environnement
sur-instrumenté et dans son instanciation.
Notons tΓ
oi l’environnement suivant :
tΓ
oi ≡ (y, [ tdoi
y
| [ d
oi
y
| 7 ] ]) ⊕ (z, [ tdoi
z
| [ d
oi
z
| 4 ] ])
avec :
tdoi
y ≡ (l, tfl
y
) où tfl
y
(v) vaut f alse si v est un entier positif, true sinon
d
oi
y ≡ (l, fl
y
) où f
l
y
(v) vaut le double de v si v est un entier positif, 0 sinon
tdoi
z ≡ ∅
d
oi
z ≡ (l
′
, fl
′
z
) où f
l
′
z
(v) vaut 3 si v est le constructeur de donnée C, 5 sinon
l ̸= l
′
Notons e le programme suivant :
l e t f x = ( x , x+z ) i n
f ( y + l ’ ’ : 2 )
avec l ̸= l
′′ et l
′ ̸= l
′′
Exemple 1 : impact sur la valeur d’un identificateur
Considérons l’injection de la valeur 8 sur le label l. La sémantique avec injection dans
le t-environnement sur-instrumenté nous donne le jugement suivant :
743.3. SÉMANTIQUE AVEC INJECTION DANS UN T-ENVIRONNEMENT
SUR-INSTRUMENTÉ
tΓ
oi ⊢l:8 e →→ (18, 22)
En instanciant le t-environnement sur-instrumenté, nous obtenons :
↓
l:8(tΓ
oi) = (y, 16) ⊕ (z, 4)
La sémantique opérationnelle avec injection dans cet environnement nous donne alors le
même résultat que la sémantique avec injection dans le t-environnement sur-instrumenté :
(y, 16) ⊕ (z, 4) ⊢l:8 e →→ (18, 22)
Exemple 2 : impact sur la valeur d’un identificateur
Considérons l’injection de la valeur C sur le label l
′
. La sémantique avec injection dans
le t-environnement sur-instrumenté nous donne le jugement suivant :
tΓ
oi ⊢l
′
:C e →→ (9, 12)
En instanciant le t-environnement sur-instrumenté, nous obtenons :
↓
l
′
:C(tΓ
oi) = (y, 7) ⊕ (z, 3)
La sémantique opérationnelle avec injection dans cet environnement nous donne alors le
même résultat que la sémantique avec injection dans le t-environnement sur-instrumenté :
(y, 7) ⊕ (z, 3) ⊢l
′
:C e →→ (9, 12)
Exemple 3 : impact sur la terminaison d’un identificateur
Considérons l’injection de la valeur −4 sur le label l. La t-valeur sur-instrumentée de
l’identificateur y n’est pas instanciable. La sémantique avec injection dans le t-environnement
sur-instrumenté ne fournit donc aucun jugement, puisque la sous-expression y ne trouve
aucune règle d’inférence permettant de déduire un jugement d’évaluation.
Le t-environnement sur-instrumenté n’est donc pas instanciable lui non plus. Nous
sommes dans une situation où l’évaluation de la partie précédente du programme (celle qui
a permi de construire l’environnement) ne termine pas pour l’injection considérée (l, −4).
Il n’est alors pas possible de donner une valeur au programme par la sémantique
opérationnelle avec l’injection (l, −4) puisque l’environnement d’évaluation correspondant
753.3. SÉMANTIQUE AVEC INJECTION DANS UN T-ENVIRONNEMENT
SUR-INSTRUMENTÉ
n’existe pas.
Exemple 4 : impact sur un point d’injection sur programme
Considérons l’injection de la valeur 17 sur le label l
′′. La sémantique avec injection dans
le t-environnement sur-instrumenté nous donne le jugement suivant :
tΓ
oi ⊢l
′′:17 e →→ (24, 28)
En instanciant le t-environnement sur-instrumenté, nous obtenons :
↓
l
′′:17(tΓ
oi) = (y, 7) ⊕ (z, 4)
La sémantique opérationnelle avec injection dans cet environnement nous donne alors le
même résultat que la sémantique avec injection dans le t-environnement sur-instrumenté :
(y, 7) ⊕ (z, 4) ⊢l
′′:17 e →→ (24, 28)
3.3.2.3 Énoncé formel du théorème
Théorème 3.3.1 (Correction de la sémantique avec injection dans un t-environnement
sur-instrumenté).
∀(tΓ
oi
, Γ, e, v, l, vl), tΓ
oi ⊢l:vl
e →→ v ⇒ Γ = ↓
l:vl(tΓ
oi) ⇒ Γ ⊢l:vl
e →→ v
3.3.2.4 Preuve de correction
La preuve se fait trivialement par induction sur le jugement de la sémantique avec
injection dans le t-environnement sur-instrumenté.
Voici quelques explications sommaires sur quelques cas de la preuve :
inj-abstr Dans le cas de l’évaluation d’une abstraction (récursive ou non), l’environnement
encapsulé dans la fermeture est l’instanciation du t-environnement sur-instrumenté.
La sémantique opérationnelle avec injection coïncide donc avec notre nouvelle sémantique.
inj-ident Dans le cas de l’évaluation d’un identificateur, il suffit de remarquer que l’instanciation
de la t-valeur sur-instrumentée d’un identificateur est la même que la valeur opé-
rationnelle de cet identificateur dans l’instanciation du t-environnement sur-instrumenté.
763.3. SÉMANTIQUE AVEC INJECTION DANS UN T-ENVIRONNEMENT
SUR-INSTRUMENTÉ
inj-match Le cas du filtrage par motif est lui-aussi très simple.
Supposons que nous avons un jugement de la forme suivante :
inj-match
tΓ
oi ⊢l:vl
e →→ v v, p ⊢p Γp
↑
toi(Γp) ⊕ tΓ
oi ⊢l:vl
e1 →→ v1
tΓ
oi ⊢l:vl match e with p → e1 | x → e2 →→ v1
Les hypothèses d’induction nous permettent de déduire ces jugements :
↓
l:vl(tΓ
oi) ⊢l:vl
e →→ v
et ↓
l:vl(↑
toi(Γp) ⊕ tΓ
oi) ⊢l:vl
e1 →→ v1
Enfin, puisque ↑
toi(•) n’ajoute que des dépendances vides, nous avons :
↓
l:vl(↑
toi(Γp) ⊕ tΓ
oi) = Γp⊕ ↓l:vl(tΓ
oi)
Nous pouvons alors appliquer la règle de la sémantique opérationnelle avec injection
permettant de conclure :
opinj-match
↓
l:vl(tΓ
oi) ⊢l:vl
e →→ v v, p ⊢p Γp
Γp⊕ ↓l:vl(tΓ
oi) ⊢l:vl
e1 →→ v1
↓
l:vl(tΓ
oi) ⊢l:vl match e with p → e1 | x → e2 →→ v1
773.4. SÉMANTIQUE SUR-INSTRUMENTÉE
3.4 Sémantique sur-instrumentée
Ce chapitre a pour but de présenter une seconde sémantique intermédiaire utilisée pour
la preuve de notre analyse dynamique : la sémantique sur-instrumentée. Cette sémantique
n’est pas nécessaire pour définir l’analyse dynamique mais a pour but de simplifier et de
faciliter la preuve de correction de cette dernière.
Nous avons commencé par définir la sémantique opérationnelle avec injection qui donne
un sens à la notion d’injection lors de l’évaluation d’un programme. Cette sémantique évalue
un programme dans un environnement opérationnel pour une injection donnée. L’environnement
d’évaluation doit alors contenir la valeur opérationnelle de chaque identificateur
pour l’injection considérée. Si nous souhaitons considérer plusieurs injections, il nous faut
évaluer le programme dans autant d’environnements, puisqu’à chaque injection correspond
un certain environnement.
Nous avons ensuite présenté la définition de la sémantique avec injection dans un tenvironnement
sur-instrumenté. Cette sémantique évalue un programme dans un t-environnement
sur-instrumenté pour une injection donnée. Ce t-environnement sur-instrumenté
regroupe tous les environnements correspondant aux différentes injections. Si on souhaite
considérer plusieurs injections, il faut toujours effectuer plusieurs évaluations du
programme, mais toutes ces évaluations se font alors dans le même environnement. En
effet, cette sémantique, bien qu’elle manipule des t-valeurs sur-instrumentées dans l’environnement
d’évaluation, produit uniquement des valeurs simples au sens de la sémantique
opérationnelle, tout comme la sémantique opérationnelle avec injection. La définition de
cette sémantique est un premier pas permettant de faire le lien entre la notion d’injection
et l’analyse dynamique.
Dans cette section, nous allons définir la sémantique sur-instrumentée qui constitue un
pas supplémentaire entre la notion d’injection et l’analyse dynamique. La sémantique surinstrumentée
évalue un programme dans un t-environnement sur-instrumenté pour fournir
une t-valeur sur-instrumentée. Cette fois-ci, nous avons la possibilité d’analyser un programme
pour toutes les injections simultanément. En une seule évaluation, nous obtenons
une t-valeur sur-instrumentée contenant toutes les informations nécessaires pour déduire
783.4. SÉMANTIQUE SUR-INSTRUMENTÉE
le comportement du programme pour toute injection. On se rapproche ainsi de notre analyse
dynamique. Cependant, la sémantique sur-instrumentée n’est pas calculable. C’est
la contrepartie nécessaire pour avoir une sémantique donnant le comportement exact du
programme pour toute injection. Lorsque nous définirons l’analyse dynamique, nous obtiendrons
une sémantique calculable fournissant une approximation du comportement du
programme pour toute injection.
3.4.1 Règles d’inférence
La sémantique sur-instrumentée est représentée formellement par un jugement d’évaluation
de la forme suivante :
tΓ
oi ⊢
oi e →→ tuoi
où e est l’expression évaluée, tΓ
oi le t-environnement sur-instrumenté dans lequel on effectue
l’évaluation et tuoi la t-valeur sur-instrumentée résultat de l’évaluation.
Les règles d’inférence (figure 3.5) sont en grande partie similaires aux règles habituelles
de la sémantique opérationnelle. Cependant, trois d’entre elles sont notablement
différentes : l’application de fonction (récursive ou non), la structure conditionnelle et le
filtrage par motif.
Nous allons détailler ci-dessous chacune des règles pour en donner les explications indispensables
à leur compréhension.
oi-num Le résultat de l’évaluation d’une constante entière est une t-valeur sur-instrumentée
comprenant un ensemble de t-dépendances vide, un ensemble de v-dépendances
vide et une valeur simple sur-instrumentée étant la constante elle-même. L’ensemble des
t-dépendances est vide car aucune injection ne peut avoir d’impact sur la terminaison de
l’évaluation de cette expression. L’ensemble des v-dépendances est vide car aucune injection
ne peut avoir d’impact sur la valeur de cette expression.
oi-ident L’évaluation d’un identificateur se fait de manière habituelle, en allant chercher
la valeur correspondante dans l’environnement. Les dépendances de la t-valeur surinstrumentée
retournée sont celles qui ont été enregistrées dans l’environnement pour cet
793.4. SÉMANTIQUE SUR-INSTRUMENTÉE
oi-num
tΓ
oi ⊢
oi n →→ [ ∅ | [ ∅ | n ] ]
oi-abstr
tΓ
oi ⊢
oi λx.e →→ [ ∅ | [ ∅ | < λx.e, ↑
oi
toi(tΓ
oi) > ] ]
oi-ident
tuoi = tΓ
oi[x]
tΓ
oi ⊢
oi x →→ tuoi
oi-abstr-rec
tΓ
oi ⊢
oi recf.x.e →→ [ ∅ | [ ∅ | < recf.x.e, ↑
oi
toi(tΓ
oi) > ] ]
oi-apply
tΓ
oi ⊢
oi e1 →→ [ tdoi
1
| [ d
oi
1
| < λx.e, Γ
oi
1 > ] ]
tΓ
oi ⊢
oi e2 →→ tuoi
2
tuoi
2 = [ tdoi
2
| u
oi
2
]
(x, tuoi
2
)⊕ ↑toi
oi (Γoi
1
) ⊢
oi e →→ [ tdoi | [ d
oi | v
oi ] ] deps_spec_apply(tuoi
2
, doi
1
) = (td′oi, d′oi)
tΓ
oi ⊢
oi e1 e2 →→ [ tdoi
1 ∪ tdoi
2 ∪ tdoi ∪ td′oi | [ d
′oi ∪ d
oi | v
oi ] ]
oi-rec-apply
tΓ
oi ⊢
oi e1 →→ tuoi
1
tuoi
1 = [ tdoi
1
| [ d
oi
1
| < recf.x.e, Γ
oi
1 > ] ]
tΓ
oi ⊢
oi e2 →→ tuoi
2
tuoi
2 = [ tdoi
2
| u
oi
2
]
(f, tuoi
1
) ⊕ (x, tuoi
2
)⊕ ↑toi
oi (Γoi
1
) ⊢
oi e →→ [ tdoi | [ d
oi | v
oi ] ] deps_spec_apply(tuoi
2
, doi
1
) = (td′oi, d′oi)
tΓ
oi ⊢
oi e1 e2 →→ [ tdoi
1 ∪ tdoi
2 ∪ tdoi ∪ td′oi | [ d
′oi ∪ d
oi | v
oi ] ]
oi-letin
tΓ
oi ⊢
oi e1 →→ tuoi
1
tuoi
1 = [ tdoi
1
| u
oi
1
]
(x, tuoi
1
) ⊕ tΓ
oi ⊢
oi e2 →→ [ tdoi
2
| u
oi
2
]
tΓ
oi ⊢
oi let x = e1 in e2 →→ [ tdoi
1 ∪ tdoi
2
| u
oi
2
]
oi-if-true
tΓ
oi ⊢
oi e →→ [ tdoi | [ d
oi | true ] ]
tΓ
oi ⊢
oi e1 →→ [ tdoi
1
| [ d
oi
1
| v
oi
1
] ] deps_spec_if(tΓ
oi, e1, e2, doi) = (td′oi, d′oi)
tΓ
oi ⊢
oi if e then e1 else e2 →→ [ td′oi ∪ tdoi ∪ tdoi
1
| [ d
′oi ∪ d
oi
1
| v
oi
1
] ]
oi-if-false
tΓ
oi ⊢
oi e →→ [ tdoi | [ d
oi | false ] ]
tΓ
oi ⊢
oi e2 →→ [ tdoi
2
| [ d
oi
2
| v
oi
2
] ] deps_spec_if(tΓ
oi, e1, e2, doi) = (td′oi, d′oi)
tΓ
oi ⊢
oi if e then e1 else e2 →→ [ td′oi ∪ tdoi ∪ tdoi
2
| [ d
′oi ∪ d
oi
2
| v
oi
2
] ]
oi-match
tΓ
oi ⊢
oi e →→ tuoi tuoi = [ tdoi | [ d
oi | v
oi ] ]
tuoi, p ⊢
oi
p
tΓ
oi
p
tΓ
oi
p ⊕ tΓ
oi ⊢
oi e1 →→ [ tdoi
1
| [ d
oi
1
| v
oi
1
] ] deps_spec_match(tΓ
oi, p, x, e1, e2, doi) = (td′oi, d′oi)
tΓ
oi ⊢
oi match e with p → e1 | x → e2 →→ [ td′oi ∪ tdoi ∪ tdoi
1
| [ d
′oi ∪ d
oi
1
| v
oi
1
] ]
oi-match-var
tΓ
oi ⊢
oi e →→ tuoi tuoi = [ tdoi | [ d
oi | v
oi ] ]
tuoi, p ⊢
oi
p ⊥
(x, tuoi) ⊕ tΓ
oi ⊢
oi e2 →→ [ tdoi
2
| [ d
oi
2
| v
oi
2
] ] deps_spec_match(tΓ
oi, p, x, e1, e2, doi) = (td′oi, d′oi)
tΓ
oi ⊢
oi match e with p → e1 | x → e2 →→ [ td′oi ∪ tdoi ∪ tdoi
2
| [ d
′oi ∪ d
oi
2
| v
oi
2
] ]
oi-constr-0
tΓ
oi ⊢
oi C →→ [ ∅ | [ ∅ | C ] ]
oi-constr-1
tΓ
oi ⊢
oi e →→ [ tdoi | u
oi ]
tΓ
oi ⊢
oi D(e) →→ [ tdoi | [ ∅ | D(u
oi) ] ]
oi-couple
tΓ
oi ⊢
oi e1 →→ [ tdoi
1
| u
oi
1
] tΓ
oi ⊢
oi e2 →→ [ tdoi
2
| u
oi
2
]
tΓ
oi ⊢
oi (e1, e2) →→ [ tdoi
1 ∪ tdoi
2
| [ ∅ | (u
oi
1
, uoi
2
) ] ]
oi-annot
tΓ
oi ⊢
oi e →→ [ tdoi | [ d
oi | v
oi ] ]
tΓ
oi ⊢
oi l : e →→ [ tdoi | [ (l, fun x ⇒ x); d
oi | v
oi ] ]
Figure 3.5 – Sémantique sur-instrumentée
803.4. SÉMANTIQUE SUR-INSTRUMENTÉE
oim-constr-0
[ tdoi | [ d
oi | C ] ], C ⊢
oi
p {}
oim-constr-1
[ tdoi | [ d
oi | D(u
oi) ] ], D(x) ⊢
oi
p {(x, [ ∅ | u
oi ])}
oim-couple
( [ tdoi
1
| [ d
oi
1
| u
oi
1
] ], [ tdoi
2
| [ d
oi
2
| u
oi
2
] ]),(x1, x2) ⊢
oi
p {(x1, [ ∅ | u
oi
1
]); (x2, [ ∅ | u
oi
2
])}
oim-constr-0-not
p ̸= C
[ tdoi | [ d
oi | C ] ], p ⊢
oi
p ⊥
oim-constr-1-not
p ̸= D′
(_)
[ tdoi | [ d
oi | D(u
oi) ] ], p ⊢
oi
p ⊥
oim-couple-not
p ̸= (_, _)
( [ tdoi
1
| [ d
oi
1
| u
oi
1
] ], [ tdoi
2
| [ d
oi
2
| u
oi
2
] ]), p ⊢
oi
p ⊥
Figure 3.6 – Sémantique sur-instrumentée : règles de filtrage
↑
oi
toi( [ tdoi | u
oi ]) = u
oi
↑
oi
toi({}) = {} ↑oi
toi((x, tuoi) ⊕ tΓ
oi) = (x, ↑
oi
toi(tuoi)) ⊕ ↑oi
toi(tΓ
oi)
Figure 3.7 – Valeurs sur-instrumentées : suppression des t-dépendances
identificateur.
oi-abstr Dans la t-valeur sur-instrumentée d’une abstraction, l’ensemble des t-dépendances
est vide puisque l’évaluation d’une abstraction termine toujours (on ne considère que
des injections pour lesquelles l’environnement est instanciable). Pour la même raison, les
ensembles de t-dépendances présentes dans l’environnement sont ignorées. On les supprime
à l’aide de la fonction ↑
oi
toi(•) définie en figure 3.7. L’ensemble des v-dépendances est vide
lui-aussi car l’évaluation d’une abstraction retourne toujours une fermeture contenant le
même corps de fonction, seul l’environnement encapsulé peut différer d’une injection à
l’autre. L’impact d’une injection sur l’environnement encapsulé dans la fermeture est déjà
encodé à l’aide des v-dépendances des v-valeurs sur-instrumentées de l’environnement.
Attention, le fait qu’aucune dépendance n’est introduite par la règle d’évaluation de
l’abstraction ne signifie pas qu’une fermeture ne contient jamais de dépendances. D’une
part, des dépendances peuvent être ajoutées à la fermeture lorsqu’elle est le résultat de
l’évaluation d’une expression conditionnelle par exemple (cf. règle oi-if-true). D’autre
813.4. SÉMANTIQUE SUR-INSTRUMENTÉE
↑
toi
oi (u
oi) = [ ∅ | u
oi ]
↑
toi
oi ({}) = {} ↑toi
oi ((x, uoi) ⊕ Γ
oi) = (x, ↑
toi
oi (u
oi)) ⊕ ↑toi
oi (Γoi)
Figure 3.8 – Valeurs sur-instrumentées : ajout de t-dépendances
part, il y a des v-dépendances présentes dans l’environnement encapsulé dans la fermeture.
Celles-ci seront prises en compte lors de l’application de la fonction. Il est également
intéressant de noter que le corps de la fonction peut contenir des points d’injection qui
généreront probablement des dépendances lors de l’application de la fonction.
oi-abstr-rec L’évaluation d’une abstraction récursive suit exactement le même modèle
que l’évaluation d’une abstraction non-récursive.
oi-apply La règle de l’application suit le schéma habituel de l’évaluation d’une application
dans la sémantique opérationnelle. Elle évalue e1 et impose que sa valeur soit
une fermeture, puis elle évalue e2 avant d’évaluer le corps de la fermeture dans son environnement
en ajoutant à l’environnement une liaison pour la valeur de l’argument. Pour
évaluer le corps de la fermeture, on doit transformer le v-environnement encapsulé en un
t-environnement. On utilise alors la fonction ↑
toi
oi (•) (définie en figure 3.8) qui ajoute des tdépendances
vides. Cette approche est valide puisque les t-dépendances des identificateurs
utilisés ont déjà été pris en compte.
A ce schéma habituel vient s’ajouter le calcul des dépendances qui nécessite une spé-
cification complexe. Compte tenu de la complexité de cette spécification, des explications
détaillées sont données dans la section 3.4.1.1.
oi-rec-apply La règle de l’application d’une fonction récursive est similaire à la règle
de l’application d’une fonction non-récursive. Elle suit le schéma d’évaluation habituel en
y greffant une spécification complexe des dépendances. Une explication détaillée de cette
règle d’inférence est donnée en section 3.4.1.1.
823.4. SÉMANTIQUE SUR-INSTRUMENTÉE
oi-letin L’évaluation d’une liaison (let in) se fait de la même manière que pour la
sémantique opérationnelle. On commence par évaluer la sous-expression e1 pour obtenir sa
valeur, puis on évalue la sous-expression e2 en ajoutant à l’environnement une liaison pour
la valeur de e1. La t-valeur sur-instrumentée de l’expression évaluée est alors constituée
d’un ensemble de t-dépendances et de la v-valeur sur-instrumentée de e2. L’ensemble des
t-dépendances est la concaténation des t-dépendances des deux sous-expressions car si une
des deux n’a pas de valeur, alors l’expression globale n’a pas de valeur non plus.
oi-if-true et oi-if-false Pour l’évaluation d’une expression conditionnelle, on évalue
tout d’abord la condition puis l’une des deux branches en fonction de la valeur (de référence)
de la condition. On retrouve alors dans le résultat les t-dépendances de chacune des deux
sous-expressions évaluées. On ajoute au résultat un ensemble de t-dépendance td′oi et un
ensemble de v-dépendance d
′oi qui permettent de spécifier le comportement du programme
pour les injections ayant un t-impact ou un v-impact sur l’évaluation de la condition.
En effet, si un label a un impact sur l’évaluation de la condition, alors l’évaluation de
l’expression conditionnelle ne passe pas forcément par la même branche. Pour de plus
amples détails sur cette règle d’inférence, se référer à la section 3.4.1.1.
oi-match et oi-match-var Dans la règle d’évaluation d’un filtrage par motif, on
retrouve le même principe que dans la règle d’évaluation d’une expression conditionnelle.
Une prémisse supplémentaire permet de déterminer la branche évaluée à l’aide d’un pré-
dicat de filtrage prenant en paramètre la valeur (de référence) de l’expression filtrée et le
motif de filtrage. On retrouve également les ensembles de dépendance td′oi et d
′oi permettant
de spécifier le comportement du programme pour les injections ayant un impact sur
l’évaluation de l’expression filtrée. De plus amples explications sur cette règle d’inférence
sont données dans la section 3.4.1.1.
oi-constr-0 L’évaluation d’un constructeur sans paramètre suit la même logique que
l’évalution d’une constante numérique. Aucune t-dépendance, ni aucune v-dépendance n’est
introduite.
833.4. SÉMANTIQUE SUR-INSTRUMENTÉE
oi-constr-1 Pour l’évaluation d’un constructeur paramétré, on évalue la sous-expression
en paramètre puis on applique le constructeur de donnée à sa v-valeur sur-instrumentée.
L’ensemble des t-dépendances est exactement le même que pour la sous-expression, puisque
l’évaluation d’une telle expression termine sur une valeur si et seulement si l’évaluation de
la sous-expression termine sur une valeur. En ce qui concerne l’ensemble des v-dépendances,
il est vide puisqu’aucune injection ne peut modifier le constructeur de tête de la valeur de
l’expression. L’impact des injections sur les sous-termes de la valeur est déjà encodé dans
la v-valeur sur-instrumentée de la sous-expression.
oi-couple Pour l’évaluation d’un couple, on évalue les sous-expressions pour obtenir les
deux sous-termes de la valeur sur-instrumentée finale que l’on réunit à l’aide du constructeur
de couple. On concatène les t-dépendances des deux sous-expressions pour obtenir les
t-dépendances de la t-valeur sur-instrumentée finale, puisque l’évaluation du couple termine
sur une valeur si et seulement si l’évaluation des deux sous-expressions termine. L’ensemble
des v-dépendances est vide pour la même raison que pour l’évaluation d’un constructeur
paramétré : les v-dépendances correspondant à un impact sur un sous-terme de la valeur
sont déjà présents dans les sous-termes de la valeur simple sur-instrumentée.
oi-annot Une expression annotée a les mêmes dépendances que sa sous-expression auxquelles
on ajoute le label de l’annotation que l’on associe à la fonction identité. Cette fonction
indique que si on injecte une valeur sur un label lors de l’évaluation d’une expression
annotée par ce même label, alors la valeur de l’expression annotée est directement la valeur
injectée.
C’est la seule règle qui permet d’introduire de nouvelles dépendances. Au moment de
son introduction, une dépendance est toujours associée à la fonction identité. On peut
remarquer également que l’on introduit uniquement des v-dépendances et qu’aucune règle
ne permet d’introduire des t-dépendances sans que celles-ci ne soient déjà présentes dans les
t-dépendances ou dans les v-dépendances d’une des prémisses. Ce sont les règles manipulant
des dépendances indirectes (cf. section 3.4.1.1) qui permettent d’associer aux labels des
fonctions autres que l’identité et ce sont elles également qui introduisent des t-dépendances
843.4. SÉMANTIQUE SUR-INSTRUMENTÉE
à partir de v-dépendances des prémisses.
Règles de filtrage Les règles de filtrage sont divisées en deux groupes de trois règles.
Le premier regroupe les règles positives (une règle pour chaque forme de motif). Elles
définissent un jugement de la forme tuoi, p ⊢
oi
p Γ
oi. Ce jugement indique que la t-valeur surinstrumentée
tuoi correspond bien au motif de filtrage p et retourne un v-environnement
sur-instrumentée Γ
oi contenant les liaisons des identificateurs du motif avec les sous-termes
de tuoi correspondants. Le second groupe réunit les règles négatives (une règle pour chaque
forme de motif). Ces règles définissent un jugement de la forme tuoi, p ⊢
oi
p ⊥. Ce jugement
signifie que la t-valeur sur-instrumentée tuoi ne correspond pas au motif de filtrage p.
3.4.1.1 Explication des règles avec dépendances indirectes
Dans la majorité des règles d’inférence, le calcul des t-dépendances (resp. des v-dépendances)
se fait par simple concaténation des t-dépendances (resp. des v-dépendances) pré-
sentes dans les prémisses. Les règles de l’évaluation de l’application, de l’expression conditionnelle
et du filtrage par motif nécessitent, quant à elles, une spécification plus complexe
des dépendances. Il n’est pas possible dans ces cas-là d’obtenir les dépendances du résultat
par simple concaténation des dépendances des prémisses, ni par aucun autre procédé calculatoire.
On utilise dans alors des fonctions de spécification des dépendances indirectes.
Nous allons tout d’abord présenter en détail les règles d’inférence concernées, en expliquant
de quelle manière les fonctions de spécification des dépendances indirectes sont utilisées.
Ensuite nous reviendrons sur ces fonctions de spécification (cf. section 3.4.1.2) en leur
donnant une définition formelle.
oi-apply
Rappellons tout d’abord la règle d’inférence que nous allons expliquer :
853.4. SÉMANTIQUE SUR-INSTRUMENTÉE
oi-apply
tΓ
oi ⊢
oi e1 →→ [ tdoi
1
| [ d
oi
1
| < λx.e, Γ
oi
1 > ] ]
tΓ
oi ⊢
oi e2 →→ tuoi
2
tuoi
2 = [ tdoi
2
| u
oi
2
]
(x, tuoi
2
)⊕ ↑toi
oi (Γoi
1
) ⊢
oi e →→ [ tdoi | [ d
oi | v
oi ] ]
deps_spec_apply(tuoi
2
, doi
1
) = (td′oi, d′oi)
tΓ
oi ⊢
oi e1 e2 →→ [ tdoi
1 ∪ tdoi
2 ∪ tdoi ∪ td′oi | [ d
′oi ∪ d
oi | v
oi ] ]
La première prémisse correspond à l’évaluation de la sous-expression e1. Celle-ci doit
obligatoirement avoir pour résultat une fermeture (notée < λx.e, Γ
oi
1 >) pour que la règle
de l’application non récursive s’applique. À cette fermeture sont associés un ensemble de
t-dépendances (noté tdoi
1
) et un ensemble de v-dépendances (noté d
oi
1
).
La deuxième prémisse est l’évaluation de la sous-expression e2 qui retourne une t-valeur
sur-instrumentée (notée tuoi
2
) composée d’un ensemble de t-dépendances tdoi
2
et d’une vvaleur
sur-instrumentée u
oi
2
.
La troisième prémisse évalue le corps de la fermeture dans l’environnement de la fermeture,
en y ajoutant la liaison de la valeur du paramètre. Les composantes de la t-valeur
sur-instrumentée résultant de cette évaluation sont notées tdoi
, d
oi et v
oi. On notera que
pour évaluer le corps de la fermeture, on ajoute des t-dépendances vides à l’environnement
(fonction ↑
toi
oi ()). Cette pratique est justifiée par le fait que les t-dépendances sont toujours
regroupées en tête de la t-valeur sur-instrumentée. Les t-dépendances de l’évaluation de
e1 sont donc toutes présentes dans l’ensemble tdoi
1
qui fait partie des t-dépendances du
résultat final.
Jusque là, nous avons suivi la manière habituelle d’évaluer une application de fonction
dans un langage fonctionnel. En ce qui concerne la dernière prémisse, elle est propre à la
sémantique sur-instrumentée car elle ne participe pas à l’élaboration de la valeur simple
sur-instrumentée du résultat mais uniquement à ses dépendances. Plus précisément, elle
spécifie les dépendances indirectes td′oi et d
′oi qui vont apparaître dans les dépendances du
résultat final. Pour plus de détails concernant la spécification des dépendances indirectes,
se reporter à la section 3.4.1.2.
Intéressons-nous maintenant au résultat final : la t-valeur sur-instrumentée de l’appli-
863.4. SÉMANTIQUE SUR-INSTRUMENTÉE
cation de e1 à e2. Celle-ci est composée d’un ensemble de t-dépendances, d’un ensemble de
v-dépendances et d’une valeur simple sur-instrumentée.
L’ensemble de ses t-dépendances est la concaténation des quatres ensembles de tdépendances
suivants, obtenus dans les prémisses :
– tdoi
1
et tdoi
2
car si l’évaluation de e1 ou celle de e2 ne termine pas, alors l’évaluation
de l’application ne termine pas non plus,
– tdoi car si l’évaluation du corps de la fonction ne termine pas, alors l’évaluation de
l’application ne termine pas non plus,
– et td′oi qui spécifie les cas de non-terminaison de l’application pour les labels dont
dépend la valeur de l’expression e1.
Notons que le fait d’ajouter l’ensemble tdoi en entier constitue une sur-approximation
car il est inutile de considérer la non-terminaison de l’évaluation du corps de la fermeture
de la valeur de référence de e1 lorsque le label de l’injection considérée a un impact sur la
valeur de e1. En effet, dans un tel cas, la fonction appliquée n’est pas celle de la valeur de ré-
férence mais celle spécifiée par d
oi
1
. Il est donc possible que la sémantique sur-instrumentée
indique qu’une certaine injection provoque une non-terminaison de l’évaluation de l’application
en ce basant sur le fait que cette injection provoque une non-terminaison de
l’évaluation du corps de la fonction de référence alors que le label en question apparaît
dans d
oi
1
et que l’évaluation de la fonction correspondante termine. Pour que la sémantique
sur-instrumentée soit exacte, il ne faudrait ajouter que les labels de tdoi n’apparaissant
pas dans d
oi
1
. C’est une amélioration qu’il serait souhaitable d’envisager puisque la sémantique
sur-instrumentée a pour objectif de spécifier de façon exacte le comportement du
programme pour toute injection sans faire d’approximation. La même remarque pourrait
être faite concernant les v-dépendances. On pourrait n’ajouter que les labels de d
oi n’apparaissant
pas dans d
oi
1
. Cependant, la sémantique sur-instrumentée ne serait en rien affectée
puisque dans les v-dépendances sur-instrumentées, seule la première occurence d’un label
est prise en compte (cf. définition de la fonction d’instanciation aifl:vl
(•)). Ces améliorations
n’auraient cependant aucune influence concernant la précision de l’analyse dynamique
ou de l’analyse statique car les ensembles de labels resteraient identiques.
873.4. SÉMANTIQUE SUR-INSTRUMENTÉE
En ce qui concerne l’ensemble des v-dépendances du résultat final, il est constitué de
la concaténation des deux ensembles de v-dépendances suivants :
– d
′oi qui spécifie la valeur de l’application pour une injection sur un label dont dépend
la valeur de l’expression e1,
– et d
oi car si un label n’est pas dans d
′oi (i.e. n’est pas dans d
oi
1
) alors la valeur de
l’application pour une injection sur ce label est celle de l’évaluation du corps de la
fermeture < λx.e, Γ
oi
1 >.
La valeur simple sur-instrumentée du résultat final est la valeur simple sur-instrumentée
v
oi issue de l’évaluation du corps de la fermeture. En effet, c’est elle qui détermine la valeur
de l’application dans le cas d’une injection sur un label n’ayant pas d’impact sur la valeur
de e1 et n’apparaissant pas dans d
oi
.
oi-rec-apply
oi-rec-apply
tΓ
oi ⊢
oi e1 →→ tuoi
1
tuoi
1 = [ tdoi
1
| [ d
oi
1
| < recf.x.e, Γ
oi
1 > ] ]
tΓ
oi ⊢
oi e2 →→ tuoi
2
tuoi
2 = [ tdoi
2
| u
oi
2
]
(f, tuoi
1
) ⊕ (x, tuoi
2
)⊕ ↑toi
oi (Γoi
1
) ⊢
oi e →→ [ tdoi | [ d
oi | v
oi ] ]
deps_spec_apply(tuoi
2
, doi
1
) = (td′oi, d′oi)
tΓ
oi ⊢
oi e1 e2 →→ [ tdoi
1 ∪ tdoi
2 ∪ tdoi ∪ td′oi | [ d
′oi ∪ d
oi | v
oi ] ]
La règle de l’application récursive suit le même schéma que la règle de l’application.
Les deux premières prémisses correspondent à l’évaluation de e1. Elles donnent des noms
aux différentes composantes de sa t-valeur sur-instrumentée et imposent que sa valeur de
référence soit une fermeture récursive.
Les deux prémisses suivantes décrivent l’évaluation de e2 et donnent des noms aux
différentes composantes de sa t-valeur sur-instrumentée.
La prémisse suivante est un jugement d’évaluation pour le corps de la fermeture de
référence. Lors de cette évaluation, on ajoute dans l’environnement une liaison pour la
fonction récursive et une seconde liaison pour l’argument de la fonction.
On retrouve dans la dernière prémisse la fonction de spécification des dépendances
indirectes deps_spec_apply utilisée de la même manière que dans la règle de l’application.
Elle permet de spécifier les t-dépendances ainsi que les v-dépendances de l’application dans
883.4. SÉMANTIQUE SUR-INSTRUMENTÉE
le cas où la fonction appliquée n’est pas la valeur de référence de e1, c’est-à-dire dans le
cas où le label concerné a un impact sur la valeur de e1. On peut remarquer que le c’est la
même fonction de spécification qui est utilisée dans la règle de l’application et dans celle
de l’application récursive. Ceci s’explique par le fait que la valeur de l’application dans le
cas d’une injection sur un label ayant un impact sur la valeur de e1 ne dépend pas de la
valeur de référence de e1. De plus, une injection peut conduire à une fermeture récursive
pour e1 alors que sa valeur de référence était une fermeture non-récursive ou inversement.
Enfin, la t-valeur sur-instrumentée de l’application de e1 à e2 se construit de la même
manière que dans le cas de l’application non-récursive. Les t-dépendances sont la concaté-
nation des t-dépendances de e1, des t-dépendances de e2, de celles de l’évaluation du corps
de la fermeture de référence et des t-dépendances indirectes. De même pour la v-valeur
sur-instrumentée, il s’agit de la v-valeur sur-instrumentée issue de l’évaluation du corps de
la fermeture de référence à laquelle on a ajouté les v-dépendances indirectes spécifiées par
la dernière prémisse.
oi-if-true
oi-if-true
tΓ
oi ⊢
oi e →→ [ tdoi | [ d
oi | true ] ]
tΓ
oi ⊢
oi e1 →→ [ tdoi
1
| [ d
oi
1
| v
oi
1
] ] deps_spec_if(tΓ
oi, e1, e2, doi) = (td′oi, d′oi)
tΓ
oi ⊢
oi if e then e1 else e2 →→ [ td′oi ∪ tdoi ∪ tdoi
1
| [ d
′oi ∪ d
oi
1
| v
oi
1
] ]
Expliquons maintenant la règle d’inférence de l’évaluation sur-instrumentée d’une expression
conditionnelle. Nous expliquons tout d’abord la règle oi-if-true qui correspond
au cas où la valeur de référence de la condition est true. Nous verrons ensuite la règle
oi-if-false qui donne la t-valeur sur-instrumentée de l’expression conditionnelle dans le
cas où la valeur de référence est f alse. On peut remarquer qu’on ne donne pas de t-valeur
sur-instrumentée aux expresssions conditionnelles dont la valeur de référence de la condition
n’est ni true ni f alse. En effet, notre analyse dynamique ne permet d’analyser que
des programmes qui terminent sur une valeur lorsqu’on les évalue sans injection.
La première prémisse est un jugement d’évaluation pour la condition e. Elle impose que
sa valeur de référence soit true pour que cette règle puisse s’appliquer. Les t-dépendances
de la condition sont notées tdoi et ses v-dépendances sont notées d
oi
893.4. SÉMANTIQUE SUR-INSTRUMENTÉE
Puisque la valeur de référence de la condition est true, on doit évaluer la première
branche e1 par la sémantique sur-instrumentée pour obtenir sa valeur de référence et ses
dépendances. En effet, la valeur de référence de e1 est également la valeur de référence
du résultat. Les v-dépendances de e1 permettent de spécifier la valeur de l’expression
conditionnelle pour toute injection sur un label qui n’a pas d’impact sur la valeur de
la condition, puisque dans tous ces cas, on passe dans la première branche.
Dans le cas d’une injection sur un label ayant un impact sur la valeur de la condition (ie.
un label présent dans d
oi), c’est la dernière prémisse qui fournit les dépendances correspondantes
à l’aide de la fonction de spécification des dépendances indirectes deps_spec_if.
L’idée est que l’injection a pu modifier la valeur de la condition et donc qu’on ne passe
plus forcément par la première branche.
Le résultat de l’évaluation de l’expression conditionnelle est une t-valeur sur-instrumentée.
Celle-ci est constituée de t-dépendances obtenues par l’union des t-dépendances indirectes
et des t-dépendances directes (les t-dépendances des deux sous-expressions évaluées e et e1
et d’une v-valeur sur-instrumentée construite en ajoutant les v-dépendances indirectes à la
v-valeur sur-instrumentée de e1.
L’ordre des t-dépendances n’a pas d’importance puisque si l’une des sous-expressions
évaluées n’a pas de valeur, alors l’expression complète n’a pas non plus de valeur. Par
exemple, un label peut apparaître à la fois dans tdoi et dans tdoi
1
, associé respectivement
à des t-fonctions d’impact tf oi et tf oi
1
. Pour une certaine injection vl
, on peut
avoir tf oi(vl) = true et tf oi
1
(vl) = f alse et pour une autre injection v
′
l
, on peut avoir
tf oi(vl) = f alse et tf oi
1
(vl) = true. Dans les deux cas, atifl:vl
(tdoi∪tdoi
1
) = true. Par contre,
l’ordre des v-dépendances est important car la fonction aifl:vl
(•) ne prend en compte que
la première occurence du label. Ainsi, dans notre cas, les v-dépendances indirectes d
′oi sont
placées avant les v-dépendances directes d
oi
1 puisque ces dernières n’ont de signification
que lorsqu’on est sûr que l’on passe par la première branche, c’est-à-dire dans le cas d’une
injection sur un label n’apparaîssant pas dans d
oi (donc dans d
′oi).
903.4. SÉMANTIQUE SUR-INSTRUMENTÉE
oi-if-false
oi-if-false
tΓ
oi ⊢
oi e →→ [ tdoi | [ d
oi | f alse ] ]
tΓ
oi ⊢
oi e2 →→ [ tdoi
2
| [ d
oi
2
| v
oi
2
] ] deps_spec_if(tΓ
oi, e1, e2, doi) = (td′oi, d′oi)
tΓ
oi ⊢
oi if e then e1 else e2 →→ [ td′oi ∪ tdoi ∪ tdoi
2
| [ d
′oi ∪ d
oi
2
| v
oi
2
] ]
Cette règle est pratiquement identique à la précédente. La seule différence est que la
valeur de référence de la condition e est f alse. C’est donc la sous-expression correspondant
à la seconde branche qui est évaluée pour obtenir la valeur de référence de l’expression
conditionnelle ainsi que les dépendances directes. Les dépendances indirectes sont quant
à elles obtenues de la même manière que dans la règle précédente. On utilise pour cela la
fonction de spécification deps_spec_if qui est appelée avec les mêmes arguments puisque
les dépendances indirectes ne dépendent pas de la valeur de référence.
oi-match
oi-match
tΓ
oi ⊢
oi e →→ tuoi tuoi = [ tdoi | [ d
oi | v
oi ] ]
tuoi, p ⊢
oi
p
tΓ
oi
p
tΓ
oi
p ⊕ tΓ
oi ⊢
oi e1 →→ [ tdoi
1
| [ d
oi
1
| v
oi
1
] ]
deps_spec_match(tΓ
oi, p, x, e1, e2, doi) = (td′oi, d′oi)
tΓ
oi ⊢
oi match e with p → e1 | x → e2 →→ [ td′oi ∪ tdoi ∪ tdoi
1
| [ d
′oi ∪ d
oi
1
| v
oi
1
] ]
L’évaluation des expressions de filtrage se définit également à l’aide de deux règles d’inférence.
Nous allons expliquer la règle correspondant à une évaluation de référence passant
dans la première branche. Nous verrons ensuite la règle correspondant à une évaluation de
référence passant dans la seconde branche.
La première prémisse est un jugement d’évaluation sur-instrumentée pour la sousexpression
filtrée e. La t-valeur sur-instrumentée de la sous-expression e est notée tuoi
.
La deuxième prémisse permet de nommer les différentes composantes de tuoi. Les tdépendances
sont notées tdoi, les v-dépendances d
oi et la valeur simple sur-instrumentée
est notée v
oi
.
La troisième prémisse indique que la t-valeur sur-instrumentée de la sous-expression
filtrée correspond au motif de filtrage p (cf. figure 3.6). Cette correspondance produit un
environnement de liaison tΓ
oi
p qui associe à chaque identificateur présent dans le motif p
913.4. SÉMANTIQUE SUR-INSTRUMENTÉE
une t-valeur sur-instrumentée issue du sous-terme correspondant dans tuoi. Ce jugement
garantit que la valeur de référence extraite de tuoi correspond elle aussi au motif de filtrage
p.
La quatrième prémisse correspond à l’évaluation sur-instrumentée de la première branche
du filtrage. On évalue cette branche-ci puisque l’évaluation de référence passe dans cette
branche. Les composantes de la t-valeur sur-instrumentée de e1 sont notées tdoi
1
, d
oi
1
et v
oi
1
.
La dernière prémisse est la spécification des dépendances indirectes du filtrage. Elle
utilise la fonction de spécification deps_spec_match pour spécifier les t-dépendances indirectes
td′oi et les v-dépendances indirectes d
′oi. Ces dépendances indirectes décrivent le
comportement de l’évaluation de l’expression lorsque l’injection considérée est faite sur un
label ayant un impact sur la valeur de la sous-expression filtrée. En effet, une modification
de la valeur de la sous-expression filtrée provoquée par une injection peut entraîner un
changement de branche.
Enfin, le résultat de l’évaluation sur-instrumentée de l’expression de filtrage est la tvaleur
sur-instrumentée correspondant à l’évaluation de la branche de référence à laquelle on
a ajouté des dépendances. Les t-dépendances ajoutées sont les t-dépendances indirectes et
les t-dépendances de la sous-expression filtrée. Les v-dépendances ajoutées sont uniquement
les v-dépendances indirectes.
oi-match-var
oi-match-var
tΓ
oi ⊢
oi e →→ tuoi tuoi = [ tdoi | [ d
oi | v
oi ] ]
tuoi, p ⊢
oi
p ⊥
(x, tuoi) ⊕ tΓ
oi ⊢
oi e2 →→ [ tdoi
2
| [ d
oi
2
| v
oi
2
] ]
deps_spec_match(tΓ
oi, p, x, e1, e2, doi) = (td′oi, d′oi)
tΓ
oi ⊢
oi match e with p → e1 | x → e2 →→ [ td′oi ∪ tdoi ∪ tdoi
2
| [ d
′oi ∪ d
oi
2
| v
oi
2
] ]
Cette règle ressemble fortement à la règle correspondant à un passage dans la première
branche pour l’évaluation de référence. Nous allons souligner uniquement les différences
entre ces deux règles d’inférence.
La troisième prémisse nous indique que cette règle n’est appliquée que lorsque la tvaleur
sur-instrumentée de la sous-expression filtrée ne correspond pas au motif de filtrage.
923.4. SÉMANTIQUE SUR-INSTRUMENTÉE
La correspondance (ou non-correspondance) d’une t-valeur sur-instrumentée à un motif
est équivalente à la correspondance (resp. non-correspondance) de la valeur de référence
à ce motif. C’est pourquoi cette règle correspond à l’évaluation sur-instrumentée d’un
programme dont l’évaluation de référence passe par la seconde branche.
La quatrième prémisse évalue la seconde branche au lieu de la première puisque c’est
la seconde branche qui est évaluée lors de l’évaluation de référence.
La spécification des dépendances indirectes est identique à la règle précédente.
Enfin, le résultat est construit de la même manière, en ajoutant les t-dépendances
indirectes, les t-dépendances de la sous-expression filtrée et les v-dépendances indirectes à la
t-valeur sur-instrumentée résultat de l’évaluation de la branche empruntée par l’évaluation
de référence.
3.4.1.2 Spécification des dépendances indirectes
Dans les règles d’inférence les plus simples, les t-dépendances (resp. les v-dépendances)
du résultat sont des dépendances directes, c’est-à-dire qu’elles sont la concaténation des
t-dépendances (des v-dépendances) apparaissant dans les prémisses. C’est le cas des règles
suivantes : oi-num, oi-ident, oi-abstr, oi-abstr-rec, oi-letin, oi-constr-0, oiconstr-1,
et oi-couple.
La règle oi-annot, quant à elle, introduit une v-dépendance supplémentaire. La vfonction
d’impact associée à cette dépendance est toujours l’identité. C’est cette introduction
de dépendance qui correspond à la sémantique de l’injection, telle que définie
dans la sémantique opérationnelle avec injection et dans la sémantique avec injection
dans un t-environnement sur-instrumenté. Le théorème de correction de la sémantique
sur-instrumentée nous fournira une justification formelle de cette correspondance.
En ce qui concerne les autres règles (oi-apply, oi-rec-apply, oi-if-true, oi-iffalse,
oi-match, oi-match-var), on introduit une fonction de spécification des dépendances
indirectes. Ces fonctions permettent de spécifier une partie des dépendances du
résultat en fonction des dépendances des prémisses.
933.4. SÉMANTIQUE SUR-INSTRUMENTÉE
Dépendances indirectes dans les règles de l’application
deps_spec_apply(tuoi
2
, doi
1
) = (td′oi, d′oi)
La fonction deps_spec_apply est utilisée dans les règles de l’application et de l’application
récursive. Lorsqu’un label apparaît dans les v-dépendances de e1, toute injection sur
ce label est susceptible de modifier la valeur de la fonction appliquée. La valeur de retour de
l’application est donc également susceptible d’être modifiée, c’est pourquoi le label en question
doit apparaître dans les v-dépendances du résultat. En ce qui concerne la v-fonction
d’impact associée à un tel label, elle va dépendre de la fonction effectivement appliquée
(valeur de e1 pour cette injection) ainsi que du paramètre effectivement passé à la fonction
(valeur de e2 pour cette injection). Il se peut également que la fonction effectivement
appliquée ne termine pas, le label en question doit donc apparaître dans les t-dépendances
du résultat et la t-fonction d’impact associée doit permettre de déterminer pour chaque
injection sur ce label si l’application de la fonction va effectivement terminer ou non. C’est
le rôle de la fonction deps_spec_apply de spécifier ces dépendances indirectes.
Elle prend en argument la t-valeur sur-instrumentée de e2 (notée tuoi
2
) ainsi que l’ensemble
des v-dépendances de e1 (noté d
oi
1
). Elle retourne les t-dépendances ainsi que les
v-dépendances qu’il faut ajouter au résultat pour prendre en compte ces dépendances indirectes.
Il est nécessaire de préciser que cette fonction n’est pas calculable, ce qui rend la
sémantique sur-instrumentée elle-même non-calculable.
Pour spécifier td′oi et d
′oi, on commence par définir leur liste de labels comme étant
exactement la même que celle de d
oi
1
(les v-dépendances de e1). Ensuite, il faut associer à
chaque label de cette liste une t-fonction d’impact ou une v-fonction d’impact. La t-fonction
d’impact (notée tf′
) dans td′oi et la v-fonction d’impact (notée f
′
) dans d
′oi associées à un
certain label sont spécifiées à l’aide de la fonction deps_spec_apply_fun en fonction de la
v-fonction d’impact correspondante dans d
oi
1
et d’autres paramètres explicités ci-dessous.
deps_spec_apply_fun(tuoi
2
, l, f1) = (tf′
, f′
)
On donne en paramètre de cette fonction la t-valeur sur-instrumentée de e2 (notée
943.4. SÉMANTIQUE SUR-INSTRUMENTÉE
tuoi
2
), un label présent dans d
oi
1
(noté l) et la v-fonction d’impact associée à ce label dans
d
oi
1
(notée f1). Pour toute valeur vl
, on va spécifier les valeurs de retour de tf′
et de f
′
en
fonction de tuoi
2
(la t-valeur sur-instrumentée de e2) et de la valeur f1(vl).
On distingue trois cas possibles :
• f1(vl) est une fermeture < λx.e, Γ >
Dans ce cas, les valeurs de retour de la t-fonction d’impact tf′
et de la v-fonction
d’impact f
′
sont spécifiées par la formule suivante :
∀(v2, v′
). ↓
l:vl(tuoi
2
) = v2 ∧ (x, ↑
toi(v2))⊕ ↑toi(Γ) ⊢l:vl
e →→ v
′
⇒ tf′
(vl) = f alse ∧ f
′
(vl) = v
′
∧
̸ ∃(v2, v′
). ↓
l:vl(tuoi
2
) = v2 ∧ (x, ↑
toi(v2))⊕ ↑toi(Γ) ⊢l:vl
e →→ v
′
⇒ tf′
(vl) = true ∧ f
′
(vl) = vdummy
Cette formule signifie que si e2 a une valeur v2 pour cette injection (l’instanciation
de tuoi
2 pour l’injection considérée retourne une valeur v2) et que l’application de la
fermeture à cet argument termine sur une valeur v
′
, alors l’évaluation de l’application
de e1 à e2 termine (tf′
(vl) = f alse) sur la valeur v
′
(f
′
(vl) = v
′
).
Dans le cas contraire (si tuoi
2 n’est pas instanciable ou si l’application de la fermeture
ne termine pas) alors tf′
(vl) = true, ce qui signifie que l’évaluation de l’expression
e1 e2 ne termine pas pour l’injection (l, vl), et f
′
(vl) = vdummy, ce qui signifie que la
valeur de f
′
(vl) n’a aucune importance puisque tf′
(vl) = true.
Remarque : une autre solution serait de définir les v-fonctions d’impact comme des
fonctions partielles et de spécifier ici que f
′ n’a pas de valeur pour l’argument vl
,
cependant il n’est pas évident que cette solution soit préférable. C’est une piste qui
reste à explorer.
• f1(vl) est une fermeture récursive < recf.x.e, Γ >
953.4. SÉMANTIQUE SUR-INSTRUMENTÉE
Dans ce cas, les valeurs de retour de la t-fonction d’impact tf′
et de la v-fonction
d’impact f
′
sont spécifiées par la formule suivante :
∀(v2, v′
). ↓
l:vl(tuoi
2
) = v2
∧ (f, ↑
toi(< recf.x.e, Γ >)) ⊕ (x, ↑
toi(v2))⊕ ↑toi(Γ) ⊢l:vl
e →→ v
′
⇒ tf′
(vl) = f alse ∧ f
′
(vl) = v
′
∧
̸ ∃(v2, v′
). ↓
l:vl(tuoi
2
) = v2
∧ (f, ↑
toi(< recf.x.e, Γ >)) ⊕ (x, ↑
toi(v2))⊕ ↑toi(Γ) ⊢l:vl
e →→ v
′
⇒ tf′
(vl) = true ∧ f
′
(vl) = vdummy
Le principe est le même que dans le cas précédent sauf qu’on applique une fermeture
récursive dans le cas présent. On peut remarquer que, comme d’habitude, dans le
jugement d’application de la fermeture, on ajoute deux liaisons à l’environnement :
une pour la fonction récursive et une pour l’argument.
• f1(vl) est autre chose
On a affaire à une erreur de type donc dans ce cas, la spécification est la suivante :
tf′
(vl) = true ∧ f
′
(vl) = vdummy.
Dépendances indirectes dans les règles de l’expression conditionnelle
deps_spec_if(tΓ
oi, e1, e2, doi) = (td′oi, d′oi)
La fonction deps_spec_if est utilisée dans les deux règles d’évaluation de l’expression
conditionnelle. Lorsqu’un label apparaît dans les v-dépendances de la condition e, toute
injection sur ce label est susceptible de modifier la valeur de la condition et donc la valeur
du résultat de l’évaluation de l’expression conditionnelle. Le label en question doit donc apparaître
dans les v-dépendances du résultat. La v-fonction d’impact associée à ce label est
alors spécifiée par deps_spec_if. Une injection sur un tel label peut également provoquer
963.4. SÉMANTIQUE SUR-INSTRUMENTÉE
la non-terminaison de l’évaluation de la condition e ou bien la terminaison sur une valeur
provoquant une erreur de type. C’est pourquoi le label doit également apparaître dans les
t-dépendances de la t-valeur sur-instrumentée de l’expression conditionnelle. Ces dépendances
indirectes (un impact sur l’évaluation de la condition e qui provoque soit un impact
sur la valeur de l’expression conditionnelle soit un impact sur la terminaison de l’évaluation
de l’expression conditionnelle) sont spécifiées à l’aide de la fonction deps_spec_if.
Cette fonction de spécification prend quatre arguments : le t-environnement sur-instrumenté
tΓ
oi dans lequel on évalue l’expression conditionnelle, la sous-expression e1 de la
première branche, à évaluer dans le cas où la condition est vraie, la sous-expression e2
de la seconde branche, à évaluer dans le cas où la condition est fausse et l’ensemble de
v-dépendances d
oi de l’expression testée. Le résultat de cette fonction est une spécification
caractérisant de façon unique les t-dépendances ainsi que les v-dépendances qu’il est nécessaire
d’ajouter à la t-valeur sur-instrumentée de l’expression conditionnelle pour prendre
en compte les dépendances indirectes.
La fonction de spécification deps_spec_if ainsi que ses deux homologues deps_spec_apply
et deps_spec_match donnent uniquement une caractérisation des ensembles de dépendance
td′oi et d
′oi sous forme de formule logique mais ne fournissent pas un procédé calculatoire
permettant de construire les fonctions d’impact inclues dans td′oi et d
′oi
.
Pour spécifier td′oi et d
′oi, on commence par définir leur liste de labels comme étant
exactement la même que celle de d
oi (les v-dépendances de l’expression testée). Ensuite,
il faut associer à chaque label de cette liste une t-fonction d’impact dans td′oi et une vfonction
d’impact dans d
′oi. La t-fonction d’impact (notée tf′
) et la v-fonction d’impact
(notée f
′
) associées à un certain label sont spécifiées en fonction de la v-fonction d’impact
(notée f) correspondant à ce label dans d
oi et d’autres paramètres explicités ci-dessous.
Nous notons alors deps_spec_if_fun la fonction qui permet de spécifier les t-fonctions
d’impact de td′oi et les v-fonctions d’impact de d
′oi
.
deps_spec_if_fun(tΓ
oi, e1, e2, l, f) = (tf′
, f′
)
On donne en paramètre de cette fonction le t-environnement sur-instrumenté (noté
973.4. SÉMANTIQUE SUR-INSTRUMENTÉE
tΓ
oi) dans lequel on évalue l’expression, les deux sous-expressions e1 et e2 correspondant
aux deux branches de l’expression conditionnelle, un label présent dans d
oi (noté l) et la
v-fonction d’impact associée à ce label dans d
oi (notée f). Pour toute valeur vl
, on va
spécifier les valeurs de retour de tf′
et de f
′
.
On distingue trois cas possibles :
• f(vl) vaut true
Dans ce cas, les valeurs de retour de la t-fonction d’impact tf′
et de la v-fonction
d’impact f
′
sont spécifiées par la formule suivante :
∀v1.tΓ
oi ⊢l:vl
e1 →→ v1
⇒ tf′
(vl) = f alse ∧ f
′
(vl) = v1
∧
̸ ∃v1.tΓ
oi ⊢l:vl
e1 →→ v1
⇒ tf′
(vl) = true ∧ f
′
(vl) = vdummy
Cette spécification fait la distinction entre deux cas : soit il existe une valeur v1
telle que l’évaluation de e1 pour l’injection considérée termine sur v1, et dans ce
cas l’évaluation de l’expression conditionnelle termine également pour cette même
injection (tf′
(vl) = f alse) et sa valeur est v1 (f
′
(vl) = v1), soit il n’existe pas de
jugement d’évaluation de e1 pour l’injection considérée, et dans ce cas l’évaluation
de l’expression conditionnelle ne termine pas non plus sur une valeur (tf′
(vl) = true
et f
′
(vl) = vdummy).
• f(vl) vaut f alse
Dans ce cas, les valeurs de retour de la t-fonction d’impact tf′
et de la v-fonction
d’impact f
′
sont spécifiées par la formule suivante :
983.4. SÉMANTIQUE SUR-INSTRUMENTÉE
∀v2.tΓ
oi ⊢l:vl
e2 →→ v2
⇒ tf′
(vl) = f alse ∧ f
′
(vl) = v2
∧
̸ ∃v2.tΓ
oi ⊢l:vl
e2 →→ v2
⇒ tf′
(vl) = true ∧ f
′
(vl) = vdummy
L’injection considérée entraîne le passage dans la seconde branche de l’expression
conditionnelle en donnant f alse pour valeur à la condition e. La spécification est
donc la même que la précédente, sauf que l’on évalue e2 au lieu de e1.
• f(vl) ne vaut ni true nif alse
On a affaire à une erreur de type donc dans ce cas, la spécification est la suivante :
tf′
(vl) = true ∧ f
′
(vl) = vdummy.
Dépendances indirectes dans les règles du filtrage par motif
deps_spec_match(tΓ
oi, p, x, e1, e2, doi) = (td′oi, d′oi)
La fonction deps_spec_match est utilisée dans les deux règles d’évaluation du filtrage
par motif. Lorsqu’un label apparaît dans les v-dépendances de l’expression filtrée e, toute
injection sur ce label est susceptible de modifier la branche choisie lors du filtrage et donc
la valeur du résultat. Ce label doit donc apparaître dans les v-dépendances de la t-valeur
sur-instrumentée résultant de l’évaluation du filtrage. Il doit également apparaître dans
ses t-dépendances puisqu’une injection sur ce label peut entraîner la non-terminaison de
l’évaluation de l’expression filtrée e ou bien provoquer une erreur de type. La fonction
deps_spec_match donne une spécification permettant de caractériser de façon unique ces
dépendances indirectes à ajouter aux t-dépendances et aux v-dépendances de la t-valeur
sur-instrumentée du filtrage.
Il est intéressant de remarquer que si l’injection considérée n’a d’impact que sur un
sous-terme de la valeur de l’expression filtrée, alors ces dépendances ne sont pas des dé-
pendances indirectes. Ces dépendances sont prises en compte dans le calcul de la t-valeur
993.4. SÉMANTIQUE SUR-INSTRUMENTÉE
sur-instrumentée de la branche de référence. En effet, une injection sur un tel label ne peut
pas avoir d’influence sur le choix de la branche et on évaluera donc la branche de référence.
Ceci est dû à notre sémantique du filtrage qui ne discrimine que sur le constructeur de tête
de la valeur filtrée. C’est une manière courante de définir le filtrage puisque tout filtrage à
une profondeur arbitraire peut être réécrit en une imbrication de filtrages successifs.
La fonction de spécification deps_spec_match prend quatre arguments : le t-environnement
sur-instrumenté tΓ
oi dans lequel on évalue l’expression de filtrage, le motif de
filtrage de la première branche ainsi que l’identificateur de liaison de la seconde branche,
la sous-expression e1 de la première branche, la sous-expression e2 de la seconde branche
et l’ensemble de v-dépendances d
oi de l’expression filtrée. Le résultat de cette fonction est
une spécification permettant de caractériser sans ambiguïté les t-dépendances ainsi que les
v-dépendances correspondant aux dépendances indirectes de l’expression de filtrage.
Formellement, on ne peut pas exprimer la fonction deps_spec_match (ni ses homologues
deps_spec_apply et deps_spec_if) sous forme d’une fonction calculable. On définit
cependant le graphe correspondant à cette fonction à l’aide d’un prédicat.
Comme pour les deux autres fonctions de spécification, on définit les listes de labels
de td′oi et d
′oi comme étant exactement les mêmes que celle de d
oi. Pour spécifier la tfonction
d’impact (notée tf′
) dans td′oi correspondant à un de ces labels, ou la v-fonction
d’impact (notée f
′
) dans d
′oi, on définit la fonction deps_spec_match_fun qui en donne
une spécification dépendant entre autre de la v-fonction d’impact (notée f) correspondant
à ce label dans d
oi
.
deps_spec_match_fun(tΓ
oi, p, x, e1, e2, l, f) = (tf′
, f′
)
Les paramètres de cette fonction sont : le t-environnement sur-instrumenté tΓ
oi dans
lequel on évalue l’expression, le motif p correspondant à la première branche, l’identificateur
x permettant de lier la valeur filtrée dans la seconde branche, des deux sous-expressions e1
et e2 correspondant aux corps des branches, d’un label l présent dans d
oi et de la v-fonction
d’impact f correspondant à ce label dans d
oi. Pour toute valeur vl
, on va alors spécifier les
valeurs de retour de tf′
et de f
′
.
1003.4. SÉMANTIQUE SUR-INSTRUMENTÉE
On distingue trois cas possibles :
• f(vl) correspond au motif de filtrage p (on a f(vl), p ⊢p Γp)
Dans ce cas, les valeurs de retour de la t-fonction d’impact tf′
et de la v-fonction
d’impact f
′
sont spécifiées par la formule suivante :
∀v1. ↑
toi(Γp) ⊕ tΓ
oi ⊢l:vl
e1 →→ v1
⇒ tf′
(vl) = f alse ∧ f
′
(vl) = v1
∧
̸ ∃v1. ↑
toi(Γp) ⊕ tΓ
oi ⊢l:vl
e1 →→ v1
⇒ tf′
(vl) = true ∧ f
′
(vl) = vdummy
On tente ici d’évaluer e1 dans l’environnement tΓ
oi augmenté de l’environnement de
liaison issu du filtrage Γp. On distingue alors deux cas : soit l’évaluation retourne
une valeur, soit elle n’en retourne pas. Dans le premier cas, l’évaluation du filtrage
termine sur une valeur, ce qui est traduit par la formule tf′
(vl) = f alse et sa valeur
est v1, ce qui est traduit par la formule f
′
(vl) = v1.
On constate ici qu’il est impossible de définir la fonction de spécification
sous forme de fonction calculable car elle nécessiterait une fonction calculable
permettant de déterminer si l’évaluation de e1 termine ou non.
Cette remarque est valable pour les trois fonctions de spécification.
• f(vl) ne correspond pas au motif de filtrage p (on a f(vl), p ⊢p ⊥)
Dans ce cas, les valeurs de retour de la t-fonction d’impact tf′
et de la v-fonction
d’impact f
′
sont spécifiées par la formule suivante :
∀v2.(x, ↑
toi(f(vl))) ⊕ tΓ
oi ⊢l:vl
e2 →→ v2
⇒ tf′
(vl) = f alse ∧ f
′
(vl) = v2
∧
1013.4. SÉMANTIQUE SUR-INSTRUMENTÉE
̸ ∃v2.(x, ↑
toi(f(vl))) ⊕ tΓ
oi ⊢l:vl
e2 →→ v2
⇒ tf′
(vl) = true ∧ f
′
(vl) = vdummy
Si la valeur de l’expression filtrée ne correspond pas au motif, on évalue alors la
seconde branche du filtrage. Si l’évaluation de cette seconde branche termine sur
une valeur v2, alors on a la spécification suivante : tf′
(vl) = f alse ∧ f
′
(vl) = v2. Si
l’évaluation de e2 ne termine pas sur une valeur, alors la spécification qui s’applique
est : tf′
(vl) = true ∧ f
′
(vl) = vdummy.
• f(vl) n’est pas une valeur filtrable
Ce cas correspond à une erreur de type.
La spécification est donc la suivante : tf′
(vl) = true ∧ f
′
(vl) = vdummy.
3.4.2 Correction
3.4.2.1 Énoncé informel du théorème
La sémantique sur-instrumentée permet de simuler en une seule évaluation toutes les
évaluations avec injection possibles. En effet, le résultat de l’évaluation d’un programme
par cette sémantique est une t-valeur sur-instrumentée contenant la valeur de référence du
programme ainsi que, en puissance, la valeur du programme pour toute évaluation avec
injection.
Pour extraire la valeur du programme pour une injection donnée, il suffit
d’instancier la t-valeur sur-instrumentée. Si l’instanciation retourne une valeur,
alors nous pouvons être sûrs que l’évaluation de ce programme par la
sémantique avec injection termine pour l’injection considérée et que la valeur
retournée est la même que l’instanciation de la t-valeur sur-instrumentée.
Le théorème auquel nous nous intéressons exprime le lien qu’il doit y avoir entre la
sémantique sur-instrumentée et la sémantique avec injection dans un t-environnement surinstrumenté.
En combinant ce résultat avec le théorème de correction de la sémantique
avec injection dans un t-environnement sur-instrumenté et le théorème de correction de
1023.4. SÉMANTIQUE SUR-INSTRUMENTÉE
la sémantique opérationnelle avec injection, il sera possible de déduire que si un label
n’apparaît pas dans la t-valeur sur-instrumentée d’un programme alors ce label n’a pas
d’impact sur l’évaluation du programme. Cependant, cette propriété ne nous intéresse
pas en elle-même car il n’est pas possible en pratique d’analyser un programme avec la
sémantique sur-instrumentée. On prouvera cette propriété sur la sémantique instrumentée
qui constitue notre analyse dynamique.
3.4.2.2 Illustration par l’exemple
Pour se rendre compte concrètement de la signification du théorème de correction de
la sémantique sur-instrumentée, nous illustrons ici par quelques exemples le lien entre la
sémantique sur-instrumentée et la sémantique avec injection dans un t-environnement surinstrumenté.
Exemple 1 : évaluation d’un couple
Notons e1 le programme suivant : (3, l :7)
Considérons maintenant le jugement d’évaluation de ce programme par la sémantique
sur-instrumentée dans le t-environnement sur-instrumenté vide (son arbre de dérivation est
donné en figure 3.9) :
∅ ⊢oi e1 →→ tuoi avec tuoi = [ ∅ | [ ∅ | ( [ ∅ | 3 ], [ (l, id) | 7 ]) ] ]
où id représente la fonction identité.
Donnons des noms aux différentes composantes de tuoi :
tuoi = [ tdoi | [ d
oi | ( [ d
oi
1
| 3 ], [ (l, f2) | 7 ]) ] ]
L’instanciation de tuoi retourne toujours une valeur puisque son ensemble de t-dépendances
tdoi est vide. L’ensemble de v-dépendances d
oi est vide lui aussi, ce qui indique
que pour toute injection, l’instanciation de tuoi aura toujours une structure de couple.
L’ensemble des v-dépendances de la première composante du couple d
oi
1
est également
vide, donc pour toute injection, la première composante du couple est la valeur 3. En ce
1033.4. SÉMANTIQUE SUR-INSTRUMENTÉE
qui concerne l’ensemble des v-dépendances de la seconde composante du couple, il contient
un unique label l et sa v-fonction d’impact associée f2. Si on instancie tuoi pour une
injection sur un label autre que l, on obtiendra un couple dont la seconde composante est
spécifiée par f2. Si on instancie tuoi pour une injection sur le label l, alors le couple résultat
aura pour seconde composante la valeur 7 qui est la valeur de référence de ce sous-terme.
La fonction f2 est l’identité donc on a :
∀vl
. ↓
l:vl(tuoi) = (3, vl) et ∀vl
. ↓
l
′
:vl
′
(tuoi) = (3, 7) si l ̸= l
′
Maintenant, intéressons nous à l’évaluation de e1 par la sémantique avec injection dans
le même t-environnement sur-instrumenté (l’environnement vide). La sémantique avec injection
évalue le programme pour une injection donnée. Considérons une injection que nous
noterons (l
′
, vl
′).
La figure 3.10 présente l’arbre de dérivation du jugement d’évaluation de e1 par la
sémantique avec injection dans le cas où l = l
′
. En réalité, il existe un tel arbre de dérivation
pour chaque valeur de vl
′, cependant tous ces arbres de dérivation ont la même structure.
Nous présentons donc un arbre d’évaluation paramétré par la valeur vl
′.
Dans le cas ou l ̸= l
′
, tous les arbres d’évaluation ont eux aussi la même structure. La
figure 3.11 présente donc un arbre d’évaluation paramétré par l’injection (l
′
, vl
′) dans le
cas ou l ̸= l
′
.
Nous obtenons les deux jugements paramétrés suivants, correspondant aux deux situations
possibles :
∀vl
′.tΓ
oi ⊢l:vl
′
(3, l : 7) →→ (3, vl
′)
et ∀(l
′
, vl
′).tΓ
oi ⊢l
′
:vl
′
(3, l : 7) →→ (3, 7) si l ̸= l
′
Nous pouvons alors constater que pour toute injection possible, l’instanciation de la
t-valeur sur-instrumentée de e1 retourne bien la valeur retournée par l’évaluation de e1 via
la sémantique avec injection. En outre, la sémantique avec injection termine toujours sur
une valeur (car la t-valeur sur-instrumentée de e1 est instanciable pour toute injection).
1043.4. SÉMANTIQUE SUR-INSTRUMENTÉE
oi-couple
oi-num
tΓ
oi ⊢
oi 3 →→ [ ∅ | [ ∅ | 3 ] ]
oi-annot
oi-num
tΓ
oi ⊢
oi 7 →→ [ ∅ | [ ∅ | 7 ] ]
tΓ
oi ⊢
oi l : 7 →→ [ ∅ | [ (l, fun x ⇒ x) | 7 ] ]
tΓ
oi ⊢
oi (3, l : 7) →→ [ tdoi
1 ∪ tdoi
2
| [ ∅ | ( [ ∅ | 3 ], [ (l, fun x ⇒ x) | 7 ]) ] ]
Figure 3.9 – Exemple 1 : arbre de dérivation du jugement d’évaluation sur-instrumentée
inj-couple
inj-num
tΓ
oi ⊢l:vl
′ 3 →→ 3
inj-annot-same
tΓ
oi ⊢l:vl
′
l : 7 →→ vl
′
tΓ
oi ⊢l:vl
′
(3, l : 7) →→ (3, vl
′)
Figure 3.10 – Exemple 1 : arbre de dérivation du jugement d’évaluation avec injection si l = l
′
inj-couple
inj-num
tΓ
oi ⊢l
′
:vl
′ 3 →→ 3
inj-annot-other
inj-num
tΓ
oi ⊢l
′
:vl
′ 7 →→ 7 l
′
̸= l
tΓ
oi ⊢l
′
:vl
′
l : 7 →→ 7
tΓ
oi ⊢l
′
:vl
′
(3, l : 7) →→ (3, 7)
Figure 3.11 – Exemple 1 : arbre de dérivation du jugement d’évaluation avec injection si l ̸= l
′
1053.4. SÉMANTIQUE SUR-INSTRUMENTÉE
Exemple 2 : liaison d’une fonction
Notons e2 le programme suivant :
l e t f o =
match o with
| Some ( x ) → x + l1 : 8
| none → d
i n
( f ( Some 18 ) , l2 : 17 )
Remarque : Some est écrit avec une majuscule puisqu’il s’agit d’une constructeur de
donnée alors que none est écrit sans majuscule puisqu’il s’agit d’une variable (cf. algèbre
des valeurs sur-instrumentées).
Nous souhaitons évaluer ce programme dans l’environnement suivant :
tΓ
oi
2 = (d, [ tdoi
d
| [ d
oi
d
| 26 ] ])
avec tdoi
d = (l3, tfd) et tdoi
d = (l4, fd)
Le jugement d’évaluation de e2 par la sémantique sur-instrumentée est :
tΓ
oi
2 ⊢
oi e2 →→ [ ∅ | [ ∅ | ( [ (l1, f1) | 26 ], [ (l2, id) | 17 ]) ] ]
avec f1 = fun x ⇒ 18 + x
Pour s’en convaincre, l’arbre d’évaluation de ce programme par la sémantique surinstrumentée
est présenté dans les figures 3.12 et 3.13. Pour faciliter la lecture de l’arbre
d’évaluation, on écrit à gauche de chaque règle le nom de la règle d’inférence appliquée et
à droite le niveau de profondeur de la règle au sein de l’arbre d’évaluation du programme
complet e2. Le niveau 0 correspond à la racine de l’arbre, le niveau 1 correspond à ses
prémisses et ainsi de suite. Le sous-arbre d’évaluation du filtrage par motif est présenté
dans une figure séparée pour plus de lisibilité.
Notre exemple contient le symbole d’addition. Pour donner une sémantique à ce symbole,
il serait nécessaire d’ajouter une règle d’inférence. Nous ne détaillons pas l’ajout
de cette règle ici et cachons le sous-arbre d’évaluation correspondant. Il est possible de
manipuler les nombres entiers dans notre langage sans avoir recours à l’ajout de règle supplémentaire.
Pour cela, il suffit d’encoder les entiers à l’aide des constructeurs de données
1063.4. SÉMANTIQUE SUR-INSTRUMENTÉE
et de définir les fonctions usuelles (addition, soustraction, division, multiplication, . . . ) directemement
dans le langage. Cependant, nous avons choisi de ne pas utiliser cet encodage
dans l’exemple afin de simplifier la présentation.
Nous pouvons constater que les labels l3 et l4 n’apparaissent pas dans la t-valeur surinstrumentée
de e2. En effet, puisque l’évaluation du filtrage passe toujours par la première
branche la valeur de l’identificateur d dans l’environnement n’a pas d’importance.
L’analyse donne une t-valeur sur-instrumentée à la sous-expression filtrée. L’ensemble des
v-dépendances de cette t-valeur sur-instrumentée est vide donc il n’y a aucune dépendance
indirecte lors de l’évaluation du filtrage (aucune injection susceptible de modifier le choix de
la branche lors de l’évaluation). L’analyse « déduit » donc de cette manière que l’évaluation
du filtrage passe toujours pas la première branche.
Notons tuoi
2
la t-valeur sur-instrumentée de e2 dans tΓ
oi
2
. L’instanciation de tuoi
2 ne
dépend que des labels l1 et l2. Si on instancie pour une injection sur l1, seule la première
composante du couple est modifiée. Si on instancie pour une injection sur l2, seule la
seconde composante du couple est modifiée. Si on instancie pour une injection sur un autre
label, on obtient la valeur de référence. Ces trois cas sont récapitulés ci-dessous :
↓
l1:vl1(tuoi
2
) = (18 + vl1
, 17)
↓
l2:vl2(tuoi
2
) = (26, vl2
)
↓
l:vl(tuoi
2
) = (26, 17) si l ̸= l1 et l ̸= l2
Intéressons-nous maintenant à l’évaluation de l’expression e2 à l’aide de la sémantique
avec injection. En fonction du label sur lequel on effectue l’injection, l’arbre de dérivation
du jugement de la sémantique avec injection change de forme. On distingue 3 cas, suivant
qu’il s’agisse d’une injection sur le label l1, sur le label l2 ou sur un autre label.
Pour une injection sur le label l1, l’arbre de dérivation est donné en deux parties, dans
les figures 3.14 et 3.15.
Pour une injection sur le label l2, l’arbre de dérivation est donné dans les figures 3.16
et 3.17.
Pour une injection sur un label autre que l1 et l2, l’arbre de dérivation est donné en
deux parties, dans les figures 3.18 et 3.19.
On obtient les trois jugements suivants qui correspondent aux troix cas de l’instancia-
1073.4. SÉMANTIQUE SUR-INSTRUMENTÉE
tion de la t-valeur sur-instrumentée du programme :
tΓ
oi
2 ⊢l1:vl1
e2 →→ (18 + vl1
, 17)
tΓ
oi
2 ⊢l2:vl2
e2 →→ (26, vl2
)
tΓ
oi
2 ⊢l :vl
e2 →→ (26, 17) si l ̸= l1 et l ̸= l2
On constate ainsi que pour tout injection, la sémantique avec injection termine sur une
valeur qui est la même que l’instanciation de la t-valeur sur-instrumentée.
Pour chaque arbre de dérivation, le niveau 0 correspond à l’évaluation de l’expression
de liaison. On a ensuite deux sous-arbres au niveau 1 : un pour l’évaluation de la sousexpression
liée et un autre pour l’évaluation du couple. La forme du premier sous-arbre est
commune à tous les cas (l1, l2 ou autre). Par contre, la forme du second sous-arbre dépend
du label sur lequel on effectue l’injection. Il s’agit de l’évaluation de la sous-expression
couple. Cette évaluation comprend elle-même deux sous-arbres (de niveau 2), un pour
chaque composante du couple.
On peut constater que le sous-arbre de niveau 2 correspondant à l’évaluation de la
première composante du couple est le même pour toute injection sur un label différent de
l1 (c’est-à-dire pour tout label n’apparaissant pas dans l’ensemble des v-dépendances surinstrumentées
de la première composante du couple). De même, le sous-arbre correspondant
à la seconde composante du couple est le même pour toute injection sur un label différent
de l2 (c’est-à-dire pour tout label n’apparaissant pas dans l’ensemble des v-dépendances
sur-instrumentées de la seconde composante du couple).
1083.4. SÉMANTIQUE SUR-INSTRUMENTÉE
oi-letin
oi-abstr
tΓ
oi
2 ⊢
oi λo.match o with... →→ [ ∅ | [ ∅ | < λo.match o with..., ↑
oi
toi(tΓ
oi
2
) > ] ]
1
oi-couple
oi-apply
oi-ident
[ ∅ | [ ∅ | < λo.match o with..., ↑
oi
toi(tΓ
oi
2
) > ] ] = ((f, ...) ⊕ tΓ
oi
2
)[f]
(f, ...) ⊕ tΓ
oi
2 ⊢
oi f →→ [ ∅ | [ ∅ | < λo.match o with..., ↑
oi
toi(tΓ
oi
2
) > ] ]
3
oi-constr-1
oi-num
(f, ...) ⊕ tΓ
oi
2 ⊢
oi 18 →→ [ ∅ | [ ∅ | 18 ] ]
4
(f, ...) ⊕ tΓ
oi
2 ⊢
oi Some 18 →→ [ ∅ | [ ∅ | Some( [ ∅ | 18 ]) ] ]
3
oi-match
.
.
. (figure 3.13)
.
.
.
(o, ...)⊕ ↑toi
oi (↑
oi
toi(tΓ
oi
2
)) ⊢
oi match o with Some x → x + l1 : 8 | none → d →→ [ ∅ | [ (l1, fun x ⇒ 18 + x) | 26 ] ]
3
deps_spec_apply( [ ∅ | [ ∅ | Some( [ ∅ | 18 ]) ] ], ∅) = (∅, ∅)
(f, ...) ⊕ tΓ
oi
2 ⊢
oi f(Some 18) →→ [ ∅ | [ (l1, fun x ⇒ 18 + x) | 26 ] ]
2
oi-annot
oi-num
(f, ...) ⊕ tΓ
oi
2 ⊢
oi 17 →→ [ ∅ | [ ∅ | 17 ] ]
3
(f, ...) ⊕ tΓ
oi
2 ⊢
oi l2 : 17 →→ [ ∅ | [ (l2, fun x ⇒ x) | 17 ] ]
2
(f, ...) ⊕ tΓ
oi
2 ⊢
oi (f(Some 18), l2 : 17) →→ [ ∅ | [ ∅ | ( [ (l1, fun x ⇒ 18 + x) | 26 ], [ (l2, fun x ⇒ x) | 17 ]) ] ]
1
tΓ
oi
2 ⊢
oi e2 →→ [ ∅ | [ ∅ | ( [ (l1, fun x ⇒ 18 + x) | 26 ], [ (l2, fun x ⇒ x) | 17 ]) ] ]
0
Figure 3.12 – Exemple 2 : arbre de dérivation du jugement d’évaluation sur-instrumentée
oi-match
oi-ident
[ ∅ | [ ∅ | Some( [ ∅ | 18 ]) ] ] = ((o, ...)⊕ ↑toi
oi (↑
oi
toi(tΓ
oi
2
)))[o]
(o, ...)⊕ ↑toi
oi (↑
oi
toi(tΓ
oi
2
)) ⊢
oi o →→ [ ∅ | [ ∅ | Some( [ ∅ | 18 ]) ] ]
4
oim-constr-1
[ ∅ | [ ∅ | Some( [ ∅ | 18 ]) ] ], Some x ⊢
oi
p
(x, [ ∅ | 18 ])
4
oi-plus
.
.
.
(x, [ ∅ | 18 ]) ⊕ (o, ...)⊕ ↑toi
oi (↑
oi
toi(tΓ
oi
2
)) ⊢
oi x + l1 : 8 →→ [ ∅ | [ (l1, fun x ⇒ 18 + x) | 26 ] ]
4
deps_spec_match((o, ...)⊕ ↑toi
oi (↑
oi
toi(tΓ
oi
2
)), Some x, none, x + l1 : 8, d, ∅) = (∅, ∅)
(o, ...)⊕ ↑toi
oi (↑
oi
toi(tΓ
oi
2
)) ⊢
oi match o with Some x → x + l1 : 8 | none → d →→ [ ∅ | [ (l1, fun x ⇒ 18 + x) | 26 ] ]
3
Figure 3.13 – Exemple 2 : sous-arbre de dérivation sur-instrumentée du filtrage
1093.4. SÉMANTIQUE SUR-INSTRUMENTÉE
inj-letin
inj-abstr
tΓ
oi
2 ⊢l1:vl1
λo.match o with... →→< λo.match o with..., (d, 26) >
1
inj-couple
inj-apply
inj-ident
< λo.match o with..., (d, 26) >=↓
l1:vl1(((f, ...) ⊕ tΓ
oi
2
)[f])
(f, ...) ⊕ tΓ
oi
2 ⊢l1:vl1
f →→< λo.match o with..., (d, 26) >
3
inj-constr-1
inj-num
(f, ...) ⊕ tΓ
oi
2 ⊢l1:vl1
18 →→ 18
4
(f, ...) ⊕ tΓ
oi
2 ⊢l1:vl1
Some 18 →→ Some 18
3
inj-match
.
.
. (figure 3.15)
.
.
.
(o, ↑
toi(Some 18)) ⊕ (d, 26) ⊢l1:vl1
match o with... →→ 18 + vl1
3
(f, ...) ⊕ tΓ
oi
2 ⊢l1:vl1
f(Some 18) →→ 18 + vl1
2 inj-annot-other
inj-num
(f, ...) ⊕ tΓ
oi
2 ⊢l1:vl1
17 →→ 17
3
l1 ̸= l2
(f, ...) ⊕ tΓ
oi
2 ⊢l1:vl1
l2 : 17 →→ 17
2
(f, ...) ⊕ tΓ
oi
2 ⊢l1:vl1
(f(Some 18), l2 : 17) →→ (18 + vl1
, 17)
1
tΓ
oi
2 ⊢l1:vl1
e2 →→ (18 + vl1
, 17)
0
Figure 3.14 – Exemple 2 : arbre de dérivation du jugement d’évaluation avec injection sur l1
inj-match
inj-ident
Some 18 =↓
l1:vl1(↑
toi(Some 18))
(o, ↑
toi(Some 18)) ⊕ (d, 26) ⊢l1:vl1
o →→ Some 18
4 opm-constr-1
Some 18, Some x ⊢p (x, 18)
4
inj-plus
.
.
.
(x, ↑
toi(18)) ⊕ (o, ↑
toi(v2)) ⊕ (d, 26) ⊢l1:vl1
x + l1 : 8 →→ 18 + vl1
4
(o, ↑
toi(Some 18)) ⊕ (d, 26) ⊢l1:vl1
match o with Some x → x + l1 : 8 | none → d →→ 18 + vl1
3
Figure 3.15 – Exemple 2 : sous-arbre de dérivation du filtrage avec injection sur l1
1103.4. SÉMANTIQUE SUR-INSTRUMENTÉE
inj-letin
inj-abstr
tΓ
oi
2 ⊢l2:vl2
λo.match o with... →→< λo.match o with..., (d, 26) >
1
inj-couple
inj-apply
inj-ident
< λo.match o with..., (d, 26) >=↓
l2:vl2(((f, ...) ⊕ tΓ
oi
2
)[f])
(f, ...) ⊕ tΓ
oi
2 ⊢l2:vl2
f →→< λo.match o with..., (d, 26) >
3
inj-constr-1
inj-num
(f, ...) ⊕ tΓ
oi
2 ⊢l2:vl2
18 →→ 18
4
(f, ...) ⊕ tΓ
oi
2 ⊢l2:vl2
Some 18 →→ Some 18
3
inj-match
.
.
. (figure 3.17)
.
.
.
(o, ↑
toi(Some 18)) ⊕ (d, 26) ⊢l2:vl2
match o with... →→ 26
3
(f, ...) ⊕ tΓ
oi
2 ⊢l2:vl2
f(Some 18) →→ 26
2 inj-annot-same
(f, ...) ⊕ tΓ
oi
2 ⊢l2:vl2
l2 : 17 →→ vl2
2
(f, ...) ⊕ tΓ
oi
2 ⊢l2:vl2
(f(Some 18), l2 : 17) →→ (26, vl2
)
1
tΓ
oi
2 ⊢l2:vl2
e2 →→ (26, vl2
)
0
Figure 3.16 – Exemple 2 : arbre de dérivation du jugement d’évaluation avec injection sur l2
inj-match
inj-ident
Some 18 =↓
l2:vl2(↑
toi(Some 18))
(o, ↑
toi(Some 18)) ⊕ (d, 26) ⊢l2:vl2
o →→ Some 18
4 opm-constr-1
Some 18, Some x ⊢p (x, 18)
4
inj-plus
.
.
.
(x, ↑
toi(18)) ⊕ (o, ↑
toi(v2)) ⊕ (d, 26) ⊢l2:vl2
x + l2 : 8 →→ 26
4
(o, ↑
toi(Some 18)) ⊕ (d, 26) ⊢l2:vl2
match o with Some x → x + l2 : 8 | none → d →→ 26
3
Figure 3.17 – Exemple 2 : sous-arbre de dérivation du filtrage avec injection sur l2
1113.4. SÉMANTIQUE SUR-INSTRUMENTÉE
inj-letin
inj-abstr
tΓ
oi
2 ⊢l:vl
λo.match o with... →→< λo.match o with..., (d, 26) >
1
inj-couple
inj-apply
inj-ident
< λo.match o with..., (d, 26) >=↓
l:vl(((f, ...) ⊕ tΓ
oi
2
)[f])
(f, ...) ⊕ tΓ
oi
2 ⊢l:vl
f →→< λo.match o with..., (d, 26) >
3
inj-constr-1
inj-num
(f, ...) ⊕ tΓ
oi
2 ⊢l:vl
18 →→ 18
4
(f, ...) ⊕ tΓ
oi
2 ⊢l:vl
Some 18 →→ Some 18
3
inj-match
.
.
. (figure 3.19)
.
.
.
(o, ↑
toi(Some 18)) ⊕ (d, 26) ⊢l:vl match o with... →→ 26
3
(f, ...) ⊕ tΓ
oi
2 ⊢l:vl
f(Some 18) →→ 26
2 inj-annot-other
inj-num
(f, ...) ⊕ tΓ
oi
2 ⊢l1:vl1
17 →→ 17
3
l1 ̸= l2
(f, ...) ⊕ tΓ
oi
2 ⊢l:vl
l : 17 →→ 17
2
(f, ...) ⊕ tΓ
oi
2 ⊢l:vl
(f(Some 18), l : 17) →→ (26, 17)
1
tΓ
oi
2 ⊢l:vl
e2 →→ (26, 17)
0
Figure 3.18 – Exemple 2 : arbre de dérivation du jugement d’évaluation avec injection sur l ̸∈ {l1, l2}
inj-match
inj-ident
Some 18 =↓
l:vl(↑
toi(Some 18))
(o, ↑
toi(Some 18)) ⊕ (d, 26) ⊢l:vl
o →→ Some 18
4 opm-constr-1
Some 18, Some x ⊢p (x, 18)
4
inj-plus
.
.
.
(x, ↑
toi(18)) ⊕ (o, ↑
toi(v2)) ⊕ (d, 26) ⊢l:vl
x + l : 8 →→ 26
4
(o, ↑
toi(Some 18)) ⊕ (d, 26) ⊢l:vl match o with Some x → x + l : 8 | none → d →→ 26
3
Figure 3.19 – Exemple 2 : sous-arbre de dérivation du filtrage avec injection sur l ̸∈ {l1, l2}
1123.4. SÉMANTIQUE SUR-INSTRUMENTÉE
3.4.2.3 Énoncé formel du théorème
Théorème 3.4.1 (Correction de la sémantique sur-instrumentée).
∀(tΓ
oi, e, tuoi).tΓ
oi ⊢
oi e →→ tuoi
⇒ ∀(l, vl).∃Γ.Γ =↓
l:vl(tΓ
oi)
⇒ ∀v.v =↓
l:vl(tuoi) ⇒ tΓ
oi ⊢l:vl
e →→ v
Ce théorème énonce la correction de la sémantique sur-instrumentée. Si l’évaluation
sur-instrumentée d’un programme e dans un environnement tΓ
oi termine sur une valeur
sur-instrumentée tuoi, alors cette valeur doit être correcte. Pour toute injection, si le tenvironnement
sur-instrumenté tΓ
oi et la t-valeur sur-instrumentée tuoi sont instanciables
alors la sémantique avec injection termine sur une valeur et cette valeur est précisément
l’instanciation de la t-valeur sur-instrumentée tuoi
.
L’hypothèse d’instanciabilité du t-environnement sur-instrumenté assure que l’injection
considérée peut conduire à l’évaluation de l’expression e. Autrement dit, si le tenvironnement
sur-instrumenté n’est pas instanciable, cela signifie que l’injection considérée
provoquera une erreur avant même l’évaluation de l’expression e, par exemple lors
de l’évaluation d’une autre partie du programme précédant celle de e.
3.4.2.4 Preuve de correction
La preuve de correction se fait par induction sur le jugement d’évaluation de la sémantique
sur-instrumentée. Cette induction implique la preuve de quinze cas : un pour chaque
règle d’inférence. Nous allons présenter ici les grandes lignes de la preuve en détaillant
quelques uns de ces cas. La preuve complète est disponible sous forme de code Coq.
cas oi-num Ce cas est trivial. Dans ce cas, l’expression e n’est autre qu’une constante
numérique n, la t-valeur sur-instrumentée tuoi ne contient que des dépendances vides et
la valeur simple sur-instrumentée n. L’instanciation de tuoi est donc la valeur n et il suffit
d’appliquer la règle d’inférence inj-num de la sémantique avec injection pour conclure.
1133.4. SÉMANTIQUE SUR-INSTRUMENTÉE
cas oi-abstr À partir d’un jugement de la sémantique sur-instrumentée obtenu par la
règle oi-abstr, d’une injection (l, vl) donnée, et de la valeur v obtenue par instanciation de
la valeur sur-instrumentée pour l’injection (l, vl), on veut déduire le jugement correspondant
pour la sémantique avec injection.
Voici les trois hypothèses à notre disposition :
oi-abstr
tΓ
oi ⊢
oi λx.e →→ [ ∅ | [ ∅ | < λx.e, ↑
oi
toi(tΓ
oi) > ] ]
∃Γ.Γ =↓
l:vl(tΓ
oi)
v =↓
l:vl( [ ∅ | [ ∅ | < λx.e, ↑
oi
toi(tΓ
oi) > ] ])
Puisque tΓ
oi est instanciable pour l’injection (l, vl), alors on a :
↓
l:vl(↑
oi
toi(tΓ
oi)) =↓
l:vl(tΓ
oi)
En simplifiant la dernière hypothèse, on obtient :
v =< λx.e, ↓
l:vl(↑
oi
toi(tΓ
oi)) >=< λx.e, ↓
l:vl(tΓ
oi) >
On peut alors conclure en appliquant la règle d’inférence suivante :
inj-abstr
tΓ
oi ⊢l:vl
λx.e →→< λx.e, ↓
l:vl(tΓ
oi) >
cas oi-apply À partir d’un jugement de la sémantique sur-instrumentée obtenu par la
règle oi-apply, d’une injection (l, vl) donnée, de la valeur v obtenue par instanciation de
la valeur sur-instrumentée pour l’injection (l, vl) et de trois hypothèses d’induction correspondant
aux trois jugements de la sémantique sur-instrumentée présents dans les prémisses
de la règle oi-apply, on veut déduire le jugement correspondant pour la sémantique avec
injection.
Voici les six hypothèses à notre disposition :
oi-apply
tΓ
oi ⊢
oi e1 →→ [ tdoi
1
| [ d
oi
1
| < λx.e, Γ
oi
1 > ] ]
tΓ
oi ⊢
oi e2 →→ tuoi
2
tuoi
2 = [ tdoi
2
| u
oi
2
]
(x, tuoi
2
)⊕ ↑toi
oi (Γoi
1
) ⊢
oi e →→ [ tdoi | [ d
oi | v
oi ] ]
deps_spec_apply(tuoi
2
, doi
1
) = (td′oi, d′oi)
tΓ
oi ⊢
oi e1 e2 →→ [ tdoi
1 ∪ tdoi
2 ∪ tdoi ∪ td′oi | [ d
′oi ∪ d
oi | v
oi ] ]
1143.4. SÉMANTIQUE SUR-INSTRUMENTÉE
∃Γ.Γ =↓
l:vl(tΓ
oi) (HtΓ
oi
inst)
v =↓
l:vl( [ tdoi
1 ∪ tdoi
2 ∪ tdoi ∪ td′oi | [ d
′oi ∪ d
oi | v
oi ] ]) (Htuoi
inst)
∃Γ.Γ =↓
l:vl(tΓ
oi)
⇒ ∀v.v =↓
l:vl( [ tdoi
1
| [ d
oi
1
| < λx.e, Γ
oi
1 > ] ])
⇒ tΓ
oi ⊢l:vl
e1 →→ v
(IH1)
∃Γ.Γ =↓
l:vl(tΓ
oi) ⇒ ∀v.v =↓
l:vl(tuoi
2
) ⇒ tΓ
oi ⊢l:vl
e2 →→ v (IH2)
∃Γ.Γ =↓
l:vl((x, tuoi
2
)⊕ ↑toi
oi (Γoi
1
))
⇒ ∀v.v =↓
l:vl( [ tdoi | [ d
oi | v
oi ] ])
⇒ (x, tuoi
2
)⊕ ↑toi
oi (Γoi
1
) ⊢l:vl
e →→ v
(IH)
Nous commençons par utiliser les hypothèses d’induction pour obtenir des jugements
d’évaluation avec injection pour e1, pour e2 et pour le corps de la fonction appliquée. Nous
pourrons ensuite appliquer la règle inj-apply pour conclure.
Le corps de la fonction appliquée n’est pas le même selon que le label l sur lequel on
fait l’injection appartient à d
oi
1
ou non. En effet, si l ̸∈ d
oi
1
alors la valeur de e1 est bien une
fermeture dont le corps est l’expression e. Dans le cas contraire, si l ∈ d
oi
1
alors la valeur de
e1 est spécifiée par la v-fonction d’impact associée à l dans d
oi
1
. Nous allons donc séparer
la preuve en deux parties pour prouver ces deux cas séparément.
Traitons tout d’abord le cas où l ̸∈ d
oi
1
.
Nous savons d’une part que l’environnement tΓ
oi est instanciable, c’est exactement l’hypothèse
HtΓ
oi
inst . D’autre part, l’hypothèse Htuoi
inst nous apprend que la t-valeur sur-instrumentée
( [ tdoi
1
| [ d
oi
1
| < λx.e, Γ
oi
1 > ] ]) est instanciable. En effet, Htuoi
inst implique atifl:vl
(tdoi
1 ∪
tdoi
2 ∪ tdoi ∪ td′oi) = f alse ce qui implique atifl:vl
(tdoi
1
) = f alse. Nous pouvons donc appliquer
l’hypothèse d’induction IH1 :
↓
l:vl( [ tdoi
1
| [ d
oi
1
| < λx.e, Γ
oi
1 > ] ]) =< λx.e, ↓
l:vl(Γoi
1
) >
1153.4. SÉMANTIQUE SUR-INSTRUMENTÉE
tΓ
oi ⊢l:vl
e1 →→< λx.e, ↓
l:vl(Γoi
1
) >
Pour obtenir un jugement d’évaluation avec injection pour e2, nous procédons de la
même manière que pour e1. L’instanciabilité de tΓ
oi est fournie par HtΓ
oi
inst . En ce qui
concerne l’instanciation de tuoi
2
, on déduit atifl:vl
(tdoi
2
) = f alse à partir de la propriété
atifl:vl
(tdoi
1 ∪ tdoi
2 ∪ tdoi ∪ td′oi) = f alse qui a déjà été montrée. Puisque l’instanciabilité
d’une t-valeur sur-instrumentée dépend uniquement de ses t-dépendances sur-instrumentées
et de l’injection considérée (une v-valeur sur-instrumentée est toujours instanciable), tuoi
2
est instanciable en une certaine valeur v2.
↓
l:vl( [ tdoi
2
| u
oi
2
]) =↓
l:vl(u
oi
2
) = v2
tΓ
oi ⊢l:vl
e2 →→ v2
Pour obtenir un jugement d’évaluation avec injection pour e, nous procédons une troisième
fois de la même manière. Il faut prouver l’instanciabilité de (x, tuoi
2
)⊕ ↑toi
oi (Γoi
1
). La
t-valeur sur-instrumentée tuoi
2
est instanciable, comme on l’a vu plus haut. L’environnement
↑
toi
oi (Γoi
1
) est instanciable car Γ
oi
1
est instanciable et la fonction ↑
toi
oi (•) n’ajoute que
des annotations vides. On a donc :
↓
l:vl((x, tuoi
2
)⊕ ↑toi
oi (Γoi
1
)) = (x, v2)⊕ ↓l:vl(Γoi
1
)
Nous prouvons que [ tdoi | [ d
oi | v
oi ] ] s’instancie en v, en réduisant l’hypothèse Htuoi
inst
à l’aide du fait que atifl:vl
(tdoi
1 ∪ tdoi
2 ∪ tdoi ∪ td′oi) = f alse et de l’hypothèse l ̸∈ d
oi
1
:
v =↓
l:vl( [ tdoi
1 ∪ tdoi
2 ∪ tdoi ∪ td′oi | [ d
′oi ∪ d
oi | v
oi ] ])
=↓
l:vl( [ d
′oi ∪ d
oi | v
oi ]) =↓
l:vl( [ d
oi | v
oi ])
=↓
l:vl( [ tdoi | [ d
oi | v
oi ] ])
Cette dernière égalité étant justifiée car nous déduisons atifl:vl
(tdoi) = f alse de la
propriété prouvée précédemment atifl:vl
(tdoi
1 ∪ tdoi
2 ∪ tdoi ∪ td′oi) = f alse. On obtient ainsi
le jugement de la sémantique avec injection en appliquant l’hypothèse d’induction IH :
(x, tuoi
2
)⊕ ↑toi
oi (Γoi
1
) ⊢l:vl
e →→ v
1163.4. SÉMANTIQUE SUR-INSTRUMENTÉE
Avant de pouvoir appliquer la règle d’inférence de l’application, il nous faut appliquer la
propriété suivante notée P
inj
inst (dont la preuve est fournie en Coq). Cette propriété énonce
que si, pour un programme e, la sémantique avec injection dans un t-environnement surinstrumenté
tΓ
oi termine sur une valeur v alors elle termine sur la même valeur v dans
l’environnement ↑
toi(↓
l:vl(Γoi)). Cette propriété est très proche du théorème de correction
de la sémantique avec injection dans un t-environnement sur-instrumenté.
∀(tΓ
oi, l, vl
, e, v, Γ), tΓ
oi ⊢l:vl
e →→ v
⇒ Γ =↓
l:vl(tΓ
oi)
⇒↑toi(Γ) ⊢l:vl
e →→ v
(P
inj
inst)
On obtient alors :
↑
toi(↓
l:vl((x, tuoi
2
)⊕ ↑toi
oi (Γoi
1
))) ⊢l:vl
e →→ v
(x, ↑
toi(↓
l:vl(tuoi
2
)))⊕ ↑toi(↓
l:vl(↑
toi
oi (Γoi
1
))) ⊢l:vl
e →→ v
(x, ↑
toi(v2))⊕ ↑toi(↓
l:vl(Γoi
1
)) ⊢l:vl
e →→ v
Les trois jugements d’évaluation avec injection ainsi obtenus pour e1, e2 et e nous
servent alors de prémisses pour appliquer la règle de la sémantique avec injection injapply
qui nous permet de conclure :
inj-apply
tΓ
oi ⊢l:vl
e1 →→< λx.e, ↓
l:vl(Γoi
1
) >
tΓ
oi ⊢l:vl
e2 →→ v2
(x, ↑
toi(v2))⊕ ↑toi(↓
l:vl(Γoi
1
)) ⊢l:vl
e →→ v
tΓ
oi ⊢l:vl
e1 e2 →→ v
Supposons maintenant que l ∈ d
oi
1
.
On prouve ce cas-là par induction sur la structure de la liste d
oi
1
. On élimine le premier
cas, où d
oi
1
est vide, puisque d
oi
1 doit contenir au moins l. On suppose donc que d
oi
1
est
de la forme (l
′
, f1); d
oi
1,tl pour une certaine v-fonction d’impact f1 et un certain v-ensemble
de dépendances d
oi
1,tl. Par la définition de deps_spec_apply, on déduit qu’il existe une tfonction
d’impact tf′
et un t-ensemble de dépendances td′oi
tl tels que td′oi = (l
′
, tf′
);td′oi
tl
1173.4. SÉMANTIQUE SUR-INSTRUMENTÉE
et qu’il existe une v-fonction d’impact f
′
et un v-ensemble de dépendances d
′oi
tl tels que
d
′oi = (l
′
, f′
); d
′oi
tl .
On a alors les propriétés suivantes ainsi que l’hypothèse d’induction IHd1
:
deps_spec_apply(tuoi
2
, doi
1,tl) = (td′oi
tl , d′oi
tl )
deps_spec_apply_fun(tuoi
2
, l′
, f1) = (tf′
, f′
)
∀v.v =↓
l:vl( [ tdoi
1 ∪ tdoi
2 ∪ tdoi ∪ td′oi
tl | [ d
′oi
tl ∪ d
oi | v
oi ] ])
⇒ tΓ
oi ⊢l:vl
e1 e2 →→ v
(IHd1
)
On distingue alors deux cas, l = l
′ ou l ̸= l
′
.
Commençons par supposer l = l
′
.
On a forcément la propriété tf′
(vl) = f alse. Si ce n’était pas le cas, la t-valeur surinstrumentée
[ tdoi
1 ∪ tdoi
2 ∪ tdoi ∪ td′oi | [ d
′oi ∪ d
oi | v
oi ] ] ne serait pas instanciable,
ce qui contredirait l’hypothèse Htuoi
inst. Puisque tf′
(vl) = f alse, il y a uniquement deux cas
possibles pour la valeur de f1(vl) (cf. définition de deps_spec_apply_fun, section 3.4.1.2).
• f1(vl) est une fermeture < λx′
.e′
, Γ1 >
Dans ce cas, il existe deux valeurs v2 et v
′ avec les propriétés suivantes :
↓
l:vl(tuoi
2
) = v2
(x
′
, ↑
toi(v2))⊕ ↑toi(Γ1) ⊢l:vl
e
′
→→ v
′
f
′
(vl) = v
′
De plus, on prouve que v
′ = v en réduisant l’égalité de l’hypothèse Htuoi
inst.
En utilisant les hypothèses d’induction IH1 et IH2, on obtient les jugements d’évaluation
avec injection suivants pour e1 et e2 :
tΓ
oi ⊢l:vl
e1 →→< λx′
.e′
, Γ1 >
tΓ
oi ⊢l:vl
e2 →→ v2
Il suffit donc d’appliquer la règle d’inférence inj-apply pour conclure :
inj-apply
tΓ
oi ⊢l:vl
e1 →→< λx′
.e′
, Γ1 >
tΓ
oi ⊢l:vl
e2 →→ v2
(x
′
, ↑
toi(v2))⊕ ↑toi(Γ1) ⊢l:vl
e
′
→→ v
tΓ
oi ⊢l:vl
e1 e2 →→ v
1183.4. SÉMANTIQUE SUR-INSTRUMENTÉE
• f1(vl) est une fermeture récursive < recf
′
.x′
.e′
, Γ1 >
Dans ce cas, il existe deux valeurs v2 et v
′ avec les propriétés suivantes :
↓
l:vl(tuoi
2
) = v2
(f
′
, ↑
toi(< recf
′
.x′
.e′
, Γ1 >)) ⊕ (x, ↑
toi(v2))⊕ ↑toi(Γ1) ⊢l:vl
e
′
→→ v
′
f
′
(vl) = v
′
Comme ci-dessus, on utilise l’hypothèse Htuoi
inst pour prouver que v
′ = v et on déduit les
jugements d’évaluation avec injection pour e1 et e2 à l’aide des hypothèses d’induction
IH1 et IH2. On applique ensuite la règle inj-apply-rec pour conclure :
inj-apply-rec
tΓ
oi ⊢l:vl
e1 →→ v1 v1 =< recf
′
.x′
.e′
, Γ1 >
tΓ
oi ⊢l:vl
e2 →→ v2
(f, ↑
toi(v1)) ⊕ (x, ↑
toi(v2))⊕ ↑toi(Γ1) ⊢l:vl
e
′
→→ v
tΓ
oi ⊢l:vl
e1 e2 →→ v
Maintenant supposons l ̸= l
′
.
Puisque l ̸= l
′
, on a l’égalité suivante :
v = ↓
l:vl( [ tdoi
1 ∪ tdoi
2 ∪ tdoi ∪ td′oi | [ d
′oi ∪ d
oi | v
oi ] ])
= ↓
l:vl( [ tdoi
1 ∪ tdoi
2 ∪ tdoi ∪ td′oi
tl | [ d
′oi
tl ∪ d
oi | v
oi ] ])
(Htuoi
inst)
On peut alors appliquer l’hypothèse d’induction IHd1
qui nous permet de conclure ce
dernier cas :
tΓ
oi ⊢l:vl
e1 e2 →→ v
1193.5. SÉMANTIQUE INSTRUMENTÉE
3.5 Sémantique instrumentée
Nous arrivons maintenant à la présentation de la sémantique instrumentée, qui constitue
ce que nous appelons notre analyse dynamique. Le but de cette analyse est de pouvoir
évaluer un programme de la même manière qu’avec la sémantique opérationnelle usuelle
mais en gardant trace pour chaque sous-terme de la valeur produite des dépendances de ce
sous-terme. On veut alors pouvoir garantir que si un label n’apparaît pas parmi les dépendances
d’un programme, alors ce label n’a pas d’impact sur l’évaluation de ce programme.
Pour prouver la correction de l’analyse dynamique par rapport à la notion d’impact
présentée en section 2.6, nous prouverons tout d’abord une propriété de correction de
la sémantique instrumentée vis-à-vis de la sémantique sur-instrumentée puis nous nous
reposerons sur la correction des deux sémantiques intermédiaires présentées plus haut : la
sémantique avec injection dans un t-environnement sur-instrumenté (cf. section 3.3) et la
sémantique sur-instrumentée (cf. section 3.4).
La sémantique instrumentée évalue une expression dans un t-environnement instrumenté
pour retourner une t-valeur instrumentée. C’est une simplification de la sémantique
sur-instrumentée. En effet, on peut remarquer dans la sémantique sur-instrumentée
que le calcul de la présence d’un label dans un ensemble de v-dépendances (resp. de tdépendances)
ne dépend pas des v-fonctions d’impact (resp. des t-fonctions d’impact) qui
sont associées. On peut donc calculer les ensembles de labels sans leur associer de fonction
d’impact. C’est justement ce que fait la sémantique instrumentée.
On obtient ainsi une sémantique décidable sur les programmes qui terminent
puisque le caractère indécidable de la sémantique sur-instrumentée venait de la spécification
des fonctions d’impact.
La sémantique instrumentée constitue en elle-même l’analyse dynamique de dépendances
que nous souhaitions définir, puisque l’analyse qui nous intéresse est justement le
calcul des ensembles de labels. Sa définition ne nécessite aucunement une définition préalable
de la sémantique sur-instrumentée ou bien de la sémantique avec injection. L’intérêt
d’avoir défini la sémantique sur-instrumentée est uniquement de simplifier et de clarifier la
preuve de correction de la sémantique instrumentée.
1203.5. SÉMANTIQUE INSTRUMENTÉE
3.5.1 Algèbre des valeurs instrumentées
La sémantique instrumentée manipule des valeurs instrumentées. Ces valeurs peuvent
être vues comme des valeurs abstraites par rapport aux valeurs sur-instrumentées. La fonction
d’abstraction est tout simplement la fonction qui supprime toutes les fonctions d’impact.
Ainsi, chaque valeur sur-instrumentée correspond à une valeur instrumentée unique et
plusieurs valeurs sur-instrumentées peuvent correspondre à la même valeur instrumentée.
Cette section présente la composition des valeurs instrumentées.
3.5.1.1 Valeurs
Une t-valeur instrumentée (notée tui
) est composée d’un ensemble de t-dépendances
tdi
et d’une v-valeur instrumentée u
i
.
tui
:= [ tdi
| u
i
] Valeur avec annotation de t-dépendance
Une v-valeur instrumentée (notée u
i
) est composée d’un ensemble de v-dépendances d
i
et d’une valeur simple instrumentée v
i
.
u
i
:= [ d
i
| v
i
] Valeur avec annotation de v-dépendance
Enfin, une valeur simple instrumentée (notée v
i
) est une valeur simple dont les soustermes
sont des v-valeurs instrumentées u
i
. On note V
i
l’ensemble des valeurs simples
instrumentées.
v
i
:= n | b | C | D(u
i
) | (u
i
1
, ui
2
) Constructeurs de données
< λx.e, Γ
i > Fermeture
< recf.x.e, Γ
i > Fermeture récursive
3.5.1.2 Ensembles de dépendances
Dans les t-valeurs instrumentées (resp. les v-valeurs instrumentées), les ensembles de
t-dépendances (resp. de v-dépendances) sont simplement des ensembles de labels.
tdi
:= {l1; . . . ; ln} t-dépendances
d
i
:= {l1; . . . ; lm} v-dépendances
1213.5. SÉMANTIQUE INSTRUMENTÉE
3.5.1.3 Environnements
De même que pour la sémantique sur-instrumentée, on distingue 2 types d’environnements.
Un t-environnement instrumenté permet de lier chaque identificateur à une t-valeur
instrumentée.
tΓ
i
:= (x1, tui
1
); . . . ; (xn, tui
n
) t-environnement instrumenté
Un v-environnement instrumenté permet de lier chaque identificateur à une v-valeur
instrumentée.
Γ
i
:= (x1, ui
1
); . . . ; (xn, ui
n
) v-environnement instrumenté
3.5.2 Règles d’inférence
Le jugement d’évaluation de la sémantique instrumentée prend la forme suivante :
tΓ
i ⊢
i
e →→ tui
où e est l’expression évaluée, tΓ
i
le t-environnement instrumenté dans lequel on effectue
l’évaluation et tui
la t-valeur instrumentée résultat de l’évaluation.
Ce jugement est défini par les règles d’inférence présentée en figure 3.20.
Les règles simples de la sémantique sur-instrumentée restent les mêmes dans la sémantique
instrumentée, seule la signification de la concaténation de dépendances est différente
puisqu’on concatène des listes de labels au lieu de concaténer des listes d’associations. En
ce qui concerne les règles contenant des dépendances indirectes, la sémantique instrumentée
n’effectue plus le calcul des fonctions d’impact mais se concente de calculer les ensembles
de labels.
Des explications détaillées de ces règles sont données ci-dessous.
i-num La règle d’évaluation d’une constante entière est identique à celle de la sémantique
sur-instrumentée. L’ensemble des t-dépendances instrumentées est vide, de même que l’ensemble
des v-dépendances instrumentées et la valeur simple instrumentée est la constante
entière.
1223.5. SÉMANTIQUE INSTRUMENTÉE
i-num
tΓ
i ⊢
i n →→ [ ∅ | [ ∅ | n ] ]
i-ident
tui = tΓ
i
[x]
tΓ
i ⊢
i x →→ tui
i-letin
tΓ
i ⊢
i
e1 →→ tui
1
tui
1 = [ tdi
1
| u
i
1
]
(x, tui
1
) ⊕ tΓ
i ⊢
i
e2 →→ [ tdi
2
| u
i
2
]
tΓ
i ⊢
i
let x = e1 in e2 →→ [ tdi
1 ∪ tdi
2
| u
i
2
]
i-abstr
tΓ
i ⊢
i λx.e →→ [ ∅ | [ ∅ | < λx.e, ↑
i
ti(tΓ
i
) > ] ]
i-abstr-rec
tΓ
i ⊢
i
recf.x.e →→ [ ∅ | [ ∅ | < recf.x.e, ↑
i
ti(tΓ
i
) > ] ]
i-apply
tΓ
i ⊢
i
e1 →→ [ tdi
1
| [ d
i
1
| < λx.e, Γ
i
1 > ] ]
tΓ
i ⊢
i
e2 →→ tui
2
tui
2 = [ tdi
2
| u
i
2
]
(x, tui
2
)⊕ ↑ti
i
(Γi
1
) ⊢
i
e →→ [ tdi
| [ d
i
| v
i
] ]
tΓ
i ⊢
i
e1 e2 →→ [ tdi
1 ∪ tdi
2 ∪ tdi ∪ d
i
1
| [ d
i
1 ∪ d
i
| v
i
] ]
i-apply-rec
tΓ
i ⊢
i
e1 →→ tui
1
tui
1 = [ tdi
1
| [ d
i
1
| < recf.x.e, Γ
i
1 > ] ]
tΓ
i ⊢
i
e2 →→ tui
2
tui
2 = [ tdi
2
| u
i
2
]
(f, tui
1
) ⊕ (x, tui
2
)⊕ ↑ti
i
(Γi
1
) ⊢
i
e →→ [ tdi
| [ d
i
| v
i
] ]
tΓ
i ⊢
i
e1 e2 →→ [ tdi
1 ∪ tdi
2 ∪ tdi ∪ d
i
1
| [ d
i
1 ∪ d
i
| v
i
] ]
i-if-true
tΓ
i ⊢
i
e →→ [ tdi
| [ d
i
| true ] ] tΓ
i ⊢
i
e1 →→ [ tdi
1
| [ d
i
1
| v
i
1
] ]
tΓ
i ⊢
i
if e then e1 else e2 →→ [ d
i ∪ tdi ∪ tdi
1
| [ d
i ∪ d
i
1
| v
i
1
] ]
i-if-false
tΓ
i ⊢
i
e →→ [ tdi
| [ d
i
| false ] ] tΓ
i ⊢
i
e2 →→ [ tdi
2
| [ d
i
2
| v
i
2
] ]
tΓ
i ⊢
i
if e then e1 else e2 →→ [ d
i ∪ tdi ∪ tdi
2
| [ d
i ∪ d
i
2
| v
i
2
] ]
i-match
tΓ
i ⊢
i
e →→ tui
tui = [ tdi
| [ d
i
| v
i
] ] tui
, p ⊢
i
p
tΓ
i
p
tΓ
i
p ⊕ tΓ
i ⊢
i
e1 →→ [ tdi
1
| [ d
i
1
| v
i
1
] ]
tΓ
i ⊢
i match e with p → e1 | x → e2 →→ [ d
i ∪ tdi ∪ tdi
1
| [ d
i ∪ d
i
1
| v
i
1
] ]
i-match-var
tΓ
i ⊢
i
e →→ tui
tui = [ tdi
| [ d
i
| v
i
] ] tui
, p ⊢
i
p ⊥
(x, tui
) ⊕ tΓ
i ⊢
i
e2 →→ [ tdi
2
| [ d
i
2
| v
i
2
] ]
tΓ
i ⊢
i match e with p → e1 | x → e2 →→ [ d
i ∪ tdi ∪ tdi
2
| [ d
i ∪ d
i
2
| v
i
2
] ]
i-constr-0
tΓ
i ⊢
i C →→ [ ∅ | [ ∅ | C ] ]
i-constr-1
tΓ
i ⊢
i
e →→ [ tdi
| u
i
]
tΓ
i ⊢
i D(e) →→ [ tdi
| [ ∅ | D(u
i
) ] ]
i-couple
tΓ
i ⊢
i
e1 →→ [ tdi
1
| u
i
1
] tΓ
i ⊢
i
e2 →→ [ tdi
2
| u
i
2
]
tΓ
i ⊢
i
(e1, e2) →→ [ tdi
1 ∪ tdi
2
| [ ∅ | (u
i
1
, ui
2
) ] ]
i-annot
tΓ
i ⊢
i
e →→ [ tdi
| [ d
i
| v
i
] ]
tΓ
i ⊢
i
l : e →→ [ tdi
| [ l; d
i
| v
i
] ]
Figure 3.20 – Sémantique instrumentée
im-constr-0
[ tdi
| [ d
i
| C ] ], C ⊢
i
p {}
im-constr-1
[ tdi
| [ d
i
| D(u
i
) ] ], D(x) ⊢
i
p {(x, [ ∅ | u
i
])}
im-couple
[ tdi
| [ d
i
| (u
i
1
, ui
2
) ] ], (x1, x2) ⊢
i
p {(x1, [ ∅ | u
i
1
]); (x2, [ ∅ | u
i
2
])}
im-constr-0-not
p ̸= C
[ tdi
| [ d
i
| C ] ], p ⊢
i
p ⊥
im-constr-1-not
p ̸= D(_)
[ tdi
| [ d
i
| D(u
i
) ] ], p ⊢
i
p ⊥
im-couple-not
p ̸= (_, _)
[ tdi
| [ d
i
| (u
i
1
, ui
2
) ] ], p ⊢
i
p ⊥
Figure 3.21 – Sémantique instrumentée : règles de filtrage
1233.5. SÉMANTIQUE INSTRUMENTÉE
↑
i
ti( [ tdi
| u
i
]) = u
i
↑
i
ti({}) = {} ↑i
ti((x, tui
) ⊕ tΓ
i
) = (x, ↑
i
ti(tui
)) ⊕ ↑i
ti(tΓ
i
)
Figure 3.22 – Valeurs instrumentées : suppression des t-dépendances
i-ident Cette règle est identique à celle de la sémantique sur-instrumentée. L’évaluation
d’un identificateur se fait de manière habituelle, en allant chercher la valeur correspondante
dans l’environnement. Les dépendances de la t-valeur instrumentée retournée sont celles
qui ont été enregistrées dans l’environnement pour cet identificateur.
i-abstr De même que pour la sémantique sur-instrumentée, les t-dépendances et les
v-dépendances sont vides. La valeur simple instrumentée est une fermeture contenant l’environnement
d’évaluation préalablement nettoyé de ses t-dépendances à l’aide de la fonction
↑
i
ti(•) définie en figure 3.22.
i-abstr-rec L’évaluation d’une abstraction récursive suit exactemement le même modèle
que l’évaluation d’une abstraction non-récursive.
i-apply La règle de l’application de la sémantique sur-instrumentée fait partie des règles
avec dépendances indirectes. La règle correspondante de la sémantique instrumentée pré-
sentée ici lui ressemble à une différence près : les dépendances indirectes ne nécessitent pas
de spécification complexe.
En effet, dans la sémantique sur-instrumentée, la fonction de spécification des dépendances
indirectes deps_spec_apply permettait de spécifier les t-dépendances indirectes
td′oi ainsi que les v-dépendances indirectes d
′oi. Cette spécification précisait que la liste des
labels présents dans td′oi (de même pour d
′oi) était la même que la liste des labels présents
dans d
oi
1
(l’ensemble v-dépendances sur-instrumentée de e1) et donnait une spécification
pour chaque fonction d’impact associée à une dépendance indirecte. Dans la sémantique
instrumentée, nous ne considérons plus que les listes de labels et ignorons les fonctions
d’impact. Ainsi, nous pouvons remplacer td′oi et d
′oi par la liste de labels d
i
1
. Le caractère
1243.5. SÉMANTIQUE INSTRUMENTÉE
↑
ti
i
(u
i
) = [ ∅ | u
i
]
↑
ti
i
({}) = {} ↑ti
i
((x, ui
) ⊕ Γ
i
) = (x, ↑
ti
i
(u
i
)) ⊕ ↑ti
i
(Γi
)
Figure 3.23 – Valeurs instrumentées : ajout de t-dépendances
indécidable de cette règle disparaît ainsi, avec la disparition de la fonction de spécification
des dépendances indirectes.
Comme dans la sémantique sur-instrumentée, nous utilisons une fonction ajoutant des
t-dépendances vides à l’environnement encapsulé pour évaluer le corps de la fermeture.
Cette fonction, notée ↑
ti
i
(•) est définie en figure 3.23.
i-rec-apply De la même manière que pour la règle de l’application d’une fonction non
récursive, cette règle reprend la règle de la sémantique sur-instrumentée en remplaçant les
dépendances indirectes par la liste des v-dépendances de la sous-expression e1.
i-letin La règle d’évaluation d’une liaison est identique à la règle correspondante dans
la sémantique sur-instrumentée. Elle évalue e1 puis ajoute une liaison à l’environnement
pour évaluer e2. Le résultat est une t-valeur instrumentée constituée de la concaténation
des t-dépendances des sous-expressions évaluées et de la v-valeur instrumentée de e2.
i-if-true et i-if-false La règle d’évaluation d’une expression conditionnelle contient
des dépendances indirectes. Dans la sémantique sur-instrumentée, cette règle faisait appel
à la fonction de spécification des dépendances indirectes deps_spec_if pour spécifier la
liste des labels des dépendances indirectes ainsi que leurs fonctions d’impact. Cette fonction
n’est plus nécessaire ici puisque la sémantique instrumentée ignore les fonctions d’impact.
Nous reprennons donc la règle de la sémantique sur-instrumentée en remplaçant les tdépendances
indirectes et les v-dépendances indirectes par d
i
, la liste des v-dépendances
de la sous-expression testée.
1253.5. SÉMANTIQUE INSTRUMENTÉE
i-match et i-match-var Comme pour les règles d’évaluation de l’application et de
l’expression conditionnelle, la fonction de spécification des dépendances indirectes n’est
plus nécessaire. Les dépendances indirectes, qui ne sont plus que des listes de labels, sont
données immédiatement par la liste des v-dépendances de la sous-expression filtrée.
i-constr-0, i-constr-1 et i-couple Ces trois règles reprennent à l’identique les
règles de la sémantique sur-instrumentée. Le fait que les dépendances ne contiennent plus
de fonction d’impact n’a aucune influence sur la logique de ces règles. Ceci est dû au fait
qu’aucune dépendance n’est introduite, on ne fait que regrouper les t-dépendances des
éventuelles sous-expressions en les concaténant et on construit la v-valeur instrumentée à
l’aide des v-valeurs instrumentées des sous-expressions. La concaténation des dépendances
a une signification légèrement différente puisqu’elle concatène des listes de labels au lieu
de concaténer des listes associatives.
i-annot La règle concernant une expression annotée est elle aussi similaire à son homologue
dans la sémantique sur-instrumentée. Elle ajoute simplement le label l aux dé-
pendances de la valeur de la sous-expression. La seule différence avec la sémantique surinstrumentée
est qu’elle n’ajoute pas de fonction d’impact.
Règles de filtrage De même que pour la sémantique sur-instrumentée, les règles de
filtrage de la sémantique instrumentée se divisent en deux groupes de trois règles. Le
premier groupe définit un jugement de la forme tui
, p ⊢
i
p Γ
i qui indique qu’une valeur
instrumentée tui
correspond au motif p et retourne le v-environnement instrumenté Γ
i
. Le
second groupe de règles définit un second jugement qui prend la forme suivante : tui
, p ⊢
i
p ⊥.
Ce jugement signifie que la t-valeur instrumentée tui ne correspond pas au motif de filtrage
p. Toutes ces règles d’inférence sont identiques à celle de la sémantique sur-instrumentée,
ce qui se comprend aisément puisque la filtrage ne dépend pas des fonctions d’impact.
1263.5. SÉMANTIQUE INSTRUMENTÉE
3.5.3 Correction
3.5.3.1 Énoncé informel du théorème
La sémantique instrumentée est une simplification de la sémantique sur-instrumentée.
Elle permet de définir une analyse dynamique calculable pour tout programme dont
l’évaluation de référence termine. Pour obtenir une sémantique calculable, nous avons
retiré les fonctions d’impact de toutes les valeurs. En effet, dans les règles d’inférence avec
dépendances indirectes, les fonctions d’impact contenues dans les dépendances indirectes
sont spécifiées par rapport aux fonctions d’impact des prémisses. Ces spécifications ne
permettent pas de construire les fonctions d’impact des dépendances indirectes et il n’est
pas possible de définir un procédé calculatoire permettant de les construire puisque le
problème de l’arrêt est indécidable (cf. section 3.4.1.2).
On remarque qu’il est possible de supprimer les fonctions d’impact de toutes les valeurs
car dans les règles d’inférence de la sémantique sur-instrumentée, les fonctions d’impact
des prémisses ne servent qu’à définir d’autres fonctions d’impact et ne sont pas du tout
utilisées pour le calcul des autres parties de la valeur (la valeur de référence et les listes de
labels).
Pour assurer la correction de la sémantique instrumentée il nous faut donc montrer
que la seule différence entre la valeur d’un programme par la sémantique sur-instrumentée
et sa valeur par la sémantique instrumentée est l’absence de fonction d’impact dans cette
dernière.
3.5.3.2 Illustration par l’exemple
Pour illustrer le fonctionnement de la sémantique instrumentée ainsi que la nécessité
du théorème de correction que nous venons d’énoncer informellement, reprenons les deux
exemples présentés précédemment.
Exemple 1 : évaluation d’un couple
Notons e1 le programme suivant : (3, l :7)
1273.5. SÉMANTIQUE INSTRUMENTÉE
i-couple
i-num
tΓ
i ⊢
i
3 →→ [ ∅ | [ ∅ | 3 ] ]
i-annot
i-num
tΓ
i ⊢
oi 7 →→ [ ∅ | [ ∅ | 7 ] ]
tΓ
i ⊢
i
l : 7 →→ [ ∅ | [ l | 7 ] ]
tΓ
i ⊢
i
(3, l : 7) →→ [ tdi
1 ∪ tdi
2
| [ ∅ | ( [ ∅ | 3 ], [ l | 7 ]) ] ]
Figure 3.24 – Exemple 1 : arbre de dérivation du jugement d’évaluation instrumentée
Nous avions présenté son jugement d’évaluation sur-instrumentée dans le t-environnement
sur-instrumenté vide :
∅ ⊢oi e1 →→ tuoi avec tuoi = [ ∅ | [ ∅ | ( [ ∅ | 3 ], [ (l, id) | 7 ]) ] ]
Intéressons-nous maintenant au jugement d’évaluation instrumenté dans le t-environnent
instrumenté vide. L’arbre d’évaluation correspondant est donné en figure 3.24 et voici
le jugement obtenu :
∅ ⊢i
e1 →→ tui avec tui = [ ∅ | [ ∅ | ( [ ∅ | 3 ], [ l | 7 ]) ] ]
On remarque la disparition de la fonction d’impact associée au label l dans l’ensemble
des v-dépendances de la seconde composante du couple. Outre ce changement,
toutes les autres parties de la valeur instrumentée sont identiques à celles de la valeur
sur-instrumentée car les autres ensembles de dépendances sont vides.
Pour l’évaluation de e1, on obtient donc la même t-valeur instrumentée, que l’on évalue
le programme directement par la sémantique instrumentée ou bien en évaluant le programme
par la sémantique sur-instrumentée puis en retirant toutes les fonctions d’impact.
Exemple 2 : liaison d’une fonction
Notons e2 le programme suivant :
l e t f o =
match o with
| Some ( x ) → x + l1 : 8
| none → d
i n
1283.5. SÉMANTIQUE INSTRUMENTÉE
( f ( Some 18 ) , l2 : 17 )
Nous allons évaluer ce programme par la sémantique sur-instrumentée dans l’environnement
tΓ
oi
2
et par la sémantique instrumentée dans l’environnement tΓ
i
2 =↑
ti
toi(tΓ
oi
2
). On
pose :
tΓ
oi
2 = (d, [ tdoi
d
| [ d
oi
d
| 26 ] ])
avec tdoi
d = (l3, tfd) et d
oi
d = (l4, fd)
L’arbre de dérivation du jugement d’évaluation sur-instrumentée de e2 a été donné dans
les figures 3.12 et 3.13. On rappelle ici le jugement obtenu :
tΓ
oi
2 ⊢
oi e2 →→ [ ∅ | [ ∅ | ( [ (l1, f1) | 26 ], [ (l2, id) | 17 ]) ] ]
avec f1 = fun x ⇒ 18 + x
En ce qui concerne l’évaluation de e2 par la sémantique instrumentée, nous donnons
l’arbre de dérivation dans les figures 3.25 et 3.26. Voici le jugement d’évaluation de e2 par
la sémantique instrumentée :
↑
ti
toi(tΓ
oi
2
) ⊢
i
e2 →→ [ ∅ | [ ∅ | ( [ l1 | 26 ], [ l2 | 17 ]) ] ]
Comme dans l’exemple précédent, on constate que la propriété de correction de la
sémantique instrumentée est également vraie pour l’évaluation de e2. En effet, on obtient
exactement la même valeur en utilisant la sémantique instrumentée ou la sémantique surinstrumentée.
En évaluant e2 par la sémantique sur-instrumentée puis en supprimant toutes
les fonctions d’impact dans la t-valeur sur-instrumentée, on obtient la t-valeur instrumentée
[ ∅ | [ ∅ | ( [ l1 | 26 ], [ l2 | 17 ]) ] ]. Aussi, en supprimant dans un premier
temps toutes les fonctions d’impact dans l’environnement d’évaluation tΓ
oi
2 puis en utilisant
la sémantique instrumentée pour évaluer e2 on obtient la même t-valeur instrumentée
[ ∅ | [ ∅ | ( [ l1 | 26 ], [ l2 | 17 ]) ] ].
1293.5. SÉMANTIQUE INSTRUMENTÉE
i-letin
i-abstr
tΓ
i
2 ⊢
i λo.match o with... →→ [ ∅ | [ ∅ | < λo.match o with..., ↑
i
ti(tΓ
i
2
) > ] ]
1
i-couple
i-apply
i-ident
[ ∅ | [ ∅ | < λo.match o with..., ↑
i
ti(tΓ
i
2
) > ] ] = ((f, ...) ⊕ tΓ
i
2
)[f]
(f, ...) ⊕ tΓ
i
2 ⊢
i
f →→ [ ∅ | [ ∅ | < λo.match o with..., ↑
i
ti(tΓ
i
2
) > ] ]
3
i-constr-1
i-num
(f, ...) ⊕ tΓ
i
2 ⊢
i
18 →→ [ ∅ | [ ∅ | 18 ] ]
4
(f, ...) ⊕ tΓ
i
2 ⊢
i Some 18 →→ [ ∅ | [ ∅ | Some( [ ∅ | 18 ]) ] ]
3
i-match
.
.
. (figure 3.26)
.
.
.
(o, ...)⊕ ↑ti
i
(↑
i
ti(tΓ
i
2
)) ⊢
i match o with Some x → x + l1 : 8 | none → d →→ [ ∅ | [ l1 | 26 ] ]
3
(f, ...) ⊕ tΓ
i
2 ⊢
i
f(Some 18) →→ [ ∅ | [ l1 | 26 ] ]
2
i-annot
i-num
(f, ...) ⊕ tΓ
i
2 ⊢
i
17 →→ [ ∅ | [ ∅ | 17 ] ]
3
(f, ...) ⊕ tΓ
i
2 ⊢
i
l2 : 17 →→ [ ∅ | [ l2 | 17 ] ]
2
(f, ...) ⊕ tΓ
i
2 ⊢
i
(f(Some 18), l2 : 17) →→ [ ∅ | [ ∅ | ( [ l1 | 26 ], [ l2 | 17 ]) ] ]
1
tΓ
i
2 ⊢
i
e2 →→ [ ∅ | [ ∅ | ( [ l1 | 26 ], [ l2 | 17 ]) ] ]
0
Figure 3.25 – Exemple 2 : arbre de dérivation du jugement d’évaluation instrumentée
i-match
i-ident
[ ∅ | [ ∅ | Some( [ ∅ | 18 ]) ] ] = ((o, ...)⊕ ↑ti
i
(↑
i
ti(tΓ
i
2
)))[o]
(o, ...)⊕ ↑ti
i
(↑
i
ti(tΓ
i
2
)) ⊢
i
o →→ [ ∅ | [ ∅ | Some( [ ∅ | 18 ]) ] ]
4
im-constr-1
[ ∅ | [ ∅ | Some( [ ∅ | 18 ]) ] ], Some x ⊢
i
p
(x, [ ∅ | 18 ])
4
i-plus
.
.
.
(x, [ ∅ | 18 ]) ⊕ (o, ...)⊕ ↑ti
i
(↑
i
ti(tΓ
i
2
)) ⊢
i x + l1 : 8 →→ [ ∅ | [ l1 | 26 ] ]
4
(o, ...)⊕ ↑ti
i
(↑
i
ti(tΓ
i
2
)) ⊢
i match o with Some x → x + l1 : 8 | none → d →→ [ ∅ | [ l1 | 26 ] ]
3
Figure 3.26 – Exemple 2 : sous-arbre de dérivation instrumentée du filtrage
1303.5. SÉMANTIQUE INSTRUMENTÉE
3.5.3.3 Énoncé formel du théorème
On veut prouver que la sémantique instrumentée donne les mêmes résultats que la sé-
mantique sur-instrumentée hormis les fonctions d’impact. Si un programme a une valeur
instrumentée, alors on peut être sûr qu’il a aussi une valeur sur-instrumentée et qu’en supprimant
les fonctions d’impact de cette dernière, on obtient la même valeur instrumentée.
On commence par définir formellement la fonction qui supprime toutes les fonctions
d’impact d’une valeur sur-instrumentée pour obtenir la valeur instrumentée correspondante.
Cette fonction est notée ↑
ti
toi(•). On dit que c’est une abstraction des valeurs surinstrumentées
en valeurs instrumentées.
Abstraction d’une t-valeur sur-instrumentée :
↑
ti
toi( [ tdoi | u
oi ]) := [ ↑
ti
toi(tdoi) | ↑i
oi(u
oi) ]
Abstraction d’une v-valeur sur-instrumentée :
↑
i
oi( [ d
oi | v
oi ]) := [ ↑
i
oi(d
oi) | ↑i
oi(v
oi) ]
Abstraction d’un ensemble de t-dépendances sur-instrumenté :
↑
ti
toi(∅) := ∅
↑
ti
toi((l, tf oi);tdoi) := l; ↑
ti
toi(tdoi)
Abstraction d’un ensemble de v-dépendances sur-instrumenté :
↑
i
oi(∅) := ∅
↑
i
oi((l, f oi); d
oi) := l; ↑
i
oi(d
oi)
Abstraction d’une valeur simple sur-instrumentée :
↑
i
oi(n) := n
↑
i
oi(b) := b
↑
i
oi(C) := C
↑
i
oi(D(u
oi)) := D(↑
i
oi(u
oi))
↑
i
oi((u
oi
1
, uoi
2
)) := (↑
i
oi(u
oi
1
), ↑
i
oi(u
oi
2
))
↑
i
oi(< λx.e, Γ
oi >) := < λx.e, ↑
i
oi(Γoi) >
↑
i
oi(< recf.x.e, Γ
oi >) := < recf.x.e, ↑
i
oi(Γoi) >
Abstraction d’un t-environnement sur-instrumenté :
↑
ti
toi(∅) := ∅
↑
ti
toi((x, tuoi) ⊕ tΓ
oi) := (x, ↑
ti
toi(tuoi))⊕ ↑ti
toi(tΓ
oi)
1313.5. SÉMANTIQUE INSTRUMENTÉE
Abstraction d’un v-environnement sur-instrumenté :
↑
i
oi(∅) := ∅
↑
i
oi((x, uoi) ⊕ Γ
oi) := (x, ↑
i
oi(u
oi))⊕ ↑i
oi(Γoi)
Il nous faut également définir formellement la fonction de concrétisation. Cette fonction
transforme toute valeur instrumentée en une valeur sur-instrumentée dont elle est
l’image par la fonction d’abstraction. Pour cela, la fonction de concrétisation doit associer
une fonction d’impact à tout label présent dans un ensemble de dépendances de la valeur
instrumentée. Le choix de ces fonctions d’impact est complètement arbitraire. Cette
fonction de concrétisation est notée ↑
toi
ti (•).
Notons tf oi
dummy et f
oi
dummy une t-fonction d’impact et une v-fonction d’impact quelconques
qui seront introduites lors de la concrétisation des ensembles de dépendances instrumentés.
Concrétisation d’une t-valeur instrumentée :
↑
toi
ti ( [ tdi
| u
i
]) := [ ↑
toi
ti (tdi
) | ↑oi
i
(u
i
) ]
Concrétisation d’une v-valeur instrumentée :
↑
oi
i
( [ d
i
| v
i
]) := [ ↑
oi
i
(d
i
) | ↑oi
i
(v
i
) ]
Concrétisation d’un ensemble de t-dépendances instrumenté :
↑
toi
ti (∅) := ∅
↑
toi
ti (l;tdi
) := (l, tf oi
dummy); ↑
toi
ti (tdi
)
Concrétisation d’un ensemble de v-dépendances instrumenté :
↑
oi
i
(∅) := ∅
↑
oi
i
(l; d
i
) := (l, f oi
dummy); ↑
oi
i
(d
i
)
Concrétisation d’une valeur simple instrumentée :
↑
oi
i
(n) := n
↑
oi
i
(b) := b
↑
oi
i
(C) := C
↑
oi
i
(D(u
i
)) := D(↑
oi
i
(u
i
))
↑
oi
i
((u
i
1
, ui
2
)) := (↑
oi
i
(u
i
1
), ↑
oi
i
(u
i
2
))
↑
oi
i
(< λx.e, Γ
i >) := < λx.e, ↑
oi
i
(Γi
) >
↑
oi
i
(< recf.x.e, Γ
i >) := < recf.x.e, ↑
oi
i
(Γi
) >
1323.5. SÉMANTIQUE INSTRUMENTÉE
Concrétisation d’un t-environnement instrumenté :
↑
toi
ti (∅) := ∅
↑
toi
ti ((x, tui
) ⊕ tΓ
i
) := (x, ↑
toi
ti (tui
))⊕ ↑toi
ti (tΓ
i
)
Concrétisation d’un v-environnement instrumenté :
↑
oi
i
(∅) := ∅
↑
oi
i
((x, ui
) ⊕ Γ
i
) := (x, ↑
oi
i
(u
i
))⊕ ↑oi
i
(Γi
)
Nous pouvons alors énoncer le thèorème de correction :
Théorème 3.5.1 (Correction de la sémantique instrumentée).
∀(tΓ
i
, e, tui
).tΓ
i ⊢
i
e →→ tui
⇒ ∃(tuoi). ↑
toi
ti (tΓ
i
) ⊢
oi e →→ tuoi ∧ tui =↑
ti
toi(tuoi)
Le théorème de correction énonce que s’il existe un jugement pour la sémantique
instrumentée évaluant un programme e dans un t-environnement instrumenté tΓ
i
et retournant
une t-valeur instrumentée tui
, alors il existe un jugement évaluant e dans le
t-environnement sur-instrumenté obtenu en ajoutant des fonctions d’impact quelconques
dans tΓ
i
et en supprimant les fonctions d’impact dans la t-valeur sur-instrumentée obtenue,
on retrouve la t-valeur instrumentée tui
.
La propriété suivante est plus forte que le théorème de correction. Elle permet de
s’affranchir de la fonction de concrétisation qui n’a que peu de signification puisqu’elle ne
fait qu’introduire des fonctions d’impact quelconques dans les ensembles de dépendances.
Il aurait été sans doute plus judicieux de prouver cette propriété à la place du théorème de
correction exprimé ci-dessus. Elle exprime que pour tout t-environnement sur-instrumenté
tΓ
oi, s’il existe un jugement instrumenté pour e dans l’environnement obtenu en supprimant
toutes les fonctions d’impact de tΓ
oi et que ce jugement retourne une t-valeur instrumentée
tui
, alors il existe un jugement sur-instrumenté dans tΓ
oi et en supprimant les fonctions
d’impact dans la t-valeur sur-instrumentée obtenue, on retrouve la t-valeur instrumentée
tui
. Si on spécialise cette propriété en prenant tΓ
oi =↑
toi
ti (tΓ
i
), on retrouve le théorème de
correction exprimé ci-dessus qui est donc un cas particulier. La preuve de cette propriété
pourra faire l’objet d’un travail futur.
∀(tΓ
oi, e, tui
). ↑
ti
toi(tΓ
oi) ⊢
i
e →→ tui
⇒ ∃(tuoi).tΓ
oi ⊢
oi e →→ tuoi ∧ tui =↑
ti
toi(tuoi)
1333.5. SÉMANTIQUE INSTRUMENTÉE
3.5.3.4 Preuve de correction
La preuve est faite par induction sur le jugement de la sémantique instrumentée. Nous
expliquons ici quelques cas pour permettre au lecteur de comprendre facilement la manière
dont la preuve a été faite. La preuve complète est disponible sous forme de code source
Coq.
cas i-num Ce cas est trivial. Dans ce cas, l’expression e n’est autre qu’une constante
numérique n, la t-valeur instrumentée tui ne contient que des dépendances vides et la
valeur simple sur-instrumentée n. Il suffit d’appliquer la règle d’inférence oi-num de la
sémantique sur-instrumentée pour conclure.
cas i-ident Dans ce cas, l’expression e est un identificateur que nous noterons x. Cet
identificateur est présent dans l’environnement tΓ
i associé à la valeur tui
. L’identificateur
x est donc également présent dans l’environnement ↑
toi
ti (tΓ
i
) associé à la valeur ↑
toi
ti (tui
).
Il suffit donc d’appliquer la règle d’inférence oi-ident de la sémantique sur-instrumentée
pour conclure :
↑
toi
ti (tΓ
i
) ⊢
oi x →→↑toi
ti (tui
) ∧ tui =↑
ti
toi(↑
toi
ti (tui
))
cas i-abstr Nous avons le jugement de la sémantique instrumentée suivant :
tΓ
i ⊢
i λx.e →→ [ ∅ | [ ∅ | < λx.e, ↑
i
ti(tΓ
i
) > ] ]
Nous allons montrer que la t-valeur sur-instrumentée suivante convient :
↑
toi
ti ( [ ∅ | [ ∅ | < λx.e, ↑
i
ti(tΓ
i
) > ] ])
qui est égale à [ ∅ | [ ∅ | < λx.e, ↑
oi
i
(↑
i
ti(tΓ
i
)) > ] ]
Il nous faut alors montrer la propriété suivante :
↑
toi
ti (tΓ
i
) ⊢
oi e →→ [ ∅ | [ ∅ | < λx.e, ↑
oi
i
(↑
i
ti(tΓ
i
)) > ] ]
∧ [ ∅ | [ ∅ | < λx.e, ↑
i
ti(tΓ
i
) > ] ] =↑
ti
toi( [ ∅ | [ ∅ | < λx.e, ↑
oi
i
(↑
i
ti(tΓ
i
)) > ] ])
1343.5. SÉMANTIQUE INSTRUMENTÉE
La première partie de la propriété se montre en appliquant la règle d’inférence oi-abstr
et en remarquant que :
↑
oi
i
(↑
i
ti(tΓ
i
)) =↑
oi
toi(↑
toi
ti (tΓ
i
))
La seconde partie de la propriété se montre en remarquant que :
↑
ti
toi( [ ∅ | [ ∅ | < λx.e, ↑
oi
i
(↑
i
ti(tΓ
i
)) > ] ]) = [ ∅ | [ ∅ | < λx.e, ↑
i
oi(↑
oi
i
(↑
i
ti(tΓ
i
))) > ] ]
et ↑
i
ti(tΓ
i
) =↑
i
oi(↑
oi
i
(↑
i
ti(tΓ
i
)))
cas i-apply Nous avons les jugements de la sémantique instrumentée issus de la règle
d’inférence i-apply ainsi que les trois hypothèses d’induction suivantes :
tΓ
i ⊢
i
e1 →→ [ tdi
1
| [ d
i
1
| < λx.e, Γ
i
1 > ] ]
tΓ
i ⊢
i
e2 →→ tui
2
tui
2 = [ tdi
2
| u
i
2
]
(x, tui
2
)⊕ ↑ti
i
(Γi
1
) ⊢
i
e →→ [ tdi
| [ d
i
| v
i
] ]
tΓ
i ⊢
i
e1 e2 →→ [ tdi
1 ∪ tdi
2 ∪ tdi ∪ d
i
1
| [ d
i
1 ∪ d
i
| v
i
] ]
↑
toi
ti (tΓ
i
) ⊢
oi e1 →→ [ tdoi
1
| [ d
oi
1
| < λx.e, Γ
oi
1 > ] ]
∧ [ tdi
1
| [ d
i
1
| < λx.e, Γ
i
1 > ] ] =↑
ti
toi( [ tdoi
1
| [ d
oi
1
| < λx.e, Γ
oi
1 > ] ])
↑
toi
ti (tΓ
i
) ⊢
oi e2 →→ [ tdoi
2
| u
oi
2
]
∧ [ tdi
2
| u
i
2
] =↑
ti
toi( [ tdoi
2
| u
oi
2
])
↑
toi
ti ((x, tui
2
)⊕ ↑ti
i
(Γi
1
)) ⊢
oi e →→ [ tdoi | [ d
oi | v
oi ] ]
∧ [ tdi
| [ d
i
| v
i
] ] =↑
ti
toi( [ tdoi | [ d
oi | v
oi ] ])
Nous souhaitons dériver un jugement d’évaluation sur-instrumentée pour l’expression
e1 e2 en utilisant la règle d’inférence oi-apply ainsi que les jugements d’évaluation de e1 et
de e2 issus des hypothèses d’induction ci-dessus. Il nous manque un jugement d’évaluation
adéquat pour e et une hypothèse concernant la spécification des dépendances indirectes.
Tout d’abord, nous remarquons que la fonction de spécification des dépendances indirectes
deps_spec_apply est une fonction totale (la preuve de cette propriété est assez
1353.5. SÉMANTIQUE INSTRUMENTÉE
simple mais nécessite cependant de faire appel à l’axiome du choix ainsi qu’à l’axiome du
tiers exclu). Il existe donc des ensembles de dépendances td′oi et d
′oi tels que :
deps_spec_apply(tuoi
2
, doi
1
) = (td′oi, d′oi)
En ce qui concerne le jugement d’évaluation sur-instrumentée de e, on reprend celui
qui provient des hypothèses d’induction en l’adaptant. Remarquons tout d’abord qu’il est
possible de réécrire l’environnement d’évaluation ainsi :
↑
toi
ti ((x, tui
2
)⊕ ↑ti
i
(Γi
1
)) = ↑
toi
ti ((x, ↑
ti
toi( [ tdoi
2
| u
oi
2
]))⊕ ↑ti
i
(↑
i
oi(Γoi
1
)))
= (x, ↑
toi
ti (↑
ti
toi( [ tdoi
2
| u
oi
2
])))⊕ ↑toi
ti (↑
ti
i
(↑
i
oi(Γoi
1
)))
= (x, ↑
toi
ti (↑
ti
toi( [ tdoi
2
| u
oi
2
])))⊕ ↑toi
ti (↑
ti
toi(↑
toi
oi (Γoi
1
)))
= ↑
toi
ti (↑
ti
toi((x, [ tdoi
2
| u
oi
2
])⊕ ↑toi
oi (Γoi
1
)))
On a donc le jugement suivant :
↑
toi
ti (↑
ti
toi((x, [ tdoi
2
| u
oi
2
])⊕ ↑toi
oi (Γoi
1
))) ⊢
oi e →→ [ tdoi | [ d
oi | v
oi ] ]
On en déduit qu’il existe un jugement d’évaluation dans le t-environnement sur-instrumenté
(x, [ tdoi
2
| u
oi
2
])⊕ ↑toi
oi (Γoi
1
) qui évalue e en une certaine t-valeur sur-instrumentée
[ td′′oi | [ d
′′oi | v
′′oi ] ] qui vérifie les propriétés suivantes :
(x, [ tdoi
2
| u
oi
2
])⊕ ↑toi
oi (Γoi
1
) ⊢
oi e →→ [ td′′oi | [ d
′′oi | v
′′oi ] ]
↑
ti
toi( [ td′′oi | [ d
′′oi | v
′′oi ] ]) =↑
ti
toi( [ tdoi | [ d
oi | v
oi ] ])
On peut alors appliquer la règle d’inférence oi-apply pour déduire un jugement d’évaluation
sur-instrumentée pour l’expression e1 e2 :
oi-apply
tΓ
oi ⊢
oi e1 →→ [ tdoi
1
| [ d
oi
1
| < λx.e, Γ
oi
1 > ] ]
tΓ
oi ⊢
oi e2 →→ tuoi
2
tuoi
2 = [ tdoi
2
| u
oi
2
]
(x, tuoi
2
)⊕ ↑toi
oi (Γoi
1
) ⊢
oi e →→ [ td′′oi | [ d
′′oi | v
′′oi ] ]
deps_spec_apply(tuoi
2
, doi
1
) = (td′oi, d′oi)
tΓ
oi ⊢
oi e1 e2 →→ [ tdoi
1 ∪ tdoi
2 ∪ td′′oi ∪ td′oi | [ d
′oi ∪ d
′′oi | v
′′oi ] ]
Pour conclure, il ne nous reste plus qu’à prouver qu’en supprimant les fonctions d’impact
de la t-valeur sur-instrumentée de e1 e2, on retrouve sa t-valeur instrumentée :
1363.5. SÉMANTIQUE INSTRUMENTÉE
↑
ti
toi( [ tdoi
1 ∪ tdoi
2 ∪ td′′oi ∪ td′oi | [ d
′oi ∪ d
′′oi | v
′′oi ] ])
= [ ↑
ti
toi(tdoi
1
)∪ ↑ti
toi(tdoi
2
)∪ ↑ti
toi(td′′oi)∪ ↑ti
toi(td′oi) | [ ↑
i
oi(d
′oi)∪ ↑i
oi(d
′′oi) | ↑i
oi(v
′′oi) ] ]
= [ ↑
ti
toi(tdoi
1
)∪ ↑ti
toi(tdoi
2
)∪ ↑ti
toi(tdoi)∪ ↑ti
toi(td′oi) | [ ↑
i
oi(d
′oi)∪ ↑i
oi(d
oi) | ↑i
oi(v
oi) ] ]
= [ tdi
1 ∪ tdi
2 ∪ tdi∪ ↑ti
toi(td′oi) | [ ↑
i
oi(d
′oi) ∪ d
i
| v
i
] ]
= [ tdi
1 ∪ tdi
2 ∪ tdi ∪ d
i
1
| [ d
i
1 ∪ d
i
| v
i
] ]
1373.6. CORRECTION DE L’ANALYSE DYNAMIQUE
3.6 Correction de l’analyse dynamique
Nous souhaitons, dans cette section, établir une preuve de correction de notre analyse
dynamique vis-à-vis de la notion de dépendance établie formellement en section 2.7. Pour
cela, nous avons présenté plus haut plusieurs sémantiques intermédiaires en établissant à
chaque étape la correction de la sémantique présentée par rapport à la précédente. Nous
allons maintenant pouvoir enchaîner les preuves intermédiaires pour établir un théorème
de correction de l’analyse dynamique (la sémantique instrumentée) par rapport à la notion
de dépendances introduite formellement à l’aide de la sémantique avec injection (cf. section
3.3).
3.6.1 Énoncé informel du théorème
Le but de notre analyse est de pouvoir affirmer que si un label n’apparaît pas dans le
résultat de l’analyse d’un programme alors ce label n’a pas d’impact sur l’évaluation de ce
programme.
Autrement dit, après avoir obtenu un jugement d’évaluation instrumentée du programme
à analyser et après avoir vérifié que le label en question n’apparaît pas dans
les dépendances calculées alors on peut affirmer que peu importe l’injection considérée
sur ce label, l’évaluation avec injection de ce programme retournera toujours la valeur de
référence du programme (la valeur du programme lors d’une évaluation sans injection).
3.6.2 Illustration par l’exemple
Exemple 1 : évaluation d’un couple
Notons e1 le programme suivant : (3, l :7)
Son jugement d’évaluation instrumenté dans le t-environnent instrumenté vide est :
∅ ⊢i
e1 →→ [ ∅ | [ ∅ | ( [ ∅ | 3 ], [ l | 7 ]) ] ]
Seul le label l apparaît dans la t-valeur instrumentée de e1. On peut donc affirmer que
1383.6. CORRECTION DE L’ANALYSE DYNAMIQUE
tout autre label n’a pas d’impact sur l’évaluation de e1. On a en effet pour toute injection
(l
′
, vl
′) sur un label l
′ différent de l :
∅ ⊢l
′
:vl
′ e1 →→ (3, 7)
Exemple 2 : liaison d’une fonction
Notons e2 le programme suivant :
l e t f o =
match o with
| Some ( x ) → x + l1 : 8
| none → d + l2 : 8
i n
( f ( Some 18 ) , l3 : 17 )
Voici le jugement d’évaluation instrumentée de e2 dans un t-environnement instrumenté
tΓ
i
2 = (d, [ tdi
d
| [ d
i
d
| 26 ] ]) où d est un identificateur, tdi
d
un ensemble de t-dépendances
et d
i
d
un ensemble de v-dépendances :
tΓ
i
2 ⊢
i
e2 →→ [ ∅ | [ ∅ | ( [ l1 | 26 ], [ l3 | 17 ]) ] ]
Le label l2 n’étant pas présent dans la t-valeur instrumentée du programme e2, nous
pouvons en conclure qu’aucune injection sur l2 n’a d’impact sur l’évaluation de e2 :
∀vl2
.(d, 26) ⊢l2:vl2
e2 →→ (26, 17)
Par contre, les labels l1 et l3 apparaissent dans la t-valeur instrumentée du programme
e2. Il n’est donc pas impossible qu’une injection sur un de ces labels puisse modifier le
comportement du programme, comme le montrent les exemples ci-dessous :
(d, 26) ⊢l1:24 e2 →→ (32, 17)
(d, 26) ⊢l3:613 e2 →→ (26, 613)
1393.6. CORRECTION DE L’ANALYSE DYNAMIQUE
ldna-e-i-num
ldna_in_evali
(l, tΓ
i
, n)
ldna-e-i-constr-0
ldna_in_evali
(l, tΓ
i
, C)
ldna-e-i-constr-1
ldna_in_evali
(l, tΓ
i
, e)
ldna_in_evali
(l, tΓ
i
, D(e))
ldna-e-i-ident
ldna_in_vali
(l, tΓ
i
[x])
ldna_in_evali
(l, tΓ
i
, x)
ldna-e-i-ident-unbound
x ̸∈ support(tΓ
i
)
ldna_in_evali
(l, tΓ
i
, x)
ldna-e-i-abstr
ldna_in_evali
(l, tΓ
i
, e)
ldna_in_evali
(l, tΓ
i
, λx.e)
ldna-e-i-abstr-rec
ldna_in_evali
(l, tΓ
i
, e)
ldna_in_evali
(l, tΓ
i
, recf.x.e)
ldna-e-i-apply
ldna_in_evali
(l, tΓ
i
, e1)
ldna_in_evali
(l, tΓ
i
, e2)
ldna_in_evali
(l, tΓ
i
, e1 e2)
ldna-e-i-if
ldna_in_evali
(l, tΓ
i
, e)
ldna_in_evali
(l, tΓ
i
, e1)
ldna_in_evali
(l, tΓ
i
, e2)
ldna_in_evali
(l, tΓ
i
, if e then e1 else e2)
ldna-e-i-match
ldna_in_evali
(l, tΓ
i
, e)
ldna_in_evali
(l, tΓ
i
, e1)
ldna_in_evali
(l, tΓ
i
, e2)
ldna_in_evali
(l, tΓ
i
, match e with p → e1 | x → e2)
ldna-e-i-annot
l ̸= l
′
ldna_in_evali
(l, tΓ
i
, e)
ldna_in_evali
(l, tΓ
i
, l : e)
ldna-e-i-couple
ldna_in_evali
(l, tΓ
i
, e1)
ldna_in_evali
(l, tΓ
i
, e2)
ldna_in_evali
(l, tΓ
i
,(e1, e2))
ldna-e-i-letin
ldna_in_evali
(l, tΓ
i
, e1)
ldna_in_evali
(l, tΓ
i
, e2)
ldna_in_evali
(l, tΓ
i
, let x = e1 in e2)
Figure 3.27 – Prédicat de non-apparition d’un label lors d’une évaluation instrumentée
3.6.3 Énoncé formel du théorème
Pour énoncer formellement le théorème de correction, il nous faut tout d’abord définir
formellement les notions de non-apparition d’un label dans une valeur instrumentée et
dans un t-environnement instrumenté. On définit pour cela les prédicats ldna_in_evali
,
ldna_in_vali
et ldna_in_envi
. Leur définition est donnée respectivement en figure 3.27,
en figure 3.28 et en figure 3.29.
Théorème 3.6.1 (Correction de l’analyse dynamique).
∀(tΓ
i
, e, tui
, l).
tΓ
i ⊢
i
e →→ tui
⇒ ldna_in_envti(l, tΓ
i
)
⇒ ldna_in_valti(l, tui
)
⇒ ∀vl
. ↑ti(tΓ
i
) ⊢l:vl
e →→↑ti(tui
)
1403.6. CORRECTION DE L’ANALYSE DYNAMIQUE
ldna-v-i-num
ldna_in_vali
(l, n)
ldna-v-i-bool
ldna_in_vali
(l, b)
ldna-v-i-constr-0
ldna_in_vali
(l, C)
ldna-v-i-constr-1
ldna_in_vali
(l, u)
ldna_in_vali
(l, D(u))
ldna-v-i-couple
ldna_in_vali
(l, u1)
ldna_in_vali
(l, u2)
ldna_in_vali
(l,(u1, u2))
ldna-v-i-closure
ldna_in_evali
(l, ↑
ti
i
(Γi
), e)
ldna_in_vali
(l, < λx.e, Γ
i >)
ldna-v-i-closure-rec
ldna_in_evali
(l, ↑
ti
i
(Γi
), e)
ldna_in_vali
(l, < recf.x.e, Γ
i >)
ldna-v-i-v-val
l ̸∈ d
i
ldna_in_vali
(l, vi
)
ldna_in_vali
(l, [ d
i
| v
i
])
ldna-v-i-t-val
l ̸∈ tdi
ldna_in_vali
(l, ui
)
ldna_in_vali
(l, [ tdi
| u
i
])
Figure 3.28 – Prédicat de non-apparition d’un label dans une valeur instrumentée
ldna-env-i-empty
ldna_in_envi
(l, ∅)
ldna-env-i-cons
ldna_in_envi
(l, tui
) ldna_in_envi
(l, tΓ
i
)
ldna_in_envi
(l,(tui
) ⊕ tΓ
i
)
Figure 3.29 – Prédicat de non-apparition d’un label dans un environnement instrumenté
3.6.4 Preuve de correction
La preuve de ce théorème repose sur les théorèmes déjà prouvés précédemment concernant
la correction de la sémantique instrumentée vis-à-vis de la sémantique sur-instrumentée,
la correction de la sémantique sur-instrumentée vis-à-vis de la sémantique avec injection
et la correction de la sémantique avec injection vis-à-vis de la sémantique opérationnelle
avec injection.
L’enchaînement de ces théorèmes permet ainsi d’établir le lien entre la sémantique
instrumentée et la sémantique opérationnelle avec injection.
On part des hypothèses suivantes :
tΓ
i ⊢
i
e →→ tui
ldna_in_envti(l, tΓ
i
)
ldna_in_valti(l, tui
)
1413.6. CORRECTION DE L’ANALYSE DYNAMIQUE
Rappel du théorème de correction de la sémantique instrumentée :
∀(tΓ
i
, e, tui
).tΓ
i ⊢
i
e →→ tui ⇒ ∃(tuoi). ↑
toi
ti (tΓ
i
) ⊢
oi e →→ tuoi ∧ tui =↑
ti
toi(tuoi)
En utilisant le jugement d’évaluation instrumenté et le théorème de correction de la
sémantique instrumentée vis-à-vis de la sémantique sur-instrumentée, on déduit qu’il existe
une t-valeur sur-instrumentée tuoi vérifiant les deux propriétés suivantes :
↑
toi
ti (tΓ
i
) ⊢
oi e →→ tuoi
tui =↑
ti
toi(tuoi)
D’autre part, puisque le label l n’apparaît pas dans le t-environnement instrumenté tΓ
i
,
on en déduit que ce dernier est instanciable et l’environnement instancié est son environnement
de référence. C’est-à-dire qu’il existe un environnement Γ tel que :
Γ =↓
l:vl(tΓ
oi) =↑toi(tΓ
oi) =↑ti(tΓ
i
)
Puisque le label l n’apparaît pas non plus dans la t-valeur instrumentée tui
, cette
dernière est instanciable et la valeur de l’instanciation est sa valeur de référence. Il existe
donc une valeur v telle que :
v =↓
l:vl(tuoi) =↑toi(tuoi) =↑ti(tui
)
Rappel du théorème de correction de la sémantique sur-instrumentée vis-à-vis de la
sémantique avec injection dans un t-environnement sur-instrumenté :
tΓ
oi ⊢
oi e →→ tuoi ⇒ ∀(l, vl).∃Γ.Γ =↓
l:vl(tΓ
oi) ⇒ ∀v.v =↓
l:vl(tuoi) ⇒ tΓ
oi ⊢l:vl
e →→ v
On utilise alors ce théorème pour obtenir :
tΓ
oi ⊢l:vl
e →→ v
Rappel du théorème de correction de la sémantique avec injection dans un t-environnement
sur-instrumenté vis-à-vis de la sémantique opérationnelle avec injection :
∀(tΓ
oi
, Γ, e, v, l, vl), tΓ
oi ⊢l:vl
e →→ v ⇒ Γ = ↓
l:vl(tΓ
oi) ⇒ Γ ⊢l:vl
e →→ v
1423.6. CORRECTION DE L’ANALYSE DYNAMIQUE
On utilise enfin ce théorème pour déduire :
Γ ⊢l:vl
e →→ v
On peut alors conclure en utilisant les égalités ci-dessus concernant Γ et v :
↑ti(tΓ
i
) ⊢l:vl
e →→↑ti(tui
)
1433.6. CORRECTION DE L’ANALYSE DYNAMIQUE
144Chapitre 4
Analyse statique
4.1 Introduction
Ce chapitre a pour but de présenter une analyse statique des dépendances d’un programme
et sa preuve de correction. Cette analyse permettra d’analyser tout programme
écrit dans notre langage et de fournir une approximation raisonnable de ses dépendances.
Elle permettra également d’analyser un programme sans en connaître précisément l’environnement
d’évaluation. Il suffira de spécifier un environnement d’évaluation abstrait
correspondant à un ensemble d’environnements d’évaluation possibles.
La présentation de cette analyse statique fait suite à la présentation dans le chapitre
précédent d’une analyse dynamique. Là où l’analyse dynamique permettait d’analyser un
programme uniquement dans un environnement d’évaluation de référence connu, l’analyse
statique permet de spécifier de façon souple l’environnement d’évaluation.
Bien que la définition de l’analyse statique, que nous appelons sémantique abstraite,
soit indépendante de celle de la sémantique instrumentée ainsi que des autres sémantiques
présentées, sa présentation fait suite à la présentation dans le chapitre précédent de l’analyse
dynamique (sémantique instrumentée). En effet, dans le but de faciliter la preuve de
correction de l’analyse statique, nous définissons la sémantique abstraite comme une interprétation
abstraite de la sémantique instrumentée. De la même manière que dans le chapitre
précédent, nous serons amené à introduire des sémantiques intermédiaires permettant une
preuve par étapes, plus simple qu’une approche directe.
1454.1. INTRODUCTION
Sémantique instrumentée :
Sémantique instrumentée multiple :
Sémantique collectrice :
Sémantique abstraite :
Les flèches correspondent à des fonctions injectives entre les ensembles de valeurs
ou entre les ensembles d'environnements pour visualiser les pertes de précision et
pertes de généralité.
Figure 4.1 – Sémantiques intermédiaires pour l’analyse statique
La figure 4.1 présente une vue globale des différentes sémantiques intermédaires entre
la sémantique instrumentée et la sémantique abstraite.
Ainsi, dans ce chapitre, nous utilisons la sémantique instrumentée comme une sémantique
de base dont nous allons proposer une interprétation abstraite en plusieurs étapes.
La preuve de correction de l’analyse statique sera alors constituée de l’enchaînement des
preuves de correction des différentes sémantiques intermédiaires. La figure 4.2 propose une
représentation graphique de l’enchaînement des différentes preuves de correction.
Tout d’abord, nous présenterons la sémantique instrumentée multiple qui permet d’analyser
un programme simultanément pour un ensemble de t-environnements instrumentés
possibles (cf. section 4.2). Ensuite, nous aborderons la présentation de la sémantique collectrice
(cf. section 4.3), qui permet d’analyser un programme dans un environnement
collecteur dans lequel chaque identificateur est lié à un ensemble de valeurs possibles. En-
fin nous présenterons la définition et la preuve de correction de la sémantique abstraite
(cf. section 4.4), dans laquelle les ensembles de valeurs présents dans la sémantique collectrice
sont remplacés par des valeurs abstraites représentant certains ensembles de valeurs
particuliers.
1464.2. SÉMANTIQUE INSTRUMENTÉE MULTIPLE
La sémantique instrumentée multiple
effectue plusieurs évaluations
instrumentées à la fois.
Si un t-environnement instrumenté
appartient à l'ensemble des
environnements, alors la t-valeur
instrumentée appartient au résultat.
La sémantique collectrice est une
interprétation abstraite de la
sémantique instrumentée multiple.
La sémantique abstraite est une
interprétation abstraite de la
sémantique collectrice.
Ce diagramme montre le lien entre l'analyse statique d'un programme (sémantique abstraite)
et l'analyse dynamique (sémantique instrumentée).
On peut ainsi visualiser l’enchaînement des preuves de correction des 3 sémantiques présentées dans ce chapitre.
Figure 4.2 – Enchaînement des preuves des sémantiques intermédiaires pour l’analyse
statique
4.2 Sémantique instrumentée multiple
La sémantique instrumentée multiple est la première sémantique intermédiaire permettant
de faire le lien entre la sémantique instrumentée et la sémantique abstraite. Il
s’agit d’un outil technique permettant de faciliter la preuve de correction de la sémantique
collectrice qui sera présentée dans la section suivante.
4.2.1 Présentation informelle
Un des buts de notre analyse statique est de pouvoir obtenir en une unique analyse un
résultat contenant une approximation des dépendances d’un programme pour un ensemble
d’évaluations possibles. La sémantique instrumentée multiple franchit ce premier pas en
regroupant dans un jugement d’évaluation unique un ensemble d’évaluations instrumentées
possibles.
4.2.2 Définition formelle
La définition formelle de la sémantique instrumentée multiple ne comprend qu’une seule
règle d’inférence. Celle-ci se base sur la sémantique instrumentée précédemment définie.
1474.2. SÉMANTIQUE INSTRUMENTÉE MULTIPLE
Le point de départ est un ensemble tΓ
im d’environnements d’évaluations instrumentés
possibles. Chacun de ces environnements instrumentés fournit ou non un jugement d’évaluation
instrumenté pour le programme e aboutissant sur une certaine t-valeur instrumentée.
Toutes les t-valeurs instrumentées tui pour lesquelles il existe un jugement d’évaluation
instrumentée du programme e dans un t-environnement instrumenté présent dans tΓ
im
sont regroupées dans un ensemble de t-valeurs instrumentées v
im qui est le résultat du
jugement d’évaluation instrumentée multiple.
Il est utile de remarquer que pour tout ensemble de t-environnements instrumentés et
tout programme e, il existe un jugement d’évaluation instrumentée multiple de ce programme
en un certain ensemble de t-valeurs instrumentées (éventuellement vide).
i-multiple
v
im = {tui
| ∃tΓ
i ∈ tΓ
im. tΓ
i ⊢
i
e →→ tui
}
tΓ
im ⊢
im e →→ v
im
1484.3. SÉMANTIQUE COLLECTRICE
4.3 Sémantique collectrice
La sémantique collectrice a pour but de faire apparaître le calcul des dépendances lors
de l’analyse simultanée d’un ensemble d’évaluations possibles d’un programme. La sémantique
instrumentée multiple permettait d’analyser simultanément un ensemble d’évaluations
possibles d’un programme mais le calcul des dépendances se faisait séparément pour
chacune des évaluations possibles. La sémantique collectrice évalue un programme dans
un environnement collecteur et fournit comme résultat une valeur collectrice. Cette valeur
collectrice comprend des t-dépendances ainsi que des v-dépendances globales (partagées
par toutes les valeurs possibles) ainsi qu’un ensemble de valeurs possibles.
L’intérêt d’une telle sémantique est de séparer le calcul des dépendances du calcul des
valeurs dans chaque environnement possible. Cette étape permettra par la suite de définir
une abstraction du calcul des valeurs en gardant le calcul des dépendances défini ici.
4.3.1 Algèbre des valeurs
4.3.1.1 Valeurs
Une t-valeur collectrice (ou simplement « valeur collectrice » puisqu’ici il n’y a pas
d’ambiguïté, notée tuc
) est composée d’un ensemble de t-dépendances tdc
, d’un ensemble
de v-dépendances d
c ainsi que d’un ensemble de valeurs simples instrumentées vsi
.
tuc
:= [ tdc
| d
c
| vsi
] Valeur collectrice
Les annotations de dépendance tdc
et d
c
sont globales et chaque valeur simple instrumentée
présente dans vsi
contient des annotations de dépendance concernant ses propres soustermes.
Comme dans toutes les autres sémantiques présentées, les ensembles de t-dépendances
ainsi que les ensembles de v-dépendances sont des ensembles nécessairement finis. Par
contre, l’ensemble des valeurs simples instrumentées contenu dans une valeur collectrice
est un ensemble potentiellement infini.
1494.3. SÉMANTIQUE COLLECTRICE
4.3.1.2 Ensembles de dépendances
Dans les valeurs collectrices, les ensembles de t-dépendances (resp. de v-dépendances)
sont simplement des ensembles de labels, comme dans la sémantique instrumentée.
tdc
:= {l1; . . . ; ln} t-dépendances
d
c
:= {l1; . . . ; lm} v-dépendances
4.3.1.3 Environnements
Contrairement à la sémantique instrumentée, il n’y a qu’un seul type d’environnement.
La représentation des fonctions sous forme de valeur collectrice est constituée d’un ensemble
de fermetures instrumentées, contenant chacune un v-environnement instrumenté. Il n’y a
donc pas besoin d’un type d’environnement collecteur spécial pour la représentation des
fonctions.
Un t-environnement collecteur (ou simplement « environnement collecteur » puisqu’ici
il n’y a pas d’ambiguïté) permet de lier chaque identificateur à une t-valeur collectrice.
tΓ
c
:= (x1, tuc
1
); . . . ; (xn, tuc
n
) t-environnement collecteur
4.3.2 Règles d’inférence
La sémantique collectrice évalue une expression dans un environnement collecteur et
fournit une valeur collectrice. Tout comme la sémantique instrumentée multiple, elle fournit
toujours un résultat (pour toute expression et tout environnement collecteur, il existe une
valeur collectrice). La valeur collectrice peut éventuellement contenir un ensemble vide de
valeurs simples, ce qui correspond à une erreur d’évaluation. Le jugement d’évaluation
prend la forme suivante :
tΓ
c ⊢
c
e →→ tuc
c-num La règle d’évaluation d’une constante numérique n’introduit aucune dépendance.
Les t-dépendances ainsi que les v-dépendances sont donc vides. L’ensemble des valeurs
simples instrumentées est réduit à un singleton contenant uniquement la constante numé-
rique correspondant à l’expression.
1504.3. SÉMANTIQUE COLLECTRICE
c-num
tΓ
c ⊢
c n →→ [ ∅ | ∅ | {n} ]
c-ident
tuc = tΓ
c
[x]
tΓ
c ⊢
c x →→ tuc
c-ident-empty
x ̸∈ support(tΓ
c
)
tΓ
c ⊢
c x →→ [ ∅ | ∅ | ∅ ]
c-abstr
vsi = {< λx.e, Γ
i > | Γ
i ∈↑im
c
(tΓ
c
)}
tΓ
c ⊢
c λx.e →→ [ ∅ | ∅ | vsi
]
c-abstr-rec
vsi = {< recf.x.e, Γ
i > | Γ
i ∈↑im
c
(tΓ
c
)}
tΓ
c ⊢
c
recf.x.e →→ [ ∅ | ∅ | vsi
]
c-apply
tΓ
c ⊢
c
e1 →→ [ tdc
1
| d
c
1
| vsi
1
]
tΓ
c ⊢
c
e2 →→ [ tdc
2
| d
c
2
| vsi
2
] v
im = multiple_instrumented_application(tdc
1
, dc
1
, vsi
1
, tdc
2
, dc
2
, vsi
2
)
(∀l. l ∈ tdc ⇔ (∃(tdi
, di
, vi
). l ∈ tdi ∧ [ tdi
| [ d
i
| v
i
] ] ∈ v
im))
(∀l. l ∈ d
c ⇔ (∃(tdi
, di
, vi
). l ∈ d
i ∧ [ tdi
| [ d
i
| v
i
] ] ∈ v
im))
vsi = {v
i
| ∃(tdi
, di
). [ tdi
| [ d
i
| v
i
] ] ∈ v
im}
tΓ
c ⊢
c
e1 e2 →→ [ tdc
| d
c
| vsi
]
c-if-true
tΓ
c ⊢
c
e →→ [ tdc
| d
c
| vsi
]
true ∈ vsi
false ̸∈ vsi
tΓ
c ⊢
c
e1 →→ [ tdc
1
| d
c
1
| vsi
1
] tu′c = [ d
c ∪ tdc ∪ tdc
1
| d
c ∪ d
c
1
| vsi
1
]
tΓ
c ⊢
c
if e then e1 else e2 →→ tu′c
c-if-false
tΓ
c ⊢
c
e →→ [ tdc
| d
c
| vsi
]
false ∈ vsi
true ̸∈ vsi
tΓ
c ⊢
c
e2 →→ [ tdc
2
| d
c
2
| vsi
2
] tu′c = [ d
c ∪ tdc ∪ tdc
2
| d
c ∪ d
c
2
| vsi
2
]
tΓ
c ⊢
c
if e then e1 else e2 →→ tu′c
c-if-unknown
tΓ
c ⊢
c
e →→ [ tdc
| d
c
| vsi
] true ∈ vsi
false ∈ vsi
tΓ
c ⊢
c
e1 →→ [ tdc
1
| d
c
1
| vsi
1
]
tΓ
c ⊢
c
e2 →→ [ tdc
2
| d
c
2
| vsi
2
] tu′c = [ d
c ∪ tdc ∪ tdc
1 ∪ tdc
2
| d
c ∪ d
c
1 ∪ d
c
2
| vsi
1 ∪ vsi
2
]
tΓ
c ⊢
c
if e then e1 else e2 →→ tu′c
c-if-empty
tΓ
c ⊢
c
e →→ [ tdc
| d
c
| vsi
] true ̸∈ vsi
false ̸∈ vsi
tΓ
c ⊢
c
if e then e1 else e2 →→ [ ∅ | ∅ | ∅ ]
c-match
tΓ
c ⊢
c
e →→ tuc
tuc = [ tdc
| d
c
| vsi
] vsi ∩ vsi
matchable ̸= ∅ tuc
, p ⊢
c
p
tΓ
c
p
tΓ
c
p ⊕ tΓ
c ⊢
c
e1 →→ [ tdc
1
| d
c
1
| vsi
1
]
tΓ
c ⊢
c match e with p → e1 | x → e2 →→ [ d
c ∪ tdc ∪ tdc
1
| d
c ∪ d
c
1
| vsi
1
]
c-match-var
tΓ
c ⊢
c
e →→ tuc
tuc = [ tdc
| d
c
| vsi
]
vsi ∩ vsi
matchable ̸= ∅ tuc
, p ⊢
c
p ⊥ (x, tuc
) ⊕ tΓ
c ⊢
c
e2 →→ [ tdc
2
| d
c
2
| vsi
2
]
tΓ
c ⊢
c match e with p → e1 | x → e2 →→ [ d
c ∪ tdc ∪ tdc
2
| d
c ∪ d
c
2
| vsi
2
]
c-match-unknown
tΓ
c ⊢
c
e →→ tuc
tuc = [ tdc
| d
c
| vsi
] vsi ∩ vsi
matchable ̸= ∅
tuc
, p ⊢
c
p? tΓ
c
p
tΓ
c
p ⊕ tΓ
c ⊢
c
e1 →→ [ tdc
1
| d
c
1
| vsi
1
] (x, tuc
) ⊕ tΓ
c ⊢
c
e2 →→ [ tdc
2
| d
c
2
| vsi
2
]
tΓ
c ⊢
c match e with p → e1 | x → e2 →→ [ d
c ∪ tdc ∪ tdc
1 ∪ tdc
2
| d
c ∪ d
c
1 ∪ d
c
2
| vsi
1 ∪ vsi
2
]
c-match-empty
tΓ
c ⊢
c
e →→ tuc
tuc = [ tdc
| d
c
| vsi
] vsi ∩ vsi
matchable = ∅
tΓ
c ⊢
c match e with p → e1 | x → e2 →→ [ ∅ | ∅ | ∅ ]
Figure 4.3 – Sémantique collectrice : première partie
1514.3. SÉMANTIQUE COLLECTRICE
c-constr-0
tΓ
c ⊢
c C →→ [ ∅ | ∅ | {C} ]
c-constr-1
tΓ
c ⊢
c
e →→ [ tdc
| d
c
| vsi
]
tΓ
c ⊢
c D(e) →→ [ tdc
| ∅ | {D( [ d
c
| v
i
]) | v
i ∈ vsi
} ]
c-couple
tΓ
c ⊢
c
e1 →→ [ tdc
1
| d
c
1
| vsi
1
] tΓ
c ⊢
c
e2 →→ [ tdc
2
| d
c
2
| vsi
2
]
tΓ
c ⊢
c
(e1, e2) →→ [ tdc
1 ∪ tdc
2
| ∅ | {( [ d
c
1
| v
i
1
], [ d
c
2
| v
i
2
]) | v
i
1 ∈ vsi
1 ∧ v
i
2 ∈ vsi
2} ]
c-letin
tΓ
c ⊢
c
e1 →→ tuc
1
tuc
1 = [ tdc
1
| d
c
1
| vsi
1
] vsi
1 ̸= ∅ (x, tuc
1
) ⊕ tΓ
c ⊢
c
e2 →→ [ tdc
2
| d
c
2
| vsi
2
]
tΓ
c ⊢
c
let x = e1 in e2 →→ [ tdc
1 ∪ tdc
2
| d
c
2
| vsi
2
]
c-letin-empty
tΓ
c ⊢
c
e1 →→ [ tdc
1
| d
c
1
| ∅ ]
tΓ
c ⊢
c
let x = e1 in e2 →→ [ ∅ | ∅ | ∅ ]
c-annot
tΓ
c ⊢
c
e →→ [ tdc
| d
c
| vsi
]
tΓ
c ⊢
c
l : e →→ [ tdc
| {l} ∪ d
c
| vsi
]
Figure 4.4 – Sémantique collectrice : seconde partie
vsi
matchable = {C|∀C ∈ Constr0
} ∪ {D(u
i
)|∀D ∈ Constr1
, ∀u
i
} ∪ {(u
i
1
, ui
2
)|∀u
i
1
, ∀u
i
2}
cm-constr-0
vsi ∩ vsi
matchable ⊆ {C|∀C ∈ Constr0
}
[ tdc
| d
c
| vsi
], C ⊢
c
p {}
cm-constr-1
vsi ∩ vsi
matchable ⊆ {D(u
i
)|∀D ∈ Constr1
, ∀u
i
}
vs′i = {v
i
|∃d
i
.D( [ d
i
| v
i
]) ∈ vsi
} ∀l.l ∈ d
′c ⇔ ∃d
i
.l ∈ d
i ∧ ∃v
i
.D( [ d
i
| v
i
]) ∈ vsi
[ tdc
| d
c
| vsi
], D(x) ⊢
c
p {(x, [ ∅ | d
′c
| vs′i
])}
cm-couple
vsi ∩ vsi
matchable ⊆ {(u
i
1
, ui
2
)|∀u
i
1
, ∀u
i
2} vsi
1 = {v
i
1
|∃(d
i
1
, di
2
, vi
2
).( [ d
i
1
| v
i
1
], [ d
i
2
| v
i
2
]) ∈ vsi
}
∀l.l ∈ d
c
1 ⇔ ∃d
i
1
.l ∈ d
i
1 ∧ ∃(v
i
1
, di
2
, vi
2
).( [ d
i
1
| v
i
1
], [ d
i
2
| v
i
2
]) ∈ vsi
vsi
2 = {v
i
2
|∃(d
i
1
, vi
1
, di
2
).( [ d
i
1
| v
i
1
], [ d
i
2
| v
i
2
]) ∈ vsi
}
∀l.l ∈ d
c
2 ⇔ ∃d
i
2
.l ∈ d
i
2 ∧ ∃(d
i
1
, vi
1
, vi
2
).( [ d
i
1
| v
i
1
], [ d
i
2
| v
i
2
]) ∈ vsi
[ tdc
| d
c
| vsi
], (x1, x2) ⊢
c
p {(x1, [ ∅ | d
c
1
| vsi
1
]); (x2, [ ∅ | d
c
2
| vsi
2
])}
cm-constr-0-not
vsi ∩ {C|∀C ∈ Constr0
} = ∅
[ tdc
| d
c
| vsi
], C ⊢
c
p ⊥
cm-constr-1-not
vsi ∩ {D(u
i
)|∀D ∈ Constr1
, ∀u
i
} = ∅
[ tdc
| d
c
| vsi
], D(x) ⊢
c
p ⊥
cm-couple-not
vsi ∩ {(u
i
1
, ui
2
)|∀u
i
1
, ∀u
i
2} = ∅
[ tdc
| d
c
| vsi
], (x1, x2) ⊢
c
p ⊥
cm-constr-0-unknown
vsi ∩ vsi
matchable ̸⊆ {C|∀C ∈ Constr0
} vsi ∩ {C|∀C ∈ Constr0
} ̸= ∅
[ tdc
| d
c
| vsi
], C ⊢
c
p? {}
cm-constr-1-unknown
vsi ∩ vsi
matchable ̸⊆ {D(u
i
)|∀D ∈ Constr1
, ∀u
i
}
vsi ∩ {D(u
i
)|∀D ∈ Constr1
, ∀u
i
} ̸= ∅ vs′i = {v
i
|∃d
i
.D( [ d
i
| v
i
]) ∈ vsi ∩ {D(u
i
)|∀D ∈ Constr1
, ∀u
i
}}
∀l.l ∈ d
′c ⇔ ∃d
i
.l ∈ d
i ∧ ∃v
i
.D( [ d
i
| v
i
]) ∈ vsi ∩ {D(u
i
)|∀D ∈ Constr1
, ∀u
i
}
[ tdc
| d
c
| vsi
], D(x) ⊢
c
p? {(x, [ ∅ | d
′c
| vs′i
])}
cm-couple-unknown
vsi ∩ vsi
matchable ̸⊆ {(u
i
1
, ui
2
)|∀u
i
1
, ∀u
i
2}
vsi ∩ {(u
i
1
, ui
2
)|∀u
i
1
, ∀u
i
2} ̸= ∅ vsi
1 = {v
i
1
|∃(d
i
1
, di
2
, vi
2
).( [ d
i
1
| v
i
1
], [ d
i
2
| v
i
2
]) ∈ vsi ∩ {(u
i
1
, ui
2
)|∀u
i
1
, ∀u
i
2}}
∀l.l ∈ d
c
1 ⇔ ∃d
i
1
.l ∈ d
i
1 ∧ ∃(v
i
1
, di
2
, vi
2
).( [ d
i
1
| v
i
1
], [ d
i
2
| v
i
2
]) ∈ vsi ∩ {(u
i
1
, ui
2
)|∀u
i
1
, ∀u
i
2}
vsi
2 = {v
i
2
|∃(d
i
1
, vi
1
, di
2
).( [ d
i
1
| v
i
1
], [ d
i
2
| v
i
2
]) ∈ vsi ∩ {(u
i
1
, ui
2
)|∀u
i
1
, ∀u
i
2}}
∀l.l ∈ d
c
2 ⇔ ∃d
i
2
.l ∈ d
i
2 ∧ ∃(d
i
1
, vi
1
, vi
2
).( [ d
i
1
| v
i
1
], [ d
i
2
| v
i
2
]) ∈ vsi ∩ {(u
i
1
, ui
2
)|∀u
i
1
, ∀u
i
2}
[ tdc
| d
c
| vsi
], (x1, x2) ⊢
c
p? {(x1, [ ∅ | d
c
1
| vsi
1
]); (x2, [ ∅ | d
c
2
| vsi
2
])}
Figure 4.5 – Sémantique collectrice : règles de filtrage
1524.3. SÉMANTIQUE COLLECTRICE
c-ident La règle d’évaluation d’un identificateur est semblable à celle des autres sémantiques.
Elle retourne la valeur associée à cet identificateur dans l’environnement.
c-ident-empty Une nouvelle règle est introduite pour donner une valeur à un identificateur
dans le cas où il n’apparaît pas dans l’environnement. Dans ce cas, l’ensemble
des valeurs simples est vide pour signifier qu’il n’existe aucune évaluation instrumentée
correspondante. Cette règle est nécessaire pour que la sémantique collectrice soit totale,
c’est-à-dire qu’elle fournisse une valeur pour n’importe quelle expression dans n’importe
quel environnement.
c-abstr L’évaluation d’une fonction ne produit aucune dépendance, comme dans les
sémantiques précédentes. En ce qui concerne l’ensemble des valeurs simples instrumentées,
on remarquera qu’il contient un ensemble de fermetures. Puisque l’environnement collecteur
correspond à un ensemble d’environnements instrumentés, on construit une fermeture pour
chaque environnement instrumenté possible. Pour cela, on utilise la fonction ↑
im
c
(•) qui
transforme un t-environnement collecteur en l’ensemble des environnements instrumentés
lui correspondant. Cette fonction est définie en figure 4.8.
c-abstr-rec Selon le même principe que pour la règle c-abstr, on construit une
fermeture récursive pour chaque environnement instrumenté possible.
c-apply La règle de l’application, est plus complexe car il faut construire l’ensemble des
valeurs possibles pour l’application à partir de l’ensemble des valeurs possibles pour e1 et
e2.
Tout d’abord, on évalue e1 et e2 dans l’environnement collecteur pour obtenir leur valeur
collectrice. On construit ensuite l’ensemble des t-valeurs instrumentées de l’application en
utilisant la fonction multiple_instrumented_application avec les valeurs collectrices de
e1 et e2. À partir du résultat de cette fonction, on extrait alors les t-dépendances, les
v-dépendances ainsi que l’ensemble des valeurs simples instrumentées de l’application.
La fonction multiple_instrumented_application a pour but de définir l’ensemble des
1534.3. SÉMANTIQUE COLLECTRICE
multiple_instrumented_application(tdc
1
, dc
1
, vsi
1
, tdc
2
, dc
2
, vsi
2
) =
{ tui
| ( ∃ < λx.e, Γ
i
1 >∈ vsi
1
.
∃v
i
2 ∈ vsi
2
.
∃(tdi
, ti
, vi
).
∃tui
2 = [ tdc
2
| [ d
c
2
| v
i
2
] ].
(x, tui
2
)⊕ ↑ti
i
(Γi
1
) ⊢
i
e →→ [ tdi
| [ d
i
| v
i
] ]
∧ tui = [ tdc
1 ∪ tdc
2 ∪ tdi ∪ d
c
1
| [ d
c
1 ∪ d
i
| v
i
] ] )
∨ ( ∃ < recf.x.e, Γ
i
1 >∈ vsi
1
.
∃v
i
2 ∈ vsi
2
.
∃(tdi
, ti
, vi
).
∃tui
f = [ tdc
1
| [ d
c
1
| < recf.x.e, Γ
i
1 > ] ].
∃tui
2 = [ tdc
2
| [ d
c
2
| v
i
2
] ].
(f, tui
f
) ⊕ (x, tui
2
)⊕ ↑ti
i
(Γi
1
) ⊢
i
e →→ [ tdi
| [ d
i
| v
i
] ]
∧ tui = [ tdc
1 ∪ tdc
2 ∪ tdi ∪ d
c
1
| [ d
c
1 ∪ d
i
| v
i
] ] ) }
Figure 4.6 – Sémantique collectrice : prédicat d’application instrumentée multiple
t-valeurs instrumentées d’une application de fonction à partir de la valeur collectrice de la
fonction et de la valeur collectrice de l’argument. Cet ensemble est défini par un prédicat
d’appartenance. Une t-valeur instrumentée appartient à cet ensemble si il existe une fermeture
(récursive ou non) et une valeur argument telles que l’application de cette fermeture
à cette valeur par la sémantique instrumentée fournit la t-valeur considérée. La définition
formelle de cette fonction est donnée en figure 4.6.
Expressions conditionnelles
Pour l’évaluation collectrice d’une expresssion conditionnelle, on distingue 4 cas :
– pour tout environnement possible, seule la première branche est évaluée
– pour tout environnement possible, seule la seconde branche est évaluée
– selon l’environnement possible, l’une ou l’autre des branches est évaluée
– il n’y a aucune évaluation possible
c-if-true Le premier cas est caractérisé par l’appartenance de la valeur true à l’ensemble
des valeurs possible de la condition (ce qui indique qu’il existe une évaluation
possible passant par la première branche) et la non-appartenance de la valeur f alse (ce
qui indique qu’aucune évaluation possible ne passe par la seconde branche). Dans ce cas,
le calcul des dépendances s’effectue de manière similaire à la sémantique instrumentée.
1544.3. SÉMANTIQUE COLLECTRICE
c-if-false Le second cas est caractérisé de la même manière, par l’appartenance de la
valeur f alse et la non-appartenance de la valeur true à l’ensemble des valeurs possibles
de la condition. Dans ce cas également, le calcul des dépendances s’effectue de manière
similaire à la sémantique instrumentée.
c-if-unknown Le cas incertain, où l’on peut passer parfois par la première branche et
parfois par la seconde branche est caractérisé par l’appartenance des deux valeurs true et
f alse à l’ensemble des valeurs possibles de la condition. Dans ce cas, les dépendances de la
première branche ainsi que celles de la seconde branche se retrouvent toutes les deux dans
les dépendances du résultat. C’est une des sources d’approximation dues à l’incertitude sur
les valeurs de l’environnement.
c-if-empty Le dernier cas de l’évaluation d’une expression conditionnelle correspond
au cas d’erreur. Le programme analysé est incorrect et son analyse par notre calcul de
dépendances n’a pas d’intérêt.
Pattern-matching
Pour l’évaluation collectrice d’un pattern-matching, on distingue 4 cas, homologues aux 4
cas concernant une expression conditionnelle :
– pour tout environnement possible, seule la première branche est évaluée
– pour tout environnement possible, seule la seconde branche est évaluée
– selon l’environnement possible, l’une ou l’autre des branches est évaluée
– il n’y a aucune évaluation possible
Cette distinction en 4 cas suit les sémantiques opérationnelles et instrumentées présentées
plus haut dans lesquelles seules les valeurs « filtrables » aboutissent à une évaluation.
Par exemple, si l’expression filtrée s’évalue en une fermeture ou un nombre, alors aucune
des deux branches du filtrage n’est évaluée, le résultat est donc une erreur lors de l’évaluation.
Il se peut que cette sémantique « théorique » ne corresponde pas à l’implémentation
d’un compilateur en pratique. Ce point est discuté plus en détail en section 2.3.4.
1554.3. SÉMANTIQUE COLLECTRICE
La discrimination entre les 4 cas se fait tout d’abord en vérifiant si la valeur collectrice
contient au moins une valeur filtrable (cf. définition de vsi
matchable en figure 4.5). Si c’est
le cas, on distingue alors trois possibilités à l’aide d’un prédicat de filtrage défini en figure
4.5. Ce prédicat est noté tuc
, p ⊢
c
p
result où tuc
est la valeur collectrice filtrée, p est le filtre
et result peut prendre trois formes différentes. Il s’agit soit d’un environnement collecteur
(si la valeur est toujours filtrée), soit du symbole ⊥ (si la valeur n’est jamais filtrée), soit
du symbole ? accompagné d’un environnement collecteur (si la valeur collectrice contient
à la fois des valeurs filtrées et des valeurs non filtrées).
c-match Le cas où seule la première branche peut être évaluée est caractérisé par deux
conditions. Premièrement, il doit exister des valeurs « filtrables » dans l’ensemble des valeurs
possibles de l’expression filtrée (sinon, aucune branche n’est jamais évaluée). Deuxiè-
mement, la valeur collectrice de l’expression filtrée est filtrée par le motif (ce qui signifie que
toutes les valeurs instrumentées « filtrables » correspondantes sont filtrées par ce motif).
L’environnement collecteur obtenu par le filtrage contient les liaisons des éventuels identificateurs
contenus dans le motif. Chaque identificateur est lié à l’ensemble des valeurs
filtrées par le motif.
c-match-var Le cas où seule la seconde branche peut être évaluée est aussi caractérisé
par la non-vacuité de l’ensemble des valeurs « filtrables » de l’expression filtrée ainsi que
par une seconde condition. La seconde condition impose qu’aucune valeur « filtrable » de
l’expression filtrée ne correspond au motif.
c-match-unknown Comme pour l’évaluation d’une expression conditionnelle, il existe
un cas incertain où on ne peut pas garantir que l’évaluation passera toujours pas la même
branche. On caractérise ce cas par la condition de non-vacuité de l’ensemble des valeurs
« filtrables » de l’expression filtrée et une seconde condition qui impose qu’il existe parmi les
valeurs « filtrables » de l’expression filtrée certaines qui correspondent au motif et d’autres
qui n’y correspondent pas. Dans ce cas, les dépendances des deux branches se retrouvent
dans les dépendances du résultat.
1564.3. SÉMANTIQUE COLLECTRICE
c-match-empty S’il n’existe aucune valeur « filtrable » pour l’expression filtrée alors
on est en présence d’un programme erroné.
c-constr-0 L’évaluation collectrice d’un constructeur constant est similaire à l’évaluation
d’une constante numérique. Les t-dépendances ainsi que les v-dépendances sont donc
vides et l’ensemble des valeurs simples instrumentées est réduit à un singleton contenant
uniquement le constructeur.
c-constr-1 L’évaluation d’un constructeur paramétré n’ajoute pas de dépendances.
Les t-dépendances sont exactement les t-dépendances de la sous-expression et l’ensemble
des v-dépendances est vide. Pour obtenir l’ensembles des valeurs simples instrumentées, on
enrobe avec le constructeur chacune des valeurs simples instrumentées de la sous-expression.
c-couple L’évaluation d’un couple suit le même principe que celle d’un constructeur
paramétré sauf qu’il y a deux sous-expressions.
c-letin La règle d’évaluation d’une liaison est habituelle. On ajoute simplement comme
condition qu’il existe au moins une valeur possible pour e1. Cette condition n’est pas
absolument nécessaire mais permet à l’analyse de fournir un résultat plus précis.
c-letin-empty Dans le cas où il n’existe aucune valeur pour e1, il n’existe pas non
plus de valeur pour l’expression globale.
c-annot La règle d’évaluation d’une expression annotée est la même que dans la sé-
mantique instrumentée. On ajoute simplement le label à l’ensemble des v-dépendances de
l’expression.
4.3.3 Correction
4.3.3.1 Énoncé informel du théorème
On veut montrer que la sémantique collectrice est une interprétation abstraite de
la sémantique instrumentée multiple. C’est-à-dire qu’une évaluation par la sémantique
1574.3. SÉMANTIQUE COLLECTRICE
instrumentée multiple peut être simulée par une évaluation collectrice et que la valeur
ainsi obtenue sera moins précise que celle obtenue par une évaluation directe. Cette simulation
nécessite une conversion de l’environnement et de la valeur retournée définies
formellement à l’aide d’une fonction d’abstraction notée ↑
c
im (•) (cf. figure 4.7) et d’une
fonction de concrétisation notée ↑
im
c
(•) (cf. figure 4.8).
Le lien entre l’évaluation directe par la sémantique instrumentée multiple et l’évaluation
passant par la sémantique collectrice et les fonctions de conversion, est illustré en figure
4.2.
4.3.3.2 Illustration par l’exemple
Pour illustrer le fonctionnement de la sémantique collectrice ainsi que la signification du
théorème de correction que nous venons d’énoncer informellement, examinons un exemple
simple. Nous nous limitons à un exemple très simple car les jugements d’évaluation deviennent
vite volumineux. Rappelons que la sémantique instrumentée multiple ainsi que
la sémantique collectrice n’ont pas pour but d’être utilisées en pratique. Leur rôle est de
simplifier et de rendre modulaire la preuve de correction de l’analyse statique qui, elle, est
utilisable en pratique.
Exemple 1 : évaluation d’un couple
Notons e1 le programme suivant : (x, l1:7)
Nous nous intéressons à l’évaluation instrumentée multiple de ce programme dans un
environnement instrumenté multiple tΓ
im
1
contenant deux t-environnements instrumentés.
tΓ
im
1 = {(x, [ ∅ | [ {l2} | C1 ] ]); (x, [ ∅ | [ {l3} | C2 ] ])}
En évaluant le programme e1 par la sémantique instrumentée multiple, dans l’environnement
instrumenté multiple tΓ
im
1
, on obtient le jugement suivant :
tΓ
im
1 ⊢
im e1 →→ { [ ∅ | [ ∅ | ( [ {l2} | C1 ], [ {l1} | 7 ]) ] ];
[ ∅ | [ ∅ | ( [ {l3} | C2 ], [ {l1} | 7 ]) ] ] }
1584.3. SÉMANTIQUE COLLECTRICE
Nous allons maintenant nous intéresser à l’évaluation du même programme, dans le
même environnement, mais en utilisant l’interprétation abstraite fournie par la sémantique
collectrice.
Commençons par abstraire l’environnement instrumenté multiple tΓ
im
1
en un environnement
collecteur que nous noterons tΓ
c
1
:
↑
c
im(tΓ
im
1
) = (x, [ ∅ | {l2; l3} | {C1; C2} ]) = tΓ
c
1
Nous procédons alors à l’évaluation de e1 dans l’environnement collecteur obtenu après
abstraction :
tΓ
c
1 ⊢
c
e1 →→ [ ∅ | ∅ | { ( [ {l2; l3} | C1 ], [ {l1} | 7 ]);
( [ {l2; l3} | C2 ], [ {l1} | 7 ]) } ]
Nous obtenons enfin la valeur instrumentée multiple correspondante en utilisant la
fonction de concrétisation :
↑
im
c
( [ ∅ | ∅ | { ( [ {l2; l3} | C1 ], [ {l1} | 7 ]);
( [ {l2; l3} | C2 ], [ {l1} | 7 ]) } ])
= { [ ∅ | [ ∅ | ( [ {l2; l3} | C1 ], [ {l1} | 7 ]) ] ];
[ ∅ | [ ∅ | ( [ {l2; l3} | C2 ], [ {l1} | 7 ]) ] ] }
Nous constatons alors que la valeur instrumentée multiple obtenue directement est plus
précise que celle obtenue par l’interprétation abstraite. En effet, cette dernière contient des
dépendances supplémentaires. Formellement, nous avons la relation suivante :
{ [ ∅ | [ ∅ | ( [ {l2} | C1 ], [ {l1} | 7 ]) ] ];
[ ∅ | [ ∅ | ( [ {l3} | C2 ], [ {l1} | 7 ]) ] ] }
⊆im { [ ∅ | [ ∅ | ( [ {l2; l3} | C1 ], [ {l1} | 7 ]) ] ];
[ ∅ | [ ∅ | ( [ {l2; l3} | C2 ], [ {l1} | 7 ]) ] ] }
4.3.3.3 Énoncé formel du théorème
Avant d’énoncer formellement le théorème de correction de la sémantique collectrice, il
nous faut définir formellement quelques notions qui serviront à exprimer le théorème.
Tout d’abord, nous définissons une fonction d’abstraction (cf. figure 4.7) ainsi qu’une
fonction de concrétisation (cf. figure 4.8). La fonction d’abstraction (notée ↑
c
im (•)) permet
de transformer un ensemble de t-environnements instrumentés en un environnement
1594.3. SÉMANTIQUE COLLECTRICE
abstr-im-env-empty
tΓ
im = {{}}
↑
c
im(tΓ
im) = {}
abstr-im-env-cons
tΓ
im = {(x, tui
) ⊕ tΓ
i
| ∀tui ∈ v
im.∀tΓ
i ∈ tΓ
c
} ↑c
im(v
im) = tuc
↑
c
im(tΓ
im) = (x, tuc
)⊕ ↑c
im(tΓ
c
)
abstr-im-val
∀l.l ∈ tdc ⇔ ∃tdi
.l ∈ tdi ∧ ∃u
i
. [ tdi
| u
i
] ∈ v
im
∀l.l ∈ d
c ⇔ ∃d
i
.l ∈ d
i ∧ ∃(tdi
, vi
). [ tdi
| [ d
i
| v
i
] ] ∈ v
im
vsi = {v
i
| ∃(tdi
, di
). [ tdi
| [ d
i
| v
i
] ] ∈ v
im}
↑
c
im(v
im) = [ tdc
| d
c
| vsi
]
Figure 4.7 – Sémantique collectrice : Définition de la fonction d’abstraction
collecteur. La règle d’inférence abstr-im-env-cons se lit ainsi : pour abstraire un environnement
tΓ
im qui est de la forme {(x, tui
) ⊕ tΓ
i
| ∀tui ∈ v
im.∀tΓ
i ∈ tΓ
c} pour une certaine
valeur instrumentée multiple v
im et un certain environnement collecteur tΓ
c
, on construit
une valeur collectrice tuc pour x à partir de v
im et on ajoute cette liaison à l’abstraction de
tΓ
c
. La fonction de concrétisation (notée ↑
im
c
(•)) permet quant à elle de transformer une
valeur collectrice en un ensemble de t-valeurs instrumentées. Nous pouvons alors composer
ces fonctions avec la sémantique collectrice pour établir une simulation de la sémantique
instrumentée multiple. Pour cela, nous commençons par abstraire l’environnement d’évaluation,
puis nous évaluons le programme considéré à l’aide de la sémantique collectrice et
enfin nous concrétisons la valeur collectrice.
Il nous faut ensuite pouvoir comparer la valeur instrumentée multiple obtenue directement
à l’aide de la sémantique instrumentée multiple et celle obtenue en passant par la
sémantique collectrice. Pour cela, nous définissons une relation d’ordre (cf. figure 4.9 et
4.10) sur les valeurs instrumentées multiples. Nous exprimerons alors dans le théorème de
correction que la valeur instrumentée multiple obtenue directement à l’aide de la sémantique
instrumentée multiple est plus petite (ie. plus précise) que celle obtenue en passant
par la sémantique collectrice.
Le théorème de correction de la sémantique collectrice s’exprime alors ainsi :
Théorème 4.3.1 (Correction de la sémantique collectrice).
∀(tΓ
im, e, vim, tuc
, tΓ
c
).
1604.3. SÉMANTIQUE COLLECTRICE
↑
im
c
( [ tdc
| d
c
| vsi
]) := { [ tdc
| [ d
c
| v
i
] ] | v
i ∈ vsi}
↑
im
c
(tΓ
c
) := appendim
c
(tΓ
c
, {})
append-c-im-empty
tΓ
c = {}
appendim
c
(tΓ
c
, tΓ
im) = tΓ
im
append-c-im-cons
tΓ
c = (x, [ tdc
| d
c
| vsi
]) ⊕ tΓ
′c
tΓ
′im = appendim
c
(tΓ
′c
, tΓ
im)
appendim
c
(tΓ
c
, tΓ
im) = {(x, [ tdc
| [ d
c
| v
i
] ]) ⊕ tΓ
i
| v
i ∈ vsi
, tΓ
i ∈ tΓ
′im}
Figure 4.8 – Sémantique collectrice : Définition de la fonction de concrétisation
le-td
∀l ∈ tdi
1
. l ∈ tdi
2
tdi
1 ⊆ tdi
2
le-d
∀l ∈ d
i
1
. l ∈ d
i
2
d
i
1 ⊆ d
i
2
le-ti-val
tdi
1 ⊆ tdi
2 u
i
1 ⊆
i u
i
2
[ tdi
1
| u
i
1
] ⊆
i
[ tdi
2
| u
i
2
]
le-i-val
d
i
1 ⊆ d
i
2
v
i
1 ⊆
i
v
i
2
[ d
i
1
| v
i
1
] ⊆
i
[ d
i
2
| v
i
2
]
le-i-val-num
n ⊆
i n
le-i-val-bool
b ⊆
i
b
le-i-val-constr0
C ⊆
i C
le-i-val-constr1
u
i
1 ⊆
i u
i
2
D(u
i
1
) ⊆
i D(u
i
2
)
le-i-val-couple
u
i
1 ⊆
i u
i
2 u
′i
1 ⊆
i u
′i
2
(u
i
1
, u′i
1
) ⊆
i
(u
i
2
, u′i
2
)
le-i-val-closure
Γ
i
1 ⊆
i Γ
i
2
< λx.e, Γ
i
1 >⊆
i< λx.e, Γ
i
2 >)
le-i-val-rec-closure
Γ
i
1 ⊆
i Γ
i
2
< recf.x.e, Γ
i
1 >⊆
i< recf.x.e, Γ
i
2 >)
le-i-env-empty
{} ⊆i
{}
le-i-env-cons
u
i
1 ⊆
i u
i
2 Γ
i
1 ⊆
i Γ
i
2
(x, ui
1
) ⊕ Γ
i
1 ⊆
i
(x, ui
2
) ⊕ Γ
i
2
le-ti-env-empty
{} ⊆i
{}
le-ti-env-cons
tui
1 ⊆
i u
i
2
tΓ
i
1 ⊆
i
tΓ
i
2
(x, tui
1
) ⊕ tΓ
i
1 ⊆
i
(x, tui
2
) ⊕ tΓ
i
2
Figure 4.9 – Relation d’ordre sur les valeurs et environnements instrumentés
le-im-val
∀tui
1 ∈ v
im
1
. ∃tui
2 ∈ v
im
2
. tui
1 ⊆
i
tui
2
v
im
1 ⊆
im v
im
2
le-im-env
∀tΓ
i
1 ∈ tΓ
im
1
. ∃tΓ
i
2 ∈ tΓ
im
2
. tΓ
i
1 ⊆
i
tΓ
i
2
tΓ
im
1 ⊆
im tΓ
im
2
Figure 4.10 – Relation d’ordre sur les valeurs et environnements instrumentés multiples
1614.3. SÉMANTIQUE COLLECTRICE
tΓ
im ⊢
im e →→ v
im ⇒ tΓ
c =↑
c
im(tΓ
im) ⇒ tΓ
c ⊢
c
e →→ tuc ⇒ v
im ⊆im ↑
im
c
(tuc
)
4.3.3.4 Preuve de correction
La preuve est faite par induction sur le jugement de la sémantique collectrice. On obtient
alors 20 cas à prouver, suivant les 20 règles d’inférences de la sémantique collectrice. Nous
expliquons ici quelques cas pour permettre au lecteur de comprendre plus facilement la
manière dont la preuve a été faite. La preuve complète est disponible sous forme de code
source Coq.
cas c-num Ce cas est trivial, tout comme le cas c-constr-0. Nous allons tout de même
l’expliquer rapidement pour illustrer le principe de la preuve qui est également utilisé dans
les autres cas.
Nous avons les hypothèses suivantes :
tΓ
im ⊢
im n →→ v
im
tΓ
c =↑
c
im(tΓ
im)
tΓ
c ⊢
c n →→ [ ∅ | ∅ | {n} ]
On veut alors prouver la propriété ci-dessous :
v
im ⊆
im↑
im
c
( [ ∅ | ∅ | {n} ])
La règle de la sémantique instrumentée multiple i-multiple nous fait appliquer la
règle i-num de la sémantique instrumentée. Pour tout environnement tΓ
i ∈ tΓ
im, cette
dernière nous donne la valeur [ ∅ | [ ∅ | n ] ]. On en déduit que v
im est le singleton
{ [ ∅ | [ ∅ | n ] ]}. D’autre part, la concrétisation de la valeur collectrice vaut :
↑
im
c
( [ ∅ | ∅ | {n} ]) = { [ ∅ | [ ∅ | n ] ]}. Pour conclure, il nous suffit donc de
prouver la propriété ci-dessous qui est évidente puisque la relation d’ordre sur les valeurs
instrumentées multiples est réflexive.
{ [ ∅ | [ ∅ | n ] ]} ⊆im { [ ∅ | [ ∅ | n ] ]}
1624.3. SÉMANTIQUE COLLECTRICE
cas c-constr-1 Ce cas est légèrement plus complexe que le précédent du fait que
l’expression évaluée possède une sous-expression.
Nous avons les hypothèses suivantes dont une hypothèse d’induction :
i-multiple
v
im = {tui
| ∃tΓ
i ∈ tΓ
im. tΓ
i ⊢
i D(e) →→ tui
}
tΓ
im ⊢
im D(e) →→ v
im
tΓ
c =↑
c
im(tΓ
im)
c-constr-1
tΓ
c ⊢
c
e →→ [ tdc
| d
c
| vsi
]
tΓ
c ⊢
c D(e) →→ [ tdc
| ∅ | {D( [ d
c
| v
i
]) | v
i ∈ vsi
} ]
i-multiple
v
′im = {tui
| ∃tΓ
i ∈ tΓ
im. tΓ
i ⊢
i
e →→ tui
}
tΓ
im ⊢
im e →→ v
′im
v
′im ⊆
im↑
im
c
( [ tdc
| d
c
| vsi
])
Nous devons alors montrer cette propriété :
v
im ⊆
im↑
im
c
( [ tdc
| ∅ | {D( [ d
c
| v
i
]) | v
i ∈ vsi
} ])
Pour cela, nous montrons que pour un élément quelconque de tui ∈ v
im, il existe un
élément plus grand dans ↑
im
c
( [ tdc
| ∅ | {D( [ d
c
| v
i
]) | v
i ∈ vsi} ]).
Puisque tui appartient à v
im, il est issu d’un jugement d’évaluation instrumentée déduit
de la règle d’inférence ci-dessous (en notant tui = [ tdi
| [ ∅ | D(u
i
) ] ]) :
i-constr-1
tΓ
i ⊢
i
e →→ [ tdi
| u
i
]
tΓ
i ⊢
i D(e) →→ [ tdi
| [ ∅ | D(u
i
) ] ]
Nous avons alors [ tdi
| u
i
] ∈ v
′im et nous pouvons donc appliquer notre hypothèse
d’induction pour en déduire qu’il existe une valeur [ tdi
2
| [ d
i
2
| v
i
2
] ] telle que :
[ tdi
2
| [ d
i
2
| v
i
2
] ] ∈↑im
c
( [ tdc
| d
c
| vsi
])
[ tdi
| u
i
] ⊆
i
[ tdi
2
| [ d
i
2
| v
i
2
] ]
De la première de ces deux propriétés, nous déduisons que tdi
2 = tdc
, d
i
2 = d
c
et v
i
2 ∈ vsi
.
Nous pouvons alors construire la valeur [ tdc
| [ ∅ | D( [ d
c
| v
i
2
]) ] ] et montrer qu’elle
1634.3. SÉMANTIQUE COLLECTRICE
respecte les conditions nous permettant de conclure :
[ tdc
| [ ∅ | D( [ d
c
| v
i
2
]) ] ] ∈↑im
c
( [ tdc
| ∅ | {D( [ d
c
| v
i
]) | v
i ∈ vsi
} ])
[ tdi
| [ ∅ | D(u
i
) ] ] ⊆
i
[ tdc
| [ ∅ | D( [ d
c
| v
i
2
]) ] ]
cas c-ident Une des particularités de la sémantique collectrice est d’avoir des règles
d’inférence donnant une sémantique à un programme erroné, par exemple un programme
évalué dans un environnement où certains identificateurs libres ne sont pas définis. Nous
présentons donc la preuve des cas c-ident et c-ident-empty pour se rendre compte de
la manière dont sont traités les cas d’erreur.
Commençons par le cas c-ident. Nous avons les hypothèses suivantes :
i-multiple
v
im = {tui
| ∃tΓ
i ∈ tΓ
im. tΓ
i ⊢
i x →→ tui
}
tΓ
im ⊢
im x →→ v
im tΓ
c =↑
c
im(tΓ
im)
c-ident
tuc = tΓ
c
[x]
tΓ
c ⊢
c x →→ tuc
Nous devons alors montrer cette proriété :
v
im ⊆
im ↑
im
c
(tuc
)
Pour cela, supposons que nous avons une t-valeur instrumentée tui ∈ v
im et montrons
qu’il existe une t-valeur instrumentée tui
2 ∈ ↑im
c
(tuc
) telle que tui ⊆i
tui
2
. Puisque tui ∈ v
im,
il existe un t-environnement instrumenté tΓ
i ∈ tΓ
im tel que :
i-ident
tui = tΓ
i
[x]
tΓ
i ⊢
i x →→ tui
D’après la définition des fonctions d’abstraction et de concrétisation, nous pouvons
déduire qu’il existe une valeur tui
2 ∈↑im
c
(tΓ
c
[x]) telle que tui ⊆i
tui
2
, ce qui nous permet de
conclure.
cas c-ident-empty Dans ce cas, nous avons les hypothèses suivantes :
i-multiple
v
im = {tui
| ∃tΓ
i ∈ tΓ
im. tΓ
i ⊢
i x →→ tui
}
tΓ
im ⊢
im x →→ v
im tΓ
c =↑
c
im(tΓ
im)
c-ident-empty
x ̸∈ support(tΓ
c
)
tΓ
c ⊢
c x →→ [ ∅ | ∅ | ∅ ]
1644.3. SÉMANTIQUE COLLECTRICE
Et nous devons montrer :
v
im ⊆
im ↑
im
c
( [ ∅ | ∅ | ∅ ])
Puisque ↑
im
c
( [ ∅ | ∅ | ∅ ]) = ∅, il nous faut montrer que v
im = ∅. D’après la définition
de la fonction d’abstraction, les identificateurs présents dans n’importe quel élément de
tΓ
im sont les mêmes que ceux présents dans tΓ
c
. Ainsi, puisque l’identificateur x n’est pas
présent dans l’environnement tΓ
c
, alors il n’est présent dans aucun t-environnement instrumenté
appartenant à tΓ
im. Il n’existe alors aucune règle d’inférence permettant d’évaluer
l’expression x dans un t-environnement instrumenté appartenant à tΓ
im. On peut donc
conclure puisque v
im = ∅.
cas c-apply Le cas de l’application est un des cas les plus complexes en raison de la
complexité des règles d’inférence correspondantes dans la sémantique collectrice et dans
la sémantique instrumentée. Nous avons à notre disposition les hypothèses de l’énoncé du
thèorème ainsi que deux hypothèses d’induction, correspondant aux deux sous-termes de
l’expression :
i-multiple
v
im = {tui
| ∃tΓ
i ∈ tΓ
im. tΓ
i ⊢
i
e1 e2 →→ tui
}
tΓ
im ⊢
im e1 e2 →→ v
im
tΓ
c =↑
c
im(tΓ
im)
c-apply
tΓ
c ⊢
c
e1 →→ [ tdc
1
| d
c
1
| vsi
1
] tΓ
c ⊢
c
e2 →→ [ tdc
2
| d
c
2
| vsi
2
]
v
′im = multiple_instrumented_application(tdc
1
, dc
1
, vsi
1
, tdc
2
, dc
2
, vsi
2
)
(∀l. l ∈ tdc ⇔ (∃(tdi
, di
, vi
). l ∈ tdi ∧ [ tdi
| [ d
i
| v
i
] ] ∈ v
′im))
(∀l. l ∈ d
c ⇔ (∃(tdi
, di
, vi
). l ∈ d
i ∧ [ tdi
| [ d
i
| v
i
] ] ∈ v
′im))
vsi = {v
i
| ∃(tdi
, di
). [ tdi
| [ d
i
| v
i
] ] ∈ v
′im}
tΓ
c ⊢
c
e1 e2 →→ [ tdc
| d
c
| vsi
]
i-multiple
v
im
1 = {tui
| ∃tΓ
i ∈ tΓ
im. tΓ
i ⊢
i
e1 →→ tui
}
tΓ
im ⊢
im e1 →→ v
im
1
i-multiple
v
im
2 = {tui
| ∃tΓ
i ∈ tΓ
im. tΓ
i ⊢
i
e2 →→ tui
}
tΓ
im ⊢
im e1 →→ v
im
2
v
im
1 ⊆
im ↑
im
c
( [ tdc
1
| d
c
1
| vsi
1
])
v
im
2 ⊆
im ↑
im
c
( [ tdc
2
| d
c
2
| vsi
2
])
1654.3. SÉMANTIQUE COLLECTRICE
Et nous devons montrer :
v
im ⊆
im ↑
im
c
( [ tdc
| d
c
| vsi
])
Pour cela, supposons que nous avons une t-valeur instrumentée tui ∈ v
im et montrons
qu’il existe une t-valeur instrumentée tu′i ∈ ↑im
c
( [ tdc
| d
c
| vsi
]) telle que tui ⊆i
tu′i
.
Puisque tui ∈ v
im, il existe une évaluation instrumentée de l’expression e1 e2 en la t-valeur
instrumentée tui dans un certain t-environnement instrumenté tΓ
i ∈ tΓ
im. Il y a alors deux
cas possibles selon que la règle d’inférence de cette évaluation est i-apply ou i-apply-rec.
– cas i-apply
i-apply
tΓ
i ⊢
i
e1 →→ [ tdi
1
| [ d
i
1
| < λx.e, Γ
i
1 > ] ]
tΓ
i ⊢
i
e2 →→ tui
2
tui
2 = [ tdi
2
| u
i
2
]
(x, tui
2
)⊕ ↑ti
i
(Γi
1
) ⊢
i
e →→ [ tdi
| [ d
i
| v
i
] ]
tΓ
i ⊢
i
e1 e2 →→ [ tdi
1 ∪ tdi
2 ∪ tdi ∪ d
i
1
| [ d
i
1 ∪ d
i
| v
i
] ]
tui = [ tdi
1 ∪ tdi
2 ∪ tdi ∪ d
i
1
| [ d
i
1 ∪ d
i
| v
i
] ]
D’après nos hypothèses d’induction, nous savons qu’il existe des t-valeurs instrumentées
tu′i
1 ∈ ↑im
c
( [ tdc
1
| d
c
1
| vsi
1
]) et tu′i
2 ∈ ↑im
c
( [ tdc
2
| d
c
2
| vsi
2
]) vérifiant les
propriétés suivantes :
[ tdi
1
| [ d
i
1
| < λx.e, Γ
i
1 > ] ] ⊆i
tu′i
1
tui
2 ⊆i
tu′i
2
Puisque tu′i
1 ∈ ↑im
c
( [ tdc
1
| d
c
1
| vsi
1
]), nous savons qu’il existe une valeur simple
instrumentée v
′i
1
telle que tu′i
1 = [ tdc
1
| [ d
c
1
| v
′i
1
] ] et v
′i
1 ∈ vsi
1
. De même, il existe
une valeur simple instrumentée v
′i
2
telle que tu′i
2 = [ tdc
2
| [ d
c
2
| v
′i
2
] ] et v
′i
2 ∈ vsi
2
.
Nous déplions alors la définition de la relation d’ordre pour obtenir les relations
suivantes (en notant tui
2 = [ tdi
2
| [ d
i
2
| v
i
2
] ]) :
tdi
1 ⊆i
tdc
1
d
i
1 ⊆i d
c
1 < λx.e, Γ
i
1 >⊆i v
′i
1
v
′i
1 =< λx.e, Γ
′i
1 > Γ
i
1 ⊆i Γ
′i
1
tdi
2 ⊆i
tdc
2
d
i
2 ⊆i d
c
2
v
i
2 ⊆i v
′i
2
1664.3. SÉMANTIQUE COLLECTRICE
Nous utilisons le lemme intermédiaire suivant pour déduire un jugement d’évaluation
instrumentée de l’expression e dans l’environnement (x, tu′i
2
)⊕ ↑ti
i
(Γ′i
1
). La preuve de
ce lemme a été réalisée en Coq (Lemma ival_of_in_le_itenv). Voici son énoncé :
∀(Γi
, Γ
′i
, e, tui
).(Γi
1 ⊆
i Γ
′i
1
) ⇒ (tΓ
i ⊢
i
e →→ tui
) ⇒ ∃tu′i
.(tΓ
′i ⊢
i
e →→ tu′i
)∧(tui ⊆
i
tu′i
)
Nous obtenons alors une t-valeur instrumentée [ td′i
| [ d
′i
| v
′i
] ] vérifiant le
jugement d’évaluation instrumentée suivant et la relation d’ordre suivante :
(x, tu′i
2
)⊕ ↑ti
i
(Γ′i
1
) ⊢
i
e →→ [ td′i
| [ d
′i
| v
′i
] ]
[ tdi
| [ d
i
| v
i
] ] ⊆
i
[ td′i
| [ d
′i
| v
′i
] ]
Pour conclure le cas i-apply, il nous faut maintenant montrer que la t-valeur instrumentée
[ tdc
| [ d
c
| v
′i
] ] convient. C’est à dire qu’elle vérifie les deux
propriétés suivantes : [ tdc
| [ d
c
| v
′i
] ] ∈ ↑im
c
( [ tdc
| d
c
| vsi
]) et
tui ⊆i
[ tdc
| [ d
c
| v
′i
] ].
Commençons par la première des deux propriétés à prouver. En dépliant la définition
de la fonction de concrétisation, la propriété à prouver se réduit à v
′i ∈ vsi
. Pour cela,
il nous faut montrer ∃(tdi
, di
). [ tdi
| [ d
i
| v
′i
] ] ∈ v
′im. Nous allons donc montrer
que [ tdc
1∪tdc
2∪td′i∪d
c
1
| [ d
c
1∪d
′i
| v
′i
] ] ∈ v
′im. Nous déplions ensuite la valeur de
v
′im ainsi que celle de multiple_instrumented_application(tdc
1
, dc
1
, vsi
1
, tdc
2
, dc
2
, vsi
2
).
Ainsi, la propriété à montrer devient :
[ tdc
1 ∪ tdc
2 ∪ td′i ∪ d
c
1
| [ d
c
1 ∪ d
′i
| v
′i
] ] ∈
{ tui
| ( ∃ < λx.e, Γ
i
1 >∈ vsi
1
.
∃v
i
2 ∈ vsi
2
.
∃(tdi
, ti
, vi
).
∃tui
2 = [ tdc
2
| [ d
c
2
| v
i
2
] ].
(x, tui
2
)⊕ ↑ti
i
(Γi
1
) ⊢
i
e →→ [ tdi
| [ d
i
| v
i
] ]
∧ tui = [ tdc
1 ∪ tdc
2 ∪ tdi ∪ d
c
1
| [ d
c
1 ∪ d
i
| v
i
] ] )
∨ ( ∃ < recf.x.e, Γ
i
1 >∈ vsi
1
.
∃v
i
2 ∈ vsi
2
.
∃(tdi
, ti
, vi
).
∃tui
f = [ tdc
1
| [ d
c
1
| < recf.x.e, Γ
i
1 > ] ].
∃tui
2 = [ tdc
2
| [ d
c
2
| v
i
2
] ].
(f, tui
f
) ⊕ (x, tui
2
)⊕ ↑ti
i
(Γi
1
) ⊢
i
e →→ [ tdi
| [ d
i
| v
i
] ]
∧ tui = [ tdc
1 ∪ tdc
2 ∪ tdi ∪ d
c
1
| [ d
c
1 ∪ d
i
| v
i
] ] ) }
1674.3. SÉMANTIQUE COLLECTRICE
Puisque nous sommes dans le cas de l’application d’une fonction non récursive, c’est
la première partie de la disjonction que nous allons prouver. Nous prouvons cette
propriété à l’aide des propriétés suivantes déjà prouvées plus haut :
< λx.e, Γ
′i
1 >∈ vsi
1
v
′i
2 ∈ vsi
2
(x, tu′i
2
)⊕ ↑ti
i
(Γ′i
1
) ⊢
i
e →→ [ td′i
| [ d
′i
| v
′i
] ]
Montrons maintenant la seconde propriété qui nous permettra de conclure. Après
avoir déplié la valeur de tui
elle exprime ainsi :
[ tdi
1 ∪ tdi
2 ∪ tdi ∪ d
i
1
| [ d
i
1 ∪ d
i
| v
i
] ] ⊆
i
[ tdc
| [ d
c
| v
′i
] ]
En dépliant la définition de la relation d’ordre, nous obtenons les trois propriétés
suivantes à prouver :
∀l ∈ (tdi
1 ∪ tdi
2 ∪ tdi ∪ d
i
1
).l ∈ tdc ∀l ∈ (d
i
1 ∪ d
i
).l ∈ d
c v
i ⊆i v
′i
Prouvons la propriété concernant les t-dépendances.
Soit l ∈ (tdi
1 ∪ tdi
2 ∪ tdi ∪ d
i
1
). D’après la définition de tdc
, il nous faut montrer que
∃(tdi
, di
, vi
). l ∈ tdi ∧ [ tdi
| [ d
i
| v
i
] ] ∈ v
′im. Nous savons déjà que [ tdc
1 ∪ tdc
2 ∪
td′i ∪ d
c
1
| [ d
c
1 ∪ d
′i
| v
′i
] ] ∈ v
′im Montrons donc que l ∈ (tdc
1 ∪ tdc
2 ∪ td′i ∪ d
c
1
).
Cette propriété est issue des relations d’ordre déjà montrées et de la compatibilité de
la relation d’ordre avec la concaténation 1
. Les relations concernées sont : tdi
1 ⊆i
tdc
1
,
tdi
2 ⊆i
tdc
2
, [ tdi
| [ d
i
| v
i
] ] ⊆i
[ td′i
| [ d
′i
| v
′i
] ] et d
i
1 ⊆i d
c
1
.
Prouvons la propriété concernant les v-dépendances.
Soit l ∈ (d
i
1∪d
i
). D’après la définition de d
c
, il nous faut montrer que ∃(tdi
, di
, vi
). l ∈
d
i ∧ [ tdi
| [ d
i
| v
i
] ] ∈ v
′im. Nous savons déjà que [ tdc
1 ∪ tdc
2 ∪ td′i ∪ d
c
1
|
[ d
c
1 ∪ d
′i
| v
′i
] ] ∈ v
′im Montrons donc que l ∈ (d
c
1 ∪ d
′i
). Cette propriété est issue
des relations d’ordre déjà montrées et de la compatibilité de la relation d’ordre avec
la concaténation 2
. Les relations concernées sont : d
i
1 ⊆i d
c
1
et [ tdi
| [ d
i
| v
i
] ] ⊆i
[ td′i
| [ d
′i
| v
′i
] ].
1. ∀(td1, td2, td′
1, td′
2). (td1 ⊆ td′
1) ∧ (td2 ⊆ td′
2) ⇒ td1 ∪ td2 ⊆ td′
1 ∪ td′
2
2. ∀(d1, d2, d′
1, d′
2). (d1 ⊆ d
′
1) ∧ (d2 ⊆ d
′
2) ⇒ d1 ∪ d2 ⊆ d
′
1 ∪ d
′
2
1684.3. SÉMANTIQUE COLLECTRICE
La propriété concernant les valeurs simples instrumentées vient directement de la
relation [ tdi
| [ d
i
| v
i
] ] ⊆i
[ td′i
| [ d
′i
| v
′i
] ] prouvée précédemment.
Le cas i-apply est donc complètement prouvé.
– cas i-apply-rec
i-apply-rec
tΓ
i ⊢
i
e1 →→ tui
1
tui
1 = [ tdi
1
| [ d
i
1
| < recf.x.e, Γ
i
1 > ] ]
tΓ
i ⊢
i
e2 →→ tui
2
tui
2 = [ tdi
2
| u
i
2
]
(f, tui
1
) ⊕ (x, tui
2
)⊕ ↑ti
i
(Γi
1
) ⊢
i
e →→ [ tdi
| [ d
i
| v
i
] ]
tΓ
i ⊢
i
e1 e2 →→ [ tdi
1 ∪ tdi
2 ∪ tdi ∪ d
i
1
| [ d
i
1 ∪ d
i
| v
i
] ]
tui = [ tdi
1 ∪ tdi
2 ∪ tdi ∪ d
i
1
| [ d
i
1 ∪ d
i
| v
i
] ]
D’après nos hypothèses d’induction, nous savons qu’il existe des t-valeurs instrumentées
tu′i
1 ∈ ↑im
c
( [ tdc
1
| d
c
1
| vsi
1
]) et tu′i
2 ∈ ↑im
c
( [ tdc
2
| d
c
2
| vsi
2
]) vérifiant les
propriétés suivantes :
[ tdi
1
| [ d
i
1
| < recf.x.e, Γ
i
1 > ] ] ⊆i
tu′i
1
tui
2 ⊆i
tu′i
2
Puisque tu′i
1 ∈ ↑im
c
( [ tdc
1
| d
c
1
| vsi
1
]), nous savons qu’il existe une valeur simple
instrumentée v
′i
1
telle que tu′i
1 = [ tdc
1
| [ d
c
1
| v
′i
1
] ] et v
′i
1 ∈ vsi
1
. De même, il existe
une valeur simple instrumentée v
′i
2
telle que tu′i
2 = [ tdc
2
| [ d
c
2
| v
′i
2
] ] et v
′i
2 ∈ vsi
2
.
Nous déplions alors la définition de la relation d’ordre pour obtenir les relations
suivantes (en notant tui
2 = [ tdi
2
| [ d
i
2
| v
i
2
] ]) :
tdi
1 ⊆i
tdc
1
d
i
1 ⊆i d
c
1 < recf.x.e, Γ
i
1 >⊆i v
′i
1
v
′i
1 =< recf.x.e, Γ
′i
1 > Γ
i
1 ⊆i Γ
′i
1
tdi
2 ⊆i
tdc
2
d
i
2 ⊆i d
c
2
v
i
2 ⊆i v
′i
2
Comme dans le cas précédent, nous utilisons le lemme intermédiaire suivant pour
déduire un jugement d’évaluation instrumentée de l’expression e dans l’environnement
(f, tu′i
1
) ⊕ (x, tu′i
2
)⊕ ↑ti
i
(Γ′i
1
). La preuve de ce lemme a été réalisée en Coq
(Lemma ival_of_in_le_itenv). Voici son énoncé :
∀(Γi
, Γ
′i
, e, tui
).(Γi
1 ⊆
i Γ
′i
1
) ⇒ (tΓ
i ⊢
i
e →→ tui
) ⇒ ∃tu′i
.(tΓ
′i ⊢
i
e →→ tu′i
)∧(tui ⊆
i
tu′i
)
1694.3. SÉMANTIQUE COLLECTRICE
Nous obtenons alors une t-valeur instrumentée [ td′i
| [ d
′i
| v
′i
] ] vérifiant le
jugement d’évaluation instrumentée suivant et la relation d’ordre suivante :
(f, tu′i
1
) ⊕ (x, tu′i
2
)⊕ ↑ti
i
(Γ′i
1
) ⊢
i
e →→ [ td′i
| [ d
′i
| v
′i
] ]
[ tdi
| [ d
i
| v
i
] ] ⊆
i
[ td′i
| [ d
′i
| v
′i
] ]
Pour conclure le cas i-apply-rec, il nous faut maintenant montrer que la t-valeur
instrumentée [ tdc
| [ d
c
| v
′i
] ] convient. C’est à dire qu’elle vérifie les deux
propriétés suivantes : [ tdc
| [ d
c
| v
′i
] ] ∈ ↑im
c
( [ tdc
| d
c
| vsi
]) et
tui ⊆i
[ tdc
| [ d
c
| v
′i
] ].
Commençons par la première des deux propriétés à prouver. En dépliant la définition
de la fonction de concrétisation, la propriété à prouver se réduit à v
′i ∈ vsi
. Pour cela,
il nous faut montrer ∃(tdi
, di
). [ tdi
| [ d
i
| v
′i
] ] ∈ v
′im. Nous allons donc montrer
que [ tdc
1∪tdc
2∪td′i∪d
c
1
| [ d
c
1∪d
′i
| v
′i
] ] ∈ v
′im. Nous déplions ensuite la valeur de
v
′im ainsi que celle de multiple_instrumented_application(tdc
1
, dc
1
, vsi
1
, tdc
2
, dc
2
, vsi
2
).
Ainsi, la propriété à montrer devient :
[ tdc
1 ∪ tdc
2 ∪ td′i ∪ d
c
1
| [ d
c
1 ∪ d
′i
| v
′i
] ] ∈
{ tui
| ( ∃ < λx.e, Γ
i
1 >∈ vsi
1
.
∃v
i
2 ∈ vsi
2
.
∃(tdi
, ti
, vi
).
∃tui
2 = [ tdc
2
| [ d
c
2
| v
i
2
] ].
(x, tui
2
)⊕ ↑ti
i
(Γi
1
) ⊢
i
e →→ [ tdi
| [ d
i
| v
i
] ]
∧ tui = [ tdc
1 ∪ tdc
2 ∪ tdi ∪ d
c
1
| [ d
c
1 ∪ d
i
| v
i
] ] )
∨ ( ∃ < recf.x.e, Γ
i
1 >∈ vsi
1
.
∃v
i
2 ∈ vsi
2
.
∃(tdi
, ti
, vi
).
∃tui
f = [ tdc
1
| [ d
c
1
| < recf.x.e, Γ
i
1 > ] ].
∃tui
2 = [ tdc
2
| [ d
c
2
| v
i
2
] ].
(f, tui
f
) ⊕ (x, tui
2
)⊕ ↑ti
i
(Γi
1
) ⊢
i
e →→ [ tdi
| [ d
i
| v
i
] ]
∧ tui = [ tdc
1 ∪ tdc
2 ∪ tdi ∪ d
c
1
| [ d
c
1 ∪ d
i
| v
i
] ] ) }
Puisque nous sommes dans le cas de l’application d’une fonction récursive, c’est
la seconde partie de la disjonction que nous allons prouver. Nous prouvons cette
propriété à l’aide des propriétés suivantes déjà prouvées plus haut :
< recf.x.e, Γ
′i
1 >∈ vsi
1
1704.3. SÉMANTIQUE COLLECTRICE
v
′i
2 ∈ vsi
2
(f, tu′i
1
) ⊕ (x, tu′i
2
)⊕ ↑ti
i
(Γ′i
1
) ⊢
i
e →→ [ td′i
| [ d
′i
| v
′i
] ]
Montrons maintenant la seconde propriété qui nous permettra de conclure. Après
avoir déplié la valeur de tui
elle exprime ainsi :
[ tdi
1 ∪ tdi
2 ∪ tdi ∪ d
i
1
| [ d
i
1 ∪ d
i
| v
i
] ] ⊆
i
[ tdc
| [ d
c
| v
′i
] ]
En dépliant la définition de la relation d’ordre, nous obtenons les trois propriétés
suivantes à prouver :
∀l ∈ (tdi
1 ∪ tdi
2 ∪ tdi ∪ d
i
1
).l ∈ tdc ∀l ∈ (d
i
1 ∪ d
i
).l ∈ d
c v
i ⊆i v
′i
Nous procédons de la même manière que dans le cas i-apply.
Prouvons la propriété concernant les t-dépendances.
Soit l ∈ (tdi
1 ∪ tdi
2 ∪ tdi ∪ d
i
1
). D’après la définition de tdc
, il nous faut montrer que
∃(tdi
, di
, vi
). l ∈ tdi ∧ [ tdi
| [ d
i
| v
i
] ] ∈ v
′im. Nous savons déjà que [ tdc
1 ∪ tdc
2 ∪
td′i ∪ d
c
1
| [ d
c
1 ∪ d
′i
| v
′i
] ] ∈ v
′im Montrons donc que l ∈ (tdc
1 ∪ tdc
2 ∪ td′i ∪ d
c
1
).
Cette propriété est issue des relations d’ordre déjà montrées et de la compatibilité de
la relation d’ordre avec la concaténation. Les relations concernées sont : tdi
1 ⊆i
tdc
1
,
tdi
2 ⊆i
tdc
2
, [ tdi
| [ d
i
| v
i
] ] ⊆i
[ td′i
| [ d
′i
| v
′i
] ] et d
i
1 ⊆i d
c
1
.
Prouvons la propriété concernant les v-dépendances.
Soit l ∈ (d
i
1∪d
i
). D’après la définition de d
c
, il nous faut montrer que ∃(tdi
, di
, vi
). l ∈
d
i ∧ [ tdi
| [ d
i
| v
i
] ] ∈ v
′im. Nous savons déjà que [ tdc
1 ∪ tdc
2 ∪ td′i ∪ d
c
1
|
[ d
c
1 ∪ d
′i
| v
′i
] ] ∈ v
′im. Montrons donc que l ∈ (d
c
1 ∪ d
′i
). Cette propriété est issue
des relations d’ordre déjà montrées et de la compatibilité de la relation d’ordre avec
la concaténation. Les relations concernées sont : d
i
1 ⊆i d
c
1
et [ tdi
| [ d
i
| v
i
] ] ⊆i
[ td′i
| [ d
′i
| v
′i
] ].
La propriété concernant les valeurs simples instrumentées vient directement de la
relation [ tdi
| [ d
i
| v
i
] ] ⊆i
[ td′i
| [ d
′i
| v
′i
] ] prouvée précédemment.
Le cas i-apply-rec est donc complètement prouvé.
Ce qui conclut le cas c-apply.
1714.4. SÉMANTIQUE ABSTRAITE
4.4 Sémantique abstraite
Ce chapitre présente enfin la sémantique abstraite, qui constitue ce que nous appelons
notre analyse statique. Le but de cette analyse est de calculer les dépendances de n’importe
quel programme écrit dans notre langage et de permettre à l’utilisateur de spécifier les
environnements d’évaluation possibles avec souplesse.
La sémantique abstraite est une interprétation abstraite de la sémantique collectrice
présentée dans le chapitre précédent. La sémantique collectrice avait permis de faire ressortir
le calcul des dépendances lors d’un ensemble d’évaluations instrumentées simultanées.
Cependant, cette sémantique n’était pas calculable compte tenu des ensembles de
valeurs simples instrumentées éventuellement infinis présents dans les valeurs collectrices.
La sémantique abstraite vient résoudre ce problème de non-calculabilité en remplaçant ces
ensembles de valeurs simples par un nombre fini de valeurs simples abstraites.
Elle présente deux intérets par rapport à la sémantique instrumentée. D’une part, elle
permet d’analyser un programme sans avoir besoin de connaître avec précision son environnement
d’évaluation. En effet, un environnement abstrait permet de représenter un
ensemble d’environnements instrumentés. Et une seule évaluation abstraite permet de simuler
un ensemble d’évaluations instrumentées possibles. D’autre part, cette sémantique
termine pour n’importe quel programme à évaluer et n’importe quel environnement d’évaluation.
On est donc certain d’obtenir un résultat en un temps fini. En effet, dans la
sémantique instrumentée, deux cas pouvaient provoquer la non-terminaison de l’évaluation
d’un programme : une erreur de type ou une boucle infinie. La sémantique abstraite permet
de résoudre ces deux cas. Le cas d’une erreur de type résulte en une valeur spéciale qui
indique qu’il n’existe aucune évaluation instrumentée correspondante. Le cas de la boucle
infinie est résolu à l’aide d’une sur-approximation des dépendances et de la valeur de retour
qui permet de stopper les appels récursifs infinis.
4.4.1 Algèbre des valeurs
La sémantique abstraite manipule des valeurs abstraites. Ces valeurs constituent une
abstraction des valeurs collectrices. Les fonctions d’abstraction et de concrétisation sont
1724.4. SÉMANTIQUE ABSTRAITE
définies formellement en figures 4.11, 4.12 et 4.13.
4.4.1.1 Valeurs
Une t-valeur abstraite (notée tua
) est composée d’un ensemble de t-dépendances tda
et
d’une v-valeur abstraite u
a
.
tua
:= [ tda
| u
a
] Valeur avec annotation de t-dépendance
Une v-valeur abstraite (notée u
a
) est composée d’un ensemble de v-dépendances d
a
et
d’une valeur simple abstraite v
a
.
u
a
:= [ d
a
| v
a
] Valeur avec annotation de v-dépendance
Enfin, une valeur simple abstraite (notée v
a
) est une valeur simple dont les sous-termes
sont des v-valeurs abstraites u
a
.
v
a
:= C | D(u
a
) | (u
a
1
, ua
2
) Constructeurs de données
< λx.e, Γ
a > Fermeture
< recf.x.e, Γ
a > Fermeture récursive
⊥ Aucune valeur
⊤ Valeur quelconque
On peut remarquer qu’il n’existe pas de valeur abstraite permettant de représenter une
constante numérique ou bien un booléen. En effet, toute valeur numérique ou booléenne
est abstraite en la valeur ⊤, comme on peut le constater dans la définition formelle de la
fonction d’abstraction (cf. figures 4.11 et 4.12). En pratique, cette approximation permet à
l’analyse de gagner en rapidité sans trop perdre en précision. En effet, les valeurs numériques
et booléennes sont rarement connues statiquement, lors de l’analyse d’un programme. Il
aurait été possible d’abstraire ces valeurs de façon moins brutale (par exemple à l’aide
de listes d’intervalles représentant les valeurs possibles), cependant, ce n’est pas l’objet
de notre analyse et il sera tout à fait possible de proposer par la suite une interprétation
abstraite plus fine de la sémantique collectrice.
4.4.1.2 Ensembles de dépendances
Dans les valeurs abstraites, les ensembles de t-dépendances (resp. de v-dépendances)
sont des ensembles de labels, comme dans les sémantiques instrumentée et collectrice.
1734.4. SÉMANTIQUE ABSTRAITE
Abstraction d’une t-valeur collectrice :
abstr-c-val
↑
a
im({ [ d
c
| v
i
] | v
i ∈ vsi
}) = u
a
↑
a
c
( [ tdc
| d
c
| vsi
]) = [ tda
| u
a
]
Abstraction d’un ensemble de v-valeurs instrumentées :
abstr-im-a-val-empty
↑
a
im(∅) = [ ∅ | ⊥ ]
abstr-im-a-val-contr-0
usi ⊂ { [ d
i
| C ] | ∀d
i
} usi
̸= ∅ d_of_usi
(usi
) = d
a
↑
a
im(usi
) = [ d
a
| C ]
abstr-im-a-val-contr-1
usi ⊂ { [ d
i
| D(u
i
) ] | ∀(d
i
, ui
)} usi
̸= ∅
d_of_usi
(usi
) = d
a
↑
a
im({u
i
| ∃d
i
. [ d
i
| D(u
i
) ] ∈ usi
}) = u
a
↑
a
im(usi
) = [ d
a
| D(u
a
) ]
abstr-im-a-val-couple
usi ⊂ { [ d
i
| (u
i
1
, ui
2
) ] | ∀(d
i
, ui
1
, ui
2
)} usi
̸= ∅ d_of_usi
(usi
) = d
a
↑
a
im({u
i
1
| ∃(d
i
, ui
2
). [ d
i
| (u
i
1
, ui
2
) ] ∈ usi
}) = u
a
1
↑
a
im({u
i
2
| ∃(d
i
, ui
1
). [ d
i
| (u
i
1
, ui
2
) ] ∈ usi
}) = u
a
2
↑
a
im(usi
) = [ d
a
| (u
a
1
, ua
2
) ]
abstr-im-a-val-closure
usi ⊂ { [ d
i
| < λx.e, Γ
i > ] | ∀(d
i
, Γ
i
)} usi
̸= ∅
d_of_usi
(usi
) = d
a
↑
a
im({Γ
i
| ∃d
i
. [ d
i
| < λx.e, Γ
i > ] ∈ usi
}) = Γa
↑
a
im(usi
) = [ d
a
| < λx.e, Γ
a > ]
abstr-im-a-val-closure-rec
usi ⊂ { [ d
i
| < recf.x.e, Γ
i > ] | ∀(d
i
, Γ
i
)} usi
̸= ∅
d_of_usi
(usi
) = d
a
↑
a
im({Γ
i
| ∃d
i
. [ d
i
| < recf.x.e, Γ
i > ] ∈ usi
}) = Γa
↑
a
im(usi
) = [ d
a
| < recf.x.e, Γ
a > ]
abstr-im-a-val-unknown
usi
̸= ∅ usi
̸⊂ { [ d
i
| C ] | ∀d
i
}
usi
̸⊂ { [ d
i
| D(u
i
) ] | ∀(d
i
, ui
)} usi
̸⊂ { [ d
i
| (u
i
1
, ui
2
) ] | ∀(d
i
, ui
1
, ui
2
)}
usi
̸⊂ { [ d
i
| < λx.e, Γ
i > ] | ∀(d
i
, Γ
i
)} usi
̸⊂ { [ d
i
| < recf.x.e, Γ
i > ] | ∀(d
i
, Γ
i
)}
↑
a
im(usi
) = [ ∅ | ⊤ ]
Figure 4.11 – Sémantique abstraite : Définition de la fonction d’abstraction (partie 1/2)
1744.4. SÉMANTIQUE ABSTRAITE
Récolte des v-dépendances d’un ensemble de v-valeurs instrumentées :
abstr-im-da
∀l.l ∈ d
a ⇔ ∃(d
i
, vi
).l ∈ d
i ∧ [ d
i
| v
i
] ∈ usi
d_of_usi
(usi
) = d
a
Abstraction d’un ensemble de v-environnements instrumentés :
abstr-im-a-env-empty
↑
a
im({}) = {}
abstr-im-a-env-cons
Γ
im = {(x, ui
) ⊕ Γ
i
| ∀u
i ∈ usi
.Γ
i ∈ Γ
′im}
↑
a
im(usi
) = u
a
↑
a
im(Γ′im) = Γa
↑
a
im(Γim) = (x, ua
) ⊕ Γ
a
Abstraction d’un t-environnement collecteur :
abstr-c-a-env-empty
↑
a
c
({}) = {}
abstr-c-a-env-cons
↑
a
c
(tuc
) = tua
↑
a
c
(tΓ
c
) = tΓ
a
↑
a
c
((x, tuc
) ⊕ tΓ
c
) = (x, tua
) ⊕ tΓ
a
Figure 4.12 – Sémantique abstraite : Définition de la fonction d’abstraction (partie 2/2)
Concrétisation d’une t-valeur abstraite :
↑
c
a
( [ tda
| [ d
a
| v
a
] ]) := [ tda
| d
a
| ↑c
a
(v
a
) ]
Concrétisation d’une valeur simple abstraite :
↑
c
a
(C) := {C}
↑
c
a
(D( [ d
a
| v
a
])) := {D( [ d
a
| v
i
]) | ∀v
i ∈↑c
a
(v
a
)}
↑
c
a
(( [ d
a
1
| v
a
1
], [ d
a
2
| v
a
2
])) := {( [ d
a
1
| v
i
1
], [ d
a
2
| v
i
2
]) | ∀v
i
1 ∈ ↑c
a
(v
a
1
).∀v
i
2 ∈ ↑c
a
(v
a
2
)}
↑
c
a
(< λx.e, Γ
a >) := {< λx.e, Γ
i > | ∀Γ
i ∈↑c
a
(Γa
)}
↑
c
a
(< recf.x.e, Γ
a >) := {< recf.x.e, Γ
i > | ∀Γ
i ∈↑c
a
(Γa
)}
↑
c
a
(⊥) := ∅
↑
c
a
(⊤) := {v
i
| ∀v
i ∈ Vi}
Concrétisation d’un v-environnement abstrait :
↑
c
a
({}) := {{}}
↑
c
a
((x, [ d
a
| v
a
]) ⊕ Γ
a
) := {(x, [ d
a
| v
i
]) ⊕ Γ
i
| ∀v
i ∈↑c
a
(v
a
).∀Γ
i ∈↑c
a
(Γa
)}
Concrétisation d’un t-environnement abstrait :
↑
c
a
({}) := {{}}
↑
c
a
((x, tua
) ⊕ tΓ
a
) := (x, ↑
c
a
(tua
))⊕ ↑c
a
(tΓ
a
)
Figure 4.13 – Sémantique abstraite : Définition de la fonction de concrétisation
1754.4. SÉMANTIQUE ABSTRAITE
tda
:= {l1; . . . ; ln} t-dépendances
d
a
:= {l1; . . . ; lm} v-dépendances
4.4.1.3 Environnements
De même que pour la sémantique sur-instrumentée et la sémantique instrumentée, on
distingue 2 types d’environnements.
Un t-environnement abstrait permet de lier chaque identificateur à une t-valeur abstraite.
Ce sont les environnements abstraits dans lesquels sont évalués les programmes.
tΓ
a
:= (x1, tua
1
); . . . ; (xn, tua
n
) t-environnement abstrait
Un v-environnement abstrait permet de lier chaque identificateur à une v-valeur abstraite.
Ce sont les environnements abstraite encapsulés dans les fermetures (récursives ou
non).
Γ
a
:= (x1, ua
1
); . . . ; (xn, ua
n
) v-environnement abstraite
4.4.2 Règles d’inférence
Le jugement d’évaluation de la sémantique abstraite prend la forme suivante :
tΓ
a ⊢
a
e →→ tua
où e est l’expression évaluée, tΓ
a
le t-environnement abstrait dans lequel on effectue l’évaluation
et tua
la t-valeur abstraite résultat de l’évaluation.
Ce jugement est défini par les règles d’inférence présentées en figure 4.14.
Des explications détaillées de ces règles sont données ci-dessous.
a-num La règle d’évaluation d’une constante entière est semblable à celle de la sémantique
instrumentée. L’ensemble des t-dépendances instrumentées est vide, de même que
l’ensemble des v-dépendances instrumentées. Par contre, en ce qui concerne la valeur simple
abstraite, elle vaut ⊤ qui est une abstraction de la constante entière.
1764.4. SÉMANTIQUE ABSTRAITE
a-num
tΓ
a ⊢
a n →→ [ ∅ | [ ∅ | ⊤ ] ]
a-ident
tua = tΓ
a
[x]
tΓ
a ⊢
a x →→ tua
a-ident-empty
x ̸∈ support(tΓ
a
)
tΓ
a ⊢
a x →→ [ ∅ | [ ∅ | ⊥ ] ]
a-abstr
tΓ
a ⊢
a λx.e →→ [ ∅ | [ ∅ | < λx.e, ↑
a
ta(tΓ
a
) > ] ]
a-abstr-rec
tΓ
a ⊢
a
recf.x.e →→ [ ∅ | [ ∅ | < recf.x.e, ↑
a
ta(tΓ
a
) > ] ]
a-letin
tΓ
a ⊢
a
e1 →→ tua
1
tua
1 = [ tda
1
| u
a
1
]
(x, tua
1
) ⊕ tΓ
a ⊢
a
e2 →→ [ tda
2
| u
a
2
]
tΓ
a ⊢
a
let x = e1 in e2 →→ [ tda
1 ∪ tda
2
| u
a
2
]
a-apply
tΓ
a ⊢
a
e1 →→ [ tda
1
| [ d
a
1
| < λx.e, Γ
a
1 > ] ]
tΓ
a ⊢
a
e2 →→ tua
2
tua
2 = [ tda
2
| u
a
2
]
(x, tua
2
)⊕ ↑ta
a (Γa
1
) ⊢
a
e →→ [ tda
| [ d
a
| v
a
] ]
tΓ
a ⊢
a
e1 e2 →→ [ tda
1 ∪ tda
2 ∪ tda ∪ d
a
1
| [ d
a
1 ∪ d
a
| v
a
] ]
a-apply-rec
tΓ
a ⊢
a
e1 →→ [ tda
1
| [ d
a
1
| < recf.x.e, Γ
a
1 > ] ] tua
1 = [ tda
1
| [ d_of_freevars(recf.x.e, tΓ
a
) | ⊤ ] ]
tΓ
a ⊢
a
e2 →→ tua
2
tua
2 = [ tda
2
| u
a
2
]
(f, tua
1
) ⊕ (x, tua
2
)⊕ ↑ta
a (Γa
1
) ⊢
a
e →→ [ tda
| [ d
a
| v
a
] ]
tΓ
a ⊢
a
e1 e2 →→ [ tda
1 ∪ tda
2 ∪ tda ∪ d
a
1
| [ d
a
1 ∪ d
a
| v
a
] ]
a-apply-unknown
tΓ
a ⊢
a
e1 →→ [ tda
1
| [ d
a
1
| v
a
1
] ] tΓ
a ⊢
a
e2 →→ [ tda
2
| [ d
a
2
| v
a
2
] ]
∀(f, x, e, Γ
a
1
).va
1 ̸=< λx.e, Γ
a
1 > ∧v
a
1 ̸=< recf.x.e, Γ
a
1 >
tΓ
a ⊢
a
e1 e2 →→ [ tda
1 ∪ tda
2 ∪ d
a
1 ∪ d
a
2
| [ d
a
1 ∪ d
a
2
| ⊤ ] ]
a-if
tΓ
a ⊢
a
e →→ [ tda
| [ d
a
| v
a
] ] tΓ
a ⊢
a
e1 →→ [ tda
1
| [ d
a
1
| v
a
1
] ] tΓ
a ⊢
a
e2 →→ [ tda
2
| [ d
a
2
| v
a
2
] ]
tΓ
a ⊢
a
if e then e1 else e2 →→ [ d
a ∪ tda ∪ tda
1 ∪ tda
2
| [ d
a ∪ d
a
1 ∪ d
a
2
| ⊤ ] ]
a-match
tΓ
a ⊢
a
e →→ tua
tua = [ tda
| [ d
a
| v
a
] ] tua
, p ⊢
a
p
tΓ
a
p
tΓ
a
p ⊕ tΓ
a ⊢
a
e1 →→ [ tda
1
| [ d
a
1
| v
a
1
] ]
tΓ
a ⊢
a match e with p → e1 | x → e2 →→ [ d
a ∪ tda ∪ tda
1
| [ d
a ∪ d
a
1
| v
a
1
] ]
a-match-var
tΓ
a ⊢
a
e →→ tua
tua = [ tda
| [ d
a
| v
a
] ] tua
, p ⊢
a
p ⊥
(x, tua
) ⊕ tΓ
a ⊢
a
e2 →→ [ tda
2
| [ d
a
2
| v
a
2
] ]
tΓ
a ⊢
a match e with p → e1 | x → e2 →→ [ d
a ∪ tda ∪ tda
2
| [ d
a ∪ d
a
2
| v
a
2
] ]
a-match-unknown
tΓ
a ⊢
a
e →→ tua
tua = [ tda
| [ d
a
| v
a
] ] tua
, p ⊢
a
p? tΓ
a
p
tΓ
a
p ⊕ tΓ
a ⊢
a
e1 →→ [ tda
1
| [ d
a
1
| v
a
1
] ] (x, tua
) ⊕ tΓ
a ⊢
a
e2 →→ [ tda
2
| [ d
a
2
| v
a
2
] ]
tΓ
a ⊢
a match e with p → e1 | x → e2 →→ [ d
a ∪ tda ∪ tda
1 ∪ tda
2
| [ d
a ∪ d
a
1 ∪ d
a
2
| ⊤ ] ]
a-match-error
tΓ
a ⊢
a
e →→ [ tda
| [ d
a
| v
a
] ] tua
, p ⊢
a
p ×
tΓ
a ⊢
a match e with p → e1 | x → e2 →→ [ ∅ | [ ∅ | ⊥ ] ]
a-constr-0
tΓ
a ⊢
a C →→ [ ∅ | [ ∅ | C ] ]
a-constr-1
tΓ
a ⊢
a
e →→ [ tda
| u
a
]
tΓ
a ⊢
a D(e) →→ [ tda
| [ ∅ | D(u
a
) ] ]
a-couple
tΓ
a ⊢
a
e1 →→ [ tda
1
| u
a
1
] tΓ
a ⊢
a
e2 →→ [ tda
2
| u
a
2
]
tΓ
a ⊢
a
(e1, e2) →→ [ tda
1 ∪ tda
2
| [ ∅ | (u
a
1
, ua
2
) ] ]
a-annot
tΓ
a ⊢
a
e →→ [ tda
| [ d
a
| v
a
] ]
tΓ
a ⊢
a
l : e →→ [ tda
| [ l; d
a
| v
a
] ]
Figure 4.14 – Sémantique abstraite
1774.4. SÉMANTIQUE ABSTRAITE
d_of_freevars(e, tΓ
a) := dof_aux(e, tΓ
a, ∅, ∅)
dof_aux(n, tΓ
a, bvars, acc) := acc
dof_aux(C, tΓ
a, bvars, acc) := acc
dof_aux(D(e), tΓ
a, bvars, acc) := dof_aux(e, tΓ
a, bvars, acc)
dof_aux(x, tΓ
a, bvars, acc) := acc si x ∈ bvars
dof_aux(x, tΓ
a, bvars, acc) := d
a ∪ acc si x ̸∈ bvars ∧ tΓ
a[x] = [ tda | [ d
a | v
a ] ]
dof_aux(λx.e, tΓ
a, bvars, acc) := dof_aux(e, tΓ
a, x; bvars, acc)
dof_aux(recf.x.e, tΓ
a, bvars, acc) := dof_aux(e, tΓ
a, f; x; bvars, acc)
dof_aux(e1 e2, tΓ
a, bvars, acc) := dof_aux(e2, tΓ
a, bvars, acc1)
pour acc1 = dof_aux(e1, tΓ
a, bvars, acc)
dof_aux(if e then e1 else e2, tΓ
a, bvars, acc) := dof_aux(e2, tΓ
a, bvars, acc1)
pour acc1 = dof_aux(e1, tΓ
a, bvars, acc0)
et acc0 = dof_aux(e, tΓ
a, bvars, acc)
dof_aux(match e with p → e1 | x → e2, tΓ
a, bvars, acc) := dof_aux(e2, tΓ
a, x; bvars, acc1)
pour acc1 = dof_aux(e1, tΓ
a, binders_of(p); bvars, acc0)
et acc0 = dof_aux(e, tΓ
a, bvars, acc)
dof_aux((e1, e2), tΓ
a, bvars, acc) := dof_aux(e2, tΓ
a, bvars, acc1)
pour acc1 = dof_aux(e1, tΓ
a, bvars, acc)
dof_aux(l : e, tΓ
a, bvars, acc) := dof_aux(e, tΓ
a, bvars, acc)
dof_aux(let x = e1 in e2, tΓ
a, bvars, acc) := dof_aux(e2, tΓ
a, x; bvars, acc1)
pour acc1 = dof_aux(e1, tΓ
a, bvars, acc)
binders_of(C) := {}
binders_of(D(x)) := {x}
binders_of((x, y)) := {x; y}
Figure 4.15 – Sémantique abstraite : v-dépendances des identificateurs libres d’une expression
am-constr-0
[ tda
| [ d
a
| C ] ], C ⊢
a
p {}
am-constr-1
[ tda
| [ d
a
| D(u
a
) ] ], D(x) ⊢
a
p {(x, [ ∅ | u
a
])}
am-couple
[ tda
| [ d
a
| (u
a
1
, ua
2
) ] ], (x1, x2) ⊢
a
p {(x1, [ ∅ | u
a
1
]); (x2, [ ∅ | u
a
2
])}
am-constr-0-not
p ̸= C
[ tda
| [ d
a
| C ] ], p ⊢
a
p ⊥
am-constr-1-not
p ̸= D(_)
[ tda
| [ d
a
| D(u
a
) ] ], p ⊢
a
p ⊥
am-couple-not
p ̸= (_, _)
[ tda
| [ d
a
| (u
a
1
, ua
2
) ] ], p ⊢
a
p ⊥
am-constr-0-unknown
[ tda
| [ d
a
| ⊤ ] ], C ⊢
a
p? {}
am-constr-1-unknown
[ tda
| [ d
a
| ⊤ ] ], D(x) ⊢
a
p? {(x, [ ∅ | [ ∅ | ⊤ ] ])}
am-couple-unknown
[ tda
| [ d
a
| ⊤ ] ], (x1, x2) ⊢
a
p? {(x1, [ ∅ | [ ∅ | ⊤ ] ]); (x2, [ ∅ | [ ∅ | ⊤ ] ])}
am-error
∀C.va
̸= C ∀D.va
̸= D(_) v
a
̸= (_, _) v
a
̸= ⊤
[ tda
| [ d
a
| v
a
] ], p ⊢
a
p ×
Figure 4.16 – Sémantique abstraite : règles de filtrage
1784.4. SÉMANTIQUE ABSTRAITE
↑
a
ta( [ tda
| u
a
]) = u
a
↑
a
ta({}) = {} ↑a
ta((x, tua
) ⊕ tΓ
a
) = (x, ↑
a
ta(tua
)) ⊕ ↑a
ta(tΓ
a
)
Figure 4.17 – Valeurs abstraites : suppression des t-dépendances
a-ident Cette règle est identique à celle de la sémantique instrumentée. L’évaluation
d’un identificateur se fait de manière habituelle, en allant chercher la valeur correspondante
dans l’environnement. Les dépendances de la t-valeur abstraite retournée sont celles qui
ont été enregistrées dans l’environnement pour cet identificateur.
a-ident-empty Comme dans la sémantique collectrice, une règle a été ajoutée pour
permettre l’analyse d’un programme dont certains identificateurs ne sont pas liés dans
l’environnement. La valeur simple abstraite retournée est la valeur ⊥, ce qui correspond à
une erreur (l’évaluation d’un tel programme par la sémantique opérationnelle ne retourne
aucune valeur).
a-abstr L’évaluation abstraite d’une fonction n’a rien de surprenant. Comme dans la
sémantique instrumentée, les dépendances sont vides. La valeur simple abstraite est une
fermeture encapsulant l’environnement abstrait d’évaluation préalablement nettoyé de ses
t-dépendances à l’aide de la fonction ↑
a
ta(•) définie en figure 4.17.
a-abstr-rec Selon le même principe que pour la règle a-abstr, on construit une
fermeture récursive encapsulant l’environnement abstrait d’évaluation.
a-letin La règle d’évaluation d’une liaison est identique à la règle correspondante dans
la sémantique instrumentée. Elle évalue e1 puis ajoute une liaison à l’environnement pour
évaluer e2. Le résultat est une t-valeur abstraite constituée de la concaténation des tdépendances
des sous-expressions évaluées et de la v-valeur abstraite de e2.
a-apply La règle de l’application d’une fonction non-récursive est identique à son homologue
de la sémantique instrumentée.
1794.4. SÉMANTIQUE ABSTRAITE
↑
ta
a
(u
a
) = [ ∅ | u
a
]
↑
ta
a
({}) = {} ↑ta
a
((x, ua
) ⊕ Γ
a
) = (x, ↑
ta
a
(u
a
)) ⊕ ↑ta
a
(Γa
)
Figure 4.18 – Valeurs abstraites : ajout de t-dépendances
Comme dans la sémantique instrumentée, nous utilisons une fonction ajoutant des tdépendances
vides à l’environnement encapsulé pour évaluer le corps de la fermeture. Cette
fonction, notée ↑
ta
a
(•) est définie en figure 4.18.
a-apply-rec La règle d’évaluation abstraite d’une application de fonction récursive
ressemble à celle de la sémantique instrumentée. Il y a cependant une différence importante.
Lorsque le corps de la fonction récursive est évalué, l’identificateur représentant la fonction
récursive est lié à la valeur ⊤. Cette abstraction permet d’empêcher les appels récursifs
lors de l’analyse d’un programme. À chaque appel récursif, au lieu de déplier le corps de la
fonction une nouvelle fois, on renvoie la valeur ⊤ accompagnée de toutes les dépendances
de tous les identificateurs libres présents dans le corps de la fonction.
a-apply-unknown La sémantique abstraite possède une règle d’évaluation d’une application
dans le cas où on ne connaît pas le corps de la fonction à appliquer. On caractérise
ce cas en spécifiant que la valeur abstraite de e1 n’est pas une fermeture. Si le programme
est bien typé, alors la valeur abstraite de e1 est forcément ⊤. Cependant, il serait possible
de rendre la sémantique abstraite plus précise en utilisant une réprésentation des fonctions
ayant un niveau de précision intermédiaire entre la fermeture, contenant le corps de la
fonction, et la valeur ⊤ ne fournissant aucune information.
Lorsque l’on ne connaît pas le corps de la fonction à appliquer, on effectue l’approximation
suivante : tout label présent dans les v-dépendances de l’argument fait partie à la
fois des t-dépendances et des v-dépendances du résultat. Il fait partie des t-dépendances du
résultat car une modification de la valeur de l’argument peut provoquer la non-terminaison
du corps de la fonction (qui est inconnu). Il fait également partie des v-dépendances du
résultat la valeur de l’argument peut être utilisée pour élaborer la valeur de retour de la
1804.4. SÉMANTIQUE ABSTRAITE
fonction.
a-if Contrairement aux autres sémantiques, la sémantique abstraite ne contient qu’une
seule règle d’inférence pour décrire l’évaluation d’une expression conditionnelle. En effet,
l’algèbre des valeurs abstraites ne permet pas de réprésenter les valeurs booléennes. Il
est donc impossible de déterminer laquelle des deux branches sera évaluée à partir de la
valeur abstraite de la condition. Nous évaluons donc les deux branches de l’expression pour
recueillir les dépendances du résultat. L’ensemble des t-dépendances du résultat contient
les t-dépendances des trois sous-expressions ainsi que les v-dépendances de la condition
(car une modification de la valeur de la condition entraîne nécessairement un changement
de branche, ce qui peut provoquer la non-terminaison de l’évaluation). L’ensemble des
v-dépendances du résultat contient les v-dépendances des trois sous-expressions.
a-match Cette règle décrit l’évaluation abstraite d’un filtrage lorsqu’on sait statiquement
que l’évaluation passe toujours par la première branche. Elle ne présente pas de
particularité par rapport à la sémantique instrumentée.
a-match-var Cette règle décrit l’évaluation abstraite d’un filtrage lorsqu’on sait statiquement
que l’évaluation passe toujours par la seconde branche. Elle ne présente pas de
particularité par rapport à la sémantique instrumentée.
a-match-unknown Cette règle décrit l’évaluation abstraite d’un filtrage lorsqu’on
ne sait statiquement par quelle branche l’évaluation va passer. Elle correspond à la règle
c-match-unknown de la sémantique collectrice. On évalue alors les deux branches pour
récolter les dépendances du filtrage.
a-match-error Cette règle décrit l’évaluation abstraite d’un filtrage dans le cas où
la valeur abstraite de l’expression filtrée ne correspond pas à une valeur filtrable. Il s’agit
d’une erreur de type. La valeur simple abstraite est donc ⊥, ce qui indique qu’il n’existe
aucune évaluation opérationnelle correspondante.
1814.4. SÉMANTIQUE ABSTRAITE
a-constr-0 a-constr-1 a-couple a-annot Ces quatres règles sont identiques à
leurs homologues de la sémantique instrumentée.
4.4.3 Correction
4.4.3.1 Énoncé informel du théorème
La sémantique abstraite est une interprétation abstraite de la sémantique collectrice.
C’est-à-dire qu’une évaluation par la sémantique collectrice peut être simulée par une évaluation
abstraite (avec l’aide de fonctions d’abstraction et de concrétisation) et que la
valeur ainsi obtenue sera moins précise que celle obtenue par une évaluation directe. Les
fonctions d’abstraction et de concrétisation sont définies formellement en figures 4.11, 4.12
et 4.13.
Le lien entre l’évaluation directe par la sémantique collectrice et l’évaluation passant
par la sémantique abstraite et les fonctions de conversion, est illustré en figure 4.2.
4.4.3.2 Illustration par l’exemple
Exemple 1 : évaluation d’un couple Notons e1 le programme suivant : (x, l1:7)
Nous nous intéressons ici à l’évaluation de ce programme par la sémantique collectrice
dans l’environnement collecteur tΓ
c
1
:
tΓ
c
1 = (x, [ ∅ | {l2; l3} | {C1; C2} ])
Voici le jugement d’évaluation :
tΓ
c
1 ⊢
c
e1 →→ [ ∅ | ∅ | { ( [ {l2; l3} | C1 ], [ {l1} | 7 ]);
( [ {l2; l3} | C2 ], [ {l1} | 7 ]) } ]
La sémantique abstraite étant une interprétation abstraite de la sémantique collectrice,
on peut simuler toute évaluation collectrice par une évaluation abstraite. Pour cela, on
commence par abstraire l’environnement d’évaluation :
↑
a
c
(tΓ
c
1
) = (x, [ ∅ | [ {l2; l3} | ⊤ ] ]) = tΓ
a
1
On peut ensuite évaluer e1 dans l’environnement abstrait à l’aide de la sémantique abstraite.
On obtient le jugement suivant :
tΓ
a
1 ⊢
a
e1 →→ [ ∅ | [ ∅ | ( [ {l2; l3} | ⊤ ], [ {l1} | ⊤ ]) ] ]
1824.4. SÉMANTIQUE ABSTRAITE
Il ne reste plus qu’à concrétiser la t-valeur abstraite obtenue pour produire une valeur
collectrice qui se trouvera être moins précise que celle obtenue directement par la
sémantique collectrice.
↑
c
a
( [ ∅ | [ ∅ | ( [ {l2; l3} | ⊤ ], [ {l1} | ⊤ ]) ] ])
= [ ∅ | ∅ | {( [ {l2; l3} | v
i
1
], [ {l1} | v
i
2
]) | ∀v
i
1 ∈ Vi
, ∀v
i
2 ∈ Vi} ]
Les ensembles de dépendances sont vides et l’ensemble des valeurs simples obtenu directement
est inclus dans l’ensemble des valeurs simples obtenu après abstraction :
{( [ {l2; l3} | C1 ], [ {l1} | 7 ]); ⊆im {( [ {l2; l3} | v
i
1
], [ {l1} | v
i
2
]) | ∀v
i
1 ∈ Vi
, ∀v
i
2 ∈ Vi}
( [ {l2; l3} | C2 ], [ {l1} | 7 ])}
Voici quelques exemples d’évaluations instrumentées correspondant à l’évaluation collectrice
présentée ici :
(x, [ ∅ | {l2} | C1 ]) ⊢
i
e1 →→ [ ∅ | [ ∅ | ( [ {l2} | C1 ], [ {l1} | 7 ]) ] ]
(x, [ ∅ | {l3} | C2 ]) ⊢
i
e1 →→ [ ∅ | [ ∅ | ( [ {l3} | C2 ], [ {l1} | 7 ]) ] ]
4.4.3.3 Énoncé formel du théorème
Ce théorème de correction exprime le fait que la sémantique abstraite est une interprétation
abstraite de la sémantique collectrice. Autrement dit, pour tout jugement d’évaluation
collectrice, il est possible de simuler cette évaluation en commençant par abstraire l’environnement
d’évaluation, puis en évaluant l’expression par la sémantique abstraite pour
enfin concrétiser la valeur abstraite. La valeur collectrice ainsi obtenue est alors moins
précise que celle obtenue directement par la sémantique collectrice.
Pour exprimer formellement ce théorème, il nous faut d’abord définir formellement la
relation d’ordre sur les valeurs collectrices qui exprime le fait qu’une valeur collectrice est
plus précise qu’une autre. Cette définition est donnée en figure 4.19.
Théorème 4.4.1 (Correction de la sémantique abstraite).
∀(tΓ
c
, e, tuc
, tΓ
a
, tua
).
tΓ
c ⊢
c
e →→ tuc ⇒ tΓ
a =↑
a
c
(tΓ
c
) ⇒ tΓ
a ⊢
a
e →→ tua ⇒ tuc ⊆c ↑
c
a
(tua
)
1834.4. SÉMANTIQUE ABSTRAITE
le-c-val
tdc
1 ⊆ tdc
2 d
c
1 ⊆ d
c
2
vsi
1 ⊆
si vsi
2
[ tdc
1
| d
c
1
| vsi
1
] ⊆
c
[ tdc
2
| d
c
2
| vsi
2
]
le-si-val
∀v
i
1 ∈ vsi
1
. ∃v
i
2 ∈ vsi
2
. vi
1 ⊆
i
v
i
2
vsi
1 ⊆
si vsi
2
Figure 4.19 – Relation d’ordre sur les valeurs collectrices
4.4.3.4 Preuve de correction
La preuve de correction de ce théorème est similaire à la preuve de correction de la sé-
mantique collectrice. Il s’agit de prouver qu’une sémantique est une interprétation abstraite
d’une autre, étant données une fonction d’abstraction et une fonction de concrétisation.
On procède par induction sur le jugement d’évaluation de la sémantique abstraite. Il
y a 18 cas à prouver, correspondant aux 18 règles d’inférences de la sémantique abstraite.
Nous présentons ici la preuve de quelques uns de ces cas.
cas a-num Ce cas est trivial, tout comme le cas a-constr-0. Nous allons tout de même
l’expliquer rapidement pour illustrer le principe de la preuve qui est également utilisé dans
les autres cas.
Nous avons les hypothèses suivantes :
tΓ
c ⊢
c n →→ [ ∅ | ∅ | {n} ]
tΓ
a = ↑
a
c
(tΓ
c
)
tΓ
a ⊢
a n →→ [ ∅ | [ ∅ | ⊤ ] ]
Il reste uniquement à prouver la propriété ci-dessous qui est une conséquence directe
de la définition de la relation d’ordre ⊆c donnée en figure 4.19 :
[ ∅ | ∅ | {n} ] ⊆
c
↑
c
a
( [ ∅ | [ ∅ | ⊤ ] ])
cas a-constr-1 Ce cas est légèrement plus complexe que le précédent du fait que
l’expression évaluée possède une sous-expression.
Nous avons les hypothèses suivantes dont une hypothèse d’induction :
c-constr-1
tΓ
c ⊢
c
e →→ [ tdc
| d
c
| vsi
]
tΓ
c ⊢
c D(e) →→ [ tdc
| ∅ | {D( [ d
c
| v
i
]) | v
i ∈ vsi
} ]
1844.4. SÉMANTIQUE ABSTRAITE
tΓ
a = ↑
a
c
(tΓ
c
)
a-constr-1
tΓ
a ⊢
a
e →→ [ tda
| [ d
a
| v
a
] ]
tΓ
a ⊢
a D(e) →→ [ tda
| [ ∅ | D( [ d
a
| v
a
]) ] ]
[ tdc
| d
c
| vsi
] ⊆
c
↑
c
a
( [ tda
| [ d
a
| v
a
] ])
Nous devons alors montrer cette propriété :
[ tdc
| ∅ | {D( [ d
c
| v
i
]) | v
i ∈ vsi
} ] ⊆
c
↑
c
a
( [ tda
| [ ∅ | D( [ d
a
| v
a
]) ] ])
Une fois simplifiée à l’aide des définitions de la relation d’ordre et de la fonction de
concrétisation, il nous reste à prouver les propriétés suivantes :
tdc ⊆ tda {D( [ d
c
| v
i
]) | v
i ∈ vsi} ⊆c↑
c
a
(D( [ d
a
| v
a
]))
Nous simplifions alors la seconde propriété en plusieurs étapes :
∀v
i
1 ∈ {D( [ d
c
| v
i
]) | v
i ∈ vsi}. ∃v
i
2 ∈↑c
a
(D( [ d
a
| v
a
])). vi
1 ⊆i v
i
2
∀v
i
1 ∈ vsi
. ∃v
i
2 ∈↑c
a
(D( [ d
a
| v
a
])). D( [ d
c
| v
i
1
]) ⊆i v
i
2
∀v
i
1 ∈ vsi
. ∃v
i
2 ∈ {D( [ d
a
| v
i
]) | ∀v
i ∈↑c
a
(v
a
)}. D( [ d
c
| v
i
1
]) ⊆i v
i
2
∀v
i
1 ∈ vsi
. ∃v
i
2 ∈↑c
a
(v
a
). D( [ d
c
| v
i
1
]) ⊆i D( [ d
a
| v
i
2
])
∀v
i
1 ∈ vsi
. ∃v
i
2 ∈↑c
a
(v
a
). dc ⊆ d
a ∧ v
i
1 ⊆i v
i
2
d
c ⊆ d
a ∀v
i
1 ∈ vsi
. ∃v
i
2 ∈↑c
a
(v
a
). vi
1 ⊆i v
i
2
De notre hypothèse d’induction, nous déduisons les propriétés suivantes, en utilisant
simplement les définitions de la relation d’ordre et de la fonction de concrétisation :
tdc ⊆ tda d
c ⊆ d
a vsi ⊆c ↑
c
a
(v
a
) ∀v
i
1 ∈ vsi
. ∃v
i
2 ∈↑c
a
(v
a
). vi
1 ⊆i v
i
2
Ce qui nous permet de conclure immédiatement.
cas a-apply Comme d’habitude, le cas de l’application fait partie des cas les plus complexes
à prouver.
1854.4. SÉMANTIQUE ABSTRAITE
Nous avons les hypothèses suivantes dont trois hypothèses d’induction :
c-apply
tΓ
c ⊢
c
e1 →→ [ tdc
1
| d
c
1
| vsi
1
] tΓ
c ⊢
c
e2 →→ [ tdc
2
| d
c
2
| vsi
2
]
v
im = multiple_instrumented_application(tdc
1
, dc
1
, vsi
1
, tdc
2
, dc
2
, vsi
2
)
(∀l. l ∈ tdc ⇔ (∃(tdi
, di
, vi
). l ∈ tdi ∧ [ tdi
| [ d
i
| v
i
] ] ∈ v
im))
(∀l. l ∈ d
c ⇔ (∃(tdi
, di
, vi
). l ∈ d
i ∧ [ tdi
| [ d
i
| v
i
] ] ∈ v
im))
vsi = {v
i
| ∃(tdi
, di
). [ tdi
| [ d
i
| v
i
] ] ∈ v
im}
tΓ
c ⊢
c
e1 e2 →→ [ tdc
| d
c
| vsi
]
tΓ
a = ↑
a
c
(tΓ
c
)
a-apply
tΓ
a ⊢
a
e1 →→ [ tda
1
| [ d
a
1
| < λx.e, Γ
a
1 > ] ]
tΓ
a ⊢
a
e2 →→ tua
2
tua
2 = [ tda
2
| [ d
a
2
| v
a
2
] ]
(x, tua
2
)⊕ ↑ta
a
(Γa
1
) ⊢
a
e →→ [ tda
| [ d
a
| v
a
] ]
tΓ
a ⊢
a
e1 e2 →→ [ tda
1 ∪ tda
2 ∪ tda ∪ d
a
1
| [ d
a
1 ∪ d
a
| v
a
] ]
[ tdc
1
| d
c
1
| vsi
1
] ⊆
c
↑
c
a
( [ tda
1
| [ d
a
1
| < λx.e, Γ
a
1 > ] ])
[ tdc
2
| d
c
2
| vsi
2
] ⊆
c
↑
c
a
( [ tda
2
| [ d
a
2
| v
a
2
] ])
∀(tΓ
c
, tuc
). tΓ
c ⊢
c
e →→ tuc ⇒ (x, tua
2
)⊕ ↑ta
a
(Γa
1
) =↑
a
c
(tΓ
c
) ⇒ tuc ⊆
c
↑
c
a
( [ tda
| [ d
a
| v
a
] ])
Nous devons alors montrer cette propriété :
[ tdc
| d
c
| vsi
] ⊆
c
↑
c
a
( [ tda
1 ∪ tda
2 ∪ tda ∪ d
a
1
| [ d
a
1 ∪ d
a
| v
a
] ])
Après simplification, nous devons donc montrer les trois propriétés suivantes :
tdc ⊆ tda
1 ∪ tda
2 ∪ tda ∪ d
a
1
d
c ⊆ d
a
1 ∪ d
a ∀v
i
1 ∈ vsi
. ∃v
i
2 ∈↑c
a
(v
a
). vi
1 ⊆i v
i
2
Prouvons tout d’abord quelques propriétés préliminaires concernant l’évaluation collectrice
de e ainsi que son évaluation instrumentée multiple.
Puisque la sémantique collectrice est totale, nous savons qu’il existe un jugement d’évaluation
collectrice pour e dans l’environnement ↑
c
a
((x, tua
2
)⊕ ↑ta
a
(Γa
1
)). Il existe donc une
valeur collectrice [ td′c
| d
′c
| vs′i
] telle que :
↑
c
a
((x, tua
2
)⊕ ↑ta
a
(Γa
1
)) ⊢
c
e →→ [ td′c
| d
′c
| vs′i
]
La composition de la fonction de concrétisation et de la fonction d’abstraction est
l’identité. Nous en déduisons donc la propriété suivante :
↑
a
c
(↑
c
a
((x, tua
2
)⊕ ↑ta
a
(Γa
1
))) = (x, tua
2
)⊕ ↑ta
a
(Γa
1
)
1864.4. SÉMANTIQUE ABSTRAITE
On utilise alors la troisième hypothèse d’induction pour établir la relation d’ordre entre
les valeurs collectrice et abstraite de e. Nous obtenons :
[ td′c
| d
′c
| vs′i
] ⊆
c
↑
c
a
( [ tda
| [ d
a
| v
a
] ])
La sémantique instrumentée multiple est elle aussi totale. Il existe donc un jugement
de la sémantique instrumentée multiple pour l’évaluation de e dans l’ensemble d’environnements
instrumentés suivant : ↑
im
c
(↑
c
a
((x, tua
2
)⊕ ↑ta
a
(Γa
1
))). Voici le jugement :
i-multiple
v
im = {tui
| ∃tΓ
i ∈ ↑im
c
(↑
c
a
((x, tua
2
)⊕ ↑ta
a
(Γa
1
))). tΓ
i ⊢
i
e →→ tui
}
↑
im
c
(↑
c
a
((x, tua
2
)⊕ ↑ta
a
(Γa
1
))) ⊢
im e →→ v
im
Commençons maintenant par prouver la première des trois propriétés :
tdc ⊆ tda
1 ∪ tda
2 ∪ tda ∪ d
a
1
Soit l ∈ tdc on veut alors montrer que l ∈ tda
1 ∪ tda
2 ∪ tda ∪ d
a
1
D’après la définition de tdc
, on a (tdi
, di
, vi
) tels que : l ∈ tdi∧ [ tdi
| [ d
i
| v
i
] ] ∈ v
im
Il y a alors 2 cas possibles d’après la définition de multiple_instrumented_application.
Il s’agit soit de l’application d’une fonction non-récursive, soit de l’application d’une fonction
récursive. Nous prouvons plus loin que le second cas est impossible. Commençons par
nous placer dans le premier cas, on a alors :
< λx.e, Γ
i
1 > ∈ vsi
1
v
i
2 ∈ vsi
2
tui
2 = [ tdc
2
| [ d
c
2
| v
i
2
] ]
(x, tui
2
)⊕ ↑ti
i
(Γi
1
) ⊢
i
e →→ [ td′i
| [ d
′i
| v
′i
] ]
[ tdi
| [ d
i
| v
i
] ] = [ tdc
1 ∪ tdc
2 ∪ td′i ∪ d
c
1
| [ d
c
1 ∪ d
′i
| v
′i
] ]
On remarque que {(x, tui
2
)⊕ ↑ti
i
(Γi
1
)} ⊆im ↑
im
c
(↑
c
a
((x, tua
2
)⊕ ↑ta
a
(Γa
1
)))
Puisque la sémantique instrumentée multiple est croissante, la valeur de e dans l’environnement
{(x, tui
2
)⊕ ↑ti
i
(Γi
1
)} est plus précise que la valeur de e dans l’environnement
↑
im
c
(↑
c
a
((x, tua
2
)⊕ ↑ta
a
(Γa
1
))). Ce qui nous donne :
{ [ td′i
| [ d
′i
| v
′i
] ]} ⊆im v
im
D’après le théorème de correction de la sémantique collectrice, on a :
v
im ⊆
im ↑
im
c
( [ td′c
| d
′c
| vs′i
])
1874.4. SÉMANTIQUE ABSTRAITE
On utilise alors la transitivité de la relation d’ordre sur les valeurs instrumentées multiples
pour déduire :
{ [ td′i
| [ d
′i
| v
′i
] ]} ⊆im ↑
im
c
( [ td′c
| d
′c
| vs′i
])
En composant cette relation ainsi que la relation d’ordre entre la valeur collectrice de
e et sa valeur abstraite ( [ td′c
| d
′c
| vs′i
] ⊆c ↑
c
a
( [ tda
| [ d
a
| v
a
] ])), on obtient :
td′i ⊆ td′c ⊆ tda
D’autre part, nos hypothèses d’induction nous disent que :
tdc
1 ⊆ tda
1
tdc
2 ⊆ tda
2
d
c
1 ⊆ d
a
1
Puisque l ∈ tdc
1 ∪tdc
2 ∪td′i ∪d
c
1
, on déduit donc la propriété voulue pour conclure le cas
de l’application d’un fonction non-récursive : l ∈ tda
1 ∪ tda
2 ∪ tda ∪ d
a
1
Montrons maintenant que le cas de l’application d’une fonction récursive est absurde.
Dans ce cas, on a les propriétés suivantes :
< recf.x.e, Γ
i
1 > ∈ vsi
1
v
i
2 ∈ vsi
2
tui
f = [ tdc
1
| [ d
c
1
| < recf.x.e, Γ
i
1 > ] ] tui
2 = [ tdc
2
| [ d
c
2
| v
i
2
] ]
(f, tui
f
) ⊕ (x, tui
2
)⊕ ↑ti
i
(Γi
1
) ⊢
i
e →→ [ td′i
| [ d
′i
| v
′i
] ]
[ tdi
| [ d
i
| v
i
] ] = [ tdc
1 ∪ tdc
2 ∪ td′i ∪ d
c
1
| [ d
c
1 ∪ d
′i
| v
′i
] ]
Or la première propriété < recf.x.e, Γ
i
1 > ∈ vsi
1
contredit notre première hypothèse
d’induction qui implique que vsi
1 ⊆im ↑
c
a
(< λx.e, Γ
a
1 >)
Ceci nous permet de conclure la preuve de tdc ⊆ tda
1 ∪ tda
2 ∪ tda ∪ d
a
1
On procède de même pour montrer que d
c ⊆ d
a
1 ∪ d
a
Soit l ∈ d
c on veut alors montrer que l ∈ d
a
1 ∪ d
a
D’après la définition de d
c
, on a (tdi
, di
, vi
) tels que : l ∈ d
i ∧ [ tdi
| [ d
i
| v
i
] ] ∈ v
im
Il y a alors 2 cas possibles d’après la définition de multiple_instrumented_application.
Il s’agit soit de l’application d’une fonction non-récursive, soit de l’application d’une fonction
récursive. Pour la même raison que dans le cas précédent, le cas de l’application d’une
fonction récursive est absurde. Plaçons nous donc dans le premier cas, on a alors :
1884.4. SÉMANTIQUE ABSTRAITE
< λx.e, Γ
i
1 > ∈ vsi
1
v
i
2 ∈ vsi
2
tui
2 = [ tdc
2
| [ d
c
2
| v
i
2
] ]
(x, tui
2
)⊕ ↑ti
i
(Γi
1
) ⊢
i
e →→ [ td′i
| [ d
′i
| v
′i
] ]
[ tdi
| [ d
i
| v
i
] ] = [ tdc
1 ∪ tdc
2 ∪ td′i ∪ d
c
1
| [ d
c
1 ∪ d
′i
| v
′i
] ]
On remarque que {(x, tui
2
)⊕ ↑ti
i
(Γi
1
)} ⊆im ↑
im
c
(↑
c
a
((x, tua
2
)⊕ ↑ta
a
(Γa
1
)))
Puisque la sémantique instrumentée multiple est croissante, la valeur de e dans l’environnement
{(x, tui
2
)⊕ ↑ti
i
(Γi
1
)} est plus précise que la valeur de e dans l’environnement
↑
im
c
(↑
c
a
((x, tua
2
)⊕ ↑ta
a
(Γa
1
))). Ce qui nous donne :
{ [ td′i
| [ d
′i
| v
′i
] ]} ⊆im v
im
D’après le théorème de correction de la sémantique collectrice, on a :
v
im ⊆
im ↑
im
c
( [ td′c
| d
′c
| vs′i
])
On utilise alors la transitivité de la relation d’ordre sur les valeurs instrumentées multiples
pour déduire :
{ [ td′i
| [ d
′i
| v
′i
] ]} ⊆im ↑
im
c
( [ td′c
| d
′c
| vs′i
])
En composant cette relation ainsi que la relation d’ordre entre la valeur collectrice de
e et sa valeur abstraite, on obtient d
′i ⊆ d
′c ⊆ d
a
D’autre part, nos hypothèses d’induction nous disent que :
d
c
1 ⊆ d
a
1
Puisque l ∈ d
c
1 ∪ d
′i
, on déduit donc la propriété voulue pour conclure : l ∈ d
a
1 ∪ d
a
Ceci nous permet de conclure la preuve de d
c ⊆ d
a
1 ∪ d
a
Il nous reste alors à montrer cette troisième et dernière propriété :
∀v
i
1 ∈ vsi
. ∃v
i
2 ∈ ↑c
a
(v
a
). vi
1 ⊆
i
v
i
2
Pour cela, on prend v
i
1 ∈ vsi
et on procède une troisième fois de la même manière, en
faisant le lien entre l’évaluation instrumentée correspondant à v
i
1
et l’évaluation abstraite
de e.
1894.4. SÉMANTIQUE ABSTRAITE
D’après la définition de vsi
, on a (tdi
, di
) tels que : [ tdi
| [ d
i
| v
i
1
] ] ∈ v
im
Il y a là aussi 2 cas possibles d’après la définition de multiple_instrumented_application.
Il s’agit soit de l’application d’une fonction non-récursive, soit de l’application d’une fonction
récursive. Pour la même raison que précédemment, le cas de l’application d’une fonction
récursive est absurde. Plaçons nous donc dans le premier cas, on a alors :
< λx.e, Γ
i
1 > ∈ vsi
1
v
i
2 ∈ vsi
2
tui
2 = [ tdc
2
| [ d
c
2
| v
i
2
] ]
(x, tui
2
)⊕ ↑ti
i
(Γi
1
) ⊢
i
e →→ [ td′i
| [ d
′i
| v
′i
] ]
[ tdi
| [ d
i
| v
i
1
] ] = [ tdc
1 ∪ tdc
2 ∪ td′i ∪ d
c
1
| [ d
c
1 ∪ d
′i
| v
′i
] ]
On remarque que {(x, tui
2
)⊕ ↑ti
i
(Γi
1
)} ⊆im ↑
im
c
(↑
c
a
((x, tua
2
)⊕ ↑ta
a
(Γa
1
)))
Puisque la sémantique instrumentée multiple est croissante, la valeur de e dans l’environnement
{(x, tui
2
)⊕ ↑ti
i
(Γi
1
)} est plus précise que la valeur de e dans l’environnement
↑
im
c
(↑
c
a
((x, tua
2
)⊕ ↑ta
a
(Γa
1
))). Ce qui nous donne :
{ [ td′i
| [ d
′i
| v
i
1
] ]} ⊆im v
im
D’après le théorème de correction de la sémantique collectrice, on a :
v
im ⊆
im ↑
im
c
( [ td′c
| d
′c
| vs′i
])
On utilise alors la transitivité de la relation d’ordre sur les valeurs instrumentées multiples
pour déduire :
{ [ td′i
| [ d
′i
| v
i
1
] ]} ⊆im ↑
im
c
( [ td′c
| d
′c
| vs′i
])
De cette dernière relation, nous déduisons qu’il existe une valeur v
′i
2 ∈ vs′i
telle que :
v
i
1 ⊆
i
v
′i
2
Nous utilisons alors la relation d’ordre entre la valeur collectrice de e et sa valeur
abstraite pour déduire qu’il existe une valeur v
i
2 ∈ ↑c
a
(v
a
) telle que :
v
′i
2 ⊆
i
v
i
2
1904.4. SÉMANTIQUE ABSTRAITE
La transitivité de la relation d’ordre nous permet alors de conclure :
v
i
1 ⊆
i
v
i
2
La preuve du cas a-apply de notre induction est alors terminée.
1914.5. CORRECTION DE L’ANALYSE STATIQUE
4.5 Correction de l’analyse statique
Nous établissons enfin la correction de notre analyse statique. L’analyse statique ainsi
que l’ensemble des sémantiques intermédiaires ont été introduites dans le but de simplifier
la preuve du théorème présenté ici et de la rendre modulaire.
Cette modularité permettra de réutiliser une grande partie des preuves présentées ici
lors d’une modification de l’analyse statique. Par exemple, si on modifie l’algèbre des valeurs
abstraites afin de proposer une représentation différente des fonctions ou bien si on modifie
les règles d’inférence pour améliorer la précision ou l’efficacité de l’analyse, il suffira de
reprendre la preuve de la sémantique abstraite par rapport à la sémantique collectrice sans
avoir à refaire les preuves des sémantiques précédentes.
4.5.1 Énoncé informel du théorème
De même que pour la correction de l’analyse dynamique, notre but est de pouvoir
affirmer que si un label n’apparaît pas dans le résultat de l’analyse d’un programme alors
ce label n’a pas d’impact sur l’évaluation de ce programme.
La différence essentielle entre l’analyse dynamique et l’analyse statique est que cette
dernière considère de façon simultanée un ensemble éventuellement infini d’évaluations
possibles. En effet, l’environnement abstrait utilisé lors de l’analyse statique correspond
à un ensemble éventuellement infini d’environnements possibles alors que l’environnement
instrumenté utilisé lors de l’analyse dynamique correspond à un environnement de référence
unique.
Plus précisément, après avoir obtenu un jugement d’évaluation abstraite du programme
à analyser et après avoir vérifié que le label en question n’apparaît pas dans les dépendances
calculées alors on peut affirmer que peu importe l’injection considérée sur ce label,
l’évaluation avec injection de ce programme dans n’importe quel environnement possible
retournera toujours la valeur de référence du programme (la valeur du programme lors
d’une évaluation sans injection).
1924.5. CORRECTION DE L’ANALYSE STATIQUE
4.5.2 Illustration par l’exemple
Exemple 1 : évaluation d’un couple
Notons e1 le programme suivant : (3, l :7)
Son jugement d’évaluation abstraite dans le t-environnent abstrait vide est :
∅ ⊢a
e1 →→ [ ∅ | [ ∅ | ( [ ∅ | ⊤ ], [ l | ⊤ ]) ] ]
Seul le label l apparaît dans la t-valeur abstraite de e1. On peut donc affirmer que
tout autre label n’a pas d’impact sur l’évaluation de e1. On a en effet pour toute injection
(l
′
, vl
′) sur un label l
′ différent de l :
∅ ⊢l
′
:vl
′ e1 →→ (3, 7)
Exemple 2 : liaison d’une fonction
Notons e2 le programme suivant :
l e t f o =
match o with
| Some ( x ) → x + l1 : 8
| none → d + l2 : 8
i n
( f ( Some 18 ) , l3 : 17 )
Définissons le t-environnement abstrait dans lequel nous souhaitons effectuer l’analyse
statique du programme e2 :
tΓ
a
2 = (d, [ tda
d
| [ d
a
d
| ⊤ ] ])
Le jugement d’évaluation abstraite de e2 dans cet environnement est :
tΓ
a
2 ⊢
a
e2 →→ [ ∅ | [ ∅ | ( [ l1 | ⊤ ], [ l3 | ⊤ ]) ] ]
Le label l2 n’étant pas présent dans la t-valeur abstraite du programme e2, nous pouvons
en conclure qu’aucune injection sur l2 n’a d’impact sur l’évaluation de e2 et ceci, quelque
1934.5. CORRECTION DE L’ANALYSE STATIQUE
soit la valeur de d dans l’environnement :
∀(vl2
, vd).(d, vd) ⊢l2:vl2
e2 →→ (26, 17)
Les dépendances de l’identificateur d présent dans l’environnement ne sont pas présentes
non plus, ce qui indique que la valeur de cette identificateur n’a aucune influence sur le
résultat du programme.
Par contre, les labels l1 et l3 apparaissent dans la t-valeur instrumentée du programme
e2. Il n’est donc pas impossible qu’une injection sur un de ces labels puisse modifier le
comportement du programme, comme le montrent les exemples ci-dessous :
(d, 26) ⊢l1:24 e2 →→ (42, 17)
(d, 32) ⊢l3:613 e2 →→ (26, 613)
4.5.3 Énoncé formel du théorème
Pour énoncer formellement le théorème de correction, il nous faut tout d’abord définir
formellement les notions de non-apparition d’un label dans une valeur abstraite et dans un
t-environnement abstrait. On définit pour cela les prédicats ldna_in_evala
, ldna_in_vala
et ldna_in_enva
. Leur définition est donnée respectivement en figure 4.20, en figure 4.21
et en figure 4.22.
Théorème 4.5.1 (Correction de l’analyse statique).
∀(tΓ
a
, e, tua
, l). tΓ
a ⊢
a
e →→ tua ⇒ ldna_in_enva
(l, tΓ
a
) ⇒ ldna_in_vala
(l, tua
)
⇒ ∀tΓ
i ∈ ↑im
c
(↑
c
a
(tΓ
a
)).∀vl
.tΓ
i ⊢
i
e →→ tui ⇒↑ti(tΓ
i
) ⊢l:vl
e →→↑ti(tui
)
4.5.4 Preuve de correction
Nous avons les hypothèses suivantes :
tΓ
a ⊢
a
e →→ tua
ldna_in_enva
(l, tΓ
a
) ldna_in_vala
(l, tua
)
tΓ
i ∈ ↑im
c
(↑
c
a
(tΓ
a
)) tΓ
i ⊢
i
e →→ tui
1944.5. CORRECTION DE L’ANALYSE STATIQUE
ldna-e-a-num
ldna_in_evala
(l, tΓ
a
, n)
ldna-e-a-constr-0
ldna_in_evala
(l, tΓ
a
, C)
ldna-e-a-constr-1
ldna_in_evala
(l, tΓ
a
, e)
ldna_in_evala
(l, tΓ
a
, D(e))
ldna-e-a-ident
ldna_in_vala
(l, tΓ
a
[x])
ldna_in_evala
(l, tΓ
a
, x)
ldna-e-a-ident-unbound
x ̸∈ support(tΓ
a
)
ldna_in_evala
(l, tΓ
a
, x)
ldna-e-a-abstr
ldna_in_evala
(l, tΓ
a
, e)
ldna_in_evala
(l, tΓ
a
, λx.e)
ldna-e-a-abstr-rec
ldna_in_evala
(l, tΓ
a
, e)
ldna_in_evala
(l, tΓ
a
, recf.x.e)
ldna-e-a-apply
ldna_in_evala
(l, tΓ
a
, e1)
ldna_in_evala
(l, tΓ
a
, e2)
ldna_in_evala
(l, tΓ
a
, e1 e2)
ldna-e-a-if
ldna_in_evala
(l, tΓ
a
, e)
ldna_in_evala
(l, tΓ
a
, e1)
ldna_in_evala
(l, tΓ
a
, e2)
ldna_in_evala
(l, tΓ
a
, if e then e1 else e2)
ldna-e-a-match
ldna_in_evala
(l, tΓ
a
, e)
ldna_in_evala
(l, tΓ
a
, e1)
ldna_in_evala
(l, tΓ
a
, e2)
ldna_in_evala
(l, tΓ
a
, match e with p → e1 | x → e2)
ldna-e-a-annot
l ̸= l
′
ldna_in_evala
(l, tΓ
a
, e)
ldna_in_evala
(l, tΓ
a
, l : e)
ldna-e-a-couple
ldna_in_evala
(l, tΓ
a
, e1)
ldna_in_evala
(l, tΓ
a
, e2)
ldna_in_evala
(l, tΓ
a
,(e1, e2))
ldna-e-a-letin
ldna_in_evala
(l, tΓ
a
, e1)
ldna_in_evala
(l, tΓ
a
, e2)
ldna_in_evala
(l, tΓ
a
, let x = e1 in e2)
Figure 4.20 – Prédicat de non-apparition d’un label lors d’une évaluation abstraite
ldna-v-a-top
ldna_in_vala
(l, ⊤)
ldna-v-a-bottom
ldna_in_vala
(l, ⊥)
ldna-v-a-constr-0
ldna_in_vala
(l, C)
ldna-v-a-constr-1
ldna_in_vala
(l, u)
ldna_in_vala
(l, D(u))
ldna-v-a-couple
ldna_in_vala
(l, u1)
ldna_in_vala
(l, u2)
ldna_in_vala
(l,(u1, u2))
ldna-v-a-closure
ldna_in_evala
(l, ↑
ta
a
(Γa
), e)
ldna_in_vala
(l, < λx.e, Γ
a >)
ldna-v-a-closure-rec
ldna_in_evala
(l, ↑
ta
a
(Γa
), e)
ldna_in_vala
(l, < recf.x.e, Γ
a >)
ldna-v-a-v-val
l ̸∈ d
a
ldna_in_vala
(l, va
)
ldna_in_vala
(l, [ d
a
| v
a
])
ldna-v-a-t-val
l ̸∈ tda
ldna_in_vala
(l, ua
)
ldna_in_vala
(l, [ tda
| u
a
])
Figure 4.21 – Prédicat de non-apparition d’un label dans une valeur abstraite
ldna-env-a-empty
ldna_in_enva
(l, ∅)
ldna-env-a-cons
ldna_in_vala
(l, tua
) ldna_in_vala
(l, tΓ
a
)
ldna_in_vala
(l,(tua
) ⊕ tΓ
a
)
Figure 4.22 – Prédicat de non-apparition d’un label dans un environnement abstrait
1954.5. CORRECTION DE L’ANALYSE STATIQUE
Nous voulons montrer :
↑ti(tΓ
i
) ⊢l:vl
e →→↑ti(tui
)
Tout d’abord, nous utilisons le fait que les sémantiques collectrice et instrumentée
multiple sont totales pour déduire les jugements d’évaluation suivants :
↑
c
a
(tΓ
a
) ⊢
c
e →→ tuc
i-multiple
v
im = {tui
| ∃tΓ
i ∈↑im
c
(↑
c
a
(tΓ
a
)). tΓ
i ⊢
i
e →→ tui
}
↑
im
c
(↑
c
a
(tΓ
a
)) ⊢
im e →→ v
im
Nous appliquons alors le théorème de correction de la sémantique abstraite (cf. section
4.4.3.3) en utilisant le fait que ↑
a
c
(↑
c
a
(tΓ
a
)) = tΓ
a
, ce qui nous donne :
tuc ⊆
c
↑
c
a
(tua
)
Nous pouvons alors appliquer le théorème de correction de la sémantique collectrice (cf.
section 4.3.3.3) en utilisant le fait que ↑
c
im(↑
im
c
(↑
c
a
(tΓ
a
))) =↑
c
a
(tΓ
a
), ce qui nous donne :
v
im ⊆
im ↑
im
c
(tuc
)
On remarque que puisque ldna_in_enva
(l, tΓ
a
) et tΓ
i ∈ ↑im
c
(↑
c
a
(tΓ
a
)) alors on a
ldna_in_envti(l, tΓ
i
)
D’autre part, on remarque que tui ∈ v
im.
En utilisant la relation d’ordre issue de la correction de la sémantique collectrice on
déduit qu’il existe un tui
2 ∈↑im
c
(tuc
) tel que tui ⊆i
tui
2
.
Puis en utilisant la relation d’ordre issue de la correction de la sémantique abstraite on
déduit qu’il existe un tui
3 ∈↑im
c
(↑
c
a
(tua
)) tel que tui
2 ⊆i
tui
3
.
Enfin, puisque ldna_in_vala
(l, tua
) alors ldna_in_valti(l, tui
3
) et ldna_in_valti(l, tui
).
Nous appliquons enfin le théorème de correction de l’analyse dynamique pour conclure :
↑ti(tΓ
i
) ⊢l:vl
e →→↑ti(tui
)
196Chapitre 5
Implémentation et preuve
Nous présentons dans ce dernier chapitre les développements effectués autour de l’analyse
de dépendances. D’une part, nous discutons des différents prototypes réalisés. D’autre
part, nous exposons le développement au sein de l’assistant à la preuve Coq, qui a permis
de formaliser les différentes sémantiques présentées dans cette thèse ainsi que de construire
et vérifier leur preuve de correction.
5.1 Prototypes implémentés en OCaml
Trois prototypes ont été développés sous la forme d’une implémantation directe en
OCaml. Le premier prototype correspond à l’analyse présentée dans [ABDP12]. Il a permis
de cerner les besoins de l’analyse et les améliorations possibles. Un exemple de programme
sur lequel nous avons testé ce premier prototype est disponible dans [ABDP12].
Les deux autres prototypes correspondent respectivement à notre analyse dynamique
et à notre analyse statique. Cependant, ces derniers ont été développés dans une phase
préliminaire, avant de réaliser le développement Coq. Il en résulte qu’ils ne sont pas à jour
par rapport aux analyses présentées dans la thèse. En effet, le travail de preuve réalisé en
Coq a permis d’identifier différents problèmes qui nous ont conduit à modifier la définition
de nos analyses. En particulier, c’est lors de la preuve Coq de la sémantique instrumentée
que nous avons identifié la nécessité de faire la distinction entre les t-dépendances et les
v-dépendances.
Afin d’obtenir une implémentation à jour par rapport au développement Coq, nous
1975.2. DÉVELOPPEMENT COQ
envisageons une extraction vers OCaml des définitions inductives des sémantiques correspondantes
(cf. 5.3).
Il convient de noter que les triplets ont été encodés sous forme de couples imbriqués et le
filtrage sur les triplets à été traduit en une imbrication de filtrages de tête à deux branches
et d’expressions conditionnelles. Afin de tester des exemples plus complexes, il serait bon
d’ajouter aux prototypes un préprocesseur permettant de traduire automatiquement un
langage de programmation réaliste vers notre langage noyau. On aurait besoin en particulier
d’une traduction d’un filtrage par motifs quelconque vers notre filtrage de tête à deux
branches. Ce type de traduction est bien connu, il suffirait de l’intégrer à notre prototype
afin de pouvoir accepter des programmes écrits de façon plus naturelle.
5.2 Développement Coq
5.2.1 Contenu du développement
Les sémantiques présentées dans cette thèse permettant de définir et de prouver la
correction de nos analyses dynamique et statique ont été formalisées en Coq. Cette formalisation
prend la forme d’un ensemble de définitions inductives pour la sémantique opé-
rationnelle, la sémantique avec injection, la sémantique sur-instrumentée, la sémantique
instrumentée, la sémantique instrumentée multiple, la sémantique collectrice ainsi que la
sémantique abstraite.
Le développement Coq est constitué de la définition de ces 7 sémantiques ainsi que des
algèbres de valeurs correspondantes, de 6 théorèmes concernant la correction des sémantiques
et 233 lemmes intermédiaires utilisés pour la preuve des théorèmes.
Le code Coq donnant la définition des sémantiques est donné en annexe A. Le code Coq
des énoncés des différents théorèmes de correction des sémantiques est donné en annexe B.
Le code Coq complet, disponible en ligne [BVi14] contient 16 621 lignes de code réparties
de la manière suivante :
1985.2. DÉVELOPPEMENT COQ
Définition des algèbres de valeurs : 3%
Définition des sémantiques : 7%
Conversions entres les algèbres de valeurs : 3%
Corps des preuves : 30%
Lemmes intermédiaires : 57%
La preuve de correction de la sémantique abstraite par rapport à la sémantique collectrice
n’a pas été terminée par manque de temps. Cependant, la preuve a été suffisamment
avancée sur papier pour garantir un certain niveau de confiance. Pour compléter le travail
de preuve formelle présenté ici, il faudra envisager de terminer cette dernière étape de la
preuve.
5.2.2 Intérêt du choix de Coq
Le fait d’avoir choisi Coq pour formaliser et prouver nos différentes sémantiques plutôt
que d’opter pour une version papier uniquement offre bien entendu une confiance accrue
en la correction de notre analyse. Cependant, ce n’est pas le seul bénéfice. En effet, en
tant qu’assistant à la preuve, Coq nous a imposé une certaine rigueur qui nous a permis
d’identifier des problèmes dans la définition des sémantiques ainsi que dans l’approche de
la preuve.
En particulier, la distinction entre les t-dépendances et les v-dépendances s’est imposée
au cours de la preuve Coq de la sémantique instrumentée. Lorsque nous avons entamé
cette preuve, il n’y avait qu’une seule notion de dépendance et la sémantique avec injection
n’était définie que dans un environnement opérationnel. Nous avons essayé de prouver la
propriété suivante : « si un label n’apparaît pas dans la valeur instrumentée d’une expresssion
alors deux évaluations quelconques avec injetions sur ce label fournissent forcément la
même valeur ». Une preuve par induction a été entamée et lorsque nous sommes arrivés au
cas de l’évaluation d’une expression de liaison, il n’a pas été possible d’en faire la preuve.
Nous avons rapidement compris la nécessité de définir une algèbre de valeurs contenant
l’information nécessaire pour connaître la valeur de l’expression considérée pour toute injection
possible. C’est ainsi que l’algèbre des valeurs sur-instrumentées est née, dans le but
de définir la sémantique avec injection dans des environnements sur-instrumentés. Il nous
a ensuite fallu faire le lien entre cette nouvelle sémantique avec injection et la sémantique
1995.3. EXTRACTION DE COQ VERS OCAML
instrumentée, ce qui a donné naissance à la sémantique sur-instrumentée. Et c’est enfin lors
de la définition formelle en Coq de la sémantique sur-instrumentée que nous avons identifié
la nécessité de séparer les t-dépendances des v-dépendances.
Coq nous a ainsi permis d’identifier rapidement un trou dans notre définition formelle de
la notion d’injection, ce qui nous a entraîné dans un processus qui aurait été probablement
beaucoup plus long sans l’aide de l’assistant à la preuve formelle.
5.3 Extraction de Coq vers OCaml
Une piste intéressante pour l’implémentation de notre analyse de dépendances est l’extraction
à partir de Coq vers OCaml. Les différentes sémantiques que nous avons présentées
ont toutes été formalisées en Coq. Leurs jugements d’évaluation sont représentés sous
forme de prédicats définis inductivement. Ce style de définition ne fournit pas de fonction
d’évaluation. Cependant, les travaux de P.N. Tollitte et al. [TDD12] ont rendu possible
l’extraction de code à partir de prédicats définis inductivement.
Leur outil [CRE13] permettrait ainsi d’extraire vers OCaml, à partir de nos définitions
Coq, une implémentation de nos analyses dynamique et statique. Ces implémentations
auraient l’avantage de correspondre parfaitement à leurs définitions formelle et de pouvoir
être mis à jour facilement en cas de nouvelle version de l’analyse.
Il serait éventuellement possible d’obtenir une garantie formelle de la correction de
l’implémentation en utilisant leur outil [CRE13] d’extraction d’une relation inductive Coq
vers une fonction Coq, puis en utilisant l’extraction [CEC] des fonctions Coq vers OCaml.
Outre les différentes sémantiques intermédiaires non-calculables que nous avons définies
pour les besoins de la preuve et qu’il n’est pas question d’implémenter, nous pouvons nous
intéresser à l’extraction de la sémantique instrumentée et de la sémantique abstraite. Ces
deux sémantiques calculables constituent respectivement la définition de notre analyse
dynamique et de notre analyse statique.
200Conclusion
201CONCLUSION
Bilan
Nous avons présenté dans cette thèse une analyse statique de programmes ML permettant
de cerner l’impact d’une injection (dysfonctionnement ou modification de code) sur
le comportement d’un programme et sur sa valeur. Cette analyse de dépendances a été
spécialement étudiée pour répondre aux besoins exprimés par des évaluateurs de logiciels
critiques. De plus, afin d’offrir un niveau de confiance élevé, nous avons effectué une preuve
de correction de notre analyse à l’aide de l’assistant à la preuve Coq.
Afin de parvenir à ce résultat, nous avons commencé par fournir une définition formelle
de la notion d’impact. Cette définition, basée directement sur la sémantique opérationnelle
du langage, nous a permis de donner un sens précis à la notion de dépendance. Nous nous
sommes alors appliqués à prouver la correction de notre analyse vis-à-vis de cette définition
formelle.
La preuve formelle s’est déroulée en deux temps. Il a tout d’abord fallu enrichir la
sémantique opérationnelle pour qu’elle puisse transporter les informations de dépendance
nécessaires à l’analyse, ce qui a donné lieu à la notion de sémantique sur-instrumentée. Ensuite,
nous avons procédé par abstractions successives, jusqu’à obtenir une analyse statique
permettant d’analyser des programmes dans un environnement partiellement inconnu. La
première de ces abstractions a abouti à la définition de la sémantique instrumentée qui
constitue une analyse dynamique calculable des dépendances d’un programme. Nous avons
ensuite étendu la sémantique instrumentée afin de pouvoir effectuer un ensemble d’évaluations
simultanément, étant donné un ensemble d’environnements d’évaluation. C’est ce que
nous avons appelé la sémantique instrumentée multiple. À partir de cette dernière, nous
avons encore effectué deux abstractions successives afin d’obtenir la sémantique collectrice
puis enfin la sémantique abstraite. C’est cette dernière qui constitue l’analyse statique
désirée.
Toutes ces sémantiques ont été formalisées en Coq. Le code source, contenant également
les preuves de correction, est disponible à l’adresse suivante :
https://github.com/vincent-benayoun/PhD-thesis.
203CONCLUSION
Perspectives
Vers un outil utilisable dans l’industrie Ce travail constitue un premier pas vers
un outil utilisable en pratique. Il donne une base théorique solide à l’analyse d’impact
en définissant formellement la notion d’impact et en proposant une manière efficace de
cerner l’impact d’un éventuel dysfonctionnement par l’analyse directe du code source du
programme. Il reste encore plusieurs étapes à franchir avant de pouvoir utiliser cette analyse
en pratique.
Tout d’abord, il faudra terminer la preuve Coq du théorème de correction de la sé-
mantique abstraite vis-à-vis de la sémantique collectrice. Celle-ci n’a pas été terminée par
manque de temps. Cependant, nous avons entamé de façon significative la preuve sur papier
4.4.3.4 en procédant par induction sur le jugement d’évaluation de la sémantique abstraite.
Parmi les dix-huit cas de l’induction, nous en avons traité quatre, dont le cas de l’application
qui est vraisemblablement un des cas les plus complexes à prouver. Cette preuve
permettra de clôturer la preuve complète de l’analyse statique.
Ensuite, il faudra envisager d’étendre le langage sur lequel s’effectue l’analyse pour
prendre en compte les fonctionnalités présentes dans les langages ML utilisés dans l’industrie.
En particulier il sera nécessaire de gérer les variables mutables et éventuellement les
tableaux de valeurs mutables. Cette extension nécessitera probablement une modification
de toutes les sémantiques, ce qui aura sans doute un impact conséquent sur les preuves des
théorèmes de correction. Une piste intéressante pour éviter la modification de toutes les
sémantiques serait d’utiliser une traduction pour transformer tout programme en un programme
équivalent ne contenant pas de mutables. Ce type de traduction peut être réalisé
de façon naïve en encodant l’environnement des mutables dans le langage et en l’ajoutant
en argument et en valeur de retour de toutes les fonctions. On peut aussi utiliser une
analyse d’effets pour n’ajouter en argument que les valeurs nécessaires.
Le but de l’analyse est de fournir au développeur ainsi qu’à l’évaluateur de logiciels
critiques un outil de spécification et de vérification du flot d’information, à l’image de
celui présent dans SPARK. Il faudra donc définir un langage d’annotation permettant
de spécifier les relations entre les entrées et les sorties d’un sous-programme. On pourra
204CONCLUSION
ensuite utiliser notre analyse pour inférer les dépendances du sous-programme et vérifier
l’adéquation entre les dépendances inférées et la spécification donnée par l’utilisateur.
Optimisation de l’analyse Outre le travail consistant à compléter l’analyse pour en
faire un outil utilisable en pratique, différentes pistes d’optimisation de l’analyse sont envisageables.
Certaines permettront d’améliorer les performances de l’analyse afin de faciliter
le passage à l’échelle pour analyser des programmes de taille importante. D’autres permettront
de raffiner l’analyse pour obtenir des résultats plus précis.
En particulier, deux pistes nous semblent prometteuses : l’amélioration de la repré-
sentation abstraite des fonctions dans l’algèbre des valeurs et l’ajout d’une représentation
abstraite pour les types sommes.
La représentation actuelle des fonctions dans l’algèbre des valeurs abstraites se présente
sous forme d’une fermeture. Celle-ci contient le corps de la fonction qui est analysé à chaque
endroit du programme où la fonction est appliquée à un argument. L’idée d’amélioration
est de trouver une représentation compacte des fonctions ne contenant pas leur corps mais
uniquement une information synthétique concernant le lien entre la valeur de retour de la
fonction et son paramètre. Une telle représentation ressemblerait probablement aux types
des fonctions dans FlowCaml. L’avantage serait double. D’une part le temps d’exécution
de l’analyse pourrait être considérablement réduit en analysant le corps de chaque fonction
une fois pour toute (probablement à l’aide d’une exécution symbolique) et non à chaque
site d’appel de la fonction. D’autre part, l’analyse pourrait gagner en précision puisque
l’union de deux fonctions abstraites ne serait plus nécessairement la valeur abstraite ⊤
mais pourrait être une approximation moins brutale dans le treillis des valeurs abstraites.
En ce qui concerne les types sommes, le but serait d’améliorer la précision de l’analyse.
Le fait de pouvoir représenter les types sommes dans l’algèbre des valeurs abstraites nous
permettrait de rendre plus riche le treillis des valeurs abstraites. On pourrait ainsi profiter
de connaissances plus fines sur les valeurs possibles d’une expression filtrée afin d’éliminer
certains cas du filtrage.
205CONCLUSION
206Bibliographie
[ABDP12] P. Ayrault, V. Benayoun, C. Dubois, and F. Pessaux. ML Dependency Analysis
for Assessors. In International Conference on Software Engineering and Formal
Methods (SEFM’12), volume 7504 of LNCS, pages 278–292, Thessaloniki,
Greece, October 2012.
[ABHR99] Martín Abadi, Anindya Banerjee, Nevin Heintze, and Jon G. Riecke. A core
calculus of dependency. In Andrew W. Appel and Alex Aiken, editors, POPL,
pages 147–160. ACM, 1999.
[ACL03] June Andronick, Boutheina Chetali, and Olivier Ly. Using coq to verify java
card tm applet isolation properties. In David Basin and Burkhart Wolff, editors,
Theorem Proving in Higher Order Logics, volume 2758 of Lecture Notes in
Computer Science, pages 335–351. Springer Berlin Heidelberg, 2003.
[ALL96] Martín Abadi, Butler W. Lampson, and Jean-Jacques Lévy. Analysis and caching
of dependencies. In Robert Harper and Richard L. Wexelblat, editors,
ICFP, pages 83–91. ACM, 1996.
[Ayr11] Philippe Ayrault. Développement de logiciel critique en Focalize. Méthodologie
et outils pour l’évaluation de conformité. PhD thesis, Université Pierre et Marie
Curie - LIP6, 2011.
[Bar03] John Barnes. High Integrity Software : The SPARK Approach to Safety and
Security. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA,
2003.
[BHA86] Geoffrey L Burn, Chris Hankin, and Samson Abramsky. Strictness analysis for
higher-order functions. Science of Computer Programming, 7 :249–278, 1986.
207BIBLIOGRAPHIE
[BVi14] Preuve de correction de l’analyse de dépendance en Coq. https://github.
com/vincent-benayoun/PhD-thesis, 2014.
[CC77] Patrick Cousot and Radhia Cousot. Abstract interpretation : A unified lattice
model for static analysis of programs by construction or approximation of
fixpoints. In Proceedings of the 4th ACM SIGACT-SIGPLAN Symposium on
Principles of Programming Languages, POPL ’77, pages 238–252, New York,
NY, USA, 1977. ACM.
[CC79] Patrick Cousot and Radhia Cousot. Systematic design of program analysis
frameworks. In Proceedings of the 6th ACM SIGACT-SIGPLAN Symposium on
Principles of Programming Languages, POPL ’79, pages 269–282, New York,
NY, USA, 1979. ACM.
[CEC] Extraction Coq vers du code fonctionnel. http://coq.inria.fr/refman/
Reference-Manual025.html.
[CH04] Roderick Chapman and Adrian Hilton. Enforcing security and safety models
with an information flow analysis tool. Ada Lett., XXIV(4) :39–46, November
2004.
[CKK+12] Pascal Cuoq, Florent Kirchner, Nikolai Kosmatov, Virgile Prevosto, Julien Signoles,
and Boris Yakobowski. Frama-c - a software analysis perspective. In
George Eleftherakis, Mike Hinchey, and Mike Holcombe, editors, SEFM, volume
7504 of Lecture Notes in Computer Science, pages 233–247. Springer, 2012.
[CMP10] Dumitru Ceara, Laurent Mounier, and Marie-Laure Potet. Taint dependency
sequences : A characterization of insecure execution paths based on inputsensitive
cause sequences. In Proceedings of the 2010 Third International Conference
on Software Testing, Verification, and Validation Workshops, ICSTW ’10,
pages 371–380, Washington, DC, USA, 2010. IEEE Computer Society.
[CRE13] Contribution Coq : RelationExtraction. http://coq.inria.fr/pylons/
contribs/view/RelationExtraction/v8.4, 2013.
[FHJ+06] Ansgar Fehnker, Ralf Huuck, Patrick Jayet, Michel Lussenburg, and Felix
Rauch. Goanna - a static model checker. In Lubos Brim, Boudewijn R. Ha-
208BIBLIOGRAPHIE
verkort, Martin Leucker, and Jaco van de Pol, editors, FMICS/PDMC, volume
4346 of Lecture Notes in Computer Science, pages 297–300. Springer, 2006.
[Flo03] The Flow Caml System - Documentation and user’s manual. http://www.
normalesup.org/~simonet/soft/flowcaml/flowcaml-manual.pdf, 2003.
[GM82] Joseph A. Goguen and José Meseguer. Security policies and security models.
In IEEE Symposium on Security and Privacy, pages 11–20, 1982.
[Hun91] Sebastian Hunt. Abstract Interpretation of Functional Languages : From Theory
to Practice. PhD thesis, Department of Computing, Imperial College of Science
Technology and Medicine, 1991.
[JES00] Simon L. Peyton Jones, Jean-Marc Eber, and Julian Seward. Composing
contracts : an adventure in financial engineering, functional pearl. In Odersky
and Wadler [OW00], pages 280–292.
[Jon94] Neil D. Jones. Abstract interpretation : a semantics-based tool for program
analysis, 1994.
[Kni12] Is Knight’s 440 million glitch the costliest computer bug ever ? http://money.
cnn.com/2012/08/09/technology/knight-expensive-computer-bug, 2012.
[Kri07] Jens Krinke. Information flow control and taint analysis with dependence
graphs, 2007.
[MSA80] MIL-STD-1629A. Procedure for performing a Failure Mode, Effets and Criticality
Analysis. Department of Defense, November 1980.
[MW08] Yaron Minsky and Stephen Weeks. Caml trading - experiences with functional
programming on wall street. J. Funct. Program., 18(4) :553–564, 2008.
[Myc81] Alan Mycroft. Abstract interpretation and optimising transformations for applicative
programs. PhD thesis, University of Edinburgh, 1981.
[OW00] Martin Odersky and Philip Wadler, editors. Proceedings of the Fifth ACM
SIGPLAN International Conference on Functional Programming (ICFP ’00),
Montreal, Canada, September 18-21, 2000. ACM, 2000.
[PAC+08] Bruno Pagano, Olivier Andrieu, Benjamin Canou, Emmanuel Chailloux, JeanLouis
Colaço, Thomas Moniot, and Philippe Wang. Certified development tools
209implementation in objective caml. In Paul Hudak and David Scott Warren,
editors, PADL, volume 4902 of Lecture Notes in Computer Science, pages 2–17.
Springer, 2008.
[PC00] François Pottier and Sylvain Conchon. Information flow inference for free. In
Odersky and Wadler [OW00], pages 46–57.
[PS02] François Pottier and Vincent Simonet. Information flow inference for ml. In
John Launchbury and John C. Mitchell, editors, POPL, pages 319–330. ACM,
2002.
[RTC92] RTCA, Incorporated. Software Considerations in Airborne Systems and Equipment
Certification, 1992.
[SR03] Vincent Simonet and Inria Rocquencourt. Flow caml in a nutshell. In Proceedings
of the first APPSEM-II workshop, pages 152–165, 2003.
[Sta99] Standard Cenelec EN 50128. Railway Applications - Communications, Signaling
and Processing Systems - Software for Railway Control and Protection Systems,
1999.
[TDD12] Pierre-Nicolas Tollitte, David Delahaye, and Catherine Dubois. Producing certified
functional code from inductive specifications. In Chris Hawblitzel and
Dale Miller, editors, CPP, volume 7679 of Lecture Notes in Computer Science,
pages 76–91. Springer, 2012.
[X6086] X60510. Procédures d’analyse des modes de défaillance et de leurs effets
(AMDE). AFNOR, Décembre 1986.
[XBS06] Wei Xu, Sandeep Bhatkar, and R. Sekar. Taint-enhanced policy enforcement :
A practical approach to defeat a wide range of attacks. In In the Proc. of the
15th USENIX Security Symp, 2006.Annexes
211Annexe A
Définitions des sémantiques en Coq
213A.1. SÉMANTIQUE OPÉRATIONNELLE
A.1 Sémantique opérationnelle
Inductive val_of : env → expr → val → Prop :=
| Val_of_num : forall (v : Z) (c : env), val_of c (Num v) (V_Num v)
| Val_of_ident : forall (c : env) (i : identifier) (v : val),
assoc_ident_in_env i c = Ident_in_env v → val_of c (Var i) v
| Val_of_lambda : forall (c:env) (x:identifier) (e:expr),
val_of c (Lambda x e) (V_Closure x e c)
| Val_of_rec : forall (c:env) (f x:identifier) (e:expr),
val_of c (Rec f x e) (V_Rec_Closure f x e c)
| Val_of_apply : forall (c c1 : env) (e1 e2 e : expr) (x: identifier) (v2 v: val),
val_of c e1 (V_Closure x e c1) → val_of c e2 v2 → val_of (add_env x v2 c1) e v
→ val_of c (Apply e1 e2) v
| Val_of_apply_rec : forall (c c1 : env) (e1 e2 e : expr) (f x: identifier) (v2 v: val),
val_of c e1 (V_Rec_Closure f x e c1) → val_of c e2 v2
→ val_of (add_env f (V_Rec_Closure f x e c1) (add_env x v2 c1)) e v
→ val_of c (Apply e1 e2) v
| Val_of_let : forall (c : env) (x : identifier) (e1 e2 : expr) (v1 v : val),
val_of c e1 v1 → val_of (add_env x v1 c) e2 v → val_of c (Let_in x e1 e2) v
| Val_of_If_true : forall (c : env) (e e1 e2 : expr) (v : val),
val_of c e (V_Bool true) → val_of c e1 v → val_of c (If e e1 e2) v
| Val_of_If_false : forall (c : env) (e e1 e2 : expr) (v : val),
val_of c e (V_Bool false) → val_of c e2 v → val_of c (If e e1 e2) v
| Val_of_Match : forall (c c_p : env) (e e1 : expr) (p : pattern) (v v_e : val) (br2 : option (identifier∗expr)),
val_of c e v_e → is_filtered v_e p = Filtered_result_Match c_p → val_of (conc_env c_p c) e1 v
→ val_of c (Expr_match e (p,e1) br2) v
| Val_of_Match_var : forall (c : env) (e e1 e2 : expr) (p : pattern) (v v_e : val) (x : identifier),
val_of c e v_e → is_filtered v_e p = Filtered_result_Match_var → val_of (add_env x v_e c) e2 v
→ val_of c (Expr_match e (p,e1) (Some (x,e2))) v
| Val_of_Constr0 : forall c n, val_of c (Constr0 n) (V_Constr0 n)
| Val_of_Constr1 : forall c n e v, val_of c e v → val_of c (Constr1 n e) (V_Constr1 n v)
| Val_of_Couple : forall c (e1 e2 : expr) (v1 v2 : val),
val_of c e1 v1 → val_of c e2 v2 → val_of c (Couple e1 e2) (V_Couple v1 v2)
| Val_of_Annot : forall c (l : label) (e : expr) v,
val_of c e v → val_of c (Annot l e) v.
214A.2. SÉMANTIQUE AVEC INJECTION
A.2 Sémantique avec injection
Inductive val_of_with_injection : label → val → oitenv → expr → val → Prop :=
| Val_of_with_injection_Num : forall (l:label) (vl:val) (v:Z) (c:oitenv),
val_of_with_injection l vl c (Num v) (V_Num v)
| Val_of_with_injection_Ident :
forall (l:label) (vl v:val) (c:oitenv) (i:identifier) (uu:oitval),
assoc_ident_in_oitenv i c = Ident_in_oitenv uu
→ Some v = instantiate_oitval l vl uu
→ val_of_with_injection l vl c (Var i) v
| Val_of_with_injection_Lambda :
forall (l:label) (vl v:val) (c:oitenv) (c’:env) (x:identifier) (e:expr),
Some c’ = instantiate_oitenv l vl c → v = V_Closure x e c’
→ val_of_with_injection l vl c (Lambda x e) v
| Val_of_with_injection_Rec :
forall (l:label) (vl v:val) (c:oitenv) (c’:env) (f x:identifier) (e:expr),
Some c’ = instantiate_oitenv l vl c → v = V_Rec_Closure f x e c’
→ val_of_with_injection l vl c (Rec f x e) v
| Val_of_with_injection_Apply :
forall (l:label) (vl:val) (c:oitenv) (c1:env) (e1 e2 e:expr) (x:identifier) (v2 v:val),
val_of_with_injection l vl c e1 (V_Closure x e c1)
→ val_of_with_injection l vl c e2 v2
→ val_of_with_injection l vl (OITEnv_cons x (val_to_oitval v2) (env_to_oitenv c1)) e v
→ val_of_with_injection l vl c (Apply e1 e2) v
| Val_of_with_injection_Apply_rec :
forall (l:label) (vl:val) (c : oitenv) (c1 : env) (e1 e2 e : expr) (f x : identifier) (v2 v : val),
val_of_with_injection l vl c e1 (V_Rec_Closure f x e c1)
→ val_of_with_injection l vl c e2 v2
→ val_of_with_injection l vl (env_to_oitenv (add_env f (V_Rec_Closure f x e c1)
(add_env x v2 c1))) e v
→ val_of_with_injection l vl c (Apply e1 e2) v
| Val_of_with_injection_Let_in :
forall (l:label) (vl:val) (c : oitenv) (i : identifier) (e1 e2 : expr) (v1 v2 : val),
val_of_with_injection l vl c e1 v1
→ val_of_with_injection l vl (OITEnv_cons i (val_to_oitval v1) c) e2 v2
→ val_of_with_injection l vl c (Let_in i e1 e2) v2
| Val_of_with_injection_If_true :
forall (l:label) (vl:val) (c : oitenv) (e e1 e2 : expr) (v : val),
val_of_with_injection l vl c e (V_Bool true)
→ val_of_with_injection l vl c e1 v
→ val_of_with_injection l vl c (If e e1 e2) v
215A.2. SÉMANTIQUE AVEC INJECTION
| Val_of_with_injection_If_false :
forall (l:label) (vl:val) (c : oitenv) (e e1 e2 : expr) (v : val),
val_of_with_injection l vl c e (V_Bool false)
→ val_of_with_injection l vl c e2 v
→ val_of_with_injection l vl c (If e e1 e2) v
| Val_of_with_injection_Match :
forall (l:label) (vl:val) (c:oitenv) (c_p:env) (e e1 : expr)
(p : pattern) (v v_e : val) (br2 : option (identifier∗expr)),
val_of_with_injection l vl c e v_e
→ is_filtered v_e p = Filtered_result_Match c_p
→ val_of_with_injection l vl (conc_oitenv (env_to_oitenv c_p) c) e1 v
→ val_of_with_injection l vl c (Expr_match e (p,e1) br2) v
| Val_of_with_injection_Match_var :
forall (l:label) (vl:val) (c : oitenv) (e e1 e2 : expr) (p : pattern) (v v_e : val) (x : identifier),
val_of_with_injection l vl c e v_e
→ is_filtered v_e p = Filtered_result_Match_var
→ val_of_with_injection l vl (OITEnv_cons x (val_to_oitval v_e) c) e2 v
→ val_of_with_injection l vl c (Expr_match e (p,e1) (Some (x,e2))) v
| Val_of_with_injection_Constr0 : forall (l:label) (vl:val) c n,
val_of_with_injection l vl c (Constr0 n) (V_Constr0 n)
| Val_of_with_injection_Constr1 : forall (l:label) (vl:val) c n e v,
val_of_with_injection l vl c e v
→ val_of_with_injection l vl c (Constr1 n e) (V_Constr1 n v)
| Val_of_with_injection_Couple : forall (l:label) (vl:val) c (e1 e2 : expr) (v1 v2 : val),
val_of_with_injection l vl c e1 v1
→ val_of_with_injection l vl c e2 v2
→ val_of_with_injection l vl c (Couple e1 e2) (V_Couple v1 v2)
| Val_of_with_injection_Annot_eq : forall (l:label) (vl:val) c (e : expr),
val_of_with_injection l vl c (Annot l e) vl
| Val_of_with_injection_Annot_neq : forall (l:label) (vl:val) c (l’ : label) (e : expr) v,
val_of_with_injection l vl c e v
→ neq_label l l’
→ val_of_with_injection l vl c (Annot l’ e) v.
216A.3. SÉMANTIQUE SUR-INSTRUMENTÉE
A.3 Sémantique sur-instrumentée
Inductive oival_of : oitenv → expr → oitval → Prop :=
| OIVal_of_Num : forall (v:Z) (c:oitenv), oival_of c (Num v) (OIV nil (OIV_ nil (OIV_Num v)))
| OIVal_of_Ident : forall (c:oitenv) (x:identifier) (uu:oitval),
assoc_ident_in_oitenv x c = Ident_in_oitenv uu → oival_of c (Var x) uu
| OIVal_of_Lambda : forall (c:oitenv) (x:identifier) (e:expr) (uu:oitval),
uu = OIV nil (OIV_ nil (OIV_Closure x e (oitenv_to_oienv c))) → oival_of c (Lambda x e) uu
| OIVal_of_Rec : forall (c:oitenv) (f x:identifier) (e:expr) (uu:oitval),
uu = OIV nil (OIV_ nil (OIV_Rec_Closure f x e (oitenv_to_oienv c)))
→ oival_of c (Rec f x e) uu
| OIVal_of_Apply : forall (c:oitenv) (c1:oienv) (e1 e2 e : expr) (x : identifier)
(uu2 uu:oitval) (u2:oival) (d d’ d1:oideps) (td1 td2 td td’:oitdeps) (v:oival0),
oival_of c e1 (OIV td1 (OIV_ d1 (OIV_Closure x e c1)))
→ oival_of c e2 uu2 → uu2 = OIV td2 u2
→ oival_of (OITEnv_cons x uu2 (oienv_to_oitenv c1)) e (OIV td (OIV_ d v))
→ deps_spec_Apply uu2 d1 td’ d’ (* specification des dependances td’ et d’ *)
→ uu = OIV (conc_oitdeps td1 (conc_oitdeps td2 (conc_oitdeps td td’)))
(OIV_ (conc_oideps d’ d) v) (* resultat de l’application *)
→ oival_of c (Apply e1 e2) uu
| OIVal_of_Apply_Rec :
forall (c:oitenv) (c1:oienv) (e1 e2 e : expr) (f x:identifier)
(uu1 uu2 uu:oitval) (u2:oival) (d d’ d1:oideps) (td1 td2 td td’:oitdeps) (v:oival0),
oival_of c e1 uu1
→ uu1 = (OIV td1 (OIV_ d1 (OIV_Rec_Closure f x e c1)))
→ oival_of c e2 uu2 → uu2 = OIV td2 u2
→ oival_of (OITEnv_cons f uu1 (OITEnv_cons x uu2 (oienv_to_oitenv c1))) e
(OIV td (OIV_ d v))
→ deps_spec_Apply uu2 d1 td’ d’ (* specification des dependances td’ et d’ *)
→ uu = OIV (conc_oitdeps td1 (conc_oitdeps td2 (conc_oitdeps td td’)))
(OIV_ (conc_oideps d’ d) v) (* resultat de l’application *)
→ oival_of c (Apply e1 e2) uu
| OIVal_of_Let_in :
forall (c:oitenv) (x:identifier) (e1 e2:expr) (uu1 uu2:oitval) (td1 td2:oitdeps) (u1 u2:oival),
oival_of c e1 uu1 → uu1 = (OIV td1 u1)
→ oival_of (OITEnv_cons x uu1 c) e2 uu2 → uu2 = (OIV td2 u2)
→ oival_of c (Let_in x e1 e2) (OIV (conc_oitdeps td1 td2) u2)
| OIVal_of_If_true :
forall (c:oitenv) (e e1 e2:expr) (td td1 td’:oitdeps) (d d1 d’:oideps) (uu1:oitval) (v1:oival0),
oival_of c e (OIV td (OIV_ d (OIV_Bool true)))
→ oival_of c e1 uu1 → uu1 = (OIV td1 (OIV_ d1 v1))
→ deps_spec_If c e1 e2 d td’ d’ (* specification des dependances td’ et d’ *)
→ oival_of c (If e e1 e2) (OIV (conc_oitdeps td’ (conc_oitdeps td td1))
(OIV_ (conc_oideps d’ d1) v1))
217A.3. SÉMANTIQUE SUR-INSTRUMENTÉE
| OIVal_of_If_false :
forall (c:oitenv) (e e1 e2:expr) (td td2 td’:oitdeps) (d d2 d’:oideps) (uu2:oitval) (v2:oival0),
oival_of c e (OIV td (OIV_ d (OIV_Bool false)))
→ oival_of c e2 uu2 → uu2 = (OIV td2 (OIV_ d2 v2))
→ deps_spec_If c e1 e2 d td’ d’ (* specification des dependances td’ et d’ *)
→ oival_of c (If e e1 e2) (OIV (conc_oitdeps td’ (conc_oitdeps td td2))
(OIV_ (conc_oideps d’ d2) v2))
| OIVal_of_Match :
forall (c c_p:oitenv) (e e1 e2: expr) (p:pattern) (x:identifier) (uu uu1:oitval)
(td td1 td’:oitdeps) (d d1 d’:oideps) (v v1:oival0),
oival_of c e uu
→ uu = (OIV td (OIV_ d v))
→ is_filtered_oitval uu p = Filtered_oitval_result_Match c_p
→ oival_of (conc_oitenv c_p c) e1 uu1
→ uu1 = (OIV td1 (OIV_ d1 v1))
→ deps_spec_Match c p x e1 e2 d td’ d’ (* specification des dependances td’ et d’ *)
→ oival_of c (Expr_match e (p,e1) (Some (x,e2))) (OIV (conc_oitdeps td’ (conc_oitdeps td td1))
(OIV_ (conc_oideps d’ d1) v1))
| OIVal_of_Match_var :
forall (c:oitenv) (e e1 e2: expr) (p:pattern) (x:identifier) (uu uu2:oitval)
(td td2 td’:oitdeps) (d d2 d’:oideps) (v v2:oival0),
oival_of c e uu
→ uu = (OIV td (OIV_ d v))
→ is_filtered_oitval uu p = Filtered_oitval_result_Match_var
→ oival_of (OITEnv_cons x uu c) e2 uu2
→ uu2 = (OIV td2 (OIV_ d2 v2))
→ deps_spec_Match c p x e1 e2 d td’ d’ (* specification des dependances td’ et d’ *)
→ oival_of c (Expr_match e (p,e1) (Some (x,e2))) (OIV (conc_oitdeps td’ (conc_oitdeps td td2))
(OIV_ (conc_oideps d’ d2) v2))
| OIVal_of_Constr0 : forall (c:oitenv) (n:constr),
oival_of c (Constr0 n) (OIV nil (OIV_ nil (OIV_Constr0 n)))
| OIVal_of_Constr1 : forall (c:oitenv) (n:constr) (e:expr) (td:oitdeps) (u:oival),
oival_of c e (OIV td u)
→ oival_of c (Constr1 n e) (OIV td (OIV_ nil (OIV_Constr1 n u)))
| OIVal_of_Couple : forall (c:oitenv) (e1 e2:expr) (td1 td2:oitdeps) (u1 u2:oival),
oival_of c e1 (OIV td1 u1) → oival_of c e2 (OIV td2 u2)
→ oival_of c (Couple e1 e2) (OIV (conc_oitdeps td1 td2) (OIV_ nil (OIV_Couple u1 u2)))
| OIVal_of_Annot : forall (c:oitenv) (l:label) (e:expr) (td:oitdeps) (d:oideps) (v:oival0),
oival_of c e (OIV td (OIV_ d v))
→ oival_of c (Annot l e) (OIV td (OIV_ (cons (l, fun x⇒ x) d) v)).
218A.4. SÉMANTIQUE INSTRUMENTÉE
A.4 Sémantique instrumentée
Inductive ival_of : itenv → expr → itval → Prop :=
| IVal_of_Num : forall (v:Z) (c:itenv),
ival_of c (Num v) (IV nil (IV_ nil (IV_Num v)))
| IVal_of_Ident : forall (c:itenv) (x:identifier) (uu:itval),
assoc_ident_in_itenv x c = Ident_in_itenv uu
→ ival_of c (Var x) uu
| IVal_of_Lambda : forall (c:itenv) (x:identifier) (e:expr) (uu:itval),
uu = IV nil (IV_ nil (IV_Closure x e (itenv_to_ienv c)))
→ ival_of c (Lambda x e) uu
| IVal_of_Rec :
forall (c:itenv) (f x:identifier) (e:expr) (uu:itval),
uu = IV nil (IV_ nil (IV_Rec_Closure f x e (itenv_to_ienv c)))
→ ival_of c (Rec f x e) uu
| IVal_of_Apply :
forall (c:itenv) (c1:ienv) (e1 e2 e : expr) (x : identifier)
(uu2 uu:itval) (u2:ival) (d d1:ideps) (td1 td2 td:itdeps) (v:ival0),
(* construction de la valeur *)
ival_of c e1 (IV td1 (IV_ d1 (IV_Closure x e c1)))
→ ival_of c e2 uu2
→ uu2 = IV td2 u2
→ ival_of (ITEnv_cons x uu2 (ienv_to_itenv c1)) e (IV td (IV_ d v))
(* resultat de l’application *)
→ uu = IV (conc_itdeps td1 (conc_itdeps td2 (conc_itdeps td d1))) (IV_ (conc_ideps d1 d) v)
→ ival_of c (Apply e1 e2) uu
| IVal_of_Apply_Rec :
forall (c:itenv) (c1:ienv) (e1 e2 e : expr) (f x:identifier)
(uu1 uu2 uu:itval) (u2:ival) (d d1:ideps) (td1 td2 td:itdeps) (v:ival0),
(* construction de la valeur *)
ival_of c e1 uu1
→ uu1 = (IV td1 (IV_ d1 (IV_Rec_Closure f x e c1)))
→ ival_of c e2 uu2
→ ival_of (ITEnv_cons f uu1 (ITEnv_cons x uu2 (ienv_to_itenv c1))) e (IV td (IV_ d v))
→ uu2 = IV td2 u2
(* resultat de l’application *)
→ uu = IV (conc_itdeps td1 (conc_itdeps td2 (conc_itdeps td d1))) (IV_ (conc_ideps d1 d) v)
→ ival_of c (Apply e1 e2) uu
| IVal_of_Let_in :
forall (c:itenv) (x:identifier) (e1 e2:expr) (uu1 uu2:itval) (td1 td2:itdeps) (u1 u2:ival),
ival_of c e1 uu1
→ uu1 = (IV td1 u1)
→ ival_of (ITEnv_cons x uu1 c) e2 uu2
→ uu2 = (IV td2 u2)
→ ival_of c (Let_in x e1 e2) (IV (conc_itdeps td1 td2) u2)
219A.4. SÉMANTIQUE INSTRUMENTÉE
| IVal_of_If_true :
forall (c:itenv) (e e1 e2:expr) (td td1:itdeps) (d d1:ideps) (uu1:itval) (v1:ival0),
ival_of c e (IV td (IV_ d (IV_Bool true)))
→ ival_of c e1 uu1 → uu1 = (IV td1 (IV_ d1 v1))
→ ival_of c (If e e1 e2) (IV (conc_itdeps d (conc_itdeps td td1)) (IV_ (conc_ideps d d1) v1))
| IVal_of_If_false :
forall (c:itenv) (e e1 e2:expr) (td td2:itdeps) (d d2:ideps) (uu2:itval) (v2:ival0),
ival_of c e (IV td (IV_ d (IV_Bool false)))
→ ival_of c e2 uu2 → uu2 = (IV td2 (IV_ d2 v2))
→ ival_of c (If e e1 e2) (IV (conc_itdeps d (conc_itdeps td td2)) (IV_ (conc_ideps d d2) v2))
| IVal_of_Match :
forall (c c_p:itenv) (e e1 e2: expr) (p:pattern) (x:identifier) (uu uu1:itval)
(td td1:itdeps) (d d1:ideps) (v v1:ival0),
ival_of c e uu
→ uu = (IV td (IV_ d v))
→ is_filtered_itval uu p = Filtered_itval_result_Match c_p
→ ival_of (conc_itenv c_p c) e1 uu1
→ uu1 = (IV td1 (IV_ d1 v1))
→ ival_of c (Expr_match e (p,e1) (Some (x,e2))) (IV (conc_itdeps d (conc_itdeps td td1))
(IV_ (conc_ideps d d1) v1))
| IVal_of_Match_var :
forall (c:itenv) (e e1 e2: expr) (p:pattern) (x:identifier) (uu uu2:itval)
(td td2:itdeps) (d d2:ideps) (v v2:ival0),
ival_of c e uu
→ uu = (IV td (IV_ d v))
→ is_filtered_itval uu p = Filtered_itval_result_Match_var
→ ival_of (ITEnv_cons x uu c) e2 uu2
→ uu2 = (IV td2 (IV_ d2 v2))
→ ival_of c (Expr_match e (p,e1) (Some (x,e2))) (IV (conc_itdeps d (conc_itdeps td td2))
(IV_ (conc_ideps d d2) v2))
| IVal_of_Constr0 : forall (c:itenv) (n:constr),
ival_of c (Constr0 n) (IV nil (IV_ nil (IV_Constr0 n)))
| IVal_of_Constr1 : forall (c:itenv) (n:constr) (e:expr) (td:itdeps) (u:ival),
ival_of c e (IV td u)
→ ival_of c (Constr1 n e) (IV td (IV_ nil (IV_Constr1 n u)))
| IVal_of_Couple : forall (c:itenv) (e1 e2:expr) (td1 td2:itdeps) (u1 u2:ival),
ival_of c e1 (IV td1 u1)
→ ival_of c e2 (IV td2 u2)
→ ival_of c (Couple e1 e2) (IV (conc_itdeps td1 td2) (IV_ nil (IV_Couple u1 u2)))
| IVal_of_Annot : forall (c:itenv) (l:label) (e:expr) (td:itdeps) (d:ideps) (v:ival0),
ival_of c e (IV td (IV_ d v))
→ ival_of c (Annot l e) (IV td (IV_ (cons l d) v)).
220A.5. SÉMANTIQUE INSTRUMENTÉE MULTIPLE
A.5 Sémantique instrumentée multiple
Inductive imval_of : imenv → expr → imval → Prop :=
| IMVal_of :
forall (imc:imenv) (e:expr) (imv:imval),
imv = (fun itu ⇒
exists (itc:itenv), In _ imc itc
∧ ival_of itc e itu)
→ imval_of imc e imv.
221A.6. SÉMANTIQUE COLLECTRICE
A.6 Sémantique collectrice
Inductive ctval_of : ctenv → expr → ctval → Prop :=
| CTVal_of_Num : forall (ctc:ctenv) (v:Z),
ctval_of ctc (Num v) (CTVal nil nil (Singleton _ (IV_Num v)))
| CTVal_of_Constr0 : forall (ctc:ctenv) (n:constr),
ctval_of ctc (Constr0 n) (CTVal nil nil (Singleton _ (IV_Constr0 n)))
| CTVal_of_Constr1 :
forall (ctc:ctenv) (n:constr) (e:expr) (td:itdeps) (d:ideps) (ivs ivs’:Ensemble ival0),
ctval_of ctc e (CTVal td d ivs)
→ ivs’ = SetMap (fun iv ⇒ IV_Constr1 n (IV_ d iv)) ivs
→ ctval_of ctc (Constr1 n e) (CTVal td nil ivs’)
| CTVal_of_Apply :
forall (ctc:ctenv) (e1 e2:expr)
(td1 td2 td:itdeps) (d1 d2 d:ideps) (ivs1 ivs2:Ensemble ival0)
(ctv:ctval)
(imv:Ensemble itval),
ctval_of ctc e1 (CTVal td1 d1 ivs1)
→ ctval_of ctc e2 (CTVal td2 d2 ivs2)
→ imv = (fun itu ⇒ (exists x e ic1 iv2 itd id iv,
In _ ivs1 (IV_Closure x e ic1)
∧ In _ ivs2 iv2
∧ ival_of (ITEnv_cons x (IV td2 (IV_ d2 iv2)) (ienv_to_itenv ic1))
e (IV itd (IV_ id iv))
∧ itu = IV (conc_itdeps td1 (conc_itdeps td2 (conc_itdeps itd d1)))
(IV_ (conc_ideps d1 id) iv))
∨ (exists f x e ic iv2 itd id iv,
In _ ivs1 (IV_Rec_Closure f x e ic)
∧ In _ ivs2 iv2
∧ ival_of (ITEnv_cons f (IV td1 (IV_ d1 (IV_Rec_Closure f x e ic)))
(ITEnv_cons x (IV td2 (IV_ d2 iv2)) (ienv_to_itenv ic)))
e (IV itd (IV_ id iv))
∧ itu = IV (conc_itdeps td1 (conc_itdeps td2 (conc_itdeps itd d1)))
(IV_ (conc_ideps d1 id) iv)))
→ (forall l:label, List.In l td
↔ (exists td’, List.In l td’
∧ In _ (SetMap (fun itu ⇒ match itu with
| IV td (IV_ d iv) ⇒ td end) imv) td’))
→ (forall l:label, List.In l d
↔ (exists d’, List.In l d’
∧ In _ (SetMap (fun itu ⇒ match itu with
| IV td (IV_ d iv) ⇒ d end) imv) d’))
→ ctv = CTVal td d (SetMap (fun itu ⇒ match itu with | IV td (IV_ d iv) ⇒ iv end) imv)
→ ctval_of ctc (Apply e1 e2) ctv
| CTVal_of_Ident : forall (ctc:ctenv) (x:identifier) (ctv:ctval),
assoc_ident_in_ctenv x ctc = Ident_in_ctenv ctv
→ ctval_of ctc (Var x) ctv
222A.6. SÉMANTIQUE COLLECTRICE
| CTVal_of_Ident_empty :forall (ctc:ctenv) (x:identifier),
assoc_ident_in_ctenv x ctc = Ident_not_in_ctenv
→ ctval_of ctc (Var x) (CTVal nil nil (Empty_set _))
| CTVal_of_Lambda :
forall (ctc:ctenv) (x:identifier) (e:expr) (ctv:ctval) (ivs:Ensemble ival0),
ivs = SetMap (fun itc ⇒ IV_Closure x e (itenv_to_ienv itc)) (ctenv_to_imenv ctc)
→ ctval_of ctc (Lambda x e) (CTVal nil nil ivs)
| CTVal_of_Rec :
forall (ctc:ctenv) (f x:identifier) (e:expr) (ctv:ctval) (ivs:Ensemble ival0),
ivs = SetMap (fun itc ⇒ IV_Rec_Closure f x e (itenv_to_ienv itc)) (ctenv_to_imenv ctc)
→ ctval_of ctc (Rec f x e) (CTVal nil nil ivs)
| CTVal_of_If_true :
forall (ctc:ctenv) (e e1 e2:expr) (td td1:itdeps) (d d1:ideps) (ivs ivs1:Ensemble ival0),
ctval_of ctc e (CTVal td d ivs)
→ In _ ivs (IV_Bool true)
→ (not (In _ ivs (IV_Bool false)))
→ ctval_of ctc e1 (CTVal td1 d1 ivs1)
→ ctval_of ctc (If e e1 e2) (CTVal (conc_itdeps d (conc_itdeps td td1))
(conc_ideps d d1) ivs1)
| CTVal_of_If_false :
forall (ctc:ctenv) (e e1 e2:expr) (td td2:itdeps) (d d2:ideps) (ivs ivs2:Ensemble ival0),
ctval_of ctc e (CTVal td d ivs)
→ Same_set _ ivs (Singleton _ (IV_Bool false))
→ In _ ivs (IV_Bool false)
→ (not (In _ ivs (IV_Bool true)))
→ ctval_of ctc e2 (CTVal td2 d2 ivs2)
→ ctval_of ctc (If e e1 e2) (CTVal (conc_itdeps d (conc_itdeps td td2))
(conc_ideps d d2) ivs2)
| CTVal_of_If_unknown :
forall (ctc:ctenv) (e e1 e2:expr)
(td td1 td2:itdeps) (d d1 d2:ideps) (ivs ivs1 ivs2:Ensemble ival0),
ctval_of ctc e (CTVal td d ivs)
→ Included _ (Couple _ (IV_Bool true) (IV_Bool false)) ivs
→ ctval_of ctc e1 (CTVal td1 d1 ivs1)
→ ctval_of ctc e2 (CTVal td2 d2 ivs2)
→ ctval_of ctc (If e e1 e2) (CTVal (conc_itdeps d (conc_itdeps td (conc_itdeps td1 td2)))
(conc_ideps d (conc_ideps d1 d2))
(Union _ ivs1 ivs2))
| CTVal_of_If_empty :
forall (ctc:ctenv) (e e1 e2:expr) (td td1:itdeps) (d d1:ideps) (ivs ivs1:Ensemble ival0),
ctval_of ctc e (CTVal td d ivs)
→ (not (In _ ivs (IV_Bool true)))
→ (not (In _ ivs (IV_Bool false)))
→ ctval_of ctc (If e e1 e2) (CTVal nil nil (Empty_set _))
223A.6. SÉMANTIQUE COLLECTRICE
| CTVal_of_Match :
forall (ctv:ctval) (ctc ctc_p:ctenv) (e e1:expr)
(br2:option (identifier∗expr)) (p:pattern)
(td td1:itdeps) (d d1:ideps) (ivs ivs1:Ensemble ival0),
ctval_of ctc e ctv
→ ctv = (CTVal td d ivs)
→ Inhabited _ (Intersection _ ivs ivs_of_matchable)
→ is_filtered_ctval ctv p (Filtered_ctval_result_Match ctc_p)
→ ctval_of (conc_ctenv ctc_p ctc) e1 (CTVal td1 d1 ivs1)
→ ctval_of ctc (Expr_match e (p,e1) br2) (CTVal (conc_itdeps d (conc_itdeps td td1))
(conc_ideps d d1) ivs1)
| CTVal_of_Match_var :
forall (ctv:ctval) (ctc:ctenv) (e e1 e2:expr)
(p:pattern) (x:identifier)
(td td2:itdeps) (d d2:ideps) (ivs ivs2:Ensemble ival0),
ctval_of ctc e ctv
→ ctv = (CTVal td d ivs)
→ Inhabited _ (Intersection _ ivs ivs_of_matchable)
→ is_filtered_ctval ctv p Filtered_ctval_result_Match_var
→ ctval_of (CTEnv_cons x ctv ctc) e2 (CTVal td2 d2 ivs2)
→ ctval_of ctc (Expr_match e (p,e1) (Some (x,e2))) (CTVal (conc_itdeps d (conc_itdeps td td2))
(conc_ideps d d2) ivs2)
| CTVal_of_Match_unknown :
forall (ctv:ctval) (ctc ctc_p:ctenv) (e e1 e2:expr)
(p:pattern) (x:identifier)
(td td1 td2:itdeps) (d d1 d2:ideps) (ivs ivs1 ivs2:Ensemble ival0),
ctval_of ctc e ctv
→ ctv = (CTVal td d ivs)
→ Inhabited _ (Intersection _ ivs ivs_of_matchable)
→ is_filtered_ctval ctv p (Filtered_ctval_result_Match_unknown ctc_p)
→ ctval_of (conc_ctenv ctc_p ctc) e1 (CTVal td1 d1 ivs1)
→ ctval_of (CTEnv_cons x ctv ctc) e2 (CTVal td2 d2 ivs2)
→ ctval_of ctc (Expr_match e (p,e1) (Some (x,e2)))
(CTVal (conc_itdeps d (conc_itdeps td (conc_itdeps td1 td2)))
(conc_ideps d (conc_ideps d1 d2))
(Union _ ivs1 ivs2))
| CTVal_of_Match_empty :
forall (ctv:ctval) (ctc ctc_p:ctenv) (e e1:expr)
(br2:option (identifier∗expr)) (p:pattern)
(td td1:itdeps) (d d1:ideps) (ivs ivs1:Ensemble ival0),
ctval_of ctc e ctv
→ ctv = (CTVal td d ivs)
→ not (Inhabited _ (Intersection _ ivs ivs_of_matchable))
→ ctval_of ctc (Expr_match e (p,e1) br2) (CTVal nil nil (Empty_set _))
224A.6. SÉMANTIQUE COLLECTRICE
| CTVal_of_Couple :
forall (ctc:ctenv) (e1 e2:expr) (td1 td2:itdeps) (d1 d2:ideps) (ivs1 ivs2 ivs’:Ensemble ival0),
ctval_of ctc e1 (CTVal td1 d1 ivs1)
→ ctval_of ctc e2 (CTVal td2 d2 ivs2)
→ ivs’ = SetMap2 (fun iv1 iv2 ⇒ IV_Couple (IV_ d1 iv1) (IV_ d2 iv2)) ivs1 ivs2
→ ctval_of ctc (language.Couple e1 e2) (CTVal (conc_itdeps td1 td2) nil ivs’)
| CTVal_of_Annot :
forall (ctc:ctenv) (l:label) (e:expr) (td:itdeps) (d:ideps) (ivs:Ensemble ival0),
ctval_of ctc e (CTVal td d ivs)
→ ctval_of ctc (Annot l e) (CTVal td (cons l d) ivs)
| CTVal_of_Let_in :
forall (ctc:ctenv) (x:identifier) (e1 e2:expr)
(ctv1 ctv2:ctval) (td1 td2:itdeps) (d1 d2:ideps) (ivs1 ivs2:Ensemble ival0),
ctval_of ctc e1 ctv1
→ ctv1 = (CTVal td1 d1 ivs1)
→ (exists (iv1:ival0), In _ ivs1 iv1)
→ ctval_of (CTEnv_cons x ctv1 ctc) e2 ctv2
→ ctv2 = (CTVal td2 d2 ivs2)
→ ctval_of ctc (Let_in x e1 e2) (CTVal (conc_itdeps td1 td2) d2 ivs2)
| CTVal_of_Let_in_empty :
forall (ctc:ctenv) (x:identifier) (e1 e2:expr)
(ctv1:ctval) (td1:itdeps) (d1:ideps) (ivs1:Ensemble ival0),
ctval_of ctc e1 ctv1
→ ctv1 = (CTVal td1 d1 ivs1)
→ not (Inhabited _ ivs1)
→ ctval_of ctc (Let_in x e1 e2) (CTVal nil nil (Empty_set _)).
225A.7. SÉMANTIQUE ABSTRAITE
A.7 Sémantique abstraite
Inductive atval_of : atenv → expr → atval → Prop :=
| ATVal_of_Num : forall (v:Z) (atc:atenv),
atval_of atc (Num v) (ATV nil (AV nil (AV_Top)))
| ATVal_of_Ident : forall (atc:atenv) (x:identifier) (atu:atval),
assoc_ident_in_atenv x atc = Ident_in_atenv atu
→ atval_of atc (Var x) atu
| ATVal_of_Ident_empty : forall (atc:atenv) (x:identifier) (atu:atval),
assoc_ident_in_atenv x atc = Ident_not_in_atenv
→ atval_of atc (Var x) (ATV nil (AV nil (AV_Bottom)))
| ATVal_of_Lambda : forall (atc:atenv) (x:identifier) (e:expr) (atu:atval),
atu = ATV nil (AV nil (AV_Closure x e (atenv_to_aenv atc)))
→ atval_of atc (Lambda x e) atu
| ATVal_of_Rec : forall (atc:atenv) (f x:identifier) (e:expr) (atu:atval),
atu = ATV nil (AV nil (AV_Rec_Closure f x e (atenv_to_aenv atc)))
→ atval_of atc (Rec f x e) atu
| ATVal_of_Apply :
forall (atc:atenv) (ac1:aenv) (e1 e2 e : expr) (x : identifier)
(atu2 atu:atval) (au2:aval) (ad ad1:adeps) (atd1 atd2 atd:atdeps) (av:aval0),
(* construction de la valeur *)
atval_of atc e1 (ATV atd1 (AV ad1 (AV_Closure x e ac1)))
→ atval_of atc e2 atu2
→ atu2 = ATV atd2 au2
→ atval_of (ATEnv_cons x atu2 (aenv_to_atenv ac1)) e (ATV atd (AV ad av))
(* resultat de l’application *)
→ atu = ATV (conc_atdeps atd1 (conc_atdeps atd2 (conc_atdeps atd ad1)))
(AV (conc_adeps ad1 ad) av)
→ atval_of atc (Apply e1 e2) atu
| ATVal_of_Apply_rec :
forall (atc:atenv) (ac1:aenv) (e1 e2 e:expr) (f x:identifier)
(atu2 atu atu_f:atval) (au2:aval) (ad ad1:adeps) (atd1 atd2 atd:atdeps) (av:aval0),
(* construction de la valeur *)
atval_of atc e1 (ATV atd1 (AV ad1 (AV_Rec_Closure f x e ac1)))
→ atu_f = ATV atd1 (AV (deps_of_freevars (Rec f x e) (atenv_to_aenv atc)) AV_Top)
→ atval_of atc e2 atu2
→ atu2 = ATV atd2 au2
→ atval_of (ATEnv_cons f atu_f (ATEnv_cons x atu2 (aenv_to_atenv ac1))) e
(ATV atd (AV ad av))
(* resultat de l’application *)
→ atu = ATV (conc_atdeps atd1 (conc_atdeps atd2 (conc_atdeps atd ad1)))
(AV (conc_adeps ad1 ad) av)
→ atval_of atc (Apply e1 e2) atu
226A.7. SÉMANTIQUE ABSTRAITE
| ATVal_of_Apply_unknown :
forall (atc:atenv) (e1 e2: expr)
(atu:atval) (atd1 atd2:atdeps) (ad1 ad2:adeps) (av1 av2:aval0),
(* construction de la valeur *)
atval_of atc e1 (ATV atd1 (AV ad1 av1))
→ (match av1 with
| AV_Closure _ _ _ ⇒ False
| AV_Rec_Closure _ _ _ _ ⇒ False
| _ ⇒ True
end)
→ atval_of atc e2 (ATV atd2 (AV ad2 av2))
(* resultat de l’application *)
→ atu = ATV (conc_atdeps atd1 (conc_atdeps atd2 (conc_atdeps ad1 ad2)))
(AV (conc_adeps ad1 ad2) AV_Top)
→ atval_of atc (Apply e1 e2) atu
(* amelioration possible :
pour une analyse plus precise, si la valeur de e1 ou e2 est Bottom, retourner Bottom *)
| ATVal_of_Let_in :
forall (atc:atenv) (x:identifier) (e1 e2:expr) (atu1 atu2:atval) (atd1 atd2:atdeps) (au1 au2:aval),
atval_of atc e1 atu1
→ atu1 = (ATV atd1 au1)
→ atval_of (ATEnv_cons x atu1 atc) e2 atu2
→ atu2 = (ATV atd2 au2)
→ atval_of atc (Let_in x e1 e2) (ATV (conc_atdeps atd1 atd2) au2)
| ATVal_of_If :
forall (atc:atenv) (e e1 e2:expr) (atd atd1 atd2:atdeps)
(ad ad1 ad2:adeps) (atu1 atu2:atval) (av av1 av2:aval0),
atval_of atc e (ATV atd (AV ad av))
→ atval_of atc e1 atu1
→ atu1 = (ATV atd1 (AV ad1 av1))
→ atval_of atc e2 atu2
→ atu2 = (ATV atd2 (AV ad2 av2))
→ atval_of atc (If e e1 e2) (ATV (conc_atdeps ad (conc_atdeps atd (conc_atdeps atd1 atd2)))
(AV (conc_adeps ad (conc_adeps ad1 ad2)) AV_Top))
| ATVal_of_Match :
forall (atc atc_p:atenv) (e e1 e2: expr) (p:pattern) (x:identifier)
(atu atu1:atval) (atd atd1:atdeps) (ad ad1:adeps) (av av1:aval0),
atval_of atc e atu
→ atu = (ATV atd (AV ad av))
→ is_filtered_atval atu p = Filtered_atval_result_Match atc_p
→ atval_of (conc_atenv atc_p atc) e1 atu1
→ atu1 = (ATV atd1 (AV ad1 av1))
→ atval_of atc (Expr_match e (p,e1) (Some (x,e2)))
(ATV (conc_atdeps ad (conc_atdeps atd atd1))
(AV (conc_adeps ad ad1) av1))
227A.7. SÉMANTIQUE ABSTRAITE
| ATVal_of_Match_var :
forall (atc atc_p:atenv) (e e1 e2: expr) (p:pattern) (x:identifier)
(atu atu2:atval) (atd atd2:atdeps) (ad ad2:adeps) (av av2:aval0),
atval_of atc e atu
→ atu = (ATV atd (AV ad av))
→ is_filtered_atval atu p = Filtered_atval_result_Match_var
→ atval_of (ATEnv_cons x atu atc) e2 atu2
→ atu2 = (ATV atd2 (AV ad2 av2))
→ atval_of atc (Expr_match e (p,e1) (Some (x,e2)))
(ATV (conc_atdeps ad (conc_atdeps atd atd2))
(AV (conc_adeps ad ad2) av2))
| ATVal_of_Match_unknown :
forall (atc atc_p:atenv) (e e1 e2: expr) (p:pattern) (x:identifier)
(atu atu1 atu2:atval) (atd atd1 atd2:atdeps) (ad ad1 ad2:adeps) (av av1 av2:aval0),
atval_of atc e atu
→ atu = (ATV atd (AV ad av))
→ is_filtered_atval atu p = Filtered_atval_result_Match_unknown atc_p
→ atval_of (conc_atenv atc_p atc) e1 atu1
→ atu1 = (ATV atd1 (AV ad1 av1))
→ atval_of (ATEnv_cons x atu atc) e2 atu2
→ atu2 = (ATV atd2 (AV ad2 av2))
→ atval_of atc (Expr_match e (p,e1) (Some (x,e2)))
(ATV (conc_atdeps ad (conc_atdeps atd (conc_atdeps atd1 atd2)))
(AV (conc_adeps ad (conc_adeps ad1 ad2)) AV_Top))
| ATVal_of_Match_bottom :
forall (atc atc_p:atenv) (e e1 e2: expr) (p:pattern) (x:identifier)
(atu:atval) (atd:atdeps) (ad:adeps) (av:aval0),
atval_of atc e atu
→ atu = (ATV atd (AV ad av))
→ is_filtered_atval atu p = Filtered_atval_result_Error
→ atval_of atc (Expr_match e (p,e1) (Some (x,e2)))
(ATV nil (AV nil AV_Bottom))
| ATVal_of_Constr0 : forall (atc:atenv) (n:constr),
atval_of atc (Constr0 n) (ATV nil (AV nil (AV_Constr0 n)))
| ATVal_of_Constr1 : forall (atc:atenv) (n:constr) (e:expr) (atd:atdeps) (au:aval),
atval_of atc e (ATV atd au)
→ atval_of atc (Constr1 n e) (ATV atd (AV nil (AV_Constr1 n au)))
| ATVal_of_Couple : forall (atc:atenv) (e1 e2:expr) (atd1 atd2:atdeps) (au1 au2:aval),
atval_of atc e1 (ATV atd1 au1)
→ atval_of atc e2 (ATV atd2 au2)
→ atval_of atc (Couple e1 e2) (ATV (conc_atdeps atd1 atd2) (AV nil (AV_Couple au1 au2)))
| ATVal_of_Annot :
forall (atc:atenv) (l:label) (e:expr) (atd:atdeps) (ad:adeps) (av:aval0),
atval_of atc e (ATV atd (AV ad av))
→ atval_of atc (Annot l e) (ATV atd (AV (cons l ad) av)).
228Annexe B
Énoncés des théorèmes en Coq
B.1 Correction de la sémantique avec injection
Dans la version Coq de notre travail, nous avons défini la notion d’injection en formalisant
directement la sémantique avec injection dans un t-environnement sur-instrumenté.
Cependant, dans le manuscrit de thèse, nous avons choisi de présenter la sémantique
avec injection en deux étapes pour des raisons de clarté dans la présentation. En effet,
nous souhaitions commencer par introduire la notion d’injection telle que nous pouvons la
concevoir de façon intuitive avant d’entrer dans les détails de la sur-instrumentation des
valeurs et des environnements.
Il convient de remarquer ici que la preuve de correction de nos analyses dynamique
et statique ne dépend d’aucune manière de la preuve de correction de la sémantique avec
injection. En effet, c’est la sémantique avec injection qui pose la définition de la notion
d’injection, qui est le fondement de la notion de dépendance. Le théorème de correction
que nous apportons n’est donc pas nécessaire à la preuve de nos analyses par rapport à
la notion d’injection. Cependant, il constitue une justification de la définition formelle de
l’injection par rapport à la notion intuitive que nous en avons.
Voici le théorème de correction de la sémantique avec injection qui a été prouvé en Coq.
Theorem injection_correctness :
forall (l:label) (vl:val) (c:env) (c’:oitenv) (e:expr) (v:val),
label_does_not_appear_in_expr l c’ e
→ c = oitenv_to_env c’
→ val_of c e v
→ val_of_with_injection l vl c’ e v.
229B.2. CORRECTION DE LA SÉMANTIQUE SUR-INSTRUMENTÉE
B.2 Correction de la sémantique sur-instrumentée
Le théorème présenté dans le manuscrit pour la correction de la sémantique surinstrumentée
(cf. section 3.4.2.3) est identique à celui prouvé en Coq. Nous avons simplement
déplié la définition du prédicat is_instantiable_oitenv.
Theorem oival_of_correctness :
forall (c:oitenv) (e:expr) (uu:oitval),
oival_of c e uu
→ forall (l:label) (vl:val),
is_instantiable_oitenv l vl c
→ forall (v:val),
Some v = instantiate_oitval l vl uu
→ val_of_with_injection l vl c e v.
B.3 Correction de la sémantique instrumentée
Le théorème présenté dans le manuscrit pour la correction de la sémantique instrumentée
(cf. section 3.5.3.3) est identique à celui prouvé en Coq.
Theorem ival_of_correctness :
forall (itc:itenv) (e:expr) (itu:itval),
ival_of itc e itu
→ exists (oitu:oitval),
(oival_of (itenv_to_oitenv itc) e oitu
∧ oitval_to_itval oitu = itu).
230B.4. CORRECTION DE LA SÉMANTIQUE COLLECTRICE
B.4 Correction de la sémantique collectrice
Le théorème présenté dans le manuscrit pour la correction de la sémantique collectrice
(cf. section 4.3.3.3) est identique à celui prouvé en Coq.
On peut peut remarquer une petite différence de notation concernant la fonction de
conversion d’un environnement instrumenté multiple en un environnement collecteur. En
Coq, cette conversion est définie sous la forme d’un prédicat inductif alors que dans le
manuscrit de thèse, nous utilisons une notation fonctionnelle. Il s’agit uniquement d’une
différence de notation. La définition donnée dans le manuscrit (cf. figure 4.7) est la même
que sa version Coq.
Theorem ctval_of_correctness :
forall (imc:imenv) (e:expr) (imv:imval)
(ctv:ctval) (ctc:ctenv),
imval_of imc e imv
→ imenv_to_ctenv imc ctc
→ ctval_of ctc e ctv
→ le_imval imv (ctval_to_imval ctv).
B.5 Correction de la sémantique abstraite
Le théorème présenté dans le manuscrit pour la correction de la sémantique abstraite
(cf. section 4.4.3.3) est identique à celui prouvé en Coq. La preuve de ce théorème en Coq
n’a pas été terminée par manque de temps. La version de la preuve présente dans le manuscrit
(cf. section 4.4.3.4) est un peu plus complète puisque le cas de l’application, qui est
un des cas les plus complexes, a été prouvé.
Theorem atval_of_correctness :
forall (e:expr) (ctc:ctenv) (ctv:ctval)
(atc:atenv) (atu:atval),
ctenv_to_atenv ctc atc
→ ctval_of ctc e ctv
→ atval_of atc e atu
→ le_ctval ctv (atval_to_ctval atu).
231B.5. CORRECTION DE LA SÉMANTIQUE ABSTRAITE
232Index
Abstraction ↑
a
•
(•)
↑
a
c
(tΓ
c
), 175
↑
a
im(Γim), 175
↑
a
c
(tuc
), 174
↑
a
im(usi
), 174
d_of_usi
(usi
), 175
Abstraction ↑
c
•
(•)
↑
c
im(tΓ
im), 160
↑
c
im(v
im), 160
Abstraction ↑
i
•
(•)
↑
ti
toi(tΓ
oi), 131
↑
i
oi(Γoi), 132
↑
ti
toi(tuoi), 131
↑
i
oi(u
oi), 131
↑
i
oi(v
oi), 131
↑
ti
toi(tdoi), 131
↑
i
oi(d
oi), 131
Ajout de t-dépendances
↑
toi
oi (Γoi), 82
↑
toi
oi (u
oi), 82
↑
ti
i
(Γi
), 125
↑
ti
i
(u
i
), 125
↑
ta
a
(Γa
), 180
↑
ta
a
(u
a
), 180
Concrétisation ↑
•
a
(•)
↑
c
a
(tΓ
a
), 175
↑
c
a
(Γa
), 175
↑
c
a
(tua
), 175
↑
c
a
(v
a
), 175
Concrétisation ↑
•
c
(•)
↑
im
c
(tΓ
c
), 161
appendim
c
(tΓ
c
, tΓ
im), 161
↑
im
c
(tuc
), 161
Concrétisation ↑
•
i
(•)
↑
toi
ti (tΓ
i
), 133
↑
oi
i
(Γi
), 133
↑
toi
ti (tui
), 132
↑
oi
i
(u
i
), 132
↑
oi
i
(v
i
), 132
↑
toi
ti (tdi
), 132
↑
oi
i
(d
i
), 132
Ensemble des valeurs simples instrumentées
V
i
, 121
Fonctions auxiliaires
d_of_freevars(•), 178
Instanciation
↓
l:vl(tΓ
oi), 67
↓
l:vl(tuoi), 67
atifl:vl
(tdoi), 69
233INDEX
aifl:vl
(d
oi), 69
Jugement d’évaluation
Γ ⊢ e →→ v, 44
Γ ⊢l:vl
e →→ v, 49
tΓ
oi ⊢l:vl
e →→ v, 71
tΓ
oi ⊢
oi e →→ tuoi, 79
tΓ
i ⊢
i
e →→ tui
, 122
tΓ
im ⊢
im e →→ v
im, 148
tΓ
c ⊢
c
e →→ tuc
, 150
tΓ
a ⊢
a
e →→ tua
, 177
Relation d’ordre
⊆c
, 184
⊆i
, 161
⊆im, 161
Suppression des t-dépendances
↑
oi
toi(tΓ
oi), 81
↑
oi
toi(tuoi), 81
↑
i
ti(tΓ
i
), 124
↑
i
ti(tui
), 124
↑
a
ta(tΓ
a
), 179
↑
a
ta(tua
), 179
Valeur de référence
↑toi(tΓ
oi), 67
↑oi(Γoi), 67
↑toi(tuoi), 66
↑oi(u
oi), 67
↑oi(v
oi), 67
234Vincent BENAYOUN
Analyse de dépendances ML
pour les évaluateurs de logiciels critiques
Résumé :
Les logiciels critiques nécessitent l’obtention d’une évaluation de conformité aux normes en vigueur avant
leur mise en service. Cette évaluation est obtenue après un long travail d’analyse effectué par les évaluateurs
de logiciels critiques. Ces derniers peuvent être aidés par des outils utilisés de manière interactive pour
construire des modèles, en faisant appel à des analyses de flots d’information. Des outils comme SPARKAda
existent pour des sous-ensembles du langage Ada utilisés pour le développement de logiciels critiques.
Cependant, des langages émergents comme ceux de la famille ML ne disposent pas de tels outils adaptés.
La construction d’outils similaires pour les langages ML demande une attention particulière sur certaines
spécificités comme les fonctions d’ordre supérieur ou le filtrage par motifs. Ce travail présente une analyse
de flot d’information pour de tels langages, spécialement conçue pour répondre aux besoins des évaluateurs.
Cette analyse statique prend la forme d’une interprétation abstraite de la sémantique opérationnelle
préalablement enrichie par des informations de dépendances. Elle est prouvée correcte vis-à-vis d’une
définition formelle de la notion de dépendance, à l’aide de l’assistant à la preuve Coq. Ce travail constitue
une base théorique solide utilisable pour construire un outil efficace pour l’analyse de tolérance aux pannes.
Mots clés :
analyse de dépendances, logiciels critiques, langages fonctionnels, Coq, preuve de correction, analyse
statique, interprétation abstraite
Abstract :
Critical software needs to obtain an assessment before commissioning in order to ensure compliance to
standards. This assessment is given after a long task of software analysis performed by assessors. They
may be helped by tools, used interactively, to build models using information-flow analysis. Tools like
SPARK-Ada exist for Ada subsets used for critical software. But some emergent languages such as those
of the ML family lack such adapted tools. Providing similar tools for ML languages requires special
attention on specific features such as higher-order functions and pattern-matching. This work presents
an information-flow analysis for such a language specifically designed according to the needs of assessors.
This analysis is built as an abstract interpretation of the operational semantics enriched with dependency
information. It is proved correct according to a formal definition of the notion of dependency using the
Coq proof assistant. This work gives a strong theoretical basis for building an efficient tool for fault
tolerance analysis.
Keywords :
dependency analysis, critical software, functional languages, Coq, proof of correctness, static analysis,
abstract interpretation
Scénarisation d’environnements virtuels. Vers un
´equilibre entre contrˆole, coh´erence et adaptabilit´e.
Camille Barot
To cite this version:
Camille Barot. Sc´enarisation d’environnements virtuels. Vers un ´equilibre entre contrˆole,
coh´erence et adaptabilit´e.. Artificial Intelligence. Universit´e de Technologie de Compi`egne,
2014. French.
HAL Id: tel-00980537
https://tel.archives-ouvertes.fr/tel-00980537v2
Submitted on 9 Dec 2014
HAL is a multi-disciplinary open access
archive for the deposit and dissemination of scientific
research documents, whether they are published
or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.
L’archive ouverte pluridisciplinaire HAL, est
destin´ee au d´epˆot et `a la diffusion de documents
scientifiques de niveau recherche, publi´es ou non,
´emanant des ´etablissements d’enseignement et de
recherche fran¸cais ou ´etrangers, des laboratoires
publics ou priv´es.Thèse
pour l’obtention du grade de
Docteur de l’Université de Technologie de Compiègne
Spécialité : Technologies de l’Information et des Systèmes
Scénarisation d’environnements virtuels.
Vers un équilibre entre contrôle, cohérence et adaptabilité.
par
Camille Barot
Soutenue le 24 février 2014 devant un jury composé de :
M. Ronan CHAMPAGNAT Maître de Conférences (HDR)
Université de la Rochelle
Rapporteur
M. Stéphane DONIKIAN Directeur de Recherche (HDR)
INRIA Rennes-Bretagne
Rapporteur
M. Stacy MARSELLA Professor
Northeastern University
Examinateur
Mme Indira MOUTTAPA-THOUVENIN Enseignant-Chercheur (HDR)
Université de Technologie de Compiègne
Examinatrice
M. Nicolas SZILAS Maître d’Enseignement et de Recherche
Université de Genève
Examinateur
M. Dominique LENNE Professeur
Université de Technologie de Compiègne
Directeur
Mme Domitile LOURDEAUX Maître de Conférences (HDR)
Université de Technologie de Compiègne
Directrice2Résumé
Ces travaux traitent de la scénarisation d’environnements virtuels, définie comme la spécification
des déroulements possibles ou souhaitables d’une simulation, et la mise en place de mécanismes
permettant de contrôler son déroulement effectif de manière dynamique.
Nous visons pour cette scénarisation un ensemble d’objectifs, souvent considérés comme contradictoires
: la liberté et la capacité d’action de l’utilisateur, l’ampleur, le caractère dynamique et l’efficacité
du contrôle exercé sur le scénario, la cohérence des comportements présentés et l’adaptabilité
du système, nécessaire pour la variabilité des scénarios.
Nous proposons SELDON, un modèle basé sur le contrôle centralisé et indirect d’une simulation
émergente à partir de modèles du contenu scénaristique. L’environnement est peuplé de personnages
virtuels autonomes et l’utilisateur y est libre de ses actions. La scénarisation est réalisée en
deux étapes : des objectifs dynamiques sont déterminés à partir de l’activité de l’utilisateur, puis un
scénario est généré en fonction de ces objectifs et exécuté au travers d’ajustements sur la simulation.
Le moteur DIRECTOR permet de générer et de réaliser ce scénario. DIRECTOR utilise les modèles
qui sous-tendent la simulation pour prédire son évolution, et guide cette évolution au travers d’un
ensemble d’ajustements indirects, qui influencent les réactions des systèmes techniques et les prises
de décision des personnages. Il utilise un moteur de planification pour générer des scénarios composés
d’étapes de prédiction, dont il suit la réalisation dans la simulation, et d’ajustements, qu’il dé-
clenche. Les objectifs scénaristiques pris en compte sont à la fois dynamiques, au travers de situations
prescrites et proscrites et de contraintes sur les propriétés globales du scénario, et statiques, sous la
forme d’espaces de scénario. Le contenu scénaristique et les objectifs scénaristiques statiques sont
représentés à l’aide de l’ensemble de langages que nous avons proposé : DOMAIN-DL, ACTIVITY-DL
et CAUSALITY-DL. Ces contributions permettent d’allier la réactivité et la variabilité permises par
des simulations émergentes et la pertinence des scénarios offerte par les systèmes basés sur de la
planification.
34Abstract
Orchestration of virtual environments:
Balancing control, coherence and adaptability.
This work addresses the orchestration of virtual environments, defined as the specification of
possible or wanted unfoldings of events in a simulation and the implementation of control mechanisms
over the actual unfolding.
We aim at a set of objectives often considered contradictory: userfreedom/agency, range, dynamicity
and efficiency of control over the scenario, behavioural coherence, and system adaptability, which
is essential for scenario variability.
We propose SELDON, a model based on centralised and indirect control of an emergent simulation.
Scenario content is represented by domain and activity models in the DOMAIN-DL and ACTIVITY-DL
languages. The virtual environement is populated by autonomous characters, and the user’s choices
of actions are unconstrained. Orchestration is carried out in two steps: first, a set of dynamic objectives
is determined from the user’s profile and activity, then a scenario is generated from these
objectives and executed through adjustements on the simulation.
The DIRECTOR engine performs scenario generation and execution. DIRECTOR uses the simulation’s
models to predict its evolution and guide it through a set of indirect adjustements that influence
technical systems’ reactions and characters’ decisions. It uses planning to generate scenarios made
up of prediction steps that DIRECTOR monitors in the simulation and adjustements that it triggers
in the virtual environment. Scenario objectives can be defined dynamically through prescribed/proscribed
situations and constraints on global scenario properties or statically as a space of scenarios
of interest represented in the CAUSALITY-DL language.
56Remerciements
Je tiens avant tout à exprimer ma profonde gratitude à Domitile Lourdeaux, qui m’a encadrée,
conseillée et soutenue tout au long de ce doctorat. Merci, Domitile, d’avoir toujours cru en moi et
de m’avoir encouragée à viser plus haut. Merci aussi de m’avoir permis de trouver mes marques et
de m’intégrer dans une approche existante sans jamais m’imposer un point de vue, de m’avoir laissé
poursuivre mes idées même quand tu n’y croyais pas au départ. Merci enfin de m’avoir montré que
l’on pouvait vraiment s’éclater en faisant de la recherche. Tu as fait de ton équipe une vraie famille,
avec son arbre généalogique accroché au mur de ton bureau, et je suis heureuse d’en faire partie. Je
suis fière du travail accompli à tes côtés.
Je remercie également Dominique Lenne d’avoir co-encadré cette thèse. Merci de m’avoir fait
confiance, et de m’avoir poussée aussi, durant la thèse certes mais également bien avant puisque
c’est toi qui, dès IA01, m’a incitée à envisager la voie de la recherche.
Je souhaite remercier Ronan Champagnat et Stéphane Donikian d’avoir accepté de rapporter ma
thèse, et je remercie Nicolas Szilas d’avoir accepté d’en être examinateur. I thank (in English!) Stacy
Marsella, for not only accepting to suffer the slings and arrows of visioconference to attend my defense,
but also for the faith he put in me during our short time working together. Je remercie de tout
cœur Indira Mouttapa Thouvenin, qui a accepté de présider mon jury de thèse, mais m’a surtout
soutenue et encouragée depuis plusieurs années. Merci à tous pour vos critiques, vos remarques et
vos questions qui ont fait de ma soutenance un moment d’échanges passionnants.
Cette thèse n’aurait pas pu voir le jour sans le soutien de la région Picardie et du FEDER au projet
ARAKIS, et je les en remercie. De même, je remercie toutes les personnes impliquées dans ce projet,
mais aussi dans les projets V3S et NIKITA auxquels j’ai pu participer, en particulier les groupes du
CEA, du LATI et d’Emissive. Merci donc à Emmanuel Guerriero, Fabien Barati et Antoine Ferrieux avec
qui j’ai été ravie de travailler avant comme pendant la thèse. Un grand merci également à Jean-Marie
Burkhardt, avec qui les échanges ont été particulièrement enrichissants. Enfin, je suis très reconnaissante
à Fabrice Camus d’être venu avec moi affronter les dangers des dépôts pétroliers pour réaliser
les analyses terrain, et de m’avoir encouragée sans relâche pendant toute la durée de cette thèse.
Mes pensées vont à l’équipe HUMANS, et à tous ceux qui ont pu graviter autour de celle-ci à un
moment où à un autre : Margot Lhommet, Pierre-Yves Gicquel, Vincent Lanquepin, Kahina Amokrane,
Antoine Vincent, Dorine Dufour, Hazaël Jones, Jocelyn Thiery, Lydie Edward, Lucile Callebert, Juliette
Lemaitre, Loïc Fricoteaux, Jérôme Olive, Alistair Jones, Kevin Wagrez, Thibaut Arribe... mais aussi la
bande de Reviatech — Romain Lelong, Mehdi Sbaouni et Morgan Fraslin — et celle des déjeuners à
l’IMI — Benjamin Diemert et Thomas Bottini. On a vécu de grands moments, et vous avez été bien
plus que des collègues à mes yeux. J’espère que les traditions des journées à thèmes du mardi et des
bières au Shamrock qui font rater le train perdureront, et que de nouvelles viendront s’y ajouter.
Kevin Carpentier, mon acolyte de toujours, mérite son paragraphe rien qu’à lui : tu as été un
binôme fantastique durant toutes ces années, et ça va beaucoup me manquer de travailler avec toi.
J’espère qu’on y remédiera très vite et qu’on finira par ouvrir ensemble un grand parc d’attractions
autour du storytelling, de la génération procédurale et de la synesthésie.
Je remercie également le laboratoire Heudiasyc et l’équipe ICI pour leur accueil, ainsi que les
étudiants de l’UTC que j’ai pu encadrer autour de différents projets pour l’équipe HUMANS et qui
ont été d’une aide précieuse : Barthélémy Arribe, Yacine Badiss, Clément Boissière, Marion Cayla,
Jonathan Denonain, Pierre-Henri Fricot, Thibaud Huet, Ronan Kervella, Pierre-Alexandre Kofron,
7Julien Mazars, Aloïs Nolin, Vincent Palancher, Thierry Tang... sans oublier Diane Wakim bien sûr !
Je voudrais aussi saluer le travail du personnel de l’UTC, en particulier Nathalie Alexandre et Marion
Kaczkowski qui m’ont sauvé la mise plus d’une fois.
Merci à mes amis, la MDB et tous les autres, d’avoir toujours su me changer les idées et me faire
relativiser. Merci en particulier à Elise, qui est mon rayon de soleil, et qui maintenant va se sentir
obligée de lire cette thèse en entier.
Enfin, merci à mes parents, mon frère, ma sœur, ainsi qu’à toute ma famille, de m’avoir supportée
(dans les deux sens du terme !) dans des moments qui ont été très difficiles pour moi comme pour
eux. C’est grâce à leur soutien inconditionnel que je peux présenter aujourd’hui ce travail.
8Table des matières
1 Introduction 15
1.1 Scénarisation et environnements virtuels . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.2 Motivations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3 Objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.3.1 Déroulement des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.3.2 Contenu des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.3.3 Conception des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.3.4 Bilan sur les objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.4 Problématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.5 Approche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.6 Contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.6.1 Modèle pour la scénarisation d’environnements virtuels – SELDON . . . . . . . . 26
1.6.2 Moteur de planification et réalisation de scénarios prédictifs – DIRECTOR . . . . 27
1.6.3 Méta-modèle de la causalité – CAUSALITY-DL . . . . . . . . . . . . . . . . . . . . . 29
1.6.4 Autres contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.7 Contexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
1.7.1 Plateforme HUMANS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
1.7.2 Cas d’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
1.8 Organisation du mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
I Etat de l’art 37
2 Scénarisation dans les environnements virtuels 39
2.1 Classifications des approches pour la scénarisation . . . . . . . . . . . . . . . . . . . . . . 40
2.1.1 Approches centrées sur le scénario ou sur les personnages . . . . . . . . . . . . . 40
2.1.2 Scénarisation intrinsèque ou extrinsèque . . . . . . . . . . . . . . . . . . . . . . . . 41
2.1.3 Scénario prédéfini ou généré dynamiquement . . . . . . . . . . . . . . . . . . . . 41
2.2 Simulations pures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.2.1 CS WAVE et VTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.2.2 VRaptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.2.3 I-Storytelling et EmoEmma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.2.4 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.3 Scénarios prédéfinis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.3.1 EMSAVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.3.2 Generic Virtual Trainer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.3.3 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.4 Graphes multilinéaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.4.1 PAPOUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.4.2 ICT Leaders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.4.3 Façade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.4.4 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
9TABLE DES MATIÈRES TABLE DES MATIÈRES
2.5 Scénarios dynamiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.5.1 IDTension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.5.2 Mimesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.5.3 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.6 Personnages partiellement autonomes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.6.1 MRE et FearNot ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.6.2 ISAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.6.3 IN-TALE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.6.4 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.7 Contrôle de personnages autonomes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.7.1 Initial State Revision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
2.7.2 Virtual Storyteller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.7.3 Thespian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.7.4 Planification sociale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
2.7.5 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.8 Bilan global et positionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3 Représentation des connaissances pour la scénarisation 63
3.1 Représentation de contenu scénaristique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.1.1 Représentation du domaine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.1.2 Représentation de l’activité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
3.1.3 Représentation des événements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.1.4 Bilan et positionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
3.2 Représentation d’objectifs scénaristiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
3.2.1 Objectifs scénaristiques de bas niveau . . . . . . . . . . . . . . . . . . . . . . . . . 81
3.2.2 Objectifs scénaristiques de haut niveau . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.2.3 Bilan et positionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
3.3 Représentation des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
3.3.1 Modèles de compréhension d’histoires . . . . . . . . . . . . . . . . . . . . . . . . . 86
3.3.2 Modèles de scénarios pédagogiques . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
3.3.3 Modèles d’analyses de risques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.3.4 Automates finis et graphes orientés acycliques . . . . . . . . . . . . . . . . . . . . 95
3.3.5 Plans et points clés partiellement ordonnés . . . . . . . . . . . . . . . . . . . . . . 97
3.3.6 Bilan et positionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
II Contributions 103
4 SELDON – Modèle pour la scénarisation d’environnements virtuels 105
4.1 Approche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
4.2 Vers quoi scénariser – le moteur TAILOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
4.3 Comment scénariser – le moteur DIRECTOR . . . . . . . . . . . . . . . . . . . . . . . . . . 109
4.4 A partir de quoi scénariser – les langages HUMANS-DL . . . . . . . . . . . . . . . . . . . 109
5 Représentation du contenu scénaristique 111
5.1 DOMAIN-DL – Représentation du domaine . . . . . . . . . . . . . . . . . . . . . . . . . . 112
5.1.1 Approche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
5.1.2 Description du langage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
5.1.3 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
5.2 ACTIVITY-DL – Représentation de l’activité . . . . . . . . . . . . . . . . . . . . . . . . . . 120
5.2.1 Approche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
5.2.2 Description du langage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
5.2.3 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
10TABLE DES MATIÈRES TABLE DES MATIÈRES
6 DIRECTOR – Moteur de planification et réalisation de scénarios prédictifs 133
6.1 Ajustements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
6.1.1 Happenings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
6.1.2 Late commitment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
6.1.3 Contraintes d’occurrence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
6.2 Représentation des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
6.2.1 Plan partiellement ordonné . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
6.2.2 Opérateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
6.3 Particularité de la génération de plans prédictifs . . . . . . . . . . . . . . . . . . . . . . . . 142
6.4 Génération d’opérateurs de prédiction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
6.4.1 Génération des opérateurs d’action . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
6.4.2 Génération des opérateurs de comportement . . . . . . . . . . . . . . . . . . . . . 151
6.5 Processus de génération, suivi et exécution du scénario . . . . . . . . . . . . . . . . . . . 155
6.5.1 Génération du scénario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
6.5.2 Suivi et exécution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
6.5.3 Replanification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
6.6 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
7 Représentation et prise en compte des objectifs scénaristiques 163
7.1 CAUSALITY-DL – Représentation d’espaces de scénarios d’intérêt . . . . . . . . . . . . . 164
7.1.1 Approche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
7.1.2 Description du langage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
7.1.3 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
7.2 Trames scénaristiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
7.3 Situations prescrites et proscrites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
7.4 Propriétés des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
7.4.1 Complexité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
7.4.2 Gravité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
7.4.3 Crédibilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
7.5 Prise en compte des objectifs scénaristiques par DIRECTOR . . . . . . . . . . . . . . . . 177
7.5.1 Sélection de la trame scénaristique . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
7.5.2 Instanciation de la trame scénaristique . . . . . . . . . . . . . . . . . . . . . . . . . 178
7.5.3 Complétion du scénario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
7.6 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
III Implémentation et résultats 183
8 Implémentation 185
8.1 Choix liés à la planification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
8.1.1 Représentation en PDDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
8.1.2 Choix du moteur de planification . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
8.2 Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
8.2.1 Génération du domaine PDDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
8.2.2 Génération du scénario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
8.2.3 Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
8.2.4 Plateforme HUMANS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
9 Validation 193
9.1 Evaluation informatique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
9.1.1 Eléments comparés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
9.1.2 Influence du moteur sur les plans générés . . . . . . . . . . . . . . . . . . . . . . . 196
9.1.3 Validité des plans générés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
11TABLE DES MATIÈRES TABLE DES MATIÈRES
9.1.4 Temps de génération des plans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
9.1.5 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
9.2 Retours d’usage sur la conception des modèles . . . . . . . . . . . . . . . . . . . . . . . . 201
9.2.1 DOMAIN-DL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
9.2.2 ACTIVITY-DL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
9.3 Pistes d’évaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
9.3.1 Efficacité de la prédiction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
9.3.2 Efficacité du contrôle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
9.3.3 Résilience du système . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
9.3.4 Variabilité des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
9.3.5 Cohérence des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
IV Discussion et conclusion 205
10 Discussion 207
10.1 Points forts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
10.1.1 Cohérence des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
10.1.2 Liberté et capacité d’action de l’utilisateur . . . . . . . . . . . . . . . . . . . . . . . 208
10.1.3 Degrés de contrôle des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
10.1.4 Variabilité et pertinence des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . 209
10.1.5 Adaptabilité du système . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
10.2 Limites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
10.2.1 Temps de planification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
10.2.2 Replanification et instanciation des trames scénaristiques . . . . . . . . . . . . . 211
10.2.3 Prise en compte des objectifs lors de la planification . . . . . . . . . . . . . . . . . 211
10.2.4 Génération des opérateurs de prédiction . . . . . . . . . . . . . . . . . . . . . . . . 212
10.2.5 Dépendance des modèles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
10.2.6 Cas où la planification est impossible . . . . . . . . . . . . . . . . . . . . . . . . . . 213
10.3 Perspectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
10.3.1 Représentation des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
10.3.2 Modèle de la cognition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
10.3.3 Modélisation de l’utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
10.3.4 Discours et récit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
10.3.5 Calcul de l’intérêt narratif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
11 Conclusion 219
V Annexes 221
A Glossaire 223
B Description des modules de la plateforme HUMANS 225
B.1 HUMANS-DL - Représentation des connaissances . . . . . . . . . . . . . . . . . . . . . . 226
B.2 WORLD MANAGER - Gestion de l’état du monde . . . . . . . . . . . . . . . . . . . . . . . 227
B.3 REPLICANTS - Personnages virtuels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
B.4 MONITOR - Suivi de l’apprenant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
B.5 TAILOR - Génération de situations d’apprentissage . . . . . . . . . . . . . . . . . . . . . . 229
C Diagrammes UML 231
D Algorithmes 233
12TABLE DES MATIÈRES TABLE DES MATIÈRES
E Exemple “Gas Station” 235
E.1 Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
E.2 Scénarios générés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
Table des figures 251
Liste des tableaux 255
Publications 257
Bibliographie 259
13TABLE DES MATIÈRES TABLE DES MATIÈRES
14Chapitre 1
Introduction
Sommaire
1.1 Scénarisation et environnements virtuels . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.2 Motivations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3 Objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.3.1 Déroulement des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Liberté d’action de l’utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Possibilités de contrôle du scénario . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Caractère dynamique du contrôle . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Résilience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.3.2 Contenu des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Validité écologique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Explicabilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Variabilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.3.3 Conception des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Passage à l’échelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Maintenabilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Réutilisabilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.3.4 Bilan sur les objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.4 Problématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.5 Approche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.6 Contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.6.1 Modèle pour la scénarisation d’environnements virtuels – SELDON . . . . . . . 26
1.6.2 Moteur de planification et réalisation de scénarios prédictifs – DIRECTOR . . . 27
1.6.3 Méta-modèle de la causalité – CAUSALITY-DL . . . . . . . . . . . . . . . . . . . . 29
1.6.4 Autres contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Méta-modèle de l’activité – ACTIVITY-DL . . . . . . . . . . . . . . . . . . . . . . 29
Méta-modèle du domaine – DOMAIN-DL . . . . . . . . . . . . . . . . . . . . . . 30
1.7 Contexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
1.7.1 Plateforme HUMANS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
1.7.2 Cas d’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
ARAKIS – Formation des opérateurs de dépôts pétroliers . . . . . . . . . . . . . 32
SimADVF – Formation des assistantes de vie de famille . . . . . . . . . . . . . . 33
NIKITA – Formation des assembleurs-monteurs en aéronautique . . . . . . . . 34
1.8 Organisation du mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
151.1. SCÉNARISATION ET ENVIRONNEMENTS VIRTUELS CHAPITRE 1. INTRODUCTION
Les travaux présentés dans cette thèse traitent de la scénarisation d’environnements virtuels. Leur
objectif est de fournir un modèle pour la scénarisation dynamique de ces environnements, qui permette
de générer et de mettre en place des scénarios pertinents, en particulier dans le cas de simulations
complexes, le tout en conservant la cohérence des comportements présentés.
1.1 Scénarisation et environnements virtuels
Ces travaux s’inscrivent dans le contexte des environnements virtuels : des systèmes interactifs
permettant à un ou plusieurs utilisateurs d’interagir avec un monde artificiel, généralement en trois
dimensions, par le biais d’un ensemble de techniques informatiques couvrant une ou plusieurs modalités
sensorielles [Burkhardt et al., 2003]. Plutôt que de considérer ces environnements sous l’angle
des périphériques utilisés et des différents degrés d’interaction et d’immersion induits sur le plan
sensori-moteur, nous nous intéresserons aux événements ayant lieu dans le monde artificiel et à
l’activité de l’utilisateur en termes cognitifs, en suivant la définition de la réalité virtuelle donnée
par [Fuchs et al., 2006] :
“
La finalité de la réalité virtuelle est de permettre à une personne (ou à plusieurs) une
activité sensori-motrice et cognitive dans un monde artificiel, créé numériquement, qui peut
être imaginaire, symbolique ou une simulation de certains aspects du monde réel.
La scénarisation est un processus qui vise à spécifier les événements devant se produire dans un
”
cadre donné, qui peut être celui d’un film, d’un jeu vidéo, d’une session d’apprentissage, etc. Or, selon
le cadre considéré, le terme de scénarisation, ainsi que la notion de scénario lui-même, ne revêtent
pas le même sens.
Dans le domaine cinématographique, un scénario est un document écrit décrivant les différentes
scènes d’un film. On distingue deux types de scénarios : le script, ou screenplay, décrit l’enchainement
des événements (actions, dialogues...) — “what to shoot", tandis que le découpage technique,
ou shooting script, inclut également des indications sur la manière de mettre en scène et de porter ces
événements à l’écran (découpage en séquences et plans, points de vue...) — “how to shoot it" [Van Rijsselbergen
et al., 2009]. La scénarisation désigne alors le processus d’écriture de ce scénario.
De même, dans le domaine de l’apprentissage, la scénarisation est souvent considérée comme une
activité de modélisation (voir par exemple [Ouraiba, 2012]). Elle consiste alors en la spécification,
de manière prescriptive, du déroulement futur d’une activité pédagogique, en décrivant à la fois
les intentions des enseignants et les situations d’apprentissage prévues pour leurs enseignements
à l’aide d’un langage de scénarisation pédagogique [Abedmouleh, 2012].
Pour Pernin et Lejeune [Pernin and Lejeune, 2004], la spécification du scénario n’est au contraire que
la première étape de la scénarisation. Ils distinguent ainsi quatre phases dans le cycle de vie d’un
scénario d’apprentissage :
– la conception, qui consiste à spécifier l’activité prescrite dans le langage de scénarisation ;
– l’opérationnalisation, durant laquelle ces spécifications sont transformées en composants exé-
cutables sur des plateformes informatiques ;
– l’exploitation, qui consiste à “jouer" le scénario, et durant laquelle les acteurs (apprenants et
tuteurs) doivent pouvoir observer et ajuster les situations mises en place.
– le retour d’usage, où les résultats obtenus lors de la phase d’exploitation sont évalués
Si de nombreux travaux sur les Environnements Informatiques pour l’Apprentissage Humain (EIAH)
et Environnements Virtuels pour l’Apprentissage Humain (EVAH) se concentrent sur la phase de
conception des scénarios et sur les langages de scénarisation [Martel et al., 2007] [Laforcade et al.,
2007], la phase d’exploitation revêt une importance capitale : à partir du moment où on utilise l’outil
16CHAPITRE 1. INTRODUCTION 1.1. SCÉNARISATION ET ENVIRONNEMENTS VIRTUELS
informatique, l’exécution, la supervision et la régulation du scénario ne sont plus intégralement le
fait du formateur humain, mais relèvent en partie de l’outil lui-même 1
.
Ainsi, dès lors que l’on se place dans un contexte interactif, la scénarisation ne consiste plus uniquement
en la modélisation d’un scénario, mais également en la mise en place des mécanismes nécessaires
à la réalisation de ce scénario. Selon les travaux, cette partie dynamique du processus de scé-
narisation sera désignée par les termes de pilotage [Delmas, 2009], drama management [Mateas and
Stern, 2005], directorial control [Si et al., 2009], ou encore story mediation [Magerko, 2007].
C’est autour de cette problématique que se place le domaine de la narration interactive (interactive
storytelling). La narration interactive permet aux utilisateurs de participer activement à une histoire,
soit de manière intradiégétique, en incarnant l’un des personnages, soit de manière extradiégétique,
en exerçant un contrôle sur le déroulement des événements [Si, 2010]. Les travaux effectués dans le
domaine de la narration interactive visent à trouver un équilibre entre l’intérêt narratif et le respect
des intentions de l’auteur d’un côté, et la liberté d’action du ou des utilisateurs de l’autre [Magerko,
2005].
Lorsqu’il s’agit de concevoir un environnement virtuel ou un système de narration interactive, il existe
deux approches : la scénarisation peut être considérée comme partie intégrante du processus de
conception, ou bien elle peut être vue comme une étape supplémentaire de cadrage d’un environnement
existant.
Dans le premier cas, la scénarisation va consister à définir l’ensemble des objets de l’environnement
virtuel, leurs règles de fonctionnement, les actions possibles de la part de l’utilisateur et des personnages
virtuels, le comportement de ces derniers, etc. Les scénarios peuvent être définis de manière
plus ou moins explicite, allant du script exhaustif à la modélisation des comportements individuels,
les scénarios effectifs émergeant alors des interactions entre le ou les utilisateurs et le monde virtuel.
L’environnement virtuel scénarisé est ici vu comme un tout. C’est le cas par exemple dans [Mateas
and Stern, 2005] ou [Cavazza et al., 2002].
Dans le deuxième cas, la scénarisation va consister à réduire l’espace des scénarios possibles, en
sélectionnant, ordonnant ou priorisant des sous-ensembles d’événements en vue d’une utilisation
particulière de l’environnement virtuel. Ainsi, pour N. Mollet, “la scénarisation consiste à utiliser l’environnement
et agencer les interactions afin de réaliser une tâche particulière" [Mollet, 2005].
La modélisation du scénario est alors séparée en deux parties : la spécification du contenu scénaristique
d’un côté, et celle des objectifs scénaristiques de l’autre.
Si l’on reprend la métaphore du jeu de rôle (non numérique), souvent utilisée en narration interactive
(voir par exemple [Aylett et al., 2011], [Delmas, 2009]), on peut identifier trois composantes
principales au sein du jeu avec lequel les joueurs interagissent :
– le corpus de règles qui décrit l’univers et les mécanismes du jeu,
– la trame préparée en amont par le meneur de jeu (game master), qui peut être plus ou moins
détaillée et plus ou moins dirigiste,
– les interventions du meneur de jeu, qui décrit la situation initiale, interprète et applique les
règles du jeu, fait intervenir des personnages non-joueurs, déclenche des événements et met
en scène le tout.
L’activité du meneur de jeu est assimilable au processus de pilotage de l’environnement virtuel, tandis
que le corpus de règles correspond au contenu scénaristique et la trame aux objectifs scénaristiques.
On constate ainsi que, pour un même contenu, de nombreux scénarios différents pourront
être créés en fonction des objectifs définis, et que la spécification du contenu et celle des objectifs
scénaristiques ne sont pas forcément réalisées par les mêmes personnes (ainsi le créateur du jeu de
1. Il est nécessaire de distinguer ici la scénarisation des activités pédagogiques et celle des situations d’apprentissage
(parfois appelée orchestration [Luengo, 2009]). La première va situer l’utilisation de l’environnement virtuel comme outil de
formation dans le cadre plus large d’un scénario pédagogique, au même titre que d’autres activités pédagogiques comme
des cours magistraux. Le passage d’une activité à une autre peut alors relever de la responsabilité du formateur, ou être
déclenché automatiquement par un système informatique. La seconde va poser des contraintes sur le déroulement de
l’activité même de l’utilisation de l’environnement virtuel, contraintes qui devront être appliquées sur la simulation par un
système de scénarisation, afin que le scénario se déroule quelles que soient les actions de l’apprenant.
171.2. MOTIVATIONS CHAPITRE 1. INTRODUCTION
rôle définit le système de règles, et peut également fournir des trames pré-écrites, mais le meneur de
jeu peut choisir d’utiliser une trame de sa propre invention).
On retrouve cette même approche dans de nombreux environnements virtuels de type simulateurs,
utilisés pour la formation : ces environnements sont construits autour d’un noyau générique, qui
contient les règles de fonctionnement de la simulation (ex : le fonctionnement d’une automobile, le
code de la route, etc.) auquel vient s’ajouter une couche d’instanciation pour un objectif pédagogique
donné (ex : “conduite sur autoroute avec un trafic dense”).
Les objectifs scénaristiques peuvent ainsi être spécifiés de manière très large en donnant simplement
les conditions initiales d’une simulation. Le terme de “scénario" est alors utilisé pour désigner
ces conditions initiales, par exemple la disposition de l’environnement virtuel (settings) dans [Hullett
and Mateas, 2009]. Le “scénario" en tant qu’objectif scénaristique peut, selon les travaux, être
modélisé à différents niveaux de granularité, et de manière plus ou moins explicite : contraintes
sur les conditions initiales [Hullett and Mateas, 2009], ensemble de séquences d’événements exemplaires
[Si, 2010], contraintes d’ordonnancement sur des événements clés [Porteous and Cavazza,
2009], contraintes de haut niveau sur des fonctions d’évaluation du scénario [Weyhrauch, 1997], etc.
Certains parlent au contraire du “scénario” d’un environnement virtuel pour désigner le domaine
d’application [Szilas, 2007]. D’autres utilisent ce même terme pour parler d’une séquence d’événements
particulière, instanciée lors d’une session d’interaction [Champagnat et al., 2005] — il peut
alors s’agir d’une séquence prescrite ou effective. C’est cette acception que nous utiliserons dans le
reste de ce mémoire, et nous parlerons alors d’“espace de scénarios" lorsqu’il s’agira de se référer à
un ensemble de possibles.
Nous adopterons ainsi dans cette thèse les définitions suivantes :
Scénarisation
La scénarisation est un processus comprenant à la fois la spécification du ou des déroulements
possibles ou souhaitables de la simulation, et le contrôle (exécution et/ou suivi et correction)
du déroulement des événements en temps-réel.
Système de scénarisation
Un système de scénarisation est composé d’un ou plusieurs langages de scénarisation,
permettant de modéliser le contenu scénaristique et/ou les objectifs scénaristiques, et d’un
moteur de scénarisation permettant de gérer de manière dynamique la réalisation du scénario.
1.2 Motivations
La scénarisation d’environnements virtuels a des applications dans de nombreux domaines, parmi
lesquels on peut citer la formation [Burkhardt et al., 2006], l’aide à la décision [Bourdot et al., 2006],
la thérapie [Klinger et al., 2006] et le divertissement, notamment via le domaine de la narration interactive
[Bates, 1992]. Dans le cadre de ce mémoire, nous nous intéresserons surtout aux deux premiers.
Les Environnements Virtuels pour l’Apprentissage Humain (EVAH) constituent en effet une des applications
majeures de la réalité virtuelle, se démocratisant de plus en plus depuis les premiers développements
remontant aux années 90. Les avantages de la réalité virtuelle pour la formation sont nombreux
[Lourdeaux, 2001] : non seulement l’utilisation d’un environnement virtuel permet de se dé-
tacher des contraintes pouvant exister dans les formations en conditions réelles (dangerosité, contraintes
d’accessibilité au site ou au matériel, coût, etc.), mais elle permet également d’enrichir ces
situations à des fins pédagogiques, via par exemple des fonctions de rejeu ou de segmentation de
l’apprentissage.
Ces environnements concernent à présent de nombreux domaines d’application, que ce soit au niveau
18CHAPITRE 1. INTRODUCTION 1.2. MOTIVATIONS
de la formation professionnelle — formation au geste technique [Da Dalto, 2004], aux procédures
de maintenance [Gerbaud, 2008] ou de conduite de machineries [Crison et al., 2005] [Rickel and
Johnson, 1998], formation à la maîtrise des risques [Fabre et al., 2006] [Barot et al., 2013] [Querrec
and Chevaillier, 2001], etc. — ou bien de l’éducation [Mikropoulos and Natsis, 2011] — compréhension
de concepts scientifiques [Dede et al., 1996] [Windschitl and Winn, 2000], travaux pratiques
virtuels [Baudouin, 2007], apprentissage des langues [Schlemminger, 2013], etc. Ils peuvent être utilisés
dans différentes configurations techniques et avec différentes stratégies pédagogiques : présence
ou non d’un formateur, environnement mono ou multi-apprenant, apprenant spectateur ou acteur
de l’interaction avec l’environnement virtuel, etc. [Burkhardt et al., 2005].
Les environnements virtuels sont également utilisés pour des applications d’aide à la décision, que
ce soit dans l’industrie [Bourdot et al., 2006] ou dans le domaine médical [Rizzo et al., 2012], mais
aussi pour des applications de planification urbaine [Roupé, 2013], de gestion des flux d’immigration
[Hedge, 2011], etc. La simulation informatique d’un système socio-technique peut en effet permettre
au décideur d’appréhender rapidement les conséquences induites par ses choix, lui donnant une
meilleure visibilité, en particulier lorsque les décisions doivent être prises dans l’urgence et dans un
contexte flou [Castagna et al., 2001]. De tels simulateurs sont aussi utilisés en amont comme outils
d’aide à la décision pour la conception de systèmes [Robotham and Shao, 2012], ou encore pour la
maîtrise des risques, afin de permettre de détecter les facteurs d’accidents possibles [Gounelle et al.,
2007].
Pour de nombreux environnements, dont la visée est de simuler un système technique dans une
situation précise et cadrée, un faible niveau de scénarisation est suffisant. Les concepteurs définissent
dans ce cas les règles d’évolution des systèmes simulés, sans chercher à exercer de contrôle
supplémentaire sur le déroulement des événements. Ces environnements peuvent servir de support
d’apprentissage — l’apprenant expérimentant avec la simulation à la manière d’un chercheur scientifique
[De Vries and Baille, 2006] — ou d’entrainement, comme c’est le cas pour de nombreux
simulateurs de conduite dits “pleine échelle” [Joab et al., 2006].
D’autre part, certains environnements font l’objet d’une scénarisation pédagogique réalisée au travers
de rétroactions extradiégétiques, c’est à dire qui ne correspondent pas à des événements du domaine
simulé (elles se situent ainsi en dehors de la diégèse). Ces rétroactions peuvent apporter des modifi-
cations à l’environnement virtuel au sein d’une même situation d’apprentissage, sous la forme d’assistances
[Lourdeaux, 2001] : enrichissement de l’environnement via l’ajout de symboles visuels ou
sonores, restriction des déplacements ou manipulations de l’utilisateur, etc. Elles peuvent également
permettre de naviguer dans le scénario pédagogique en passant d’une situation d’apprentissage à une
autre [Luengo, 2009] ; la simulation est alors arrêtée et relancée à partir d’une situation différente.
Cependant, dans le domaine de la formation et de l’aide à la décision, peu de travaux s’intéressent
à la scénarisation des environnements virtuels sur le plan intradiégétique. Ce type de scénarisation
consiste à contrôler le déroulement des événements au sein même de la simulation, sans couper l’immersion
de l’utilisateur dans l’environnement virtuel. La visée ici n’est pas de remplacer les systèmes
de scénarisation pédagogique qui ont fait leurs preuves pour la formation initiale et l’entrainement
d’apprenants, mais de se positionner de manière complémentaire, en adressant d’autres besoins et
d’autres types de formation.
Ainsi, dans le cadre de la formation continue d’apprenants experts, ces derniers doivent être confrontés
à des scénarios particuliers, plus rares, mettant en jeu des situations de travail dégradées. La
scénarisation peut alors permettre d’amener à la réalisation d’un événement précis, comme le dé-
clenchement d’un accident donné pour une formation à la maîtrise des risques. Pour des applications
d’analyse de risque, cela permettrait ainsi de rejouer des scénarios accidentels, ou de déterminer les
facteurs de risque d’un accident donné sans avoir besoin de procéder à des ajustements progressifs
des conditions initiales de la simulation (voir par exemple [Bosse and Mogles, 2013]).
De même, alors que les situations de travail se complexifient, il devient nécessaire de former non
seulement aux compétences techniques, mais également aux compétences non-techniques, comme
le travail en groupe ou la gestion du stress. Les environnements virtuels seront alors peuplés de per-
191.3. OBJECTIFS CHAPITRE 1. INTRODUCTION
sonnages virtuels, dont le comportement devra lui-aussi être pris en compte par le système de scé-
narisation : les personnages pourraient ainsi tenter de minimiser ou de maximiser les risques liés à
une procédure collaborative, aider l’apprenant quand il est en difficulté en lui donnant des conseils
ou en réalisant des actions à sa place, ou au contraire le mettre en situation de stress.
Cette scénarisation adaptative permettrait ainsi de contrôler le niveau de tension et de difficulté de
manière à ce qu’ils restent adaptés au profil et à l’activité de l’apprenant. Elle permettrait également
de motiver ce dernier par le biais d’une mise en scène, en favorisant son implication émotionnelle
dans une histoire, à la manière de la narration interactive. Il serait alors possible de transposer les
jeux de rôles réalisés dans le cadre des formations sur des personnages de l’environnement virtuel,
évitant ainsi de devoir faire intervenir plusieurs formateurs.
1.3 Objectifs
De nos motivations concernant la scénarisation d’environnements virtuels destinés à la formation
ou à l’aide à la décision découlent un certain nombre d’objectifs pour notre système de scénarisation.
Ces objectifs touchent à la fois aux différents degrés de liberté pour l’utilisation et le pilotage de
l’environnement virtuel, au contenu et à la qualité des scénarios produits, et aux possibilités offertes
pour la phase de conception de ces environnements virtuels scénarisés.
1.3.1 Déroulement des scénarios
Le premier groupe d’objectifs concerne les propriétés dynamiques de notre système de scénarisation,
c’est à dire à la fois l’utilisation qui sera faite par l’apprenant de l’environnement virtuel en
temps-réel, et la manière dont le système de scénarisation va pouvoir diriger le scénario de l’environnement
virtuel (quoi, quand et comment).
Nous déterminons ainsi quatre objectifs :
– liberté d’action de l’utilisateur,
– degrés de contrôle du scénario,
– caractère dynamique du contrôle,
– résilience.
Liberté d’action de l’utilisateur
Pour promouvoir un apprentissage par essai-erreur, ou pour permettre de tester différents cas
dans un cadre d’aide à la décision, il est nécessaire de laisser à l’utilisateur une certaine liberté d’action.
Par utilisateur, nous désignons ici la personne qui est immergée dans l’environnement virtuel
et joue le rôle de l’un des personnages de l’environnement — dans le cas d’un environnement virtuel
pour la formation, nous considèrerons qu’il s’agit de l’apprenant — et non les hypothétiques personnes
qui pourraient exercer un contrôle extérieur sur l’environnement en temps réel — par exemple,
un formateur.
Ainsi, laisser à l’utilisateur une certaine latitude dans le choix de ses actions peut lui permettre d’expérimenter
et de comparer les conséquences des différents choix qui s’offrent à lui. Il faut cependant
distinguer le sentiment de liberté d’action que peut avoir l’utilisateur et sa capacité d’action réelle,
c’est à dire l’impact réel de ses décisions sur le déroulement des événements (user agency) [Thue
et al., 2010]. Si la liberté d’action perçue permet d’intéresser l’utilisateur en répondant à ses désirs en
termes d’interaction [Wardrip-Fruin et al., 2009], seule une réelle capacité d’action peut lui permettre
d’adopter une posture expérimentale vis à vis de l’environnement virtuel. De plus, la capacité d’action
affecte également l’implication de l’utilisateur dans l’environnement virtuel [Si, 2010].
20CHAPITRE 1. INTRODUCTION 1.3. OBJECTIFS
Possibilités de contrôle du scénario
En plus de la capacité d’action de l’utilisateur sur le scénario (user agency), il est nécessaire de
considérer également la capacité d’action du système de scénarisation lui-même (global agency).
Ainsi, parmi les objectifs scénaristiques qui vont pouvoir être pris en compte par le système, il faut
tout d’abord permettre de spécifier des situations à atteindre. Par situation, nous entendons ici une
combinaison particulière d’états de l’environnement virtuel, pouvant être décrite à plus ou moins
haut niveau, par exemple “Il y a une fuite au niveau de la vanne n°32” ou “Il y a une anomalie au
niveau d’une vanne”. Pour les environnements virtuels pour l’apprentissage se situant dans un cadre
d’apprentissage situé, il est considéré que la situation dans laquelle se développent les apprentissages
est primordiale et que les apprentissages doivent être contextualisés. La situation est une composante
intégrale de la connaissance qui se développe [Rogalski, 2004]. On va donc chercher à placer
l’apprenant dans une situation d’apprentissage donnée, afin de mettre en jeu des connaissances et
des compétences, et de générer ces apprentissages.
A l’inverse, les situations à ne pas atteindre doivent également pouvoir être spécifiées. Cela est notamment
utile dans le cas où un apprenant ne possède pas encore les ressources nécessaires pour
gérer une situation, ou au contraire s’il a déjà rencontré cette situation par le passé.
Enfin, il s’agit de ne pas seulement s’intéresser aux situations ponctuelles mais aussi aux propriétés
plus globales du scénario. En effet, une situation d’apprentissage peut être plus large qu’une situation
ponctuelle dans l’environnement virtuel et inclure une dimension temporelle : augmentation du
rythme de travail ou présence d’un collaborateur récalcitrant, par exemple. Contrôler l’agencement
des situations, le rythme ou encore la complexité globale du scénario permettrait ainsi de pouvoir
gérer une augmentation de la difficulté et de faire disparaître progressivement les assistances offertes
par l’environnement virtuel [Burkhardt, 2010].
Caractère dynamique du contrôle
En parallèle du quoi contrôler, il faut aussi s’intéresser au quand, car si la définition des objectifs
scénaristiques en amont permet déjà de spécifier un scénario, il peut être utile dans de nombreux
cas de re-définir ces objectifs de manière dynamique, afin d’offrir un scénario qui soit pertinent par
rapport au profil et à l’activité de l’utilisateur de l’environnement virtuel.
On veut ainsi pouvoir adapter les objectifs scénaristiques d’une session d’utilisation à l’autre afin de
prendre en compte ce qui a été réalisé précédemment par l’utilisateur : introduire de nouvelles situations,
augmenter la difficulté, éviter de rejouer des scénarios déjà vus, etc.
De plus, il peut s’avérer intéressant dans certain cas d’aller plus loin, en proposant une adaptation dynamique
du scénario au cours d’une même session d’utilisation de l’environnement virtuel. En effet,
de même que l’environnement est modifié du fait des actions de l’apprenant, ce dernier évolue lui
aussi au fur et à mesure de ses interactions avec la simulation. L’analyse de son activité en temps-réel
permettant d’inférer sur ses connaissances et compétences, ces informations peuvent être utilisées
pour déterminer les nouvelles situations auxquelles il doit être confronté. Le système de scénarisation
doit ainsi être capable de prendre en compte de nouveaux objectifs scénaristiques de manière dynamique.
Résilience
Par résilience, nous désignons la capacité du système de scénarisation à réaliser un scénario possédant
les propriétés souhaitées en dépit des perturbations extérieures. En effet, l’utilisateur étant
libre d’agir dans l’environnement virtuel, ses actions peuvent aller à l’encontre du scénario prévu :
distraction des personnages virtuels, modification des états des objets, etc. Le système de scénarisation
doit être capable de gérer ces déviations, soit en limitant les conséquences de l’action de l’utilisateur
sur le scénario (intervention), soit en modifiant le scénario afin de les prendre en compte
211.3. OBJECTIFS CHAPITRE 1. INTRODUCTION
(accommodation) [Riedl et al., 2003].
Cette propriété est particulièrement importante dans le cas où les objectifs du système de scénarisation
et ceux de l’utilisateur sont opposés. Dans les environnements virtuels pour la formation à la
maîtrise des risques, par exemple, le système de scénarisation va chercher à confronter l’apprenant à
une situation accidentelle, tandis que ce dernier cherchera à l’éviter.
1.3.2 Contenu des scénarios
Le second groupe d’objectifs a trait aux propriétés des scénarios générés via l’interaction de l’utilisateur
et du système de scénarisation lors de sessions d’utilisation de l’environnement virtuel.
Nous déterminons ainsi trois objectifs pour ces scénarios :
– validité écologique,
– explicabilité,
– variabilité.
Validité écologique
Pour qu’il puisse y avoir un transfert d’apprentissage entre l’environnement virtuel et la situation
de travail réelle, ou que les conclusions tirées de la simulation pour l’aide à la décision soient transposables,
il faut que la situation simulée corresponde par certains aspects à la situation réelle.
La reproduction parfaitement fidèle de la réalité n’est pas nécessairement un objectif en soi : dans certains
cas, la situation d’apprentissage autorise une déformation ou une exagération de la réalité pour
faire mieux comprendre la complexité de la situation [Lourdeaux, 2001]. Au contraire, selon la visée
de la formation ou le type de système simulé, les environnements virtuels auront différents besoins
en termes de réalisme. Pour des environnements virtuels destinés à la formation au geste technique,
par exemple, il sera nécessaire de veiller à la fidélité perceptive de la simulation, c’est à dire à la création
d’une expérience perceptive qui serait crédible si elle était vécue dans le monde réel [Burkhardt
et al., 2003]. A l’inverse, lorsqu’il s’agit de former à des compétences de plus haut niveau (apprentissage
de procédure, formation à la réaction dans des situations d’urgence, etc.), on va privilégier au
réalisme visuel la fidélité psychologique de la simulation, c’est à dire la proportion dans laquelle la
tâche simulée engendre une activité et des processus psychologiques identiques à ceux de la tâche
réelle [Burkhardt et al., 2003].
Plutôt que de réalisme, on va préférer parler de validité écologique des situations. La notion de validité
écologique est issue du domaine de la psychologie de la perception, et désigne la proximité
entre une situation expérimentale et la situation réelle à laquelle elle fait référence. Les situations
écologiquement valides sont traditionnellement mises en opposition avec les situations artificielles
très contrôlées et contraintes désignées comme “laboratoires” [Loomis et al., 1999].
Puisque nous nous intéressons à des formations à des compétences de haut niveau, incluant des aspects
facteurs humain, nous viserons donc la génération de scénarios rendant compte de la complexité
des comportements humains dans les situations de terrain, et induisant de la part des utilisateurs
des comportements équivalents à ceux rencontrés en situation réelle.
Explicabilité
En plus de correspondre par certains aspects à la situation réelle, ces scénarios doivent également
être explicables. Il s’agit ici de pouvoir expliquer non seulement les chaînes de causalité (conséquences
des actions, chaînes accidentelles, etc.), mais aussi les comportements individuels des personnages.
Sans aller toutefois jusqu’à rechercher la modélisation des processus décisionnels humains à la manière
cognitiviste, nous visons à intégrer des aspects facteurs humains dans la modélisation comportementale
des personnages virtuels, et à assurer la cohérence de leurs comportements par rapport
22CHAPITRE 1. INTRODUCTION 1.3. OBJECTIFS
à ce modèle. Il a en effet été montré dans [Si et al., 2010] que les contradictions dans les motivations
des personnages virtuels ont un impact négatif sur la compréhension qu’a l’utilisateur de ce qui se
passe dans l’environnement virtuel.
Cette explicabilité est donc nécessaire pour que l’utilisateur puisse comprendre le déroulement des
événements, ainsi que pour produire des traces et tirer des conclusions dans le cas de systèmes d’aide
à la décision.
De même, pour que l’utilisateur ressente un sentiment de présence dans l’environnement virtuel, il
doit pouvoir se former un modèle mental du monde, et pouvoir anticiper les résultats de ses actions
ainsi que de celles des personnages virtuels : l’environnement doit alors réagir de manière constante
et prévisible [Slater and Usoh, 1993]
La notion d’explicabilité est très liée à celle de cohérence, dans le sens de la cohérence perçue par un
utilisateur. [Riedl et al., 2003] définit la cohérence d’un scénario comme la capacité par un utilisateur
de comprendre les relations entre les événements du scénario, à la fois au niveau des événements du
monde de la simulation, et au niveau des événements qui lui sont directement présentés.
Variabilité
Notre objectif est de cibler de la formation à des situations de travail complexes ou de la formation
continue, plutôt que de l’entraînement à un geste technique ou à une procédure limitée. Dans cette
optique, il faut que le système de scénarisation puisse générer un panel varié de scénarios, allant des
scénarios les plus courants où le système fonctionne en mode nominal et les personnages virtuels
réalisent la procédure prescrite, aux scénarios les plus dégradés et les plus rares.
Cette variabilité peut découler d’un système permettant l’émergence de scénarios inédits, ce qui est
particulièrement intéressant pour des systèmes d’aide à la décision en maîtrise des risques, où l’on
va utiliser la simulation pour juger si des situations accidentelles peuvent émerger des règles de fonctionnement
du système technique et des procédures associées.
1.3.3 Conception des scénarios
Enfin, le troisième groupe d’objectifs concerne le processus de conception des scénarios, c’est à
dire la modélisation du contenu scénaristique faite en amont par des auteurs humains. On va chercher
ici à limiter l’effort nécessaire à la conception (authoring) de ces environnements.
Nous déterminons ici trois objectifs principaux :
– passage à l’échelle,
– maintenabilité,
– réutilisabilité.
Passage à l’échelle
La création du contenu scénaristique est aujourd’hui l’un des principaux verrous identifiés dans
le domaine de la narration interactive [Spierling and Szilas, 2009]. La création du système le plus
connu à l’heure actuelle, Façade, a par exemple nécessité le travail à plein temps de deux ingénieurs
pendant 5 ans, dont 3 ont été passés uniquement sur la création du contenu scénaristique, et ce pour
une expérience interactive de 20 minutes environ à chaque session [Mateas and Stern, 2005].
Ce problème se fait d’autant plus ressentir lorsqu’il s’agit d’opérer un passage à l’échelle, c’est à dire
d’augmenter fortement la taille, la complexité et la variabilité des scénarios couverts par l’environnement
virtuel. Si l’on souhaite que le système de scénarisation puisse offrir une grande variabilité
en termes de scénarios générés, il faut qu’il soit conçu de manière à pouvoir augmenter le nombre
de scénarios possibles sans pour autant augmenter exponentiellement la taille du contenu scénaristique
nécessaire à la génération de ces scénarios.
231.4. PROBLÉMATIQUE CHAPITRE 1. INTRODUCTION
Maintenabilité
Dans les systèmes de narration interactive, la personne qui crée le contenu scénaristique et celle
qui crée le moteur de scénarisation sont souvent en réalité la même personne [Spierling and Szilas,
2009]. Dans le cas des environnements virtuels pour la formation ou l’aide à la décision, ce constat
pose problème, notamment pour ce qui est de la maintenabilité de l’environnement.
En effet, si le système technique change, ou si les procédures sont mises à jour, les formateurs ou les
décideurs doivent être capables d’adapter l’environnement virtuel, sinon ce dernier devient obsolète.
Il faut donc, d’une part, que les connaissances soient représentées de manière explicite et séparées
de l’implémentation du moteur, et d’autre part qu’elles soient représentées dans un formalisme qui
soit relativement accessible à des non-informaticiens.
Réutilisabilité
La séparation du moteur de scénarisation et des connaissances utilisées par ce moteur est également
nécessaire pour la réutilisabilité de ces connaissances.
Un même environnement virtuel pourrait ainsi être utilisé pour la formation de novices, pour la formation
d’experts et pour de l’aide à la décision, en modifiant les objectifs scénaristiques ou en n’utilisant
qu’une partie du contenu scénaristique. De même, il serait possible de réutiliser une partie
d’un environnement virtuel pour une formation à une procédure similaire sur un autre site ou sur
une machinerie différente.
1.3.4 Bilan sur les objectifs
Ces dix objectifs peuvent être regroupés autour de quatre axes :
– la liberté d’action de l’utilisateur,
– le contrôle dynamique du scénario, qui regroupe les objectifs de possibilités de contrôle, de
caractère dynamique du contrôle, et de résilience du système de scénarisation,
– la cohérence du scénario global et des comportements individuels, qui regroupe les objectifs
de validité écologique et d’explicabilité des scénarios,
– l’adaptabilité de l’environnement virtuel, qui regroupe les objectifs de variabilité, de passage à
l’échelle, de maintenabilité et de réutilisabilité des scénarios.
L’objectif de cette thèse est donc de proposer un système de scénarisation d’environnements virtuels
— un moteur de scénarisation et un ensemble de formalismes pour la modélisation du contenu et des
objectifs scénaristiques — qui concilie ces quatres axes, en permettant d’assurer à la fois la liberté
d’action de l’apprenant, le contrôle dynamique de la simulation, la cohérence des comportements
présentés et l’adaptabilité de l’environnement virtuel.
Si ces objectifs découlent de nos motivations concernant les applications particulières que sont les
environnements virtuels pour l’apprentissage ou pour l’aide à la décision, nous estimons cependant
qu’ils sont suffisament larges pour qu’un système de scénarisation ainsi conçu puisse être utilisé dans
d’autres contextes.
1.4 Problématique
L’objectif de cette thèse est de proposer un système de scénarisation d’environnements virtuels
qui permette d’assurer à la fois la liberté d’action de l’apprenant, le contrôle dynamique de la simulation,
la cohérence des comportements présentés et l’adaptabilité de l’environnement virtuel.
Le verrou lié à ces travaux naît de l’incompatibilité entre ces différents objectifs : le contrôle s’oppose
24CHAPITRE 1. INTRODUCTION 1.5. APPROCHE
à l’adaptabilité, la liberté d’action va à l’encontre du contrôle, l’alliance du contrôle et de l’adaptabilité
met en péril la cohérence, et ainsi de suite.
Le domaine de la narration interactive oppose ainsi traditionnellement le contrôle et l’adaptabilité
des environnements virtuels, en classifiant les approches orientées scénario, qui pilotent l’environnement
virtuel au niveau global, d’un côté, et orientées émergence, qui font émerger les scénarios à
partir de comportements individuels, de l’autre.
Dans le domaine du jeu vidéo, on parle du paradoxe narratif pour désigner l’opposition fondamentale
entre l’interactivité et la narration [Juul, 1998], c’est à dire que le fait de donner davantage de
capacité d’action au joueur va venir entraver le récit prévu par l’auteur [Aylett, 1999].
De plus, ces jeux sont rarement adaptables, et la variabilité des scénarios n’est atteinte qu’au prix d’un
gros travail de conception, puisque la plupart utilisent un modèle de narration arborescente, où tous
les déroulements possibles doivent être décrits explicitement [Genvo, 2002].
Cet effort nécessaire pour le passage à l’échelle de scénarios cohérents et précisément contrôlés constitue
ce qu’on appelle l’authoring bottleneck [Spierling and Szilas, 2009], et montre la nécessité de
mettre en place des systèmes de scénarisation permettant de créer des environnements adaptables,
sans avoir à définir explicitement l’intégralité des scénarios possibles.
Cependant, il est fréquent que les systèmes qui proposent de concilier contrôle et adaptabilité se bornent
à apposer une surcouche de contrôle sur une simulation composée d’entités autonomes, et que
les interventions de ces systèmes perturbent la cohérence de l’environnement en modifiant à la volée
des états de la simulation.
1.5 Approche
Pour conserver la liberté d’action de l’utilisateur et assurer l’adaptabilité des scénarios, nous
avons choisi d’opter pour une approche émergente et modulaire. Le contenu scénaristique est repré-
senté au travers d’un ensemble de modèles — le modèle du domaine qui décrit les objets, les actions
possibles et le fonctionnement des systèmes, et le modèle de l’activité qui décrit les comportements
humains dans la situation considérée. L’utilisateur est libre d’effectuer n’importe quelle action permise
par le modèle du domaine, et l’environnement est peuplé de personnages virtuels autonomes,
capables de s’adapter aux changements dans l’environnement, dont le comportement est généré à
partir du modèle de l’activité.
Ces modèles, ainsi que les moteurs qui vont permettre de faire évoluer l’état du monde et de générer
les comportements des personnages virtuels, vont constituer le noyau de nos environnements virtuels.
A ce niveau, les scénarios émergent des interactions libres de l’utilisateur, des personnages virtuels
autonomes, et des systèmes simulés. Les scénarios ainsi créés sont explicables, puisqu’ils se conforment
aux modèles, et valides écologiquement, les-dits modèles étant créés par des experts à partir
d’analyses terrain.
Afin de pouvoir exercer un contrôle supplémentaire sur le déroulement des événements, on ajoute à
ce noyau une sur-couche de scénarisation, à travers un module en charge de la gestion des objectifs
scénaristiques. Ce module va, en premier lieu, utiliser les traces d’activité et le profil de l’apprenant
pour déterminer de manière dynamique, à partir d’un ensemble de règles pédagogiques et scénaristiques,
les objectifs scénaristiques à atteindre dans l’environnement virtuel. Dans un deuxième temps,
il va chercher à générer et à réaliser un scénario qui respecte ces objectifs scénaristiques. Afin de
maintenir la cohérence de la simulation, le module de scénarisation va utiliser les modèles qui la
sous-tendent afin de prédire son évolution, et va chercher à guider cette évolution au travers d’un
ensemble d’ajustements possibles, qui vont influencer les réactions des systèmes techniques et les
prises de décision des personnages virtuels de manière indirecte, sans nuire à leur explicabilité.
251.6. CONTRIBUTIONS CHAPITRE 1. INTRODUCTION
1.6 Contributions
J’ai proposé dans le cadre de cette thèse un ensemble de contributions, qui sont résumées dans
cette partie, avant d’être présentées en détail dans le reste du mémoire. Mes contributions majeures
sont :
– SELDON, un modèle pour la scénarisation d’environnements virtuels,
– DIRECTOR, un moteur de planification et réalisation de scénarios prédictifs,
– CAUSALITY-DL, un langage permettant de représenter des modèles de la causalité.
J’ai également participé à la proposition de deux méta-modèles, dans le cadre d’un travail commun
avec mon équipe de recherche :
– ACTIVITY-DL, un langage permettant de représenter des modèles de l’activité,
– DOMAIN-DL, un langage permettant de représenter des modèles du domaine.
1.6.1 Modèle pour la scénarisation d’environnements virtuels – SELDON
J’ai proposé le modèle SELDON, pour ScEnario and Learning situations adaptation through Dynamic
OrchestratioN, qui permet d’adapter le scénario d’un environnement virtuel en fonction de
l’activité de l’utilisateur en conciliant les problématiques de contrôle, de cohérence et d’adaptabilité.
FIGURE 1.1 – Modèle SELDON (voir légende figure 1.2)
Le modèle SELDON tient son nom du personnage d’Hari Seldon, héros de la série de romans
Fondation écrite par Isaac Asimov. Seldon est le fondateur de la psychohistoire, une science visant à
prédire l’histoire à partir de connaissances sur la psychologie humaine. Pour mener l’humanité vers
un meilleur futur, Hari Seldon utilise ses prédictions pour élaborer le Plan Seldon, qui décrit l’évolution
souhaitée de la civilisation. Afin de s’assurer de la réalisation de ce plan, il met également en
place des Fondations, organisations chargées d’agir localement pour guider l’évolution de l’humanité
au moment des Crises Seldon, points clés du Plan Seldon.
26CHAPITRE 1. INTRODUCTION 1.6. CONTRIBUTIONS
FIGURE 1.2 – Légende des schémas
Le principe derrière le modèle SELDON est similaire : à partir d’une simulation interactive peuplée
d’entités autonomes, un module de scénarisation permet d’orienter indirectement le déroulement
des événements en réalisant des ajustements ponctuels sur l’état du monde ou sur les personnages
virtuels. Dans un premier temps, ce module utilise la trace d’activité de l’utilisateur pour générer un
ensemble d’objectifs scénaristiques (désirabilité de situations particulières ou contraintes globales
sur les propriétés du scénario). Puis il utilise les modèles qui sous-tendent la simulation pour prédire
son évolution, et calculer un scénario répondant à ces objectifs à partir de ces prédictions et d’un ensemble
d’ajustements possibles. Ces ajustements sont transmis aux moteurs de simulation du monde
et de génération des comportements des personnages virtuels afin d’influencer leur évolution, de
sorte à ce que le scénario prédit par le module de scénarisation se réalise effectivement dans l’environnement
virtuel.
1.6.2 Moteur de planification et réalisation de scénarios prédictifs – DIRECTOR
Mes travaux de thèse se sont focalisés sur la génération et la réalisation du scénario dans l’environnement
virtuel, ce qui correspond à la seconde phase de la scénarisation dans le modèle SELDON.
Pour cela, j’ai proposé DIRECTOR, un moteur pour l’adaptation dynamique du scénario d’un environnement
virtuel, utilisant de la planification pour prédire l’évolution de la simulation, et des ajustements
sur l’état du monde pour guider cette évolution vers le scénario désiré.
FIGURE 1.3 – Moteur DIRECTOR
271.6. CONTRIBUTIONS CHAPITRE 1. INTRODUCTION
En amont du lancement de l’environnement virtuel, DIRECTOR utilise les modèles du domaine
et de l’activité pour générer un ensemble d’opérateurs de prédiction : des opérateurs de planification
qui sont cadrés par des préconditions, de manière à permettre de prédire l’évolution de la simulation.
Lorsque DIRECTOR, durant l’exécution de la simulation, reçoit un ensemble d’objectifs scénaristiques
à atteindre, il utilise un planificateur, prenant en entrée à la fois les objectifs scénaristiques,
les opérateurs de prédiction, et les opérateurs d’ajustements qui décrivent les interventions possibles
sur l’environnement virtuel, pour planifier un scénario répondant aux objectifs. Le scénario planifié
correspond au scénario souhaité dans la simulation, et contient à la fois des opérateurs de prédiction
— qui décrivent les actions attendues de la part des personnages virtuels et de l’utilisateur, et les
comportements attendus de la part des systèmes techniques — et des opérateurs d’ajustement — qui
décrivent les ajustements nécessaires à la réalisation de ce scénario.
Puis, à la réception des messages indiquant les changements d’état dans l’environnement virtuel,
DIRECTOR va comparer l’évolution de l’état du monde avec le scénario planifié, et déclencher au besoin
les ajustements. Dans le cas où le scénario effectif dévie du scénario planifié, alors DIRECTOR
planifiera un nouveau scénario tenant compte des changements dans l’environnement virtuel.
Goal :
(fire)
commitment: agent-novice marcel
action: ignore-turn-off-phone marcel phone1 tank1 car1
commitment: joint-used joint1
behaviour: leak tank1 joint1
commitment: tank-empty tank1
behaviour: ignore-leak tank1 joint1
action: open-tank marcel tank1 car1
behaviour: open tank1
action: pump-gas marcel tank1 car1
behaviour: pump-gas tank1 empty
behaviour: fire
happening: phonecall phone1
behaviour: spark phone1
occurrence: spark-true
FIGURE 1.4 – Exemple de scénario prédictif construit par le modèle DIRECTOR
28CHAPITRE 1. INTRODUCTION 1.6. CONTRIBUTIONS
1.6.3 Méta-modèle de la causalité – CAUSALITY-DL
Afin de pouvoir contrôler de manière plus précise les scénarios générés par le système de scé-
narisation, j’ai proposé un langage nommé CAUSALITY-DL, qui repose sur un méta-modèle de la
causalité.
CAUSALITY-DL permet de spécifier les relations de causalité entre les événements d’intérêt qui peuvent
survenir dans l’environnement virtuel, ainsi que les barrières qui peuvent empêcher la propagation
de la causalité entre ces événements.
Ce langage utilise des éléments de l’ontologie du modèle du domaine représenté dans le langage
DOMAIN-DL, et est inspiré de formalismes d’analyses de risques : nœuds papillons et arbres de
causes.
Dans le cadre de la scénarisation, le modèle de causalité permet de spécifier en amont un espace de
trames scénaristiques d’intérêt (scénarios accidentels ressortis des analyses de risques, par exemple).
Etant donné que le langage permet d’associer des valeurs aux événements (probabilité, complexité,
etc.), il est également utilisé pour calculer les propriétés des différentes trames scénaristiques (crédibilité,
complexité globale, etc.).
Anti-Overflowing Probe Triggered Emergency Stop Triggered
Valve Lever Checked
Loading Plan Checked
Tank Emptyness Checked
Valve Leak Leak
Tank Overflow Dome Leak
Used Valve Spring Bad Valve Closure
Loading Programming Error
Non Empty Tank
Truck Cleaned with Water
Emergency Shower Triggered
Phone Turned Off
Protective Goggles Worn
Fire
Cloud Fire
Pool Fire
Driver on Fire
Explosible Cloud
Product Spreading
Product Splattering Eye Splattering
Ignition Source
Cigarette Lighting
Storm
Phone Call
Leak
FIGURE 1.5 – Extrait d’un modèle de causalité
1.6.4 Autres contributions
Méta-modèle de l’activité – ACTIVITY-DL
J’ai participé avec l’ensemble de mon équipe aux spécifications du langage ACTIVITY-DL, qui
repose sur un méta-modèle de l’activité issu des travaux précédents de l’équipe sur le formalisme
HAWAI-DL [Edward et al., 2008]. ACTIVITY-DL permet la représentation de l’activité située par des
ergonomes, sous un format interprétable par des modules informatiques. J’ai notamment proposé la
formalisation des constructeurs et celle des types de préconditions.
291.6. CONTRIBUTIONS CHAPITRE 1. INTRODUCTION
FIGURE 1.6 – Exemple de modèle représenté en ACTIVITY-DL
Méta-modèle du domaine – DOMAIN-DL
J’ai participé avec Kevin Carpentier aux spécifications du langage DOMAIN-DL, un formalisme
ontologique qui permet de représenter les objets et actions possibles dans l’environnement virtuel,
ainsi que les règles d’évolution des objets suite aux actions, au travers de règles de comportement.
J’ai notamment travaillé sur le méta-modèle du domaine, en particulier sur la notion d’événements,
commune avec le méta-modèle de causalité de CAUSALITY-DL.
Entity
Object
is-linked
Action
*
Behaviour
*
Component
1..*
1..*
AbstractObject ConcreteObject
Agent
1..*
State
1..*
StateConstraint
*
Event
DurativeEvent PunctualEvent begins-with
ends-with 1..*
DurativeBehaviour
1..*
PunctualBehaviour
1..*
EndogenousEvent
ExogenousEvent
FIGURE 1.7 – Méta-modèle ontologique de DOMAIN-DL
30CHAPITRE 1. INTRODUCTION 1.7. CONTEXTE
1.7 Contexte
Le modèle SELDON a été implémenté au sein de la plateforme de création d’environnements
virtuels HUMANS [Lanquepin et al., 2013], sous la forme de deux modules : TAILOR, qui fait l’objet
de la thèse de doctorat de Kevin Carpentier [Carpentier et al., 2013], et DIRECTOR, qui fait l’objet de
cette thèse. Cette plateforme a été utilisée pour créer plusieurs environnements virtuels dans le domaine
de la formation.
1.7.1 Plateforme HUMANS
HUMANS, pour HUman Models based Artificial eNvironments Software platform, est une plateforme
de création d’environnements virtuels complexes prenant en compte les facteurs humains.
Elle est composée d’un ensemble de moteurs logiciels, qui raisonnent sur un ensemble de modèles
communs. Grâce à cette approche modulaire, elle peut fonctionner avec différentes configurations,
en ajoutant ou en enlevant des modules selon les besoins.
FIGURE 1.8 – La plateforme HUMANS.
Cette plateforme se place dans le cadre théorique de la didactique professionnelle et vise à encourager
un apprentissage par la pratique, à partir de situations écologiquement valides qui reproduisent
des situations de terrain. Afin de rendre compte de comportements observés, les modèles qui
servent de base à la simulation sont créés à partir d’analyses terrain (analyses ergonomiques et analyses
de risque). De plus, ces modèles ne contiennent pas seulement le déroulement idéal des procé-
dures, mais décrivent également l’activité observée telle qu’elle apparait dans les conditions réelles,
tendant vers une description de l’activité finalisée. Ainsi les erreurs et les violations conscientes sont
prises en compte dans l’activité, que ce soit du côté de l’utilisateur ou de celui des personnages
virtuels qui peuplent l’environnement. En effet, afin de rendre compte de la complexité des situations
en termes de facteurs humains, la plateforme HUMANS permet de simuler des personnages
virtuels riches, capables de comportements variés et adaptables.
Les scénarios émergent des comportements individuels des personnages virtuels, des systèmes techniques,
et du ou des utilisateurs, afin de permettre de rendre compte d’une variété de situations sans
311.7. CONTEXTE CHAPITRE 1. INTRODUCTION
pour autant devoir les expliciter a priori. Ces scénarios sont représentés a posteriori sous la forme
de traces de la simulation, qui peuvent être consultées par les utilisateurs ou utilisées comme entrée
pour la scénarisation. Les scénarios peuvent en effet être adaptés dynamiquement grâce au modèle
SELDON, afin d’offrir des situations d’apprentissage pertinentes en regard du profil et de l’activité de
l’apprenant.
La plateforme HUMANS est composée de quatre modules :
– WORLD MANAGER, pour la gestion de l’état du monde ;
– REPLICANTS, pour la génération du comportement des personnages virtuels ;
– MONITOR, pour le suivi de l’apprenant et la génération de traces ;
– SELDON, pour la scénarisation adaptative.
Le module SELDON est lui-même divisé en deux sous-modules :
– TAILOR, pour la génération de situations d’apprentissage ;
– DIRECTOR, pour la génération et la mise en place de scénarios correspondant à ces situations
d’apprentissage.
Ces modules utilisent un ensemble de modèles communs, représentés à l’aide de trois langages de
description réunis dans le formalisme unifié HUMANS-DL. Les différents modules de la plateforme
sont présentés plus en détail dans l’annexe B.
1.7.2 Cas d’application
La plateforme HUMANS a été utilisée pour créer plusieurs environnements virtuels pour la formation,
dans des domaines tels que la maîtrise des risques, la maintenance aéronautique et la gestion
de crise.
Trois cas d’application particuliers ont servi de support de réflexion pour les propositions présentées
dans ce mémoire :
– le projet ARAKIS, sur la formation des opérateurs de dépôts pétroliers ;
– le projet SimADVF, sur la formation des assistantes de vie de famille ;
– le projet NIKITA, sur la formation des assembleurs-monteurs en aéronautique.
ARAKIS – Formation des opérateurs de dépôts pétroliers
Le projet ARAKIS, dans le cadre duquel s’est effectuée cette thèse, était financé par la Région
Picardie et le FEDER. Il a été réalisé en partenariat avec l’INERIS et le LATI (Université Paris Descartes).
Ce projet portait sur la scénarisation d’environnements virtuels pour la formation à la maîtrise des
risques.
Le cas d’application abordé dans ce projet porte sur la formation des opérateurs de dépôts pétroliers.
L’opérateur de dépôt pétrolier supervise le fonctionnement du dépôt, où des conducteurs de
camions-citernes viennent charger leurs camions avec des hydrocarbures qu’ils iront ensuite distribuer
dans des stations-essence. Du fait de la sous-traitance, ces situations sont sujettes à des contraintes
particulières en termes de maîtrise des risques : le manque de contrôle direct de l’opérateur
sur l’activité des conducteurs sous-traitants entraîne de leur part une application très formelle des
procédures, sans réelle compréhension des risques qui sont en jeu.
L’opérateur, qui est en charge de la surveillance du dépôt, doit donc non seulement repérer les dé-
fauts matériels qui peuvent survenir, mais également faire l’interface avec les conducteurs et s’assurer
qu’ils respectent les consignes de sécurité (port du casque et des lunettes de protection, coupure de la
batterie du camion, etc.). Les fuites d’hydrocarbure pouvant avoir des conséquences catastrophiques,
ces consignes sont très strictes. Pourtant, l’opérateur doit parfois faire face à des conducteurs expérimentés,
qui se permettent de faire des compromis sur la sécurité (non-port des équipements de
protection individuels par exemple), voire de passer outre certaines interdictions (utilisation du télé-
phone portable, cigarette, etc.). L’opérateur doit savoir gérer les problèmes relationnels avec ces conducteurs,
en particulier lorsque, pressés, il le mettent lui-même sous pression. A l’inverse, il est parfois
32CHAPITRE 1. INTRODUCTION 1.7. CONTEXTE
nécessaire pour l’opérateur ou pour les conducteurs de dévier de la procédure prescrite, lorsque celleci
ne permet pas de répondre aux problèmes rencontrés. C’est de ce type de comportements que l’on
va chercher à rendre compte au travers des scénarios générés dans l’environnement virtuel. L’opérateur
a également une mission de gestion des crises : c’est son rôle de sécuriser le dépôt, d’alerter et de
réagir en cas d’accident (fuite d’hydrocarbures, feu, etc.). Ici, le système de scénarisation permettra
d’atteindre la situation d’apprentissage permettant à l’apprenant de s’entraîner aux bonnes façons
de faire et à réagir rapidement en cas d’accident.
FIGURE 1.9 – Capture d’écran du démonstrateur ARAKIS
La plupart des dépôts forment eux-mêmes leurs opérateurs, notamment avec du compagnonnage
et des références régulières aux procédures. Dans ce cadre, l’objectif pour l’environnement
virtuel est de maintenir les connaissances via un usage régulier (une fois par an ou tous les deux ans)
sur des thèmes particuliers (par exemple : comment réagir à un épandage d’essence). Son utilisation
doit également permettre de renforcer la vigilance sur les chargements : par la force de l’habitude un
opérateur qui voit un conducteur sans ses lunettes de protection lui fera remarquer une fois, deux
fois, puis abandonnera. Il est donc nécessaire qu’il prennne conscience des risques encourus.
Ce cas d’application fait suite à celui abordé dans le cadre du projet V3S [Barot et al., 2013], qui portait
sur la formation des conducteurs de camions-citernes sous-traitants, sur la phase de chargement de
matières dangereuses sur le dépôt. Les modèles réalisés pour le projet V3S ont été complétés par de
nouvelles analyses terrain pour le projet ARAKIS.
SimADVF – Formation des assistantes de vie de famille
Le projet SimADVF, financé par la DGCIS sur l’appel à projets Serious Games 2009 et réalisé en
partenariat avec l’AFPA et VirtuoFacto, portait sur la conception d’un environnement virtuel pour la
formation des assistantes de vie de famille, et plus particulièrement pour l’apprentissage des activités
touchant à la sécurité dans la garde à domicile des jeunes enfants.
Il ne s’agit donc plus ici de maîtrise des risques dans le domaine industriel, mais de prévention des
accidents domestiques : chutes, brûlures, intoxications, etc. Cet environnement virtuel répond en
réalité à deux ambitions : la formation des personnels des services à la personne d’un côté, et l’information
de l’autre, avec la sensibilisation des parents et des enfants sur les risques d’accidents de la
vie courante.
L’utilisation d’un environnement virtuel permet de confronter les apprenants à des situations impossibles
à mettre en pratique réellement, en plaçant des enfants dans des situations dangereuses.
331.7. CONTEXTE CHAPITRE 1. INTRODUCTION
L’approche HUMANS est ici mise à profit en laissant aux utilisateurs la liberté d’expérimenter avec
l’environnement, pour les mettre face aux conséquences de leurs erreurs. Les compétences visées
portent en effet à la fois sur la prévention des risques en amont, et sur la réaction en situation de
crise. La scénarisation va donc être utilisée pour mener à ces crises. Un intérêt particulier a été porté
à l’augmentation progressive de la gravité des accidents au fur et à mesure que l’apprenant répète
ses erreurs. Ainsi, si l’apprenant oublie de fermer la barrière sécurisant l’escalier au premier étage, la
petite fille qu’il doit surveiller va profiter d’un instant de distraction pour tomber dans l’escalier, et se
fera un bleu. Mais si l’apprenant reproduit plusieurs fois cet oubli, la chute de la petite fille aura des
conséquences plus marquantes, allant jusqu’à lui faire se briser la nuque.
FIGURE 1.10 – Capture d’écran du démonstrateur SimADVF.
Pour la formation des assistantes de vie de famille, un troisième domaine de compétences est
visé : la posture professionnelle. Il s’agit pour le professionnel de conserver une certaine distance affective
entre lui et l’enfant, en trouvant le bon équilibre entre la compassion et la négation de l’autre.
L’environnement virtuel doit dès lors faire l’objet d’une scénarisation pour créer des scénarios intéressants
et mettant en jeu des personnages suffisamment riches pour susciter des émotions chez
l’utilisateur.
NIKITA – Formation des assembleurs-monteurs en aéronautique
Le projet NIKITA, financé par l’ANR, réunit un ensemble de partenaires — Heudiasyc, le LATI
(Université Paris Descartes), le CEA-LIST, Emissive, EADS, AEROLIA et le lycée technique Henry Potez
— autour de la question des interactions naturelles dans les environnements virtuels pour la formation.
Il s’agit ici de former les assembleurs-monteurs, travaillant sur les lignes d’assemblage des fuselages
d’avions, aux tâches de rivetage sur différents matériaux. S’il est toujours question dans une certaine
mesure de maîtrise des risques, les risques ne sont plus de l’ordre des scénarios accidentels mais sont
en termes de qualité.
En marge de la question centrale du projet, sur l’apport du geste et de l’interaction naturelle pour
l’apprentissage, se pose la problématique de la représentation des connaissances pour simuler une
situation de travail complexe : la procédure visée implique un grand nombre d’outils, de ressources
et de matériaux différents, qui donnent lieu à de nombreuses combinaisons, et peut être réalisée de
différentes manières, selon que les suites d’opérations devant être répétées sur des cibles similaires
sont effectuées cible par cible ou bien en parallèle.
L’approche HUMANS est donc particulièrement intéressante sur ce cas d’application, puisqu’elle per-
34CHAPITRE 1. INTRODUCTION 1.8. ORGANISATION DU MÉMOIRE
met de générer les scénarios de manière émergente à partir de modélisations du domaine, de l’activité
et de la causalité, là où une modélisation exhaustive des scénarios serait impossible.
FIGURE 1.11 – Capture d’écran du démonstrateur NIKITA.
1.8 Organisation du mémoire
L’état de l’art est présenté dans les chapitres 2 et 3. Le chapitre 2 présente les différentes approches
utilisées pour la scénarisation d’environnements virtuels et les problèmes que ces approches rencontrent.
Le chapitre 3 porte sur la représentation des connaissances nécessaires pour cette scénarisation,
et se divise en trois sections : la représentation du contenu scénaristique, la représentation
d’objectifs scénaristiques, et la représentation des scénarios eux-mêmes.
Nos contributions sont présentées dans les chapitres 4, 5, 6 et 7. Le chapitre 4 présente SELDON,
notre modèle pour la scénarisation d’environnements virtuels basé sur le contrôle indirect d’entités
autonomes à partir d’objectifs scénaristiques générés dynamiquement. Le chapitre 5 décrit les langages
utilisés pour représenter le contenu scénaristique : DOMAIN-DL, qui permet d’écrire des modèles
de domaine, et ACTIVITY-DL, utilisé pour la représentation de modèles d’activité. Le chapitre 6
présente notre contribution principale : DIRECTOR, un moteur de planification et de réalisation de
scénarios prédictifs qui utilise les modèles de domaine et d’activité pour générer des tâches de planification
permettant de calculer les ajustements nécessaires pour mener le scénario à une situation
souhaitée, compte tenu des prédictions des comportements de l’utilisateur, des personnages virtuels
et des systèmes techniques simulés. Le chapitre 7 décrit une extension de la phase de génération
des scénarios de DIRECTOR permettant de prendre en compte des objectifs scénaristiques statiques
et dynamiques, et présente notamment CAUSALITY-DL, un langage de représentation d’espaces de
scénarios d’intérêt.
Les chapitres 8 et 9 concernent l’implémentation et les résultats obtenus. Le chapitre 8 décrit l’implémentation
qui a été réalisée à partir de ces propositions. Cette implémentation a donné lieu à une
première étape de validation, présentée dans le chapitre 9, au travers d’une évaluation informatique
et de retours d’usage. Nous discutons également dans ce chapitre d’un ensemble de pistes d’évaluation
pour les systèmes de scénarisation.
Enfin, nous proposons dans le chapitre 10 une discussion sur nos contributions, leurs limites, et les
perspectives que nous envisageons pour étendre ce travail, avant de conclure dans le chapitre 11.
351.8. ORGANISATION DU MÉMOIRE CHAPITRE 1. INTRODUCTION
36Première partie
Etat de l’art
37Chapitre 2
Scénarisation dans les environnements
virtuels
Sommaire
2.1 Classifications des approches pour la scénarisation . . . . . . . . . . . . . . . . . . . 40
2.1.1 Approches centrées sur le scénario ou sur les personnages . . . . . . . . . . . . 40
2.1.2 Scénarisation intrinsèque ou extrinsèque . . . . . . . . . . . . . . . . . . . . . . . 41
2.1.3 Scénario prédéfini ou généré dynamiquement . . . . . . . . . . . . . . . . . . . 41
2.2 Simulations pures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.2.1 CS WAVE et VTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.2.2 VRaptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.2.3 I-Storytelling et EmoEmma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.2.4 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.3 Scénarios prédéfinis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.3.1 EMSAVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.3.2 Generic Virtual Trainer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.3.3 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.4 Graphes multilinéaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.4.1 PAPOUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.4.2 ICT Leaders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.4.3 Façade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.4.4 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.5 Scénarios dynamiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.5.1 IDTension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.5.2 Mimesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.5.3 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.6 Personnages partiellement autonomes . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.6.1 MRE et FearNot ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.6.2 ISAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.6.3 IN-TALE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.6.4 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.7 Contrôle de personnages autonomes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.7.1 Initial State Revision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
2.7.2 Virtual Storyteller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.7.3 Thespian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.7.4 Planification sociale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
2.7.5 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.8 Bilan global et positionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
392.1. APPROCHES CHAPITRE 2. SCÉNARISATION
La scénarisation des environnements virtuels est une problématique complexe, qui nécessite de
concilier des objectifs souvent considérés comme incompatibles : contrôle dynamique des événements,
liberté d’action de l’utilisateur, cohérence du scénario global et des comportements individuels
et adaptabilité du système.
Depuis une vingtaine d’années, de nombreux systèmes de scénarisation ont été proposés pour répondre
à cette problématique, en particulier avec l’essor du domaine de la narration interactive. Reprenons
notre définition des systèmes de scénarisation :
Système de scénarisation
Un système de scénarisation est composé d’un ou plusieurs langages de scénarisation,
permettant de modéliser le contenu scénaristique et/ou les objectifs scénaristiques, et d’un
moteur de scénarisation permettant de gérer de manière dynamique la réalisation du scénario.
Nous nous intéresserons dans ce chapitre aux moteurs de scénarisation, en présentant les différentes
approches ayant été adoptées jusqu’ici pour le contrôle dynamique du scénario dans les
environnements virtuels. Nous exposons tout d’abord différentes classifications utilisées pour ces
approches, puis nous détaillons un certain nombre d’entre elles : les simulations pures, les systèmes
basés sur un scénario prédéfini, ceux qui s’appuient sur un graphe multilinéaire, les systèmes optant
pour une génération dynamique du scénario et ceux qui utilisent des personnages partiellement autonomes.
Enfin, nous exposons un certain nombre de travaux portant sur le contrôle de personnages
autonomes, avant de conclure sur notre positionnement. Les différents formalismes de représentation
des connaissances utilisées pour la scénarisation seront présentés dans le chapitre suivant.
2.1 Classifications des approches pour la scénarisation
Le domaine de la narration interactive oppose classiquement les approches centrées sur le scé-
nario et celles centrées sur les personnages, mais la réalité des systèmes est plus complexe. Nous
faisons ici deux distinctions supplémentaires, portant sur d’autres aspects : d’une part, nous séparons
les systèmes dont la scénarisation est intrinsèque et ceux où elle est extrinsèque ; d’autre part, nous
identifions un continuum allant des systèmes basés sur des scénarios prédéfinis aux systèmes qui
génèrent dynamiquement les scénarios.
2.1.1 Approches centrées sur le scénario ou sur les personnages
La dichotomie la plus répandue dans les systèmes de narration interactive oppose ainsi les approches
centrées sur le scénario et celles centrées sur les personnages.
Les approches centrées sur le scénario (ou strong story approaches [Mateas and Stern, 2000]) mettent
l’accent sur la qualité globale du scénario. Le contrôle des événements est centralisé dans un
drama manager qui décide des événements à suivre et dirige l’ensemble des personnages de l’environnement.
Les systèmes suivants suivent ce principe : IDA [Magerko, 2005], IDTension [Szilas, 2003],
Crystal Island [Mott and Lester, 2006], Façade [Mateas, 2002].
Dans les approches centrées sur les personnages (ou strong autonomy approaches [Mateas and Stern,
2000]), au contraire, le scénario émerge des interactions entre l’utilisateur et les personnages virtuels
qui peuplent l’environnement. Le contrôle est distribué, chaque personnage étant responsable de ses
propres prises de décision. Ces approches se focalisent sur la création de personnages virtuels complexes
et crédibles. C’est le cas des systèmes suivants : I-Storytelling [Cavazza et al., 2002], EmoEmma
40CHAPITRE 2. SCÉNARISATION 2.1. APPROCHES
[Pizzi and Cavazza, 2007], FearNot! [Aylett et al., 2006], MRE [Hill et al., 2001].
2.1.2 Scénarisation intrinsèque ou extrinsèque
On peut également faire la distinction au niveau de la conception des environnements virtuels
entre ceux où la scénarisation est intrinsèque, et ceux où elle est extrinsèque.
La scénarisation est intrinsèque lorsqu’elle est partie intégrante du processus de conception de l’environnement
virtuel. Dans ce cas, le moteur de scénarisation est indissociable du moteur de simulation
de l’environnement, et l’ensemble des scénarios défini par les concepteurs est à la fois celui
des scénarios possibles et celui des scénarios souhaitables. C’est le cas de nombreux environnements
virtuels du domaine de la narration interactive, comme I-Storytelling [Cavazza et al., 2002] ou Façade
[Mateas and Stern, 2005].
La scénarisation est extrinsèque si elle est vue comme une surcouche, une étape supplémentaire de
cadrage ou de personnalisation d’un environnement virtuel existant. Elle consiste alors à définir un
sous-espace de scénarios souhaitables à partir de l’espace de scénarios possibles dans la simulation,
en sélectionnant, ordonnant ou priorisant des sous-ensembles d’événements en vue d’une utilisation
particulière. C’est l’approche utilisée pour la paillasse virtuelle décrite dans [Marion, 2010], qui
utilise le modèle de scénario pédagogique POSEIDON pour diriger une simulation précédemment
créée avec le méta-modèle MASCARET [Baudouin, 2007].
2.1.3 Scénario prédéfini ou généré dynamiquement
Il existe également une différence entre les environnements virtuels qui s’appuient sur un scé-
nario prédéfini, et ceux dont le scénario est généré dynamiquement. On parle alors dans ce dernier
cas d’“approche générative”, ou d’“approche émergente” [Aylett, 1999], et deux cas de figure se présentent
: ceux où un scénario est généré en amont de la simulation, et ceux où le scénario est généré au
fur et à mesure.
Le scénario peut être prédéfini, soit sous la forme d’une séquence linéaire d’événements, soit sous
la forme d’un graphe multi-linéaire (scénario à embranchements). Le moteur de scénarisation sert
à suivre et maintenir le déroulement de ce scénario, en limitant les choix de l’utilisateur ou en inhibant
leur impact sur le déroulement des événements. L’accent est mis sur le respect de la volonté
de l’auteur humain qui va créer le scénario et s’assurer de la qualité de l’expérience de l’utilisateur en
termes de narration. Le système PAPOUS, par exemple, représente ainsi le scénario par une structure
arborescente d’événements [Silva et al., 2003].
Les systèmes où le scénario est généré en amont fonctionnent de manière similaire, à ceci près qu’ils
possèdent une phase préalable de génération du scénario. Ils se rapprochent en cela des systèmes de
génération automatique d’histoires (narrative generation), comme TALE-SPIN [Meehan, 1977], Minstrel
[Turner, 1993] ou, plus récemment, Fabulist [Riedl, 2004], qui visent à générer une séquence
d’assertions et d’événements correspondant à un ensemble d’objectifs scénaristiques. La création
du discours est alors remplacée par l’exécution du scénario dans l’environnement virtuel. Cette approche
permet de réduire l’effort de création de scénarios et d’augmenter leur variabilité. On peut
citer notamment le système Mimesis [Riedl et al., 2003], où le scénario est planifié en amont de la
simulation et exécuté en donnant des ordres à des personnages virtuels. Si l’activité de l’utilisateur
met en péril ce scénario alors soit les effets de son action seront annulés, soit le moteur de planifi-
cation sera utilisé à nouveau pour réparer le plan en prenant en compte l’action de l’utilisateur.
Enfin, le scénario est parfois généré au fur et à mesure du déroulement de la simulation, soit de manière
explicite via la sélection de l’état suivant par le moteur de scénarisation, soit en émergeant des
interactions de l’utilisateur avec des personnages virtuels réagissant de manière autonome. L’accent
est ici mis sur la liberté et la capacité d’action de l’utilisateur, et sur l’adaptabilité de l’environnement
virtuel en cours de session. De nombreux environnements se trouvent dans ce cas de figure : Moe
412.2. SIMULATIONS PURES CHAPITRE 2. SCÉNARISATION
[Weyhrauch, 1997], IDTension [Szilas, 2003], Crystal Island [Mott and Lester, 2006], FearNot! [Aylett
et al., 2006], etc.
Il peut cependant être difficile de faire la distinction entre ce qui relève d’un scénario prédéfini et
ce qui relève d’une génération dynamique. Les objectifs scénaristiques utilisés pour générer le scé-
nario en amont, ou pour sélectionner l’état suivant, peuvent dans certains cas être représentés sous la
forme d’une trame scénaristique, composée de points clés par lesquels le scénario devra passer. Selon
le niveau auquel cette trame est détaillée, on pourra alors se trouver dans un cas où dans l’autre. Dans
IDA [Magerko, 2005], par exemple, l’auteur spécifie des points clés et les ordonne partiellement, et le
moteur de scénarisation complète dynamiquement le scénario entre ces points clés. De même, il est
possible de prédéfinir seulement certains aspects du scénario. Ainsi, les auteurs de Façade [Mateas,
2002] distinguent, entre les systèmes basés sur des graphes d’histoires et ceux basés sur de la génération
pure, une troisième approche qu’ils nomment drama management. Dans cette approche, les
événements sont prédéfinis, mais l’ordre de ces derniers est déterminé de manière dynamique. Les
événements de Façade étant complexes et faisant intervenir les actions synchronisées de plusieurs
personnages, un gros effort de création du contenu a dû être fourni, malgré l’apport de la génération
dynamique.
FIGURE 2.1 – Des graphes d’histoires à la génération dynamique [Mateas, 2002]
2.2 Simulations pures
Les environnements virtuels de type “simulation” ou “bac à sable” se trouvent à l’intersection des
approches basées sur les personnages, de la scénarisation intrinsèque et des approches génératives.
Ils sont centrés sur la simulation d’un monde virtuel, et laissent l’utilisateur expérimenter. Un nouvel
état du monde est calculé à chaque étape en réaction aux actions de l’utilisateur et en fonction des
règles de fonctionnement des systèmes techniques modélisés. Si l’environnement est peuplé de personnages
virtuels, ces derniers sont autonomes, et leur comportement est généré par des systèmes
allant de simples scripts à des architectures cognitives plus complexes. Nous présentons ici certains
de ces environnements, allant de simulations de systèmes techniques comme CS WAVE [Da Dalto,
2004] et VTT [Crison et al., 2005] à des environnements contenant des personnages virtuels comme
VRaptor [Shawver, 1997], I-Storytelling [Cavazza et al., 2002] et EmoEmma [Pizzi and Cavazza, 2007].
2.2.1 CS WAVE et VTT
La plupart des environnements de type “simulation” sont des simulateurs de systèmes techniques,
utilisés pour la formation au geste ou l’entraînement à l’utilisation de machineries.
VTT (Virtual Technical Trainer) [Crison et al., 2005] est un environnement pour la formation à l’usinage.
L’apprenant utilise une interface à retour d’effort pour saisir un outil de coupe virtuel, qu’il
déplace pour réaliser des passes sur la pièce à usiner.
42CHAPITRE 2. SCÉNARISATION 2.2. SIMULATIONS PURES
FIGURE 2.2 – Le dispositif CS WAVE [Da Dalto, 2004]
CS WAVE [Da Dalto, 2004] est une application de formation professionnelle aux gestes du soudage.
L’utilisation de l’environnement est découpée en sessions d’utilisation de la simulation, avec différents
exercices faisant intervenir plus ou moins de composantes du geste technique et plus ou
moins d’assistances virtuelles.
Ces environnements utilisent des interfaces tangibles pour offrir une expérience au plus proche de la
réalité. Ils utilisent des simulations physiques ou des règles d’évolution des systèmes techniques pour
assurer la validité écologique des comportements des objets virtuels. Les scénarios abordés restent
cependant relativement simples, et ne font pas intervenir de personnages virtuels.
2.2.2 VRaptor
VRaptor [Shawver, 1997] est un environnement virtuel visant à permettre un apprentissage situé,
en confrontant un apprenant à de multiples situations. L’apprenant joue ici le rôle d’un membre
d’équipe du FBI devant résoudre une situation de prise d’otages.
FIGURE 2.3 – Capture d’écran de VRaptor [Shawver, 1997]
432.2. SIMULATIONS PURES CHAPITRE 2. SCÉNARISATION
L’environnement virtuel est peuplé de personnages virtuels au comportement réactif. Le formateur
définit les conditions initiales en début de session, en choisissant pour chaque personnage sa
position, son rôle (terroriste ou otage) et son comportement en cas de fusillade (panique, reddition,
choc...). Les situations rencontrées dans la simulation par la suite dépendent fortement des actions
de l’apprenant. Si le formateur souhaite confronter ce dernier à une situation particulière, il ne peut
être certain que cette situation se produise. Par exemple, un apprenant pourrait tirer sur le terroriste
avec qui le formateur souhaitait qu’il négocie.
2.2.3 I-Storytelling et EmoEmma
L’équipe Intelligent Virtual Environments de l’Université de Teeside a produit un certain nombre
d’environnements virtuels basés sur l’approche centrée sur les personnages.
I-Storytelling [Cavazza et al., 2002] est une simulation de sitcom inspirée de la série Friends. Les personnages
virtuels agissent de manière autonome, leur comportement étant représenté à l’aide de
réseaux de tâches hiérarchiques (voir section 3.1.2). L’utilisateur peut influencer le déroulement de
l’histoire en déplaçant des objets. Par exemple, Ross veut offrir des fleurs à Rachel pour la séduire
mais échoue car l’utilisateur les a cachées.
FIGURE 2.4 – Influence de l’utilisateur sur l’histoire dans EmoEmma [Pizzi and Cavazza, 2007]
EmoEmma [Pizzi and Cavazza, 2007] est basé sur le roman Madame Bovary et met en scène des
personnages virtuels autonomes au comportement complexe, doté de désirs et d’émotions. L’utilisateur
peut interagir avec Emma par le biais de langage naturel, soit en jouant le rôle d’un autre
personnage, soit pour lui donner des conseils ou au contraire la sermonner, ce qui aura pour effet
d’influencer son comportement.
Ces environnements visent à créer des histoires, et parviennent à donner à l’utilisateur le sentiment
d’agir sur le cours des événements. Cependant, le scénario émergeant des actions choisies par ce
dernier et par les personnages virtuels, il est impossible de s’assurer de son issue.
44CHAPITRE 2. SCÉNARISATION 2.3. SCÉNARIOS PRÉDÉFINIS
2.2.4 Bilan
Les systèmes de scénarisation centrés sur la simulation permettent d’assurer à la fois la liberté
d’action de l’utilisateur, la cohérence des comportements — à la fois ceux des systèmes techniques
et ceux des personnages virtuels — et l’adaptabilité des scénarios. Le scénario global émergeant des
comportements individuels, il est possible de modéliser des comportements complexes de systèmes
techniques et des situations de co-activité. La variabilité des scénarios ainsi générés permet d’utiliser
ces environnements virtuels pour de l’apprentissage situé.
Cependant, ces systèmes laissent très peu de possibilités de contrôle, en dehors de celui des conditions
initiales de la simulation. Une fois lancée, la simulation peut aller dans n’importe quelle direction,
selon les actions de l’utilisateur, sans assurance que les situations rencontrées restent pertinentes
par rapport au profil et à l’activité de ce dernier. Ainsi, dans un cadre d’apprentissage, il serait
intéressant de limiter l’apparition de situations que l’apprenant n’a pas encore les capacités de ré-
soudre, mais la simulation pourrait confronter un apprenant novice à une situation catastrophique
qui n’aurait d’autre effet que de le traumatiser.
De plus, ces approches émergentes ne tendent pas vers une situation but particulière : si les règles de
fonctionnement de la simulation ne permettent pas de s’assurer qu’on aboutira dans tous les cas à
une situation terminale (ex : “les otages sont sauvés” ou “les otages sont morts”), alors dans certains
cas le scénario généré n’a potentiellement pas de fin autre que celle de l’arrêt brutal de la simulation.
2.3 Scénarios prédéfinis
A l’inverse, les environnements virtuels contrôlés par un scénario linéaire pré-établi permettent
de s’assurer que l’utilisateur rencontre des situations pertinentes. C’est notamment l’approche adoptée
par de nombreux environnements de formation basés sur des scénarios pédagogiques.
Les personnages virtuels, de même que les systèmes techniques qui sont simulés, sont contrôlés de
manière globale par le moteur de scénarisation, de sorte à exécuter le scénario prescrit. Afin que l’apprenant
n’oriente pas le scénario dans une direction imprévue, ses possibilités d’actions sont souvent
restreintes artificiellement. Dans le cas contraire, si ses actions mettent le scénario en péril, alors leurs
effets sont annulés, soit de manière extra-diégétique, en arrêtant la simulation et repartant en arrière,
soit de manière intra-diégétique, par exemple avec des interventions similaires à celles du système
Mimesis [Riedl et al., 2003] présenté dans la partie 2.5. Nous présentons ici deux de ces systèmes :
EMSAVE [Buttussi et al., 2013] et GVT [Gerbaud, 2008].
2.3.1 EMSAVE
EMSAVE [Vidani and Chittaro, 2009] [Buttussi et al., 2013] est un environnement virtuel pour la
formation aux procédures de secourisme.
La simulation est basée sur un ensemble de scénarios prédéfinis, chacun mettant l’apprenant face à
un patient ayant besoin de soins particuliers. Les apprenants doivent effectuer un ensemble d’examens
et de traitements en suivant les procédures de premiers secours adaptées. A chaque étape, un
ensemble d’actions est proposé à l’apprenant par le biais d’un menu. S’il choisit une action appropriée,
l’environnement s’anime et évolue en appliquant les effets de l’action. Dans le cas contraire,
le système fournit à l’apprenant un rapport résumant la situation et donnant des indices sur l’action
correcte.
452.3. SCÉNARIOS PRÉDÉFINIS CHAPITRE 2. SCÉNARISATION
FIGURE 2.5 – Le menu de sélection d’action de EMSAVE [Vidani and Chittaro, 2009]
2.3.2 Generic Virtual Trainer
L’architecture GVT (Generic Virtual Trainer) [Gerbaud, 2008] [Gerbaud and Arnaldi, 2009] est destinée
à la création d’environnements virtuels pour l’apprentissage de procédures industrielles, individuelles
tout d’abord, puis collaboratives dans la seconde version de l’architecture.
FIGURE 2.6 – L’environnement GVT [Gerbaud and Arnaldi, 2009]
La procédure revêt une importance centrale : les personnages virtuels, ainsi que le moteur de scé-
nario, possèdent un modèle de cette procédure, représenté en langage LORA (décrit dans la section
3.3). Les personnages virtuels choisissent leurs actions dans la procédure en fonction de son état d’avancement
— ils peuvent toutefois s’en écarter temporairement s’ils ont un profil de perturbateur.
Le moteur de scénario suit l’avancement de la procédure et contraint les possibilités d’interaction
de l’apprenant aux actions autorisées selon cette dernière. Un moteur pédagogique peut également
fournir une aide à l’apprenant en fonction de son niveau. Pour un novice, il s’agira de réaliser l’action
à sa place, tandis que pour un apprenant plus expérimenté il s’agira d’afficher des documents pédagogiques
et des rappels de la procédure.
46CHAPITRE 2. SCÉNARISATION 2.4. GRAPHES MULTILINÉAIRES
2.3.3 Bilan
Les environnements qui suivent un scénario linéaire prédéfini permettent d’opérer un contrôle
très poussé des situations rencontrées par l’utilisateur, ce qui est particulièrement pertinent lorsqu’il
s’agit de situations pédagogiques.
La spécification explicite de ces scénarios permet d’assurer leur cohérence, ouvrant ainsi la possibilité
de revenir avec l’apprenant sur le déroulement détaillé de la simulation après une session d’utilisation.
Cependant l’adaptabilité de ces systèmes est limitée, puisque chaque nouveau cas à traiter nécessite
la conception d’un nouveau scénario, et que ces scénarios peuvent nécessiter d’importants efforts de
conception, particulièrement lorsqu’il s’agit de former à des situations complexes et variées impliquant
de la coactivité.
De plus, ces approches limitent drastiquement la liberté d’action de l’utilisateur, l’empêchant d’expérimenter
avec la simulation et de pouvoir ainsi apprendre par essai-erreur.
2.4 Graphes multilinéaires
Pour assurer à la fois la liberté d’action de l’apprenant et la pertinence des scénarios déroulés,
il est possible de définir à l’avance l’ensemble des scénarios de manière explicite, sous forme de
graphes multilinéaires. Cette approche est similaire aux “livres dont vous êtes le héros”, où le lecteur
est confronté à un ensemble de choix possibles à la fin de chaque paragraphe, et où sa décision détermine
le prochain paragraphe qu’il doit lire. L’ensemble des combinaisons de paragraphes possibles
est déterminé par l’auteur, qui s’assure ainsi de leur qualité, cependant le lecteur a la sensation de
prendre part activement à la création de sa propre histoire. Nous présentons ici trois environnements
virtuels qui utilisent cette approche : PAPOUS [Silva et al., 2003], ICT Leaders [Gordon et al., 2004]
et Façade [Mateas, 2002]. L’architecture U-Director [Mott and Lester, 2006], basée sur des réseaux
bayésiens dynamiques, peut elle aussi être classée dans cette catégorie.
2.4.1 PAPOUS
Dans PAPOUS, un personnage virtuel raconte une histoire, qu’il fait évoluer en fonction de l’intérêt
perçu dans l’assistance [Silva et al., 2003]. A chaque étape, le directeur choisit l’étape suivante à
partir d’un arbre de “StoryBits” décrivant des morceaux de l’histoire et reprenant les fonctions narratives
de Vladimir Propp [Propp, 1928].
D’après les auteurs, la définition d’histoires non-linéaires dans l’interface de création de cet arbre est
une tâche ennuyeuse et difficile, car il est difficile pour un être humain de garder en mémoire une
idée claire de ce qui se passe dans chaque version possible de l’histoire. Ils suggèrent donc d’automatiser
cette tâche en générant dynamiquement le scénario.
2.4.2 ICT Leaders
Le projet ICT Leaders [Gordon et al., 2004] est un environnement virtuel pour la formation des
dirigeants dans le domaine militaire qui a été développé en partenariat avec l’industrie du cinéma.
L’environnement virtuel présente à l’utilisateur des séquences cinématiques scriptées exécutées dans
l’environnement virtuel, organisées dans un scénario à embranchements. A chaque séquence, l’apprenant
doit prendre une décision lors d’un dialogue réalisé en langage naturel. Chaque décision
binaire déclenche l’avancée dans la branche correspondante du scénario. Ce projet a été le fruit d’un
énorme travail de conception des scénarios.
472.4. GRAPHES MULTILINÉAIRES CHAPITRE 2. SCÉNARISATION
FIGURE 2.7 – Arbre de StoryBits [Silva et al., 2003]
FIGURE 2.8 – Capture d’écran de ICT Leaders [Gordon et al., 2004]
FIGURE 2.9 – Graphe de scénario de ICT Leaders [Iuppa et al., 2004]
Ainsi, parmi 63 situations d’apprentissages identifiées, les 35 plus importantes ont été sélectionnées
et arrangées dans un graphe (voir figure 2.9). Pour chacune de ces situations, une séquence d’introduction
et deux séquences correspondant aux résultats possibles ont été scriptées, définissant les
mouvements des personnages, les dialogues, les mouvements de caméra, etc. De plus, pour chaque
situation, la réponse du personnage virtuel pour chaque énoncé de l’apprenant reconnaissable par le
système a également été scriptée.
48CHAPITRE 2. SCÉNARISATION 2.4. GRAPHES MULTILINÉAIRES
2.4.3 Façade
Façade [Mateas, 2002] est un drame interactif permettant à l’utilisateur, via une interaction en langage
naturel, d’intervenir dans une histoire mettant en scène un couple de personnages. Ces derniers,
Trip et Grace, traversent une crise maritale, et le comportement de l’utilisateur déterminera la survie
de leur couple et de son amitié avec eux.
FIGURE 2.10 – Capture d’écran de Façade [Mateas, 2002]
Façade utilise un compromis entre une approche basée sur un graphe multilinéaire et une approche
de génération procédurale de contenu : les nœuds du graphe sont prédéfinis, mais les transitions
entre ces noeuds sont dynamiques. Ces noeuds sont associés à des préconditions et des postconditions
qui permettent de renconstruire le graphe des transitions possibles entre les événements.
Même sans définir explicitement le graphe, l’effort qui a été fourni pour concevoir l’histoire de Façade
est gigantesque, mobilisant deux programmeurs expérimentés sur une période de 5 ans pour définir
les 27 beats — les événements utilisés comme unité de narration dans Façade. La représentation de
ces beats est détaillée dans la section 3.1.3.
2.4.4 Bilan
Les systèmes de scénarisation basés sur la sélection dans un graphe multilinéaire permettent de
s’assurer de la cohérence des scénarios, et d’opérer un contrôle précis des événements, s’assurant de
leur pertinence par rapport aux actions de l’utilisateur.
Ces systèmes permettent également de laisser une certaine liberté d’action à l’utilisateur, de par la
création d’embranchements qui permettent de modifier le déroulement du scénario en fonction de
ses choix.
Les environnements virtuels conçus à partir de ces systèmes peuvent proposer une très grande variabilité
des scénarios. Façade est d’ailleurs reconnu comme le système le mieux finalisé et le plus riche
en termes d’expérience narrative.
Cependant cette variabilité et cette liberté d’action se font au prix d’un énorme effort de conception
des modèles. En effet, la nécessité de définir explicitement toutes les transitions entre événements,
ou dans une moindre mesure, les conditions de passage d’un état à un autre, limitent fortement la
maintenabilité et le passage à l’échelle.
492.5. SCÉNARIOS DYNAMIQUES CHAPITRE 2. SCÉNARISATION
2.5 Scénarios dynamiques
Pour alléger la charge de travail liée à la définition exhaustive de l’ensemble des chemins possibles,
de nombreux travaux adoptant une approche centrée sur le scénario s’orientent vers la génération
dynamique de ce dernier. Riedl et Young [Riedl and Young, 2006] proposent ainsi une méthode
pour générer automatiquement un graphe multilinéaire prenant en compte les actions de l’utilisateur
à partir d’un scénario linéaire. D’autres travaux se basent non pas sur un scénario prédéfini, mais sur
des objectifs scénaristiques de plus haut niveau, comme des critères narratifs ou des situations clés à
rencontrer. On trouve ici deux approches :
– la génération pas à pas, où le système de scénarisation considère à chaque étape, en réaction
à l’action de l’utilisateur, l’événement ou l’action des personnages virtuels qui maximiserait un
ensemble de critères scénaristiques, et l’exécute dans l’environnement virtuel. C’est le cas du
système IDTension [Szilas, 2003].
– la génération, généralement par de la planification automatique, d’un scénario entier répondant
à ces critères, qui est ensuite exécuté pas à pas et peut éventuellement être ajusté en fonction
des actions de l’utilisateur. Nous décrivons ici le système Mimesis [Riedl et al., 2003], mais
de nombreux autres systèmes utilisent cette approche. On peut notamment citer IDA [Magerko,
2005] et les travaux de Julie Porteous [Porteous et al., 2010] qui utilisent des points clés partiellement
ordonnés pour guider la génération du scénario.
2.5.1 IDTension
IDTension [Szilas, 2003] est un système de génération d’histoires interactif, basé sur la sélection
dynamique des actions des personnages virtuels de sorte à maximiser l’intérêt narratif du récit.
La sélection se fait en deux temps. Dans un premier temps le moteur de logique narrative (narrative
logic) calcule les actions possibles pour chaque personnage en fonction de ses croyances et des
différents états du monde. Puis, le moteur de séquençage narratif (narrative sequencer) classe ces actions
de la plus intéressante à la moins intéressante pour le récit, et exécute la meilleure action dans
l’environnement.
Ce classement se fait en fonction d’un ensemble de critères narratifs, parmi lesquels certains ont trait
aux personnages virtuels : la cohérence éthique (l’action est-elle cohérente avec les actions précé-
dentes du personnage et son système de valeurs), la cohérence motivationnelle (l’action est-elle cohérente
avec les buts du personnage) ou encore la caractérisation (l’action aide-t-elle l’utilisateur à
comprendre les propriétés du personnage). D’autres ont trait à l’action elle-même, comme sa pertinence
par rapport aux actions qui l’ont directement précédée. Une action peut donc être choisie pour
un personnage, même si elle ne faisait pas partie de ses priorités, dans le cas où elle est considérée
comme plus intéressante pour la progression du récit.
L’approche proposée par IDTension est intéressante car elle vise à la fois la crédibilité des personnages
virtuels (par l’utilisation d’un ensemble de critères liés à leur cohérence) et la qualité narrative
du récit. Cependant la sélection d’une action ne se fait qu’en considérant sa pertinence locale, sans
prendre en compte ses conséquences sur le récit à long terme. Il n’est donc pas possible de s’assurer
de l’occurrence d’un événement particulier dans le scénario.
2.5.2 Mimesis
Mimesis [Riedl et al., 2003] [Young et al., 2004] est une architecture pour la création de jeux vidéo
interactifs qui repose sur la génération de plans et le maintien de ces plans face aux interactions de
l’utilisateur. Mimesis est une architecture à deux niveaux, composée du Mimesis Controller, chargé
de générer, suivre et gérer l’exécution du scénario, et d’un moteur de jeu chargé de l’exécution basniveau
du scénario. Le Mimesis Controller est composé à son tour de deux modules : le Story World
Planner, chargé de générer le plan correspondant au scénario, et l’Execution Manager, chargé d’exé-
50CHAPITRE 2. SCÉNARISATION 2.5. SCÉNARIOS DYNAMIQUES
cuter ce plan. Le plan est généré à partir de requêtes précisant l’état courant du monde, un ensemble
de buts à atteindre (les conditions devant être vraies au moment où le plan se termine), et la
librairie d’actions disponibles pour construire le plan. Une fois ce plan généré il est transformé en
une représentation sous forme de graphe orienté acyclique, utilisée pour déclencher les actions correspondantes
dans le moteur de jeu (actions des agents et/ou objets comportementaux contrôlés par
le moteur de jeu). Pour les actions du joueur, un nœud fictif est créé, dont l’état d’exécution est mis à
jour lorsque l’utilisateur a atteint les conditions de succès de l’action en question.
FIGURE 2.11 – Un plan généré par le système Mimesis [Riedl et al., 2003]
Afin d’assurer la résilience du scénario face aux actions de l’utilisateur qui peuvent aller à son
encontre, Mimesis intègre un mécanisme intéressant de médiation narrative. A chaque fois que l’utilisateur
choisit d’effectuer une action, le moteur de jeu vérifie que les effets de l’action ne sont pas en
conflit avec les contraintes de causalité du scénario. Chaque action de l’utilisateur peut être considérée
par rapport au plan comme en étant :
1. constituante (constituent) : l’action correspond à une action comprise dans le plan et considérée
comme devant être exécutée par l’utilisateur ;
2. consistente (consistent) : l’action n’est pas constituante et aucun de ses effets n’interagit avec la
portion de plan restante ;
3. exceptionnelle (exceptional) : l’action n’est pas constituante et un ou plus de ses effets menacent
les conditions du monde requises pour les actions à venir.
Lorsqu’une telle exception est levée par le moteur de jeu, Mimesis possède deux moyens pour réaliser
une médiation :
1. intervention : substituer les effets de l’action en la remplaçant par une autre instance d’action,
appelée failure mode ; chaque action peut posséder plusieurs failure modes (par exemple, le
coup de feu tiré par l’utilisateur peut passer à côté de sa cible),
2. accomodation : ajuster la structure du plan, en replanifiant en prenant en compte l’action de
l’utilisateur.
Le Story World Planner de Mimesis utilise l’algorithme DPOCL (Decomposition and causality in partialorder
planning), un algorithme de planification hiérarchique permettant d’obtenir des plans partiellement
ordonnés.
Une limite rencontrée par la génération centralisée du scénario dans un contexte multi-agent est la
crédibilité du scénario au niveau des personnages individuels : il faut que chaque action apparaisse
cohérente avec les motivations du personnage qui l’effectue. Reprenons l’exemple utilisé pour Mimesis,
où l’on souhaite générer un scénario mettant en scène un voleur et un directeur de banque qui
512.6. PERSONNAGES PARTIELLEMENT AUTONOMES CHAPITRE 2. SCÉNARISATION
aboutisse à une situation où le voleur possède l’argent et le directeur de banque est mort. Le plan
suivant correspondrait à un tel scénario : le voleur se rend à la banque puis le directeur de banque
donne l’argent au voleur et se suicide. Un tel scénario ne serait cependant pas satisfaisant du point
de vue des intentions des personnages. Pour pallier ce problème, Riedl a donc par la suite développé
l’algorithme IPOCL (Intent-Driven Partial Order Causal Link) [Riedl, 2004], qui introduit des frames
of commitment liées à des ensembles d’actions. Ces frames correspondent aux buts que le personnage
doit adopter dans un intervalle donné pour que les actions qui s’y rapportent puissent figurer
dans le plan. Ces travaux ont récemment été transposés à des moteurs de planification classiques
par [Haslum, 2012].
La génération du plan dans Mimesis se fait en amont de son exécution dans l’environnement virtuel,
et ne permet donc pas de modifier dynamiquement la situation finale en fonction des actions de
l’utilisateur — le système ne fait que répondre à ces actions selon les stratégies de médiation narrative
pré-calculées au moment de la génération du plan. Une extension de ce système qui générerait
le plan dynamiquement permettrait d’offrir un contrôle plus poussé sur le déroulement des événements,
mais a été écartée pour des raisons de coût computationnel.
2.5.3 Bilan
La sélection dynamique des événements du scénario permet d’assurer à la fois la liberté d’action
de l’apprenant et l’adaptabilité du système. La cohérence des scénarios tient aux particularités de
chaque système : dans IDTension, elle est le fruit de la représentation des motivations des personnages
dans les règles de sélection des actions, et de la prise en compte de cette cohérence dans les
critères narratifs guidant le choix des actions. Cependant, si cette approche permet d’avoir un contrôle
dynamique sur le scénario, la portée de ce contrôle est limitée. Elle ne permet notamment pas
de s’assurer de l’occurrence de situations particulières, ce qui est limitant lorsqu’il s’agit de mener un
apprenant à des situations pédagogiques données.
La génération dynamique du scénario permet au contraire un contrôle plus poussé, puisque cette
approche considère le scénario dans sa globalité. Des mécanismes comme celui présent dans Mimesis
assurent une très grande résilience face aux actions de l’utilisateur. La cohérence du scénario,
notamment au niveau des motivations des personnages individuels, nécessite elle-aussi l’adjonction
de mécanismes particuliers.
La limite principale de cette approche se fait cependant ressentir lorsqu’il s’agit de passer de la génération
d’une histoire purement textuelle à son exécution dans un environnement virtuel. Le plan généré
ne contient en effet que les actions et événements signifiants par rapport à l’histoire, et ce qui ne pose
pas de problème dans une représentation textuelle où les ellipses sont fréquentes devient plus gênant
lorsqu’il s’agit d’un environnement où les personnages n’agissent qu’en fonction des ordres donnés
par le moteur de scénarisation : un personnage qui ne serait impliqué que dans certains passages du
scénario resterait alors immobile en attendant la prochaine instruction, faisant perdre toute crédibilité
à l’environnement virtuel.
2.6 Personnages partiellement autonomes
Afin de contourner la complexité liée à la définition exhaustive de l’ensemble des scénarios possibles
ou à la génération du comportement d’un ensemble de personnages individuels par un moteur
de scénarisation centralisé, certains systèmes centrés sur le scénario laissent une autonomie
partielle aux personnages virtuels. On peut ici distinguer les personnages virtuels autonomes — capables
de choisir leurs propres buts et les actions à réaliser pour les atteindre — des personnages
semi-autonomes — capables d’agir de manière autonome par moments, et d’exécuter des ordres à
d’autres moments [Riedl et al., 2008b].
52CHAPITRE 2. SCÉNARISATION 2.6. PERSONNAGES PARTIELLEMENT AUTONOMES
La distinction n’est cependant pas si triviale. Blumberg et Galyean [Blumberg and Galyean, 1997]
donnent deux dimensions permettant de caractériser le degré de contrôle que l’on peut avoir sur des
agents :
– le degré de contrôle, qui indique si un ordre a une valeur prescriptive (“il faut faire ceci”) ou
proscriptive (“il ne faut pas faire cela”), et l’importance qui lui est accordée,
– le niveau de contrôle, allant du plus direct au plus indirect.
Ils définissent ainsi quatre niveaux de contrôle :
– le niveau moteur, qui correspond aux actions unitaires (ex : “marche”) ;
– le niveau comportemental, où une certaine planification est requise du personnage (ex : “va
chercher un sandwich”) ;
– le niveau motivationnel, qui prédispose le personnage à certaines actions (ex : “tu as envie de
manger”) ;
– le niveau environnemental, qui induit une réponse potentielle du personnage via la manipulation
de son environnement (ex : “il y a un sandwich sur la table”).
Nous considèrerons donc qu’un personnage virtuel est semi-autonome à partir du moment où il est
possible d’opérer sur lui un contrôle moteur, comportemental ou motivationnel au cours de la simulation.
Nous commenterons ici deux systèmes faisant appel à des personnages autonomes — MRE [Hill
et al., 2001] et FearNot! [Aylett et al., 2006] — et deux systèmes faisant appel à des personnages semiautonomes
— ISAT [Magerko et al., 2005] et IN-TALE [Riedl et al., 2008b]. L’architecture de pilotage
proposée par [Delmas, 2009], bien que peu focalisée sur les personnages virtuels, pourrait également
être assimilée à un système utilisant des personnages semi-autonomes, puisqu’en l’absence d’instructions
chaque entité suit un comportement par défaut modélisé par un réseau de Petri.
2.6.1 MRE et FearNot!
Mission Rehearsal Exercise (MRE) [Hill et al., 2001] est un environnement virtuel pour la formation
de dirigeants militaires. MRE adopte une approche mixte entre un graphe multilinéaire et l’utilisation
de personnages autonomes. La simulation se base sur un StoryNet, qui contient un ensemble
de nœuds — correspondant à des passages de simulation où l’utilisateur peut interagir librement
avec des personnages autonomes — et des liens entre ces noeuds — qui sont des séquences d’événements
scriptés qui font passer d’un noeud à l’autre.
FIGURE 2.12 – Extrait du StoryNet de MRE [Hill et al., 2001]
Le système FearNot! [Aylett et al., 2006] utilise également des personnages autonomes, avec qui
l’utilisateur interagit lors de différents épisodes. Ces épisodes sont définis par le lieu où ils se déroulent,
532.6. PERSONNAGES PARTIELLEMENT AUTONOMES CHAPITRE 2. SCÉNARISATION
les personnages, et les buts adoptés par ces personnages. Ils sont sélectionnés dynamiquement par
un Story Facilitator, en fonction de préconditions sur des événements. La génération du scénario
global est ainsi similaire à celle que l’on peut trouver dans Façade.
Ces deux systèmes permettent à l’utilisateur d’interagir avec des personnages très complexes et dotés
d’émotions, basés sur des architectures cognitives — EMA pour MRE, et FAtiMA pour FearNot!. L’utilisation
de personnages autonomes lors de scènes atomiques permet une grande liberté d’action et
une grande variabilité au niveau local, cependant la création du scénario global se heurte aux mêmes
limites que les approches basées sur des graphes multilinéaires.
2.6.2 ISAT
L’architecture ISAT (Interactive Storytelling Architecture for Training) [Magerko et al., 2005] vise
à introduire de l’adaptabilité dans les environnements virtuels pour la formation. ISAT possède un
agent director, qui adapte l’environnement de manière dynamique pour répondre aux besoins de
l’apprenant. Cet agent suit un scénario défini comme une collection de scènes partiellement ordonnées,
possédant un certain nombre de paramètres sur lesquels l’agent director peut jouer pour construire
une situation mettant en jeu les compétences qu’il souhaite tester chez l’apprenant.
Pour manipuler l’environnement, l’agent director peut ordonner aux personnages virtuels l’exécution
de certaines actions, ou faire apparaître des personnages et des objets. Les actions ainsi déclenchées
ne se rapportant pas aux motivations des personnages semi-autonomes, elles peuvent apparaître,
aux yeux de l’utilisateur, comme incohérentes par rapport à leur comportement antérieur.
2.6.3 IN-TALE
IN-TALE (Interactive Narrative - Tacit Adaptive Leader Experience) [Riedl et al., 2008b] est un environnement
virtuel destiné à la formation des militaires à des compétences de prise de décision et
d’ouverture aux différences culturelles. IN-TALE est doté d’un experience manager, l’Automated Story
Director, qui vise à réaliser dans l’environnement un scénario prédéterminé. Ce système reprend la
suite des travaux réalisés sur Mimesis et Fabulist.
L’environnement est peuplé de personnages semi-autonomes, qui peuvent exécuter deux types de
comportements :
– des comportements locaux autonomes (LAB, pour Local Autonomous Behaviors), qu’ils dé-
clenchent par eux-mêmes et qui n’ont pas nécessairement d’effet sur le scénario (ex : faire des
courses),
– des comportements spécifiques à l’histoire (NDB, pour Narrative Directive Behaviors), qui sont
partie intégrante du scénario (ex : poser une bombe).
FIGURE 2.13 – Capture d’écran de IN-TALE [Riedl et al., 2008b]
54CHAPITRE 2. SCÉNARISATION 2.7. CONTRÔLE DE PERSONNAGES AUTONOMES
Les NDB sont utilisés lorsqu’un personnage reçoit un ordre du director lui indiquant d’adopter
un but particulier. Le director peut en effet donner deux types d’ordres aux personnages :
– des ordres prescriptifs, qui leur indiquent un but à adopter,
– des ordres proscriptifs, qui leur indiquent des actions interdites.
Contrairement à ISAT, le contrôle des personnages semi-autonomes ne se fait donc pas au niveau
comportemental, mais au niveau motivationnel. Les LAB sont utilisés pour “meubler” la simulation,
permettant de rendre les personnages plus crédibles en leur assignant un comportement, sans toutefois
avoir à définir celui-ci au niveau du scénario. Cela ne permet pas toutefois d’éviter les incohérences,
car rien ne permet d’assurer que les actions précédemment réalisées par le personnage
ne soient pas en contradiction avec le nouveau but qui leur est assigné, et ces changements de motivations
ne peuvent être expliqués par aucun événement apparent.
La même approche pour le contrôle de personnages semi-autonomes est adoptée dans les travaux
ultérieurs de l’équipe, avec l’ajout d’un Scenario Adaptor [Niehaus and Riedl, 2009] qui permet de
modifier dynamiquement le scénario de référence pour l’adapter à l’activité de l’apprenant.
2.6.4 Bilan
L’utilisation de personnages autonomes lors de scènes prédéterminées permet d’avoir à la fois
de la cohérence, de la variabilité et de la liberté d’action pour l’utilisateur au niveau local. Cependant,
le scénario global de la simulation étant déterminé de la même manière que pour les approches
basées sur des graphes multilinéaires, leur utilisation ne fournit pas de solution satisfaisante au compromis
entre la variabilité des scénarios au niveau global d’un côté, et la maintenabilité et le passage
à l’échelle de l’autre.
Certains travaux se tournent alors vers l’utilisation de personnages semi-autonomes, dont les possibilités
de contrôle permettent d’influencer dynamiquement le déroulement du scénario au niveau
global. L’utilisation de personnages semi-autonomes permet alors une grande variabilité, tout en
limitant l’effort à fournir pour la maintenabilité et le passage à l’échelle. Ces personnages pouvant
être influencés de manière dynamique à différents niveaux, le système permet d’opérer un contrôle
important sur le déroulement du scénario.
Cependant, les manipulations du système de scénarisation sur la simulation (apparition d’objets,
changements dans les motivations des personnages...) mettent en péril sa cohérence, à la fois au
niveau de l’explicabilité et de la validité écologique des scénarios. Que les personnages reçoivent
des ordres au niveau de leurs actions ou bien de leurs motivations, rien ne garantit que les actions
qui en résulteront seront perçues comme cohérentes avec leur comportement précédent. Or il a été
montré dans [Si et al., 2010] que la cohérence percue au niveau des motivations des personnages
virtuels est essentielle pour la compréhension du scénario.
2.7 Contrôle de personnages autonomes
Le contrôle de personnages semi-autonomes par le biais d’ordres au niveau comportemental ou
motivationnel met ainsi en péril la cohérence de leurs comportements. Comment est-il alors possible
pour un moteur de scénarisation centralisé d’influencer le comportement de personnages autonomes
ou semi-autonomes ?
Il existe dans la littérature de nombreuses façons d’influencer le comportement de personnages autonomes,
en jouant sur des facteurs tels que leurs buts, leur personnalité, leurs émotions ou encore
leurs relations sociales [Rizzo et al., 1999], [Damiano and Pizzo, 2008], [Porteous et al., 2013]. Cependant,
la nécessité de conserver l’explicabilité des comportements limite ces manipulations à la défi-
nition des conditions initiales de la simulation ; elles ne peuvent être utilisées de manière dynamique
durant son déroulement.
552.7. CONTRÔLE DE PERSONNAGES AUTONOMES CHAPITRE 2. SCÉNARISATION
Nous présentons ici un certain nombre de travaux visant à dépasser ces limites : l’Initial State Revision
proposée par [Riedl, 2004], le late commitment de [Swartjes, 2010], l’architecture Thespian [Si,
2010] et la planification sociale de [Chang and Soo, 2008].
2.7.1 Initial State Revision
L’Initial State Revision (ISR) a été introduite par [Riedl, 2004] comme un moyen de réduire à la
fois l’effort nécessaire à la création de contenu scénaristique et les limitations de l’utilisation de la
planification pour la génération de scénarios, limitations qui résultent de l’hypothèse du monde clos.
Son principe consiste à laisser un ensemble de faits indéfinis dans la description de l’état initial du
monde, et à donner au moteur de planification la possibilité de valider ou de réfuter ces faits. Le
moteur peut ainsi déterminer l’existence d’un objet, les attributs d’un objet existant, ou les relations
entre plusieurs objets, de sorte à construire les conditions initiales permettant d’obtenir le meilleur
scénario possible. Pour éviter les incohérences dans la base de faits, les faits indéfinis sont organisés
dans des ensembles appelés mutex sets. Un mutex set est un ensemble de faits dont la valeur de vérité
est indéterminée et dont un seul peut devenir vrai. Dès que l’un de ces faits devient vrai, les autres
faits de l’ensemble sont considérés comme faux. Par exemple, ✭❛t ❣✉♥ ❧♦❜❜②✮ et ✭❛t ❣✉♥ ♦❢❢✐❝❡✮
font partie du même ensemble, car un objet ne peut avoir qu’une position à la fois. Ce principe a par
la suite été généralisé par [Ware and Young, 2010].
FIGURE 2.14 – Espace de recherche de plans résultant de l’ISR [Riedl, 2004]
L’ISR permet de manipuler l’état initial du monde pendant la génération du plan, et donc d’influencer
le comportement des personnages virtuels de manière explicable, notamment lorsqu’il s’agit
de valider ou réfuter des éléments de leur personnalité ou de leurs motivations. Cependant, cette
manipulation a lieu lors de la génération du plan hors-ligne, et ne permet donc pas une influence
dynamique sur les personnages durant la simulation.
56CHAPITRE 2. SCÉNARISATION 2.7. CONTRÔLE DE PERSONNAGES AUTONOMES
2.7.2 Virtual Storyteller
[Swartjes, 2010] transpose cette idée à une approche centrée sur les personnages au sein du système
Virtual Storyteller, avec le concept de late commitment.
Le Virtual Storyteller est créé autour du principe du double appraisal, c’est à dire que les personnages
sont capables de raisonner à la fois in-character — “quelles sont les meilleures actions pour atteindre
mes buts ?” — et out-of-character — “quelles sont les meilleures actions pour le développement de
l’histoire ?”.
Le late commitment — à ne pas confondre avec le least commitment planning — s’inspire du théâtre
d’improvisation, où les acteurs décident des différents éléments qui caractérisent leur personnage
(personnalité, histoire, relations avec les autres personnages...) au fil de leurs dialogues et de leurs
actions, de sorte à justifier ces derniers.
Les personnages du Virtual Storyteller sont donc capables d’utiliser des framing operators, leur permettant,
à la manière de l’ISR, d’ajouter des faits à l’état du monde. A l’instar des opérateurs utilisés pour
représenter les actions, les framing operators ont des préconditions et des effets. Les effets correspondent
non pas à un changement de l’état du monde, comme c’est le cas pour les actions, mais à
un engagement (commitment). Ils sont exécutés out-of-character, comme si l’acteur disait aux autres
acteurs “Disons que mon personnage est le père de ton personnage”. Les préconditions sont utilisées
pour éviter les incohérences, à la manière des mutex sets, ou pour définir un contexte à l’utilisateur
de l’opérateur. Un exemple est présenté dans la figure 2.15.
FIGURE 2.15 – Un framing operator illustrant le principe de late commitment [Swartjes, 2010]
Les framing operators peuvent être utilisés par les personnages soit pour justifier la sélection
d’une action, soit pour justifier l’adoption d’un but qui aurait été prédéfini par l’auteur : par exemple,
si l’auteur stipule que le scénario doit contenir un personnage de pirate qui a pour but d’aborder un
navire, alors un des personnages pourra utiliser un framing operator pour faire apparaître un navire
en vue. Un framing operator peut également servir à justifier un autre framing operator : par exemple,
un operateur ❆ ❛ ✐♥s✉❧té ❇ pourra rendre vraies les préconditions d’un opérateur ❇ ❞ét❡st❡ ❆.
Alors que l’ISR était utilisé pour la génération de plans hors-ligne, les manipulations du scénario permises
par le late commitment sont ici dynamiques, puisque les personnages virtuels planifient leurs
actions et utilisent les framing operators pendant qu’ils interagissent entre eux et avec l’utilisateur.
Le fait que ces décisions soient prises par les personnages individuels est cependant problématique,
puisqu’un opérateur qui bénéficierait à un personnage donné pourrait mettre en péril les plans d’un
autre. Il est alors nécessaire de mettre en place un mécanisme de négociation entre les personnages.
2.7.3 Thespian
Thespian [Si, 2010] est une architecture pour la création et la simulation d’histoires interactives
qui utilise une approche hybride entre les approches centrées sur le scénario et celles centrées sur les
personnages. Thespian est construit autour de PsychSim [Pynadath and Marsella, 2004], un système
multi-agent basé sur des Processus de décision markoviens partiellement observables (POMDP).
Le contrôle du scénario prend place en deux temps. Dans un premier temps, le moteur se base sur un
ensemble de scénarios linéaires prédéfinis par un auteur pour calculer les pondérations des motiva-
572.7. CONTRÔLE DE PERSONNAGES AUTONOMES CHAPITRE 2. SCÉNARISATION
tions des personnages virtuels qui permettraient de reproduire ces scénarios le mieux possible. Pour
cela, il utilise une procédure d’ajustement (fitting procedure) qui reproduit les itérations réalisées par
les auteurs humains lors de la création d’un système centré sur les personnages. Ce processus a lieu
hors-ligne, en amont de la simulation, à la manière de l’ISR.
Puis dans un deuxième temps, il se base sur un ensemble de contraintes scénaristiques associées à
ces scénarios pour corriger le déroulement des événements de manière dynamique. Pour cela, le moteur
simule les actions des personnages jusqu’à un horizon donné, afin de détecter les éventuelles
violations de ces contraintes (par exemple, si un événement A doit arriver avant l’événement B et
que le moteur prédit que l’événement B va être réalisé alors que l’événement A ne l’est pas encore,
il lèvera une exception). Dans ce cas, le système utilise un mécanisme proche du late commitment
pour corriger le comportement du personnage fautif : Mei Si parle de “least commitment approach”,
c’est à dire que le système maintient un espace de configurations possibles pour les personnages, qui
permettent de justifier le comportement ayant été exprimé jusqu’ici, et restreint peu à peu cet espace.
L’approche utilisée par Thespian est très puissante, en cela qu’elle permet de contrôler le scénario de
manière dynamique, tout en respectant la cohérence des comportements des personnages virtuels.
En particulier, l’utilisation de PsychSim pour simuler les agents permet des comportements très complexes,
puisque les agents peuvent posséder des modèles récursifs des autres agents et de leurs croyances,
et prendre en considération dans leur décision les actions qu’ils anticipent de la part des autres
agents.
Cependant, cette richesse de comportement a un coût, et il n’est possible de réaliser cette prédiction
qu’à un faible horizon, c’est à dire que sur quelques pas de simulation. Cela est particulièrement
gênant lorsqu’il s’agit de s’assurer de l’occurrence d’une situation donnée, d’autant plus si cette situation
est déterminée de manière dynamique lors de la simulation et non prédéfinie en amont comme
c’est le cas ici.
2.7.4 Planification sociale
[Chang and Soo, 2008] proposent un système utilisant de la planification sociale pour permettre
à un des personnages virtuels de manipuler les autres personnages pour leur faire réaliser les actions
qu’il souhaite.
Leur exemple est basé sur une version simplifiée d’Othello de Shakespeare : Iago souhaite faire souffrir
Othello en l’amenant à tuer sa propre femme, Desdémone. Pour cela, il manipule différents personnages
afin que, suite à un quiproquo, Othello croie que sa femme le trompe avec un de ses lieutenants
et les tue tous les deux. Le plan de Iago est présenté en figure 2.16.
Le plan du personnage qui réalise la planification sociale, en l’occurrence Iago, comprend donc des
actions qui ne sont pas réalisées par lui mais par d’autres personnages. Pour certaines de ces actions,
il a la possibilité de donner un ordre direct au personnage qui doit la réaliser (par exemple, Iago demande
à sa femme Emilia de lui apporter le mouchoir de Desdémone). Il opère alors un contrôle
motivationnel sur l’autre personnage. Pour d’autres, il doit amener indirectement l’autre personnage
à leur réalisation, en agissant sur l’état du monde (par exemple, Iago dépose le mouchoir dans la résidence
de Cassio afin que celui ci le ramasse). Il opère alors un contrôle environnemental.
Pour pouvoir générer de tels plans, le moteur de planification doit être capable de considérer à la
fois les actions du personnage à l’origine du plan, qui pourront être exécutées, mais également les
réactions des autres personnages à ces actions en termes de croyances, et les plans générés par ces
personnages eux-mêmes. Pour cela, il intègre deux éléments : une description des mécanismes mentaux
des personnages, et un ensemble de préconditions intentionnelles. La description des mécanismes
mentaux utilise des “prédicats dérivés” pour représenter les mécanismes de révision des croyances
et des buts des agents. Les prédicats dérivés permettent d’exprimer des faits qui peuvent être
dérivés d’autres faits, mais ne peuvent pas être considérés comme les effets directs d’une action.
Les préconditions intentionnelles sont ajoutées aux actions pour préciser qu’un opérateur ✭❛❣❡♥t✱
❛❝t✐♦♥✮ ne peut être appliqué que si l’agent est le personnage à l’origine du plan, ou si l’agent a
58CHAPITRE 2. SCÉNARISATION 2.7. CONTRÔLE DE PERSONNAGES AUTONOMES
comme but les effets de l’action.
FIGURE 2.16 – Un plan généré par le moteur de planification sociale de [Chang and Soo, 2008]
Il serait possible de transposer ce système de planification sociale en considérant que l’agent qui
génère le plan n’est plus un personnage virtuel cherchant à manipuler les autres, mais un système de
scénarisation centralisé cherchant à manipuler les personnages virtuels d’un environnement pour
réaliser un scénario. Les actions exécutables par ce système seraient cependant à reconsidérer, celuici
ne pouvant agir directement sur le monde sans perturber la cohérence du scénario.
L’algorithme proposé possède de plus certaines limites. La définition des préconditions intentionnelles
borne notamment les actions pouvant être considérées de la part des autres personnages à
celles ayant directement pour effet le but du personnage, et ne permet donc pas de considérer des
plans à l’intérieur du plan. Pour cela, les auteurs définissent des macro-actions, qui sont des suites
d’actions permettant de réaliser un but donné, mais la nécessité de définir ces macro-actions explicitement
est très contraignante.
2.7.5 Bilan
Ces travaux proposent un ensemble de solutions intéressantes pour faire face à notre problé-
matique, qui est de concilier contrôle, liberté d’action, cohérence et adaptabilité, mais aucune de
ces solutions n’est entièrement satisfaisante. L’approche centrée sur les personnages utilisée par le
Virtual Storyteller, tout comme la simulation à un horizon limité effectuée par Thespian, ne permettent
pas de s’assurer de l’occurrence d’une situation donnée comme c’est le cas avec les approches
qui utilisent de la planification au niveau du scénario global. Ceci est particulièrement contraignant
lorsqu’il s’agit de confronter un apprenant à des situations pédagogiques données. L’ISR ne permet
pas de contrôler la simulation de manière dynamique, quant à la planification sociale, elle est adaptée
au niveau d’un personnage donné mais peu au niveau d’un moteur de scénarisation centralisé.
Deux éléments sont toutefois à retenir :
592.8. BILAN GLOBAL ET POSITIONNEMENT CHAPITRE 2. SCÉNARISATION
– le late commitment réalisé sur les états et motivations des personnages virtuels avec l’ISR tout
d’abord, puis dans le Virtual Storyteller et dans Thespian, qui permettent de conserver la cohérence
des comportements de personnages autonomes, tout en exerçant dessus un certain
contrôle ;
– la prédiction dynamique des actions des personnages virtuels réalisée dans Thespian et dans
le moteur de planification sociale, qui permet de concilier les approches centrées sur le scé-
nario et celles centrées sur les personnages, en permettant là encore un contrôle centralisé et
dynamique sur des personnages au comportement complexe.
2.8 Bilan global et positionnement
La littérature sur les systèmes de scénarisation, en particulier dans le domaine de la narration
interactive, oppose classiquement les approches centrées sur le scénario d’un côté et les approches
centrées sur les personnages de l’autre, mais la distinction entre ces deux approches n’est en réalité
pas si nette, notamment car de plus en plus de systèmes optent pour une approche mixte en incluant
des personnages autonomes ou semi-autonomes dans des systèmes centrés sur le scénario.
Nous avons ainsi détaillé et proposé une critique d’un ensemble d’approches :
– Les systèmes basés sur des simulations pures laissent une grande liberté d’action à l’utilisateur
tout en assurant la cohérence des comportements des systèmes techniques et des personnages
virtuels. Ces systèmes permettent une représentation distribuée des règles d’évolution de la
simulation, ce qui assure son adaptabilité. Cependant, la simulation fonctionnant en complète
autonomie, les possibilités de contrôle durant son déroulement sont très limitées.
– Les systèmes qui suivent un scénario linéaire prédéfini offrent un contrôle très fort sur les
situations rencontrées par l’utilisateur, et permettent à la personne en charge de leur définition
de s’assurer de leur cohérence. La liberté d’action est cependant quasiment absente, ce qui
empêche l’apprentissage par essai-erreur, et l’adaptabilité est elle aussi très limitée.
– Les systèmes basés sur des graphes multilinéaires visent à concilier liberté d’action, contrôle
et cohérence, à la manière des “livres dont vous êtes le héros”. Ils pêchent cependant au niveau
de l’adaptabilité, la création et modification de ces graphes étant très coûteuse, même lorsque
ces graphes ne sont que partiellement définis comme c’est le cas dans Façade [Mateas, 2002].
– La génération de scénarios dynamiques apporte une solution quant à l’adaptabilité, mais les
systèmes basés sur la sélection dynamique des événements ne permettent pas un contrôle à
long terme des événements, tandis qu’il est difficile d’assurer la cohérence des comportements
des personnages inviduels dans les systèmes basés sur la planification du scénario.
– L’utilisation de personnages semi-autonomes offre également davantage d’adaptabilité, mais
les conflits entre les motivations propres des personnages et les ordres qu’il reçoivent du système
de scénarisation posent là encore un problème au niveau de la cohérence. Quant à l’utilisation
de personnages autonomes lors de scènes au sein de scénarios multilinéaires, si elle
permet adaptabilité et liberté d’action au niveau des scènes, elle ne résoud pas le problème
posé par la définition exhaustive du scénario au niveau global.
– Enfin, certains travaux récents se sont intéressés à la problématique du contrôle de personnages
autonomes. Si aucun ne permet de répondre directement à notre problématique, en
conciliant liberté d’action de l’utilisateur, contrôle dynamique du scénario, cohérence des comportements
individuels et adaptabilité du système, nous retenons toutefois deux éléments intéressants
: le late commitment qui permet de raffiner progressivement l’état initial du monde,
et la prédiction des actions des personnages virtuels lors de la génération ou du suivi du scé-
nario global.
Le tableau 2.1 reprend les points principaux de ces différentes approches.
Nous proposons un modèle pour la scénarisation des environnements virtuels, nommé SELDON, qui
repose sur la génération dynamique et le contrôle indirect du scénario dans un environnement virtuel
peuplé de personnages autonomes. Cette proposition intègre un ensemble d’éléments permettant de
60CHAPITRE 2. SCÉNARISATION 2.8. BILAN GLOBAL ET POSITIONNEMENT
pallier les différentes lacunes de la littérature :
– la scénarisation extrinsèque de l’environnement virtuel, qui augmente la réutilisabilité du
système en permettant son utilisation avec différentes simulations ;
– la possibilité pour l’apprenant de choisir ses actions à partir de l’ensemble des actions possibles,
plutôt qu’à partir d’une présélection dépendante d’un scénario prédéfini, pour assurer sa
liberté d’action;
– la génération dynamique du scénario à partir de contenu scénaristique, qui permet de laisser à
l’utilisateur cette liberté d’action et d’alléger la charge de travail liée à la création des scénarios,
augmentant ainsi l’adaptabilité du système ;
– la planification du scénario global, plutôt que la sélection d’événements au niveau local, qui
permet d’assurer un contrôle sur le long terme du scénario, et notamment de l’orienter vers
des situations précises ;
– l’intégration de personnages virtuels autonomes, qui augmente elle aussi l’adaptabilité du
système en permettant l’émergence de situations non définies au préalable ;
– le contrôle indirect de ces personnages, que ce soit par un contrôle environnemental ou par
le raffinement progressif de leurs états internes (late commitment), qui permet de conserver la
cohérence de leurs comportements ;
– la prédiction de ces comportements et leur suivi en temps-réel qui permet de les prendre en
compte au niveau de la génération du scénario et de son exécution.
Le modèle SELDON est présenté dans le chapitre 4. Cette scénarisation est réalisée par le biais d’un
moteur de planification et de réalisation de scénarios prédictifs, nommé DIRECTOR. DIRECTOR est
présenté dans le chapitre 6.
612.8. BILAN GLOBAL ET POSITIONNEMENT CHAPITRE 2. SCÉNARISATION Approches Objectifs centrée sur... intri-/extrinsèque scénario prédéfini/généré contrôle liberté d’action cohérence adaptabilité Simulations pures CS-WAVE, VTT, VRaptor, personnages intrinsèque généré
− ++ ++ ++ I-Storytelling, EmoEmma
Scénarios prédéfinis
EMSAVE scénario intrinsèque prédéfini ++
− ++
− GVT extrinsèque
Graphes multilinéaires
PAPOUS, ICT Leaders scénario intrinsèque prédéfini ++
+ ++
− Façade, U-Director en partie prédéfini
Scénarios dynamiques
IDTension scénario intrinsèque généré ++ (local) /
− ++
+ ++
Mimesis ++ ++
− ++
Personnages partiellement autonomes
MRE, FearNot! personnages intrinsèque généré (local) / prédéfini
+
+ ++ ++ (local) /
− ISAT, IN-TALE scénario en partie prédéfini ++ ++
− ++
Contrôle de personnages autonomes
ISR scénario
intrinsèque
généré
−
− ++ ++ Virtual Storyteller personnages généré ++ (local) /
− ++ ++
Thespian mixte en partie prédéfini ++ (local) /
− ++
+
Planification sociale personnages généré
+ pas d’utilisateur
−
TABLE 2.1 – Tableau récapitulatif des différentes approches présentées pour la scénarisation en environnement virtuel
62Chapitre 3
Représentation des connaissances pour la
scénarisation
Sommaire
3.1 Représentation de contenu scénaristique . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.1.1 Représentation du domaine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Smart Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
STARFISH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
STORM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
VEHA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
COLOMBO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Cause-and-Effect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
3.1.2 Représentation de l’activité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Opérateurs de planification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Règles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Réseaux de tâches hiérachiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Automates finis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Diagrammes d’activité UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Langages ergonomiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.1.3 Représentation des événements . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
ABL — Façade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.1.4 Bilan et positionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
3.2 Représentation d’objectifs scénaristiques . . . . . . . . . . . . . . . . . . . . . . . . . 81
3.2.1 Objectifs scénaristiques de bas niveau . . . . . . . . . . . . . . . . . . . . . . . . 81
Contraintes locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Contraintes globales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
3.2.2 Objectifs scénaristiques de haut niveau . . . . . . . . . . . . . . . . . . . . . . . . 83
Fonctions d’évaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Trajectoires et structures de récit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
3.2.3 Bilan et positionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
3.3 Représentation des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
3.3.1 Modèles de compréhension d’histoires . . . . . . . . . . . . . . . . . . . . . . . . 86
QUEST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
GTN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Fabula . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
3.3.2 Modèles de scénarios pédagogiques . . . . . . . . . . . . . . . . . . . . . . . . . . 88
IMS-LD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
63CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES
FORMID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
POSEIDON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
3.3.3 Modèles d’analyses de risques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Arbres de défaillances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Arbres d’événements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Nœuds papillons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Réseaux bayésiens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
3.3.4 Automates finis et graphes orientés acycliques . . . . . . . . . . . . . . . . . . . 95
Slurgh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
LORA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
YALTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
3.3.5 Plans et points clés partiellement ordonnés . . . . . . . . . . . . . . . . . . . . . 97
Plans partiellement ordonnés — Mimesis . . . . . . . . . . . . . . . . . . . . . . 98
Points clés partiellement ordonnés — IDA . . . . . . . . . . . . . . . . . . . . . . 99
Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
3.3.6 Bilan et positionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
La seconde composante de ces systèmes est l’ensemble des langages et formalismes 1 permettant
de représenter les connaissances qui sous-tendent l’environnement virtuel, et qui vont être utilisées
par le moteur de scénarisation. Ces langages sont utilisés par les auteurs, formateurs et concepteurs
de l’environnement virtuel pour décrire l’ensemble des scénarios possibles et souhaitables dans la
simulation — soit directement, soit en faisant appel à un informaticien chargé de l’écriture des modèles.
Ces deux aspects — moteurs et langages — ne sont cependant pas indépendants : la représentation
des connaissances utilisée va déterminer les processus qui vont affecter ces connaissances, et vice et
versa [Magerko, 2007].
La nature des connaissances représentées dépend de l’approche choisie pour le système de scénarisation.
Ainsi, un système adoptant une scénarisation intrinsèque, en intégrant directement la scé-
narisation au sein du processus de l’environnement virtuel pourra par exemple se baser sur une
représentation explicite d’un ensemble de scénarios. Au contraire, un système optant pour une scé-
narisation extrinsèque, en apposant à un environnement virtuel existant une surcouche de scénarisation,
nécessitera d’une part une représentation du contenu scénaristique présent dans la simulation,
et d’autre part des connaissances lui permettant de déterminer le sous-espace de scénarios
d’intérêt — des objectifs scénaristiques.
De même, la représentation utilisée est intrinsèquement liée aux techniques d’intelligence artificielle
choisies pour le moteur. Par exemple, si le moteur de scénarisation repose sur des algorithmes de planification,
alors le contenu scénaristique sera représenté sous la forme d’un ensemble d’opérateurs
de planification, et le scénario généré sera représenté par un plan.
On distinguera ainsi trois types de langages :
– les langages de représentation de contenu scénaristique, qui représentent un espace de scénarios
de manière implicite et distribuée,
1. Un formalisme est une symbolisation matérielle (textuelle, graphique, etc.) arbitraire permettant de rendre manipulables
des concepts. Un langage est un système de signes doté d’une sémantique et d’une syntaxe. Un langage formel
est un langage défini de sorte qu’il soit dénué d’ambiguïté, par opposition aux langages naturels. Un langage formel peut
être spécifié par une grammaire formelle, une expression régulière, un automate, etc. Un langage formel repose sur un
ou plusieurs formalismes. Ces deux notions sont souvent utilisées de manière interchangeable dans la littérature sur la
représentation de connaissances pour les environnements virtuels. En règle générale, parler de formalisme renvoie à la
notion de manipulation, tandis que parler de langage renvoie davantage à l’expressivité.
64CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES 3.1. CONTENU
– les langages de représentation d’objectifs scénaristiques, qui représentent des connaissances
permettant de déterminer un sous-espace de scénarios d’intérêt,
– les langages de représentation de scénarios ou d’ensembles de scénarios, qui représentent un
espace de scénarios de manière explicite et centralisée.
3.1 Représentation de contenu scénaristique
La définition de l’ensemble des scénarios possibles nécessite tout d’abord de définir l’ensemble
des éléments unitaires pouvant intervenir dans ces scénarios. Pour cela, il convient d’opter pour un
formalisme de représentation du contenu scénaristique.
Selon les cas, la représentation de ce contenu pourra soit être divisée en représentation du domaine
— objets, actions possibles sur ces objets, règles de fonctionnement des systèmes techniques, etc.
— d’un côté et représentation de l’activité — comportement des personnages virtuels, procédures à
suivre pour l’utilisateur, etc. — de l’autre, soit réunir ces deux aspects dans une représentation des
événements possibles du scénario. Nous adoptons ici la définition suivante d’un événement :
Evénement
Un événement est un fait marquant, qui survient à un moment donné. Un événement peut
correspondre à une agrégation de changements d’états liés de manière causale ou au maintien
des valeurs d’un ensemble d’états sur une certaine durée, dès lors qu’ils sont signifiants du
point de vue de l’observateur.
Ces événements peuvent ainsi regrouper des actions réalisées par plusieurs personnages ou groupes
de personnages, et les réactions associées des systèmes techniques.
Selon l’approche adoptée par le moteur de scénarisation, ce contenu scénaristique jouera un rôle
différent dans le processus de génération du scénario. Pour les systèmes faisant appel à une scénarisation
extrinsèque, ce contenu sera intégré à l’environnement virtuel de départ, qui devra ensuite
être cadré par le système de scénarisation (ex : [Gerbaud and Arnaldi, 2009]). Au contraire, pour les
systèmes adoptant une approche émergente, ce contenu scénaristique constituera l’intégralité des
connaissances utilisées par le système et les scénarios émergeront des différentes combinaisons possibles
des éléments de ce contenu, en fonction des interactions entre personnages virtuels et utilisateurs
(ex : [Charles et al., 2002]). Enfin, certains systèmes utiliseront ces éléments comme les briques
de base des scénarios, qui seront générés en sélectionnant et ré-ordonnant dynamiquement les différents
événements possibles, puis exécutés dans l’environnement virtuel (ex : [Mateas, 2002]).
3.1.1 Représentation du domaine
La représentation du domaine contient la définition des objets du domaine, des actions qui peuvent
avoir lieu sur ces objets, et leurs effets sur le monde, qu’il s’agisse des actions effectuées par les
personnages virtuels ou de celles proposées à l’utilisateur. Si les premiers environnements virtuels intégraient
directement ces informations dans le code de la simulation, au même titre que les graphismes,
de nombreux systèmes utilisent à présent des représentations formelles des systèmes techniques
et de leurs règles de fonctionnement. On parle alors d’environnements virtuels informés (EVI).
D’après [Donikian, 2004] :
653.1. CONTENU CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES
“
Un EVI est un environnement virtuel dont les modèles 3D contiennent non seulement
la géométrie de la scène mais aussi toutes les informations pertinentes pour les entités comportementales
à simuler, comme les éléments symboliques ou sémantiques qui peuvent
permettre a ces entités de percevoir, décider et agir.
[Thouvenin, 2009] élargit cette définition afin de considérer les environnements virtuels dans
”
lesquels sont intégrés des modèles de représentation de connaissances :
“
Un EVI est un environnement virtuel doté de modèles à base de connaissance dans
lequel il est possible à la fois d’interagir et de permettre des comportements par interprétation
de représentations dynamiques ou statiques.
Les modèles associés aux environnements virtuels peuvent ainsi décrire les objets présents dans
”
l’environnement, les actions possibles sur ces objets, les conditions nécessaires à la réalisation de ces
actions, les effets de ces actions sur le monde, etc. Nous présentons ici les modèles et formalismes
suivants : Smart Objects [Kallmann and Thalmann, 1999a], STARFISH [Badawi and Donikian, 2004],
STORM [Mollet, 2005], VEHA [Chevaillier et al., 2009], COLOMBO [Edward et al., 2010], et la représentation
Cause-and-Effect proposée par [Lugrin and Cavazza, 2006].
Smart Objects
Les Smart Objects [Kallmann and Thalmann, 1999a] [Kallmann and Thalmann, 1999b] visent à
intégrer dans l’environnement les connaissances nécessaires à l’interaction avec ce dernier.
Les Smart Objects peuvent contenir quatre types d’information :
– les propriétés intrinsèques de l’objet, physiques ou sémantiques,
– les informations liées à l’interaction, généralement les positions où l’interaction est possible,
– les comportements de l’objet, exprimant les changements d’états des objets provoqués par les
différentes actions,
– les comportements attendus de l’utilisateur, qui indiquent où et quand l’utilisateur peut manipuler
l’objet.
La représentation des connaissances sur le domaine sous forme de Smart Objects est une représentation
plutôt bas niveau, centrée autour de l’interaction 3D. Cette représentation ne permet pas d’exprimer
des comportements complexes, et l’édition de comportements est difficile à maîtriser pour
des non-informaticiens. Il s’agit cependant du modèle le plus utilisé, la plupart des environnements
virtuels n’ayant pas besoin d’une telle complexité au niveau des comportements simulés.
STARFISH
Dans la lignée des Smart Objects, le modèle STARFISH (Synoptic Objects for Tracking Actions Received
From Interactive Surfaces and Humanoids) [Badawi and Donikian, 2004] permet de décrire
finement les surfaces d’interaction des objets géométriques, et d’associer à chaque sous-partie active
d’un objet un automate comportemental décrivant l’interaction par le biais d’un ensemble d’actions
élémentaires.
La description sous forme d’automates est plus intuitive que celle proposé par le modèle des Smart
Objects. Comme pour les Smart Objects, le niveau de description de l’interaction est très fin, mais
l’utilisation d’automates limite la complexité des comportements qu’il est possible de décrire de manière
lisible.
66CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES 3.1. CONTENU
FIGURE 3.1 – Comportements liés à un Smart Object de type porte [Kallmann and Thalmann, 1999b]
FIGURE 3.2 – Machine à état représentant le comportement d’une porte [Badawi and Donikian, 2004]
673.1. CONTENU CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES
STORM
Le modèle STORM (Simulation and Training Object-Relation Model) [Mollet, 2005] [Mollet and
Arnaldi, 2006] est lui aussi inspiré des Smart Objects. Il étend ces derniers en permettant de définir
des interactions non plus seulement entre un agent (utilisateur ou personnage virtuel) et un objet,
mais également entre plusieurs objets. Les relations entre deux objets étant elles-aussi considérées
comme des objets, une interaction peut concerner plus de deux objets physiques, introduisant ainsi
la notion d’outils.
Le modèle STORM associe un modèle d’objets comportementaux et un modèle d’interaction. Les
objets définis dans le modèle d’objets comportementaux sont dotés de capacités (ex : emboîtable),
qui permettent de déterminer les interactions dont ils peuvent être la cible (voir figure 3.3). Les relations
définies dans le modèle d’interaction se réfèrent à ces capacités pour désigner les objets qu’elles
permettent de lier (voir figure 3.4).
FIGURE 3.3 – Relation STORM relative à la visserie [Mollet, 2005]
FIGURE 3.4 – Comportement associé à la relation de visserie [Mollet, 2005]
Ainsi, par rapport aux modèles présentés précédemment, le modèle STORM introduit de l’abstraction
dans la représentation des objets. Cependant, les comportements eux-mêmes ne sont pas
définis en suivant le même méta-modèle, mais sont représentés de manière externe, généralement
grâce à des automates. Il n’est donc là encore pas possible de raisonner sur les actions pour tenter
d’aboutir à un état particulier de la simulation.
VEHA
VEHA (Virtual Environment supporting Human Activities) [Chevaillier et al., 2009] est un métamodèle
d’environnement informé et structuré, défini comme une extension d’UML 2.1. Les auteurs
68CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES 3.1. CONTENU
ont pour volonté affichée de permettre la création de modèles du domaine indépendants des moteurs
utilisant ces modèles, en modélisant à la fois les propriétés sémantiques, structurelles, géométriques
et topologiques des entités de l’environnement virtuel, ainsi que leurs comportements réactifs. L’objectif
de VEHA est de permettre d’interroger ces différentes propriétés en ligne, et de les rendre directement
utilisables pour simuler l’évolution de l’environnement virtuel.
FIGURE 3.5 – Modèle d’un porte avions [Chevaillier et al., 2009]
La modélisation du comportement des entités est réalisée par le biais d’automates finis, repré-
sentés comme des machines à états comportementales UML. Un exemple de machine à état est
présenté dans la figure 3.6. D’après les auteurs, cette explicitation est non seulement exécutable mais
permet aussi aux agents d’analyser le comportement des objets et d’anticiper leur évolution. Cependant,
ici encore l’utilisation d’automates limite la complexité des comportements modélisables, ainsi
que les possibilités de raisonnement sur ces comportements. Les comportements spécifiques, trop
complexes pour être représentés par des machines à états, sont d’ailleurs encodés sous la forme
d’opaque behaviors, qu’il est possible d’exécuter mais pas d’interroger sur leurs transitions, préconditions,
etc.
COLOMBO
Le modèle COLOMBO (Création Ontologique Liée à la MOdélisation des OBjets) [Edward et al.,
2010] [Edward, 2011] a un positionnement proche de celui de VEHA.
COLOMBO s’appuie sur une représentation ontologique de l’environnement pour décrire les objets,
leurs propriétés, et les actions pouvant s’appliquer en fonction de ces propriétés. L’ontologie est
décrite en langage MOSS, au sein d’un environnement de développement lié à la plateforme multiagent
OMAS [Barthès and Ramos, 2002]. Un extrait de cette ontologie est présenté dans la figure 3.7.
Pour modéliser le comportement des objets lié aux actions, COLOMBO utilise un système de rè-
gles, elles-aussi représentés en MOSS, donc inspectables — c’est à dire qu’il est possible de les exé-
cuter mais également de raisonner sur leur code. Ces règles sont soit des règles d’exécution de l’action
(voir figure 3.8), qui définissent les conditions dans lesquelles l’action peut être déclenchée, soit des
règles de transition (voir figure 3.9), qui déterminent si les effets de l’action peuvent être appliqués au
niveau de l’objet ou si celle-ci est en échec. Ces règles permettent non seulement d’exécuter les com-
693.1. CONTENU CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES
FIGURE 3.6 – Comportement d’un déflecteur [Chevaillier et al., 2009]
FIGURE 3.7 – Extrait de l’ontologie COLOMBO [Edward et al., 2010]
portements mais aussi de raisonner dessus : les personnages virtuels peuvent ainsi planifier leurs
séquences d’actions en fonction des conditions nécessaires au déroulement correct des différents
comportements des objets.
Si le méta-modèle ontologique et l’utilisation des démons dans COLOMBO sont intéressants, son
implémentation manque toutefois de généricité, la modélisation se plaçant parfois au niveau des
instances d’objets plutôt que des concepts. Par ailleurs, l’utilisation exclusive de prédicats au détriments
de valeurs numériques est pénalisante lorsqu’il s’agit de représenter des valeurs continues
pour la modélisation de systèmes techniques complexes.
70CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES 3.1. CONTENU
FIGURE 3.8 – Règle d’exécution d’une action en MOSS [Edward, 2011]
FIGURE 3.9 – Règle de transition d’un object en MOSS [Edward, 2011]
Cause-and-Effect
[Lugrin and Cavazza, 2006] proposent un moteur de causalité (causal engine) destiné à écraser
les décisions du moteur physique en déclenchant des conséquences physiques alternatives pour les
différentes actions de l’utilisateur ou des personnages virtuels.
Les actions sont représentées dans un formalisme dénommé CE, pour Cause-and-Effect, qui associe
un ensemble de préconditions à un ensemble d’effets. Chaque action est associée à un événement de
base, qui permet de la déclencher. Ces événements peuvent correspondre à une interaction de l’utilisateur
ou d’un personnage virtuel (par exemple USE ou GRASP), ou à des événements physiques
non-intentionnels (par exemple HIT ou TOUCH). A chaque événement peuvent ainsi correspondre
plusieurs actions ; si les préconditions de plus d’une action sont vérifiées en même temps, cela signi-
fie qu’il est possible pour le système de déclencher alternativement les effets de l’une ou de l’autre.
Les conditions et effets des actions font référence à des propriétés des objets, qui sont définies dans
une ontologie des objets. Un exemple d’action et la représentation de l’objet associé sont présentés
dans la figure 3.10.
De par l’association d’une représentation ontologique des objets et d’une représentation inspectable
des actions, ce formalisme est assez proche de COLOMBO et de VEHA. L’association de pré-
713.1. CONTENU CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES
FIGURE 3.10 – Représentation d’une action et d’un objet dans [Lugrin and Cavazza, 2006]
conditions et d’effets pour chaque action, à la manière d’opérateurs de planification, permet non
seulement d’utiliser cette représentation pour exécuter les effets des actions mais aussi à des fins de
raisonnement, notamment en utilisant un moteur de planification pour calculer des suites d’actions
aboutissant à une situation donnée. Cependant, l’absence d’alternatives au niveau des conditions, et
la représentation des conditions et des effets sous formes de “blocs” indivisibles rendent nécessaire
une duplication des actions pour représenter la moindre variation de comportement, et rendent fastidieuse
la représentation de comportements complexes.
Dans les premiers formalismes présentés (Smart Objects, STARFISH, STORM), les comportements
ne sont modélisés que par rapport aux actions, et sont déclenchés de manière réactive ; il n’y a pas
de possibilité de modéliser l’évolution du système indépendamment des actions des personnages,
par exemple le fait qu’un robinet laissé ouvert provoque le remplissage progressif d’un contenant,
menant éventuellement à son débordement. De tels comportements ne peuvent être représentés en
VEHA que grâce à des opaque behaviors, non inspectables, ou en COLOMBO par des méthodes adhoc.
Ici, les comportements peuvent être déclenchés en réaction à des actions de l’utilisateur ou des
personnages virtuels, mais aussi en réaction à des événements physiques. Il est donc possible de
modéliser des chaînes de comportements ne faisant pas appel aux actions d’un agent. Cependant,
cette modélisation nécessite l’ajout d’un moteur physique en parallèle. Les comportements gérés par
la physique correspondent à des “boîtes noires” : il n’est pas possible, au niveau du raisonnement, de
faire le lien entre les effets d’une action et les préconditions d’une autre si ce lien passe par des événements
physiques. Il n’est pas non plus possible de modéliser des systèmes complexes ne faisant pas
appel à la physique (systèmes électroniques par exemple).
3.1.2 Représentation de l’activité
S’il est nécessaire de représenter le domaine et ses règles de fonctionnement pour exécuter la
simulation ou générer différents scénarios, cela ne suffit pas pour autant à assurer la validité écologique
de ces scénarios. Il faut pour cela s’assurer également que le comportement des personnages
virtuels qui peuplent l’environnement, et dont les choix ne sont pas toujours rationnels par rapport
aux règles des systèmes techniques, soit conforme à la réalité.
72CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES 3.1. CONTENU
Il va ainsi s’agir de représenter non seulement l’activité prescrite — les procédures que doivent suivre
les personnages virtuels et les utilisateurs pour assurer le fonctionnement nominal du système simulé
ou pour réagir en cas de défaillance — mais également l’activité observée, en intégrant au modèle les
différents facteurs qui rentrent en jeu dans leurs mécanismes de prise de décision des agents, les erreurs
qu’ils peuvent commettre, les déviations qui peuvent être relevées sur le terrain, etc. On cherche
ainsi à tendre vers la modélisation de l’activité finalisée.
Ces langages permettent ainsi de représenter l’activité d’un personnage virtuel (ou d’un groupe de
personnages ayant le même comportement, assimilable à un personnage unique), dans le but de
générer son comportement. Ils peuvent aussi être utilisés pour analyser et prédire les actions de l’utilisateur
de l’environnement virtuel.
Une fois encore, il est délicat de séparer représentation des connaissances et moteurs, puisque les
connaissances représentées dans ces modèles sont liées à la manière dont elles vont être interprétées,
selon que le système utilise une architecture cognitive donnée, que les personnages virtuels soient
autonomes ou non, qu’ils sélectionnent leurs actions de manière réactive ou en utilisant de la planifi-
cation, etc. De même, on trouve dans certains cas des modèles d’activité qui englobent directement le
modèle du domaine associé, en intégrant dans la représentation des actions à la fois les facteurs motivationnels
qui jouent sur la prise de décision du personnage, et les effets de l’action sur le monde 2
.
Opérateurs de planification
L’approche la plus courante est de représenter l’activité sous la forme d’un ensemble d’opérateurs
de planification, chaque opérateur correspondant à une action réalisable par un personnage
virtuel [Charles et al., 2003], [Young et al., 2004], [Lugrin and Cavazza, 2006], [Pizzi and Cavazza,
2007], [Chang and Soo, 2008], [Riedl and Young, 2010], [Swartjes, 2010], [Porteous et al., 2010], [Porteous
et al., 2013]. Ces opérateurs représentent les actions comme un ensemble de préconditions et
d’effets, ou postconditions.
FIGURE 3.11 – Exemples d’opérateurs dans [Riedl and Young, 2010]
Il existe un certain nombre de langages permettant d’exprimer ces opérateurs. L’un des plus ré-
pandus est le langage STRIPS (dont l’acronyme est issu du Stanford Research Institute Problem Solver,
le moteur de planification qui lui était associé) [Fikes and Nilsson, 1971]. Un exemple d’opérateur
STRIPS est présenté dans la figure 3.12.
Le langage STRIPS étant considéré comme n’étant pas suffisamment expressif, de nombreux travaux
utilisent à présent le langage PDDL (Planning Domain Definition Language) [McDermott et al., 1998],
2. Il ne s’agit cependant pas ici de chercher à représenter de scénarios dans leur globalité, puisque ces derniers seront
issus de la combinaison de l’activité de plusieurs personnages. Les langages utilisés pour décrire les scénarios impliquant
de la coactivité au niveau global sont décrits dans la partie 3.3.
733.1. CONTENU CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES
FIGURE 3.12 – Opérateurs STRIPS [Charles et al., 2003]
une syntaxe standard permettant l’échange et la comparaison des résultats lors des compétitions internationales
de planification. Un exemple d’opérateur PDDL est présenté dans la figure 3.13.
FIGURE 3.13 – Opérateurs PDDL [Porteous et al., 2013]
Les actions peuvent correspondre soit à des actions physiques, soit à des processus internes aux
personnages qui vont provoquer des changements d’états mentaux. C’est le cas par exemple dans le
système EmoEmma [Pizzi and Cavazza, 2007], qui vise à recréer la complexité émotionnelle des personnages
du roman Emma Bovary. Un opérateur est présenté dans la figure 3.14.
FIGURE 3.14 – Opérateur de planification émotionnel dans EmoEmma [Pizzi and Cavazza, 2007]
Les préconditions peuvent concerner les états du monde, mais aussi les états internes des personnages
virtuels, comme leurs motivations, voire des états spécifiques au système de scénarisation.
Dans [Porteous et al., 2010], le scénario généré dépend du point de vue adopté pour le discours, selon
que l’on se focalise sur un personnage ou un autre, et les préconditions spécifient ainsi le point de
74CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES 3.1. CONTENU
vue nécessaire pour que chaque opérateur soit valide.
Le principal avantage de cette représentation est qu’elle est directement interprétable par des moteurs
de planification, permettant de générer des plans soit au niveau des personnages individuels
(le plan correspondant aux actions choisies par le personnage pour réaliser son ou ses buts), soit
au niveau du scénario global. Les préconditions permettent de cadrer l’activité en définissant des
contraintes sur la séquentialité des actions ou sur les motivations et états internes des personnages
nécessaires à la réalisation de l’action.
Cependant, il est très difficile d’avoir une vue globale des comportements représentés, du fait de l’absence
de structure de l’ensemble des opérateurs. Plus le nombre de facteurs pris en compte augmente
et plus les préconditions seront complexes, rendant difficile le passage à l’échelle et la maintenabilité
de la représentation.
Règles
Similairement, certains systèmes utilisent des représentations basées sur des ensembles de règles
logiques, composées de conditions et de conséquences sous la forme ❙■ x ❆▲❖❘❙ y.
Le système IDtension [Szilas, 2003] [Szilas, 2007] utilise un ensemble de règles logiques afin de déterminer
l’applicabilité des actions. Le système LOGTELL [Ciarlini et al., 2005] s’en sert pour représenter
les effets des événements sur les motivations des personnages. Le modèle Brahms décrit dans [Sierhuis
et al., 2003] utilise des scripts de la forme ✇❤❡♥ x ❞♦ y, assimilables à des règles.
FIGURE 3.15 – Règle de sélection de l’action d’incitation dans IDtension [Szilas, 2003]
Les représentations à base de règles sont confrontées au même écueil que les représentations
basées sur des ensembles d’opérateurs de planification : elles deviennent difficiles à maintenir dès
lors qu’il s’agit de prendre en compte de nombreux facteurs dans les processus décisionnels des personnages
virtuels.
Réseaux de tâches hiérachiques
L’utilisation de réseaux de tâches hiérarchiques (HTN, pour Hierarchical Task Networks) permet
d’introduire de la structure, en hiérarchisant les actions par rapport aux buts qu’elles permettent de
satisfaire. Cette représentation a notamment été utilisée par [Cavazza et al., 2002] pour créer un environnement
virtuel à la scénarisation émergente basée sur la série Friends.
Un réseau de tâches hiérarchique est défini pour chaque personnage, et décompose les buts de
haut niveau du personnage (ex : “Demander un rendez-vous à Rachel”) en buts de niveaux inférieurs
(ex : “Apprendre ce que Rachel aime”), jusqu’au niveau des actions (ex : “Prendre le journal intime
de Rachel”). Plusieurs méthodes peuvent être définies pour un même but, ces méthodes se décomposant
elles-mêmes en sous-buts, ce qui permet de représenter des alternatives.
753.1. CONTENU CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES
FIGURE 3.16 – Exemple de réseau de tâches hiérarchique [Cavazza et al., 2002]
La représentation de l’activité par un réseau de tâches hiérarchique nécessite qu’il n’y ait ni interactions
négatives entre les tâches (une tâche annule les effets d’une tâche précédente) ni interactions
positives (une tâche réalise les effets d’une tâche suivante, supprimant ainsi la nécessité d’effectuer
cette dernière) [Charles et al., 2003].
Il est possible de rajouter des connaissances permettant la prise de décision au niveau d’une alternative
entre plusieurs méthodes, cependant cela n’est pas prévu dans le formalisme à la base. [Cavazza
et al., 2002] disent utiliser des modèles de préférences d’action annexes, qui prennent en compte le
statut émotionnel des personnages, mais ne détaillent pas ces modèles.
Le modèle utilisé pour STEVE utilise lui aussi une décomposition hiérarchique de l’activité, repré-
senté cette fois sous la forme de règles de production SOAR [Rickel and Johnson, 1998]. La décomposition
hiérarchique est associée à un ensemble de contraintes temporelles et de liens de causalité
entre actions.
Automates finis
Plutôt que de modéliser la logique de sélection des actions sous forme de préconditions et postconditions,
il est possible de représenter directement les transitions entre actions au niveau des comportements
individuels. On peut utiliser pour cela des automates finis ou des réseaux de Petri [Balas
et al., 2008] [Delmas, 2009].
Les automates finis définissent les différents enchaînements possibles entre les actions d’un personnage
ou d’un groupe de personnages. Lorsque le nombre d’actions et le nombre de transitions augmentent,
les automates classiques deviennent rapidement illisibles, et il est alors nécessaire d’utiliser
un ensemble d’automates dont il faut définir l’exécution coordonnée. Cependant, là encore, il est dif-
ficile d’avoir une vue d’ensemble du comportement.
Les automates parallèles et hiérarchiques HPTS (Hierarchical Parallel Transition System) [Donikian,
2001] permettent d’intégrer la notion de but en modélisant l’activité à plusieurs niveaux de hiérarchie,
et de simuler des activités simultanées via l’exécution parallèle de plusieurs automates. HPTS++
76CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES 3.1. CONTENU
est une extension orientée objet de HPTS, qui permet de gérer la notion de priorités, de ressources et
de degrés de préférence [Lamarche and Donikian, 2002].
FIGURE 3.17 – Comportement de déplacement d’un objet modélisé en HPTS++ [Lamarche and
Donikian, 2002]
Les automates finis et les réseaux de Petri permettent de contrôler très précisément le comportement
des personnages. La décomposition hiérarchique et l’utilisation de plusieurs modèles parallèles
simplifie la tâche de création des modèles, mais l’effort a fournir reste important car il est nécessaire
d’expliciter toutes les transitions possibles. De plus, il s’agit de formalismes informatiques qui ne sont
pas renseignables directement par des non-informaticiens.
Diagrammes d’activité UML
HAVE (Human Activities in a Virtual Environment) [Marion, 2010] est le méta-modèle d’activité
utilisé dans la plateforme MASCARET, associé au méta-modèle d’environnement VEHA décrit dans
la section 3.1.1. Les procédures métier y sont représentées sous la forme de diagrammes d’activité
UML, qui décrivent les différents enchaînements d’actions devant être effectués par chaque agent,
avec des points de synchronisation entre agents. A ce méta-modèle d’activité est associé un second
méta-modèle, BEHAVE, permettant de décrire la structure organisationnelle et les rôles des différents
agents. A chaque rôle est associé un ensemble d’activités du modèle HAVE.
HAVE est utilisé pour représenter la procédure prescrite, mais pas l’activité en mode dégradé (erreurs,
compromis...), et est ainsi destiné plutôt au suivi de l’activité de l’apprenant qu’à la génération
des comportements des personnages virtuels (“libre à eux de faire autre chose” [Marion, 2010]). L’absence
de représentation hiérarchique et la nécessité de définir explicitement toutes les transitions
entre actions et tous les points où une alternative se présente rend cette représentation très proche
des automates finis classiques.
Langages ergonomiques
Il existe de nombreux langages dans le domaine de l’ergonomie qui permettent de représenter
l’activité humaine [Couix and Burkhardt, 2011]. Contrairement aux formalismes informatiques, ces
langages ne limitent pas la représentation en forçant à considérer l’humain comme un système de
résolution de problèmes. Ils ont de fait l’avantage de pouvoir être utilisés par des non-informaticiens,
cependant ils sont pour la plupart des formalismes textuels ou graphiques qui ne peuvent être directement
interprétés par des modules informatiques. Nous détaillerons ici deux de ces langages qui
ont été opérationnalisés : CTT et HAWAI-DL.
773.1. CONTENU CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES
FIGURE 3.18 – Exemple de modèle d’activité HAVE [Marion, 2010]
CTT La notation CTT (ConcurTaskTrees) [Paternò, 2003] est un formalisme graphique qui s’interface
avec des modèles de domaine représentés en UML. CTT représente les tâches de manière hiérarchique,
les tâches d’un même niveau étant ordonnées grâce à des opérateurs exprimant la séquentialité
ou encore l’alternative. CTT a pour but de modéliser la façon dont l’utilisateur d’un système
se représente mentalement la tâche a réaliser, afin d’y faire correspondre le mieux possible la façon
dont la tâche est implémentée dans le système.
Bien que CTT ait été conçu à l’origine pour servir de support à la conception d’interfaces hommesmachines,
il a été utilisé dans [Vidani and Chittaro, 2009] pour représenter les procédures dans un
environnement virtuel pour l’apprentissage humain, dans une optique de suivi de l’apprenant et de
génération dynamique de menus. Cependant à notre connaissance, CTT n’a jamais été utilisé pour
de la génération de comportements de personnages virtuels.
FIGURE 3.19 – Extrait de procédure en CTT contenant un choix [Vidani and Chittaro, 2009]
En tant que tel, CTT permet de suivre le choix d’un utilisateur au niveau d’une alternative, mais
pas d’évaluer quelle serait la décision prise par un personnage virtuel. La prise en compte du contexte
n’est en effet pas native dans CTT, et il serait nécessaire pour cela soit d’utiliser une extension
comme les Contextual ConcurTaskTrees [Van den Bergh and Coninx, 2004], soit de le représenter
via l’ajout de préconditions et postconditions spécifiques. De plus, un point soulevé par [Vidani and
Chittaro, 2009] est que CTT ne permet pas tel quel la modélisation explicite des erreurs et l’expression
de préférences quant aux différentes manières de réaliser une tâche.
78CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES 3.1. CONTENU
HAWAI-DL HAWAI-DL (Human Activity and Work Analysis for sImulation-Description Language)
[Amokrane et al., 2008] [Edward et al., 2008] est un langage de modélisation de l’activité inspiré de
MAD* [Sebillotte and Scapin, 1994] et GTA [Van Der Veer et al., 1996], qui fait suite aux travaux sur
le langage METISSE [El-Kechaï, 2007]. HAWAI-DL utilise une représentation hiérarchique des tâches,
un ensemble de constructeurs permettant d’ordonner les sous-tâches entre elles, et différents types
de préconditions spécifiques afin de déterminer les conditions dans lesquelles une tâche peut être
exécutée ou bien sera favorisée par rapport à une autre. Les tâches référencent les objets et actions
du modèle de domaine défini grâce à COLOMBO (voir section 3.1.1).
FIGURE 3.20 – Extrait de modèle d’activité HAWAI-DL.
Le drapeau rouge indique une tâche ALU, qu’il est toléré d’ignorer sous certaines
conditions.
De même que CTT, HAWAI-DL vise a représenter l’activité telle que l’agent humain se la représente,
mais tandis que CTT représente l’activité prescrite, HAWAI-DL est conçu pour représenter l’activité
observée, telle qu’elle a lieu sur le terrain. HAWAI-DL intègre ainsi la notion d’Actions Limites
tolérées par l’Usage (ALU) [Garza and Fadier, 2007]. Les ALU sont un concept issu de travaux en psychologie
cognitive, traduisant le résultat d’un compromis local et souvent informel entre les acteurs
du domaine. Par exemple, travailler avec un produit chimique sans équipements de protection individuelle,
dans le but de gagner du temps, peut exister dans certains cas en tant qu’ALU, c’est-à-dire
pratique à risque tolérée dans l’usage.
HAWAI-DL a été utilisé avec succès dans plusieurs environnements virtuels, à la fois pour générer le
comportements de personnages virtuels [Edward, 2011] et pour suivre et analyser le comportement
de l’utilisateur [Amokrane, 2010]. Cependant le langage souffre d’un manque de formalisation, à la
fois au niveau des constructeurs temporels et des différents types de préconditions, introduisant des
redondances et des imprécisions dans la modélisation.
3.1.3 Représentation des événements
Tous les systèmes ne font cependant pas de distinction entre ce qui fait partie de la représentation
du domaine et ce qui fait partie de la représentation de l’activité. Certains, notamment ceux dont
la scénarisation est intrinsèque, utilisent comme élément de base des représentations d’événements
atomiques, qui mettent en jeu les actions de l’ensemble des personnages et leurs effets sur le monde.
ABL — Façade
Le récit de Façade [Mateas, 2002], [Mateas and Stern, 2005] repose sur une sélection dynamique
parmi un ensemble de story beats.
Chaque beat correspond à une unité de récit et représente un rebondissement pouvant prendre place
pendant la simulation. Ils sont dotés de préconditions et de postconditions permettant de déterminer
793.1. CONTENU CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES
dans quelles situations ils peuvent s’appliquer, et comment ils vont impacter le récit en termes de relations
entre les personnages ou d’intérêt narratif.
Ces éléments sont décrits en ABL (A Behavior Language) [Mateas, 2002], un langage de planification
réactive à la structure proche du Java et qui permet de synchroniser les animations et dialogues des
différents personnages. Chaque beat comprend entre 10 et 100 comportements (behaviors), séparés
en plusieurs sous-ensembles qui seront déclenchés ou non selon les actions de l’utilisateur. La version
finale de Façade contient 27 beats différents (ex : ArgueOverItalyVacation, ExplainDatingAnniversary).
ABL a également été utilisé dans IN-TALE [Riedl et al., 2008b] pour représenter des modèles de l’activité
proches de réseaux de tâches hiérarchiques, et dans différents systèmes allant de la narration
interactive au jeu vidéo [Weber et al., 2011]. Ce langage très expressif permet en effet de représenter le
contenu scénaristique à plusieurs niveaux de granularité. Cependant, sa syntaxe n’est utilisable que
par des programmeurs expérimentés.
FIGURE 3.21 – Comportements synchronisés représentés en ABL [Mateas, 2002]
3.1.4 Bilan et positionnement
Afin d’assurer l’adaptabilité de l’environnement virtuel, le formalisme choisi pour la représentation
du contenu scénaristique doit permettre la maintenabilité, la réutilisabilité et le passage à
l’échelle de ce contenu, ainsi que la variabilité des scénarios construits à partir de ce contenu. De
plus, afin de répondre à notre objectif de cohérence, le formalisme doit permettre d’exprimer du
contenu qui ait une validité écologique.
A partir de ces objectifs, nous avons extrait quatre propriétés qu’il est nécessaire que le formalisme
choisi possède :
– la modularité, afin de pouvoir ajouter, supprimer, modifier ou réutiliser des parties de ce contenu
sans avoir à le modifier en intégralité,
– l’intelligibilité, afin que le contenu scénaristique puisse être renseigné directement par des
experts du domaine concerné, et non uniquement par des informaticiens,
– l’expressivité, afin de pouvoir modéliser des comportements complexes, rares, non-idéaux, à
la fois au niveau des systèmes techniques et des comportements humains,
– l’interprétabilité, afin de pouvoir être directement utilisé par des modules informatiques sans
nécessiter de traduction manuelle préalable.
Parmi les formalismes présentés, aucun n’est satisfaisant au niveau de ces quatre propriétés. La sé-
paration des modèles de domaine et d’activité, plutôt que l’utilisation d’un modèle d’événements,
permet toutefois d’accroître la modularité du formalisme, en permettant notamment de réutiliser
un même modèle de domaine pour différentes applications, avec des modèles d’activité différents.
L’ajout de sémantique aux formalismes de représentation du domaine permet davantage d’expressivité,
de modularité et d’intelligibilité par rapport à des représentations qui soient purement sous
80CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES 3.2. OBJECTIFS
forme d’automates finis. Cependant dans la plupart des cas ces mêmes automates sont utilisés pour
représenter les comportements des systèmes, qui ne sont donc pas inspectables. Des formalismes
basés sur des règles (COLOMBO) ou des associations de préconditions et effets (Cause-and-Effect)
apportent des solutions intéressantes, mais ceux ayant été étudiés manquent de modularité, ainsi
que d’expressivité pour la représentation de comportements complexes des systèmes qui ne soient
pas liés aux actions des agents.
L’utilisation d’automates finis ou de réseaux de Petri pour la représentation de l’activité n’est pas
non plus satisfaisante au niveau de la modularité, puisque ceux ci nécessitent d’expliciter toutes les
transitions possibles. La représentation par un ensemble d’opérateurs de planification est également
limitée sur ce point, car elle ne permet pas d’avoir une vision d’ensemble de l’activité. L’utilisation
d’un modèle hiérarchique permet une plus grande souplesse, notamment pour l’ajout d’alternatives
pour la réalisation d’un même but. En particulier, les langages issus de l’ergonomie sont à la fois expressifs
et intelligibles, cependant ils pèchent au niveau de l’interprétabilité.
Nous proposons deux langages pour la représentation du contenu scénaristique :
– DOMAIN-DL, un langage de modélisation du domaine, inspiré de COLOMBO et VEHA, et décrit
dans la section 5.1 ;
– ACTIVITY-DL, un langage de modélisation de l’activité observée, inspiré de HAWAI-DL, CTT et
HTN, et décrit dans la section 5.2.
Ces langages sont utilisés par les experts du domaine et ergonomes pour renseigner les connaissances
qui serviront de base à l’environnement virtuel. Ces modèles sont ensuite traduits automatiquement
sous la forme d’opérateurs de planification PDDL afin de pouvoir être manipulés par le moteur de
planification inclus dans DIRECTOR. Ces opérateurs, et la manière dont ils sont générés, sont décrits
dans la partie 6.4.
3.2 Représentation d’objectifs scénaristiques
En parallèle des connaissances sur le contenu scénaristique, qui définissent l’ensemble des scénarios
possibles, la majorité des systèmes de scénarisation reposent également sur des connaissances
concernant les objectifs scénaristiques, qui permettent de décrire le sous-ensemble de scénarios
souhaitables. On parle également de narrative control knowledge [Porteous et al., 2010] ou d’author
goals [Riedl, 2004].
Ces connaissances sont utilisées pour contrôler la génération ou la sélection dynamique de scénarios
dans les approches où l’ensemble des scénarios n’est pas défini à l’avance par un auteur. Certains
de ces objectifs sont définis de manière statique par rapport au système, permettant de spécifier un
sous-espace de scénarios d’intérêt, par exemple dans le cas d’une scénarisation extrinsèque. D’autres
sont définis de manière dynamique, soit au début d’une session, soit au sein-même d’une session
d’utilisation de l’environnement virtuel. La définition dynamique de ces objectifs permet d’adapter
les scénarios résultants à l’activité ou au profil de l’utilisateur. Les objectifs peuvent avoir une valeur
prescriptive, sous la forme de contraintes dont le scénario ne peut s’écarter, ou indicative, reflétant le
scénario idéal vers lequel tend la simulation.
On peut distinguer deux catégories d’objectifs scénaristiques : les objectifs de bas niveau, qui visent
directement le contenu du scénario, et les objectif de haut niveau qui introduisent des annotations
des situations et des fonctions d’évaluation de la valeur d’un scénario selon différents critères.
3.2.1 Objectifs scénaristiques de bas niveau
La majorité des systèmes de scénarisation utilisent des objectifs scénaristiques de bas niveau,
portant directement sur le scénario et les événements qui le composent. Il peut s’agir de contraintes
locales sur un moment particulier du scénario (conditions initiales ou situation finale) comme d’ob-
813.2. OBJECTIFS CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES
jectifs globaux portant sur l’ensemble du scénario (points clés à rencontrer, contraintes d’ordonnancement
sur les événements, etc.).
Contraintes locales
De nombreux systèmes optant pour une approche centrée sur les personnages définissent les
objectifs scénaristiques par un ensemble d’assertions sur l’état initial de la simulation, par exemple
[Shawver, 1997]. [Hullett and Mateas, 2009] proposent une description plus ouverte, sous la forme
d’un ensemble de contraintes qui permettent de calculer cet état initial.
Les systèmes basés sur la planification d’un scénario associent à la définition de l’état initial celle
de l’état final, sous la forme d’une situation but contenant un ensemble d’assertions sur l’état de la
simulation devant être vraies à la fin du scénario, par exemple [Young et al., 2004].
FIGURE 3.22 – Situation initiale et situation finale définies sous forme de prédicats [Riedl and Young,
2010]
Ces contraintes permettent de contrôler précisément le début et la fin du scénario, mais n’offrent
aucun contrôle sur les situations intermédiaires. Cette limitation est particulièrement visible
dans les systèmes basés sur de la planification, où le moteur de planification va chercher à générer
le plan le plus court entre la situation initiale et la situation finale, ce qui n’offre aucune garantie sur
la qualité du plan. Pour offrir un contrôle plus important sur la qualité narrative ou pédagogique du
scénario, certains systèmes prennent alors en compte des contraintes globales, devant être respectées
sur l’ensemble du scénario.
Contraintes globales
Il est ainsi possible de définir des ensembles de situations prescrites (devant arriver au cours
du scénario) ou proscrites (devant au contraire être évitées), ici encore sous la forme d’ensemble
d’assertions sur l’état du monde. On parle des situations prescrites comme des “points clés”, ou plot
points [Magerko, 2005]. Ces points clés peuvent être associés à des contraintes temporelles, spécifi-
ant des relations d’ordonnancement entre des couples de points clés [Riedl et al., 2008b] [Porteous
and Cavazza, 2009], voire des contraintes absolues sur le nombre de pas de simulation avant lequel
certains points clés doivent apparaître [Si, 2010]. [Porteous and Cavazza, 2009] définissent ces contraintes
en utilisant les state trajectory constraints du langage PDDL 3.0 (voir figure 3.23).
82CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES 3.2. OBJECTIFS
FIGURE 3.23 – Opérateurs et exemples de contraintes utilisées dans [Porteous and Cavazza, 2009]
Cette représentation des objectifs scénaristiques comme des points clés partiellement ordonnés
se rapproche, selon le niveau de détail utilisé, d’une représentation explicite d’un scénario. De même,
certains systèmes utilisent une représentation d’un ou plusieurs scénarios linéaires servant de “filrouge”,
c’est à dire de séquences d’événements exemplaires que le système va chercher à approcher.
C’est le cas notamment dans IN-TALE [Riedl et al., 2008b] et Thespian [Si, 2010]. Les formalismes utilisés
pour la représentation explicite d’un scénario ou d’un ensemble de scénarios sont décrits plus
en détails dans la section 3.3.
L’utilisation de points clés et de contraintes temporelles permet une grande souplesse dans le niveau
de contrôle du scénario, allant jusqu’à un contrôle très fin des situations dans le cas des systèmes
basés sur des représentations explicites de scénarios prédéfinis. Ici, la responsabilité de la qualité du
scénario revient en grande partie à l’auteur ou au système qui définit ou génère ces points clés : c’est
à eux de s’assurer que les situations prescrites présentent un intérêt et qu’il n’y ait pas d’incohérences
entre les contraintes. Les points clés étant définis en termes de situations de l’environnement virtuel,
l’expressivité de ces formalismes est limitée : ils ne permettent par exemple pas de poser des contraintes
explicites sur des propriétés de plus haut niveau du scénario, comme son rythme, la charge
cognitive de l’utilisateur, etc.
3.2.2 Objectifs scénaristiques de haut niveau
Dans certain cas, la pertinence d’un scénario n’est pas liée intrinsèquement aux situations qui
le composent, mais à des propriétés de plus haut niveau, comme par exemple le rythme auquel ces
situations s’enchaînent. En particulier lorsqu’il s’agit d’environnements virtuels destinés à la formation
à des compétences non-techniques, comme la gestion du stress, il peut être intéressant pour un
système de scénarisation de manipuler de tels objectifs scénaristiques de haut niveau.
Les connaissances liées à ces objectifs peuvent être directement encodées sous la forme de fonctions
d’évaluation de différentes propriétés (ex : intérêt de l’utilisateur pour le scénario) que les moteurs
chercheront à maximiser. Ces fonctions peuvent également être associées à des valeurs souhaitées,
sous la forme de trajectoires permettant de faire varier ces propriétés au cours du scénario, ou de
structures de récit. Dans certain cas, ces valeurs pourront être définies de manière dynamique, afin
de pouvoir adapter ces propriétés en fonction de l’activité de l’utilisateur.
Fonctions d’évaluation
L’architecture Moe, proposée par [Weyhrauch, 1997] dans le cadre du projet Oz, a été l’un des
premiers systèmes a utiliser une telle approche. Moe utilise une fonction d’évaluation basée sur un
ensemble de propriétés du scénario, et cherche à maximiser cette fonction. Sept propriétés sont considérées
:
– thought flow : l’existence de liens logiques entre les événements vécus par l’utilisateur,
– activity flow : la proximité spatiale entre les actions réalisées par l’utilisateur,
833.2. OBJECTIFS CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES
– options : la liberté d’action perçue par l’utilisateur,
– motivation : le lien entre les actions de l’utilisateur et ses buts,
– momentum : la proximité de certains événements définis par l’auteur comme devant être concentrés
temporellement,
– intensity : l’intérêt de l’utilisateur pour l’histoire, assimilé à la progression de ses connaissances
sur le monde,
– manipulation : le sentiment de manipulation éprouvé par l’utilisateur face au système.
Chacune de ces propriétés est associée à une fonction d’évaluation ad hoc. Pour le calcul du thought
flow, par exemple, les actions possibles sont annotées en fonction des sujets concernés, et la valeur
est incrémentée quand deux actions séquentielles possèdent des annotations communes.
Le système IDTension [Szilas, 2003] utilise une approche similaire basée sur la combinaison nonlinéaire
de critères narratifs reprenant en partie les propriétés de Moe. Ces critères sont au nombre
de six : pertinence d’une action par rapport aux actions précédentes, cohérence des personnages au
niveau de leurs motivations, cohérence des personnages au niveau de leur personnalité, charge cognitive,
caractérisation (expression de la personnalité des personnages), conflit.
Les objectifs sont ici directement encodés dans les fonctions d’évaluation, ce qui ne permet pas de
redéfinir et d’adapter ces objectifs selon les sessions d’utilisation de l’environnement virtuel. De plus,
dans certains cas, il n’est pas souhaitable de maximiser une propriété donnée sur l’ensemble du scé-
nario, mais plutôt de faire varier sa valeur : par exemple une augmentation graduelle de l’intensité,
ou une diminution des conflits sur la fin du scénario pour ne pas laisser l’utilisateur trop en suspens.
Trajectoires et structures de récit
Pour cela, certains systèmes associent à la définition de fonctions d’évaluation une représentation
des trajectoires souhaitées pour les valeurs associées, ou définissent des structures de récit à
partir de théories narratives.
Delmas propose ainsi trois structures de récit interactif adaptées de structures narratives types [Delmas,
2009]. Ces structures décrivent les propriétés du scénario à générer pendant son exécution. La
première s’inspire de la structure aristotélicienne, constituée de trois parties : prologue, épisode et dé-
nouement. Elle est ici traduite sous la forme d’une grammaire, qui définit la décomposition du scé-
nario en “situations” et “rebondissements” (deux catégories d’événements, annotés comme tels). A
cette structure est associée une seconde structure basée sur l’évolution de la tension dramatique dans
le récit. Elle est représentée par une courbe canonique de tension dramatique (voir figure 3.24). Afin
de pouvoir évaluer la tension dramatique du scénario, chaque rebondissement possible est annoté
avec une valeur de tension dramatique donnée. Enfin, une troisième structure, basée sur le Périple
du Héros, utilise une catégorisation des événements plus détaillée.
[Porteous et al., 2011] utilisent une approche similaire basée sur la tension narrative pour la
génération d’une séquence de points clés. Comme dans l’architecture de pilotage proposée par Delmas,
chaque point clé est annoté avec une valeur de tension dramatique. La trajectoire voulue est
représentée visuellement sous la forme d’un “arc narratif” (voir figure 3.25). Cependant, ici, l’auteur
peut modifier la courbe en amont pour s’éloigner de la courbe aristotélicienne classique.
La spécification de trajectoires ou de structures narratives devant être respectées par le scénario
pour certaines propriétés de haut niveau permet davantage de contrôle par rapport à l’utilisation de
fonctions d’évaluation identiques sur l’ensemble du scénario. Les deux systèmes présentés utilisent
des annotations sur les événements pour calculer ces propriétés, mais pourraient également utiliser
des fonctions d’évaluation plus complexes.
Si les objectifs sont représentés ici sous la forme de trajectoires prédéterminées, les valeurs souhaitées
pour les différentes propriétés peuvent également être spécifiées de manière dynamique durant le
déroulement de la simulation. En effet, si certaines trajectoires — comme l’intensité suivant un arc
84CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES 3.2. OBJECTIFS
FIGURE 3.24 – Courbe canonique de tension dramatique [Delmas, 2009]
FIGURE 3.25 – Arcs de tension dramatique et points clés associés [Porteous et al., 2011]
aristotélicien — seront visées quelles que soient les conditions, d’autres peuvent être dépendantes du
contexte. Par exemple, un formateur pourrait chercher à augmenter ou diminuer le niveau de complexité
d’un scénario selon que l’apprenant qui utilise l’environnement virtuel rencontre ou non des
difficultés. [Magerko et al., 2005] définit ainsi des propriétés de haut niveau sous la forme de compétences.
Chaque point clé possible est associé avec les compétences qu’il met en jeu. Les objectifs
scénaristiques sont déterminés à chaque pas en fonction des performances de l’utilisateur sur les
différentes compétences, et envoyés au moteur de scénarisation sous la forme d’un vecteur associant
un poids à chaque compétence.
3.2.3 Bilan et positionnement
La définition d’objectifs scénaristiques de bas niveau permet un contrôle très fin sur les situations
rencontrées dans le scénario, tandis que la définition d’objectifs de haut niveau permet davantage
d’adaptabilité, notamment lorsqu’il s’agit de modifier ces objectifs de manière dynamique.
Plutôt que contradictoires, ces deux approches sont au contraire complémentaires.
Les motivations exprimées précédemment quant aux environnements virtuels pour la formation et
l’aide à la décision concernent en effet à la fois le besoin de mener la simulation vers des situations
d’apprentissage ponctuelles particulières, et celui de mettre en place des situations plus larges : situation
de stress, co-activité difficile, etc. La scénarisation extrinsèque d’une simulation existante né-
853.3. SCÉNARIOS CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES
cessite de plus de cadrer cette dernière, et donc de définir, en parallèle des modèles de domaine et
d’activité, un modèle représentant l’espace des scénarios d’intérêt pour les besoins d’une application
donnée.
Nous prenons ainsi en compte dans notre système trois types de connaissances pour les objectifs
scénaristiques :
– les situations prescrites et proscrites,
– les propriétés du scénario désirées,
– l’espace de scénarios d’intérêt.
Les connaissances indépendantes du domaine, comme certaines propriétés du scénario, peuvent
être directement encodées sous la forme de fonctions d’évaluation. Au contraire, les connaissances
dépendantes du domaine, comme l’espace de scénarios d’intérêt, doivent faire l’objet d’une représentation
explicite dans un modèle. L’espace de scénarios d’intérêt sera ainsi représenté grâce à un formalisme
de représentation de scénarios, tels ceux décrits plus en détail dans la section 3.3.
A l’inverse de l’espace de scénarios d’intérêt, défini de manière statique, les situations prescrites et
proscrites et les propriétés souhaitées du scénario sont générées de manière dynamique par un module
pédagogique externe, afin de permettre l’adaptation à l’activité de l’utilisateur. Les formalismes
utilisés, ainsi que les fonctions d’évaluation associées aux propriétés, sont décrites en détail dans la
partie 7.
3.3 Représentation des scénarios
On distingue enfin un troisième type de formalismes : ceux qui permettent de représenter de
manière explicite un scénario particulier, ou un espace de scénarios. Nous considérons ici un scé-
nario comme étant un déroulement particulier d’événements et d’actions instanciés dans un environnement
virtuel. Nous parlerons de trame scénaristique lorsqu’il s’agira de désigner un enchaînement
d’événements clés non instanciés, sans forcément représenter les événements intermédiaires.
Une trame scénaristique décrit alors un espace de scénarios. Un espace de scénarios peut également
être décrit à l’aide de formalismes permettant d’exprimer des alternatives entre plusieurs événements
ou séquences d’événements.
Selon les cas, ces formalismes sont utilisés pour représenter des scénarios ou des espaces de scénarios
qui sont prédéfinis, ou bien qui sont générés dynamiquement. Les scénarios ainsi représentés
peuvent soit être destinés à être exécutés dans l’environnement virtuel, soit constituer une trace des
événements passés, soit correspondre à des objectifs scénaristiques pour la génération ou la sélection
dynamique d’un scénario : espace de scénarios d’intérêt ou scénario “fil rouge” — ce dernier
pouvant avoir une valeur indicative (scénario à approcher dans la mesure du possible) ou prescriptive
(trame scénaristique à respecter).
Il existe de nombreuses approches pour la représentation des scénarios, selon le domaine de recherche
considéré : modèles de compréhension d’histoires, de scénarios pédagogiques ou encore d’analyses
de risques. Au niveau des formalismes purement informatiques, on trouve deux approches principales
: les représentations basées sur des automates d’états finis ou des graphes orientés acycliques,
et les représentations sous forme de plans.
3.3.1 Modèles de compréhension d’histoires
Les travaux menés sur la compréhension d’histoires ont donné naissance à un certain nombre
de modèles de structure narrative, permettant de représenter des scénarios. Il s’agit non seulement
de représenter les actions et changements d’états du monde et leur ordonnancement temporel, mais
également d’exprimer les relations de causalité entre les buts des personnages, leurs actions et les effets
de ces actions, ainsi que les relations hiérarchiques entre les buts, tels qu’ils peuvent être compris
86CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES 3.3. SCÉNARIOS
par un lecteur ou spectateur.
Ces formalismes représentent les scénarios sous la forme de graphes d’éléments narratifs reliés par
des liens de causalité, et définissent chacun une typologie d’éléments et de relations causales. Nous
présentons ici trois d’entre eux : QUEST [Graesser et al., 1991], GTN [Trabasso et al., 1989] et Fabula
[Swartjes, 2010].
QUEST
Le modèle QUEST [Graesser et al., 1991] vise à expliquer le processus de réponse à des questions
au sujet d’un texte écrit. Il repose sur une représentation du texte sous forme de graphe contenant
deux types de noeuds : les Buts et les Evénements. Ces nœuds sont liés par cinq types de relations :
Conséquence (lien de causalité entre deux événements), Raison (lien entre un but et un événement),
Initiation (lien entre un événement et un but), Résultat (lien entre un but et un événement) et Implication
(lien de subsomption entre deux événements). Un exemple de graphe est présenté dans la
figure 3.26.
FIGURE 3.26 – Portion de graphe QUEST présentée dans [Riedl and Young, 2005]
Ce modèle permet de représenter les motivations des personnages de l’histoire, mais il est limité
par l’absence de distinction formelle entre les actions des personnages, les changements d’états liés
à des actions et les événements exogènes.
GTN
Le modèle GTN (General Transition Network), proposé par [Trabasso et al., 1989], est plus complet
en cela qu’il propose de distinguer six éléments : Eléments de cadre (Settings), Evénements,
Réponses internes, Buts, Tentatives et Résultats. Les relations entre ces éléments peuvent avoir trait
à de la causalité physique, de la causalité psychologique, de la motivation ou de l’enablement, forme
faible de causalité indiquant qu’un événement rend possible un autre événement.
Ce modèle permet une représentation des scénarios plus riche au niveau des personnages, cependant
il s’attache à représenter l’histoire du point de vue de l’un d’eux. Pour obtenir une vision globale
du scénario, il est alors nécessaire d’associer plusieurs graphes.
Fabula
Le modèle Fabula [Swartjes, 2010] étend le modèle GTN en regroupant les points de vue des différents
personnages de l’histoire au sein d’un même graphe. Pour cela, il prend en compte un élément
873.3. SCÉNARIOS CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES
narratif supplémentaire ayant trait à la Perception.
De plus, il inclut une hiérarchie d’éléments narratifs permettant de qualifier ces derniers de manière
plus précise. Ainsi Perception englobe See (voir) et Hear (entendre), tandis que Internal Element inclut
Emotion et Belief.
FIGURE 3.27 – Exemple de Fabula [Swartjes, 2010]
Tandis que les deux modèles précédents étaient destinés à de l’analyse et de la compréhension
d’histoires textuelles, [Swartjes, 2010] s’intéresse à la génération automatique de cette représentation
à partir d’une simulation. Il propose donc une opérationnalisation de ce modèle sous la forme d’une
ontologie RDF, dont les éléments sont instanciés au fur et à mesure des actions et des processus internes
des personnages. Un exemple de graphe ainsi généré est présenté dans la figure 3.27.
Bilan
Les modèles issus des recherches sur la compréhension d’histoires sont des formalismes très expressifs,
qui permettent de représenter non pas simplement l’ordonnancement temporel entre les
événements mais les relations de causalité entre eux. Les typologies d’éléments et de relations qu’ils
utilisent permettent d’exprimer différents types de causalité, et de modéliser les processus décisionnels
des personnages de manière fine.
Ces modèles sont destinés à de l’analyse et de la compréhension d’histoires. Seul Fabula a vocation à
permettre la génération de récit à partir d’une histoire générée automatiquement. Cependant, dans
tous les cas, ils visent à représenter un scénario linéaire unique, et non un ensemble de scénarios.
En cela, ces formalismes sont pertinents pour représenter la trace d’une simulation en vue de son
explication, mais pas pour représenter un ensemble de scénarios d’intérêt.
3.3.2 Modèles de scénarios pédagogiques
Le domaine des EIAH (Environnements Informatiques pour l’Apprentissage Humain) s’intéresse,
lui, à la représentation de scénarios pédagogiques. Un scénario pédagogique décrit non seulement
l’enchaînement des activités pédagogiques, mais également les objectifs pédagogiques qui leur sont
88CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES 3.3. SCÉNARIOS
associés — en termes de connaissances ou compétences —, les prérequis, les rôles des différents
agents intervenant dans le scénario — qu’ils soient formateurs ou apprenants — et les outils et ressources
nécessaires à la réalisation des activités pédagogiques [Marion, 2010].
Nous présentons ici trois langages de représentation de scénario pédagogiques : IMS-LD [Koper et al.,
2003], FORMID [Guéraud and Lejeune, 2011] et POSEIDON [Marion, 2010].
IMS-LD
La norme IMS Learning Design, ou IMS-LD [Koper et al., 2003], est l’un des langages majeurs de
la communauté des EIAH. IMS-LD décrit les scénarios comme un enchaînement d’activités pédagogiques
; chaque activité est décrite par un texte ou un ensemble de documents expliquant le but de
l’activité, la tâche à réaliser et les consignes à respecter. Les activités peuvent être organisées de manière
séquentielle ou parallèle, et être soumises à des conditions, en fonction des sorties des activités
précédentes.
De par leur description textuelle, les activités sont considérées comme des “boîtes noires” du point
de vue du système de scénarisation, qui ne connaît que les entrées (ressources) et les sorties (productions).
FORMID
D’autres travaux s’intéressent donc à décrire également les scénarios au niveau des activités ellesmêmes,
afin de pouvoir contrôler à un niveau plus fin les situations d’apprentissage devant être rencontrées
par les apprenants.
L’approche FORMID [Guéraud and Lejeune, 2011] propose ainsi de représenter les scénarios comme
étant constitués de plusieurs étapes ; chaque étape comprend une consigne et un objectif à atteindre,
qui correspond à une condition sur les états de la simulation. Les étapes comprennent également
un ensemble de situations particulières, elles aussi modélisées par des conditions sur les états de la
simulation, qui peuvent correspondre soit à des erreurs classiques, soit à des étapes attendues, et qui
sont associées à des rétroactions à délivrer en réponse à ces situations. Le scénario d’une activité est
donc vu ici comme un ensemble de situations, sans liens entre elles.
POSEIDON
POSEIDON (PedagOgical ScEnario for vIrtual and informeD envirONment) est un modèle géné-
rique de scénarios pédagogiques pour les environnements virtuels pour la formation [Marion, 2010].
Il s’appuie sur MASCARET, le méta-modèle basé sur UML dont font partie les formalismes VEHA et
HAVE présentés respectivement dans les sections 3.1.1 et 3.1.2.
POSEIDON permet de décrire une activité pédagogique soit comme une boîte noire — comme
c’est le cas avec IMS-LD — soit sous la forme d’un sous-diagramme d’activité. Ce sous-diagramme
correspond en fait à un modèle BEHAVE, comme décrit dans la section 3.1.2. Les actions référencées
dans ce modèle sont associées à un rôle, qui peut soit correspondre à un apprenant, soit à un encadrant.
Ces rôles peuvent être endossés par un humain ou bien par un personnage virtuel. La description
de ce scénario est de plus enrichie avec un ensemble de rétroactions associées à des situations
particulières, de manière similaire à FORMID. Un exemple de scénario pédagogique modélisé avec
POSEIDON est présenté dans la figure 3.28.
893.3. SCÉNARIOS CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES
FIGURE 3.28 – Exemple de scénario pédagogique POSEIDON [Marion, 2010]
Bilan
Les modèles de scénarios pédagogiques permettent de décrire finement le contexte d’utilisation
de l’environnement virtuel, en plaçant cette activité au sein d’un scénario d’apprentissage global et
en l’associant à différents éléments liés à la pédagogie — objectifs d’apprentissages, compétences et
connaissances requises, rétroactions multimédia associées aux erreurs classiques, etc.
Cependant, pour la plupart des langages, le niveau de description s’arrête aux activités pédagogiques
et n’est donc pas adapté pour représenter le déroulement des événements au sein de l’environnement
virtuel. Pour ces langages, comme IMS-LD par exemple, l’environnement virtuel est vu comme une
“boîte noire”.
D’autres langages, comme FORMID et POSEIDON, se destinent plus spécifiquement à la représentation
de scénarios pédagogiques faisant intervenir des environnements virtuels, et offrent un plus
grand niveau de granularité en descendant au niveau des événements. Ils permettent d’exprimer les
spécificités des tâches en fonction d’états du monde — modélisant ainsi les situations de danger ou
d’erreur — ou encore de décrire les actions unitaires attendues de la part des apprenants et formateurs.
Ces langages suffisent pour représenter des ensembles de situations non ordonnées ou des
séquences d’actions linéaires, mais restent toutefois limités pour la description des scénarios à haut
niveau et des liens de causalité entre événements.
90CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES 3.3. SCÉNARIOS
3.3.3 Modèles d’analyses de risques
Les domaines de l’analyse de risques et de l’analyse accidentelle s’intéressent eux aussi à la
représentation de scénarios. L’analyse accidentelle se focalise sur l’analyse a posteriori d’accidents,
de sorte à reconstituer et expliquer le scénario accidentel y ayant mené. L’analyse de risque vise à
caractériser la gravité potentielle et la probabilité d’occurrence d’hypothétiques futurs accidents, en
prédisant les scénarios accidentels possibles. Pour cela, un certain nombre de formalismes graphiques
ont été élaborés pour représenter les chaînes de causalité entre événements. Nous détaillerons ici les
arbres de défaillance [Vesely et al., 1981], les arbres d’événements [Rausand and Høyland, 2004] et les
nœuds papillons [Bernuchon et al., 2006], ainsi que des travaux portant sur la transposition de ces
noeuds papillons en réseaux bayésiens [Amokrane, 2010].
Arbres de défaillances
La représentation en arbres de défaillances est une représentation arborescente des causes d’un
événement, utilisée pour décrire les enchaînements et combinaisons d’événements pouvant mener
à un événement redouté [Vesely et al., 1981]. On parle également d’arbre des causes lorsqu’il s’agit
d’un contexte d’analyse accidentelle plutôt que d’analyse de risques [Bernuchon et al., 2006].
L’arbre est constitué d’un ensemble d’événements, liés entre eux à l’aide de portes ET et OU. Les
événéments de base, qui constituent les feuilles de l’arbre, sont indépendants et sont associés à des
estimations de probabilité d’occurrence. Les liens passant par des portes OU indiquent des relations
de subsomption entre les événements, tandis que les liens passant par des portes ET indiquent des relations
de causalité (voir figure 3.29). Les probabilités d’occurrence de l’événement final et des événements
intermédiaires peuvent être calculées à partir de cette décomposition et des probabilités d’occurrence
des événements de base.
FIGURE 3.29 – Exemple de porte OU (à gauche) et de porte ET (à droite) [Vesely et al., 1981]
Cette représentation portant sur un événement accidentel particulier, son application à tout un
système peut s’avérer fastidieuse, voire impossible puisque la représentation arborescente ne permet
pas de représenter des conséquences multiples pour un même événement.
Arbres d’événements
A l’inverse, la représentation par un arbre d’événements part d’un événement initiateur, correspondant
à la défaillance d’une partie d’un système, et décrit les conséquences qui en découlent [Rausand
and Høyland, 2004].
913.3. SCÉNARIOS CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES
L’arbre est construit de gauche à droite, chaque intersection correspondant à une fonction de sécurité
: la branche du haut correspond alors au succès de cette fonction, et la branche du bas à sa dé-
faillance. Un exemple d’arbre est présenté en figure 3.30.
FIGURE 3.30 – Exemple d’arbre d’événements [Rausand and Høyland, 2004]
Les feuilles de l’arbre correspondent aux événements qui découlent de l’événement initiateur et
à leur probabilité en fonction des succès et défaillances successifs des fonctions de sécurité. Cette
représentation est toutefois très limitée pour la représentation de scénarios plus larges, puisqu’elle
ne permet que de s’intéresser à un seul événement initiateur, et nécessite de considérer les fonctions
de sécurité de manière séquentielle.
Nœuds papillons
La représentation de scénarios accidentels par des nœuds papillons peut être assimilée à l’association
d’un arbre d’événements et d’un arbre de défaillances, joints au niveau d’un événement redouté
central [Deust et al., 2008].
Cette représentation est centrée autour de la notion de barrières de sécurité. Une barrière est un
système actif ou passif, technique ou humain, assurant une fonction de sécurité [Miche et al., 2009]. Il
peut s’agir de barrières de vérification, ou prévention — qui seront situées en amont de l’événement
redouté central dans le graphe — ou de barrières de rattrapage, ou protection — qui seront situées
en aval. Les barrières techniques se rapportent à des systèmes techniques, tandis que les barrières
humaines sont constituées d’une ou plusieurs opérations devant être réalisées par un opérateur humain.
La typologie des différentes barrières est présentée en figure 3.32.
Afin de permettre le calcul des probabilités d’occurrence des différents événements redoutés, les
événements initiaux sont annotés avec leur probabilité d’occurrence, assimilée à l’estimation de leur
fréquence d’occurrence future [Deust et al., 2008]. Les barrières sont annotées avec leur niveau de
confiance ; le niveau de confiance est la classe de probabilité pour qu’une mesure de maîtrise des
risques n’assure plus la fonction de sécurité pour laquelle elle a été choisie [Deust et al., 2008].
La représentation d’un scénario par un nœud papillon étant centrée sur un événement particulier,
elle ne permet pas de représenter dans un même modèle toutes les chaînes de causalité possibles
dans un système donné. De plus, le formalisme ne distingue pas les liens de causalité des liens de
92CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES 3.3. SCÉNARIOS
FIGURE 3.31 – Nœud papillon autour de l’événement redouté central “Inflammation de produits
combustibles” [Bernuchon et al., 2006]
FIGURE 3.32 – Typologie des barrières de sécurité [Miche et al., 2009]
subsomption : dans l’exemple présenté dans la figure 3.31, les liens entre les différents événements à
gauche de la porte OU et l’événement “Présence d’une source d’inflammation” n’expriment ainsi pas
tous la subsomption, comme ça aurait été le cas avec un arbre de défaillances.
Réseaux bayésiens
Les formalismes présentés précédemment sont des formalismes graphiques, qui ne sont donc
pas directement utilisables par des systèmes informatiques. [Amokrane, 2010] a donc proposé une
opérationalisation des nœuds papillons en utilisant des réseaux bayésiens.
933.3. SCÉNARIOS CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES
FIGURE 3.33 – Extrait du modèle de risques de [Amokrane, 2010]
Les noeuds correspondent aux événements et aux barrières identifiés lors de l’analyse de risques,
et les tables de probabilité de chaque événement conditionnellement à ses causes sont déterminées
par les experts du domaine. Un extrait du modèle ainsi créé est présenté en figure 3.33. Ces réseaux
sont de plus associés à une ontologie permettant de catégoriser les événements accidentels et les barrières.
L’utilisation de réseaux bayésiens permet de calculer de manière dynamique la probabilité de réalisation
d’un événement en fonction de l’état de l’environnement virtuel, cependant cette représentation
pose certains problèmes. En particulier, l’absence d’alternatives et d’abstraction nécessite une duplication
des noeuds pour prendre en compte chaque combinaison d’instances d’objets présents dans
l’environnement.
Bilan
Les langages de représentation de scénarios issus de l’analyse de risques ont l’avantage d’être
pensés pour être utilisables par des experts du domaine, non informaticiens. L’inconvénient de ces
formalismes graphiques est qu’ils ne sont pas directement interprétables par des modules informatiques.
Une transposition de ces modèles, sous la forme d’arbres ET/OU pour les arbres de défaillance par
exemple, est cependant possible. La représentation sous forme de réseaux bayésiens proposée par
[Amokrane, 2010] permet ainsi de représenter à la fois les liens de causalité entre événements et les
probabilités conditionnelles d’occurrence, et intègre de la sémantique via l’ajout d’une ontologie des
risques. Toutefois, cette représentation manque de possibilités d’abstraction. De plus, il est difficile
pour les experts de fournir des chiffres précis pour ce qui est des probabilités conditionnelles d’occurrence.
Les langages de représentation de scénarios accidentels sont pour la plupart centrés sur un événement
accidentel particulier, et ne sont pas pensés pour fournir une vision globale des scénarios possibles
pour une simulation donnée.
Dans l’ensemble, l’origine textuelle et graphique de ces langages fait qu’ils sont parfois insuffisamment
formalisés : mélange de liens de causalité et de subsomption, notion d’événement floue (changement
d’état du monde, situation, état initial...), etc. Les experts s’approprient le langage chacun à leur
manière, ce qui rend la transposition informatique des modèles délicate.
94CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES 3.3. SCÉNARIOS
3.3.4 Automates finis et graphes orientés acycliques
Dans les environnements virtuels, la représentation de scénarios prédéfinis visant à être exécutés
dans l’environnement est souvent réalisée à l’aide d’automates d’états finis. Un automate fini est
constitué d’un ensemble fini d’états, et d’un ensemble de transitions d’un état à un autre, et sera
généralement représenté graphiquement sous la forme d’un graphe orienté. Dans le cas de scénarios,
il s’agira le plus souvent de graphes acycliques, c’est à dire que le scénario possèdera un état
initial et un ensemble d’états finaux. Les réseaux de Petri permettent d’étendre les automates finis
en autorisant une même transition à avoir plusieurs états en sortie.
FIGURE 3.34 – Exemple de scénario représenté à l’aide d’un automate [Fitzgerald et al., 2009]
Un certain nombre de formalismes basés sur les automates ont été présentés dans la section
3.1.2 pour la représentation de l’activité. De tels formalismes peuvent également être utilisés pour
représenter un scénario dans son ensemble, via la description exhaustive des événements et des
transitions possibles entre ces événements. Deux cas se présentent alors. Soit les états de l’automate
représentent les situations, et les transitions les actions possibles à partir de ces situations, comme
c’est le cas pour le scénario représenté dans la figure 3.34, issue de [Fitzgerald et al., 2009]. Soit les
états représentent les actions et les événements pouvant survenir dans l’environnement, et les transitions
les séquences d’actions possibles, comme par exemple dans [Mollet and Arnaldi, 2006].
Ces formalismes sont utilisés pour la représentation des scénarios dans les approches basées sur des
scénarios prédéfinis ou des graphes multilinéaires, mais également pour le suivi du déroulement des
événements — par exemple, avec une représentation sous la forme de réseaux de Petri dans [Thomas
et al., 2011].
Nous détaillerons ici deux langages basés sur des automates finis : Sluhrg [Devillers, 2001] et LORA
[Mollet and Arnaldi, 2006], ainsi que YALTA [Burkhardt et al., 2009] un formalisme basé sur un graphe
orienté acyclique qui vise à permettre la génération automatique d’automates finis.
Slurgh
Sluhrg (Scenario Language using HPTS running on GASP) [Devillers, 2001] est un langage de scé-
nario dérivé du C++. Il est basé sur des automates finis hiérarchiques HPTS [Donikian, 2001]. Son
objectif est de permettre la spécification à différents niveaux d’un scénario, de sorte à fournir une
expérience prédictible et reproductible dans l’environnement virtuel.
Les états des automates correspondent à des situations dans l’environnement virtuel. Les transitions
sont composées d’un ensemble de conditions et d’un ensemble d’actions. L’utilisation d’automates
hiérarchiques permet de représenter un scénario soit comme une séquence d’événements élé-
mentaires, soit comme une hiérarchie de sous-scénarios parallèles et de contraintes d’ordonnancement.
Sluhrg permet ainsi de décrire des alternatives en attachant le déclenchement de certains sous-
953.3. SCÉNARIOS CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES
scénarios à des conditions particulières. Il inclut également des instructions basées sur les relations
temporelles d’Allen, qui permettent de définir très précisément la synchronisation entre les différents
événements.
Sluhrg permet de décrire très finement un scénario ou un espace de scénarios, mais la complexité
de sa syntaxe limite son utilisation à des programmeurs expérimentés. De plus, le choix d’un langage
compilé empêche la modification dynamique de ces scénarios.
LORA
Le langage LORA (Language for Object Relation Application) [Mollet and Arnaldi, 2006] assimile
le scénario de l’environnement virtuel à la procédure prescrite devant être réalisée par l’utilisateur. La
représentation d’un scénario en LORA est composée d’un ensemble d’automates d’états finis hiérarchiques.
Les étapes de ces automates correspondent soit à un sous-automate, soit à une action du
modèle de domaine, c’est à dire à une transition appartenant à un automate du modèle d’interaction
représenté en STORM (décrit dans la section 3.1.1). Ces étapes sont liées par des relations
temporelles, de manière séquentielle ou parallèle puisqu’il est possible d’exprimer des alternatives à
l’aide de conditions sur l’état du monde.
LORA ne permettant de représenter que les actions de l’utilisateur, [Gerbaud, 2008] a proposé une extension,
LORA++, permettant de représenter des scénarios collaboratifs faisant intervenir plusieurs
agents. Les étapes sont associées à des rôles, ces rôles pouvant être liés à l’utilisateur et/ou aux personnages
virtuels.
La représentation du scénario en LORA permet de décrire le scénario comme un graphe multilinéaire
d’actions, mais ne contient pas d’informations sur les effets de ces actions sur la simulation. De plus,
il n’existe pas de distinction entre les relations qui relèvent simplement de la temporalité et celles qui
relèvent de la causalité.
YALTA
YALTA (Yet Another Language for Task Analysis) est un langage permettant de représenter un scé-
nario de manière graphique, sous la forme de graphes orientés acycliques adaptés des diagrammes
d’activité UML [Burkhardt et al., 2009]. Un objectif de YALTA est de servir de support à la génération
automatique d’automates d’états hiérarchiques HPTS++ [Lamarche and Donikian, 2002].
YALTA est un langage de modélisation de l’activité, mais permet également, grâce à la prise en compte
de rôles, de modéliser de manière centralisée le scénario d’une simulation. Ici encore, ce dernier est
assimilé à la procédure prescrite à réaliser dans l’environnement. Il est représenté sous la forme d’un
ensemble de tâches, avec un formalisme textuel d’une part pour spécifier les propriétés des tâches,
et un formalisme graphique d’autre part pour spécifier leur hiérarchie et leur ordonnancement temporel.
Les propriétés des tâches se réfèrent directement aux objets, actions et états décrits dans le modèle
de domaine. L’ordonnancement est exprimé grâce à un ensemble de flux et de noeuds ; les
noeuds de connexion permettent de spécifier la synchronisation entre différentes tâches ou encore
la présence d’alternatives. De plus, les tâches sont munies de préconditions et de postconditions, qui
permettent d’inférer les relations qui relèvent de la causalité. Un exemple de tâche modélisée avec
YALTA est présenté dans la figure 3.35.
YALTA est un langage très complet, et qui, par conséquence, s’avère complexe à maîtriser, notamment
car la représentation d’un espace de scénarios nécessite de décrire de manière exhaustive les
flux et contraintes de synchronisation entre les actions et événements intervenant dans ces scénarios.
96CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES 3.3. SCÉNARIOS
FIGURE 3.35 – Exemple de tâche modélisée avec YALTA [Burkhardt et al., 2009]
Bilan
Les automates finis et réseaux de Petri permettent de décrire très finement des espaces de scénarios.
L’ajout d’instruction temporelles, comme dans Sluhrg, permet de spécifier la synchronisation
entre les différents événements, et les éléments représentés dans le modèle peuvent référencer les
états du monde, objets et actions définies dans le modèle de domaine, de sorte à ce que la représentation
du scénario puisse être directement exécutable dans l’environnement ou puisse servir pour le
suivi du déroulement des événements.
Cependant, ces représentations supposent une définition exhaustive des transitions entre événements,
et supportent difficilement le passage à l’échelle. Les automates hiérarchiques permettent de
clarifier la représentation, mais restent difficiles d’accès pour les non informaticiens.
Des travaux ont donc été entrepris pour proposer, à l’instar de YALTA, des formalismes plus intelligibles
et qui permettent de générer automatiquement des automates finis. Cependant, ces formalismes
nécessitent eux-aussi une définition exhaustive des transitions entre les événements des scénarios.
3.3.5 Plans et points clés partiellement ordonnés
Les systèmes faisant appel à des moteurs de planification utilisent au contraire des représentations
des scénarios sous forme de plans. Un plan est constitué d’une séquence d’actions menant
d’une situation initiale à une situation finale (situation “but”).
Dans le domaine de la narration interactive, la représentation sous forme de plan est considérée
comme particulièrement pertinente pour les scénarios, puisqu’elle permet de représenter la structure
causale d’une histoire [Magerko, 2007]. Dans cette optique, de nombreux travaux utilisent non
973.3. SCÉNARIOS CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES
pas de simple plans, mais des plans partiellement ordonnés. Ces derniers permettent en effet de distinguer
ce qui, dans l’ordonnancement des actions, relève de liens de causalité, et ce qui relève simplement
de l’ordonnancement temporel. Les relations de causalité sont représentées par des liens entre
les actions, tandis que l’ordonnancement temporel est éventuellement décrit par des contraintes
supplémentaires, permettant ainsi de réaliser un même plan en ordonnant les actions de différentes
manières.
A la notion de plans est associée celles de points clés, ou plot points. Ces points clés sont liés au
concept de landmarks en planification, qui correspondent aux étapes par lesquelles doit passer le
plan pour aboutir à la situation but. Ces étapes sont classiquement extraites à partir du problème de
planification, mais certains travaux utilisent des points clés prédéfinis pour décrire des espaces de
scénarios d’intérêt. Ces points clés peuvent être décrits soit comme des ensembles d’états du monde
qui devront être atteints durant le déroulement du plan, soit comme des actions que le plan devra
contenir. A l’instar des actions d’un plan, les points clés peuvent être eux aussi partiellement ordonnés
à l’aide de liens temporels.
Nous détaillerons ici les représentations utilisées dans deux systèmes : les plans partiellement ordonnés
POCL, utilisés notamment dans Mimesis [Riedl et al., 2003], et les points clés partiellement
ordonnés utilisés dans IDA [Magerko, 2005].
Plans partiellement ordonnés — Mimesis
Les travaux de R. Michael Young, entre autres sur le système Mimesis [Riedl et al., 2003], utilisent
une représentation des scénarios sous la forme de plans POCL (Partial-Order Causal Link).
FIGURE 3.36 – Extrait d’un plan POCL [Riedl and Young, 2010]
Un plan POCL contient une situation initiale, une situation finale, un ensemble d’étapes, un ensemble
de liens de causalité et éventuellement des contraintes d’ordonnancement entre plusieurs
98CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES 3.3. SCÉNARIOS
étapes du plan. Un exemple de plan est présenté dans la figure 3.36. Chaque étape correspond à une
action et possède un ensemble de paramètres. Les étapes contiennent également les préconditions et
les effets liés à la réalisation de l’action. Ainsi, un plan n’est valide que si les précondition de chaque
étape sont satisfaites soit par un lien de causalité provenant des effets d’une étape précédente, soit
par l’état initial du monde.
Les auteurs ont étendu la planification POCL en proposant également la planification DPOCL (Decompositional
Partial-Order Causal Link) [Young and Moore, 1994]. Celle-ci permet de construire des
plans hiérarchiques en intégrant des étapes abstraites (par exemple, “Braquage de banque”) qui se
décomposent en un ensemble d’actions.
Points clés partiellement ordonnés — IDA
Le système IDA (Interactive Drama Architecture) proposé par [Magerko, 2005] utilise une représentation
de scénarios sous la forme d’un graphe de points clés partiellement ordonnés. Un extrait de
cette représentation est présenté dans la figure 3.37.
Chaque point clé contient : un ensemble de conditions, qui décrivent un ensemble de situations du
monde dans lesquels chacune de ces assertions est vérifiée ; un ensemble d’actions devant être exé-
cutées dans l’une de ces situations ; une contrainte temporelle indiquant la durée durant laquelle les
assertions doivent rester vraies. Un lien entre deux points clés A et B indique que le point clé A doit
être réalisé avant le point clé B.
FIGURE 3.37 – Points clés partiellement ordonnés [Magerko, 2005]
Ce formalisme permet de représenter un espace de scénarios constitué de l’ensemble des scénarios
possibles contenant les ordonnancements de points clés autorisés par les contraintes temporelles.
La visibilité sur cet ensemble est cependant limitée, du fait des interdépendances entre les relations
d’ordonnancement, les contraintes temporelles définies pour chaque point clé, et les préconditions
associées qui peuvent être mutuellement exclusives d’un point clé à un autre, empêchant ainsi leur
réalisation parallèle.
Bilan
La représentation sous forme de plans permet de représenter des scénarios générés dynamiquement
par un moteur de planification, et en particulier de représenter les liens de causalité entre les
actions et d’associer ces liens à des états particuliers de l’environnement virtuel.
993.3. SCÉNARIOS CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES
Ces représentations permettent de décrire des scénarios particuliers, voire des ensembles de variantes
d’un même scénario dans le cas de plans partiellement ordonnés. Par contre ils ne permettent
pas de représenter des alternatives, ni d’indiquer des informations sur la synchronisation des différents
événements.
La représentation sous forme de points clés partiellement ordonnés est moins contraignante en ce
qu’elle permet de réduire la description à celle des événements les plus importants du scénario.
Les liens entre les éléments du graphe relevant de la temporalité et non de la causalité, il n’est pas
nécessaire de décrire de manière exhaustive toutes les actions intervenant dans le déroulement du
scénario, comme c’est le cas pour les plans. Les points clés eux-mêmes peuvent être très simples —
contenant par exemple une assertion sur l’état du monde — ou plus complexes, comme c’est le cas
pour ceux d’IDA qui contiennent à la fois actions, préconditions et contraintes temporelles.
De plus, pour les points clés d’IDA comme pour les plans POCL, les étapes référencent des instances
d’objets dans l’environnement ; ces représentations sont donc limitées au niveau de l’abstraction
pour la représentation de trames scénaristiques ou d’espaces de scénarios.
3.3.6 Bilan et positionnement
Ces différents formalismes représentent tous les scénarios comme des graphes, mais y font fi-
gurer des éléments différents. Certains utilisent les actions comme éléments principaux, d’autres les
situations. De même, les liens reliant ces éléments peuvent relever de relations de causalité, de subsomption,
de décomposition ou encore d’ordonnancement temporel. Selon les besoins auxquels
ils répondent, ils intègrent également des éléments spécifiques : alternatives et préconditions, élé-
ments pédagogiques, informations sur la synchronisation entre les événements, motivations et états
internes des personnages virtuels...
Les scénarios et espaces de scénarios représentés ne sont en effet pas destinés à la même utilisation.
D’un côté, on trouve des formalismes voués à la spécification manuelle de scénarios et d’espaces
de scénarios en amont de l’utilisation de l’environnement virtuel, et qui vont servir de support à ce
dernier : scénarios pédagogiques, modèles d’analyses de risques opérationnalisés, automates finis,
points clés partiellement ordonnées, etc. De l’autre, il s’agit de formalismes destinés à représenter
des scénarios linéaires, générés dynamiquement pour être exécutés dans l’environnement virtuel
ou pour servir de traces, ou créés a posteriori : plans et modèles de compréhension d’histoires.
Selon qu’il s’agisse de représenter un scénario particulier, une trame scénaristique ou un espace de
scénarios, les besoins en termes de formalismes seront différents.
Ainsi, la représentation d’un scénario particulier va nécessiter un formalisme interprétable, qui
décrive les actions de l’utilisateur, mais aussi celles des personnages virtuels et les comportements
des systèmes techniques simulés, et référence directement les instances d’objets de l’environnement
virtuel concernées. Afin de pouvoir suivre la réalisation de ce scénario, il est nécessaire que les liens
de causalité reliant ses éléments soient associés à des états particuliers de l’environnement, en indiquant
les préconditions nécessaires à l’exécution de chaque action pour permettre la détection des
situations où le scénario n’est plus réalisable.
Puisque nous souhaitons générer dynamiquement des scénarios menant à des situations particulières,
afin de les réaliser dans l’environnement virtuel, nous opterons pour une représentation des
scénarios sous forme de plans partiellement ordonnés, qui pourront être élaborés par le moteur de
scénarisation. Le formalisme utilisé est présenté dans la partie 6.2.
La représentation d’un espace de scénarios d’intérêt en vue de spécifier les objectifs scénaristiques
fait appel à des propriétés différentes.
Tout d’abord, le formalisme utilisé doit être lui aussi interprétable, et en particulier permettre d’évaluer
la valeur de vérité liée à la réalisation de chaque situation, afin de pouvoir situer de manière dynamique
l’avancement des événements de l’environnment virtuel par rapport aux différents scénarios
considérés.
Il doit également être intelligible, afin que les espaces de scénarios d’intérêt puissent être renseignés
100CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES 3.3. SCÉNARIOS
directement par les experts. Dans notre cas, il s’agira de permettre de renseigner des connaissances
issues d’analyses de risques, afin de pouvoir simuler des scénarios accidentels pertinents pour la formation
ou l’aide à la décision.
Enfin, le formalisme doit être expressif, et permettre de représenter non seulement des relations de
causalité entre événements mais également des conjonctions et des disjonctions au niveau de ces
relations. On souhaite également pouvoir représenter des relations de subsomption, afin de raisonner
sur les scénarios à haut niveau. De même, il est nécessaire que le formalisme permette une certaine
abstraction, par l’utilisation de variables et de concepts plutôt que de référencer directement
des instances d’objets. Enfin, il doit permettre la spécification d’un ensemble de propriétés sur les
événements, comme leur probabilité d’occurrence et leur gravité.
Nous proposons un méta-modèle de la causalité nommé CAUSALITY-DL, présenté dans la section
7.1. CAUSALITY-DL est utilisé pour représenter des espaces de scénarios d’intérêt. Un parcours particulier
dans un modèle de causalité correspond à une trame scénaristique, c’est à dire à un ensemble
de points clés non instanciés et partiellement ordonnés.
1013.3. SCÉNARIOS CHAPITRE 3. REPRÉSENTATION DES CONNAISSANCES
102Deuxième partie
Contributions
103Chapitre 4
SELDON – Modèle pour la scénarisation
d’environnements virtuels
Sommaire
4.1 Approche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
4.2 Vers quoi scénariser – le moteur TAILOR . . . . . . . . . . . . . . . . . . . . . . . . . . 108
4.3 Comment scénariser – le moteur DIRECTOR . . . . . . . . . . . . . . . . . . . . . . . . 109
4.4 A partir de quoi scénariser – les langages HUMANS-DL . . . . . . . . . . . . . . . . . . 109
Notre problématique porte sur la scénarisation d’environnements virtuels, et plus particulièrement
sur la conciliation de la liberté d’action de l’apprenant, du contrôle dynamique de la simulation,
de la cohérence des comportements présentés et de l’adaptabilité de l’environnement virtuel.
La présentation des travaux de la littérature réalisée dans le chapitre 2 nous a permis de constater que
les systèmes de scénarisation existants n’offraient pas de compromis satisfaisant entre ces quatre aspects.
Les différentes approches favorisent en effet un ou deux de ces aspects au détriment des autres.
Les systèmes basés sur l’utilisation de personnages semi-autonomes, en particulier, permettent à la
fois liberté d’action, adaptabilité et contrôle mais pèchent au niveau de la cohérence des comportements
des personnages. Les travaux récents s’intéressant au contrôle de personnages autonomes, en
particulier les systèmes Thespian [Si, 2010] et Virtual Storyteller [Swartjes, 2010], se focalisent sur un
contrôle du scénario à court terme qui respecte cette cohérence, mais ne permettent pas de contrôler
le scénario dans sa globalité. Leur étude nous a cependant permis de dégager un certain nombre
d’éléments qui nous semblent pertinents pour la proposition d’un modèle de scénarisation d’environnements
virtuels.
Nous proposons ainsi le modèle SELDON, pour pour ScEnario and Learning situations adaptation
through Dynamic OrchestratioN. SELDON est un modèle pour la scénarisation extrinsèque d’environnements
virtuels, qui permet d’adapter les scénarios de manière dynamique via la prédiction et
l’ajustement de l’évolution de simulations autonomes, à partir d’un ensemble de modèles partagés
par les modules de simulation et les modules de scénarisation, de sorte à mener à des situations pertinentes
en regard de l’utilisateur.
Ce chapitre présente le modèle SELDON. Nous présentons dans un premier temps l’approche générale
du modèle, puis ses trois composantes principales, portant chacune sur un aspect de la problématique.
Le moteur TAILOR, chargé de la génération de situations d’apprentissage, vise à répondre
à la question suivante : “Comment déterminer dynamiquement les situations d’apprentissage vers
lesquelles guider le scénario, afin qu’elles soient pertinentes au regard du profil de l’apprenant et d’objectifs
de formation ?”. Le moteur DIRECTOR, chargé de la génération et de la réalisation des scénarios
dans la simulation, porte sur la problématique suivante : “Comment guider dynamiquement le
scénario d’un environnement virtuel vers ces situations en respectant la liberté d’action de l’utilisateur
et la cohérence des comportements de la simulation, tout en favorisant l’adaptabilité de cet environ-
1054.1. APPROCHE CHAPITRE 4. SELDON
nement virtuel ?”. Enfin, la suite de langages HUMANS-DL adresse quant-à-elle cette question : “A
partir de quelles connaissances peut-on réaliser cette scénarisation, et comment représenter ces connaissances
?”.
Les chapitres suivants détaillent les contributions réalisées dans le cadre de cette thèse, c’est-à-dire
le moteur DIRECTOR et l’ensemble de langages HUMANS-DL, le moteur TAILOR faisant l’objet de la
thèse de doctorat de Kevin Carpentier [Carpentier et al., 2013]. Le chapitre 5 présente ainsi les langages
de représentation du contenu, DOMAIN-DL et ACTIVITY-DL, qui permettent d’exprimer les
connaissances nécessaires à l’exécution de la simulation. Le chapitre 6 présente le moteur DIRECTOR,
qui permet de prédire et d’ajuster le scénario de la simulation pour mener à des situations particulières.
Enfin, le chapitre 7 porte sur la représentation des objectifs scénaristiques, et en particulier sur
le langage CAUSALITY-DL, qui permet la prise en compte par DIRECTOR de trames scénaristiques
d’intérêt et de contraintes globales sur les propriétés des scénarios.
4.1 Approche
Le modèle SELDON, présenté dans la figure 4.1, est un modèle pour la scénarisation extrinsèque
d’environnements virtuels. Cela signifie qu’il considère la scénarisation comme une étape supplé-
mentaire de cadrage d’un environnement virtuel existant, et non comme partie intégrante du processus
de conception de cet environnement. La scénarisation consiste donc ici à réduire l’espace des
scénarios possibles de la simulation, en vue d’une utilisation particulière. La scénarisation extrinsèque
permet de favoriser l’adaptabilité du système, en permettant de réutiliser un même module
de scénarisation avec différentes simulations.
SELDON distingue ainsi le module de scénarisation du module de simulation interactive, qui
gère la simulation du monde, la génération de comportements de personnages virtuels autonomes,
et la gestion des interactions des utilisateurs.
La simulation est conçue pour pouvoir évoluer de manière autonome, selon une approche émergente.
Un moteur de simulation du monde met à jour l’état du monde en fonction des règles de
comportement des systèmes techniques simulés, des actions déclenchées par les utilisateurs et des
actions des personnages virtuels. Ces derniers sont également autonomes, et leur comportement est
géré par un moteur basé sur un système multi-agent et pouvant intégrer différentes architectures
cognitives. Cette approche favorise elle aussi l’adaptabilité du système en permettant l’émergence
de situations et de scénarios qui ne soient pas définis explicitement au préalable.
Le modèle SELDON vise à adapter dynamiquement le scénario de l’environnement virtuel pour le
rendre pertinent par rapport aux traces d’activité de l’utilisateur. Le module de scénarisation sépare
pour cela la génération des objectifs scénaristiques dynamiques de la génération et la réalisation des
scénarios eux-mêmes. Dans un premier temps, le moteur de génération des objectifs scénaristiques
dynamiques se base sur les traces d’activité pour générer un ensemble de situations ou de propriétés
du scénarios qui soient pertinentes en regard du profil et de l’activité de l’utilisateur. Puis, le moteur
de prédiction et d’ajustement du scénario utilise ces objectifs pour générer un scénario souhaitable.
Pour cela, il utilise les modèles de connaissances qui sous-tendent la simulation pour prédire son
évolution, et oriente cette évolution à partir d’un ensemble d’ajustements indirects sur la simulation.
Ces ajustements sont transmis aux moteurs de simulation du monde et de génération des comportements
des personnages virtuels afin d’influencer leur évolution, de sorte que le scénario prédit par le
module de scénarisation se réalise effectivement dans l’environnement virtuel.
De même que les choix d’actions des personnages virtuels autonomes ne sont pas contrôlés directement
par le module de scénarisation, SELDON favorise une approche ouverte pour le choix d’actions
des utilisateurs. Ces derniers ont ainsi la possibilité de choisir à partir de l’ensemble des actions qui
sont réalisables dans la simulation à un moment donné — et ce, que cette réalisation mène à un succès
ou à un échec des conséquences qu’ils attendent pour cette action —, plutôt qu’à partir d’une
106CHAPITRE 4. SELDON 4.1. APPROCHE
FIGURE 4.1 – Modèle SELDON
présélection dépendante d’un scénario prédéfini. Cette liberté d’action est rendue possible par la
génération dynamique du scénario, les actions de l’utilisateur étant prédites à la manière de celles
des personnages virtuels autonomes, et contrôlées indirectement dans une moindre mesure par le
biais d’un contrôle environnemental.
Le modèle SELDON vise à favoriser la construction et la scénarisation d’environnements virtuels qui
aient une forte validité écologique, c’est à dire tels que les situations et les scénarios générés soient
proches de ceux rencontrés en conditions réelles. Les comportements des systèmes techniques et
des personnages virtuels sont donc calculés à partir de modèles de connaissances issus d’analyses
terrain. Ces mêmes modèles sont utilisés pour prédire et orienter indirectement ces comportements,
afin de respecter leur cohérence. De même, les trames scénaristiques d’intérêt correspondent à des
chaînes de causalité identifiées lors d’analyses terrain, en particulier d’analyses de risques. Ces connaissances
sont représentées par le biais d’un ensemble de langages de représentation liés entre eux,
qui expriment différentes vues sur une même réalité de terrain. Cet ensemble de langages est désigné
sous le nom d’HUMANS-DL.
La génération des objectifs scénaristiques et la prédiction et l’ajustement des scénarios sont réalisés
respectivement au travers des modules TAILOR et DIRECTOR, comme indiqué dans la figure 4.2.
1074.2. VERS QUOI SCÉNARISER – LE MOTEUR TAILOR CHAPITRE 4. SELDON
TAILOR DIRECTOR
FIGURE 4.2 – Composantes principales du modèle SELDON
4.2 Vers quoi scénariser – le moteur TAILOR
Le modèle SELDON distingue ainsi la génération des objectifs scénaristiques dynamiques de leur
réalisation, la génération étant l’objet du moteur TAILOR. Cette distinction permet d’avoir un système
de scénarisation qui soit modulaire, offrant la possibilité d’utiliser le module TAILOR pour
calculer automatiquement des objectifs scénaristiques, ou bien de remplacer ce module par un ensemble
d’objectifs scénaristiques prédéfinis ou par une interface permettant à un formateur d’entrer
directement des objectifs dans le système durant une session de formation, en fonction de son appréciation
des performances de l’apprenant. Cette modularité concourt, ici encore, à notre objectif
d’adaptabilité.
Le moteur TAILOR génère en sortie un ensemble d’objectifs scénaristiques dynamiques, sous la forme
de situations prescrites, de situations proscrites, et de contraintes sur les propriétés globales du scé-
nario. Ces objectifs sont décrits dans le chapitre 7.
TAILOR fait l’objet de la thèse de doctorat de Kevin Carpentier ; davantage de détails peuvent être
trouvés dans [Carpentier et al., 2013].
108CHAPITRE 4. SELDON 4.3. COMMENT SCÉNARISER – LE MOTEUR DIRECTOR
4.3 Comment scénariser – le moteur DIRECTOR
Le moteur DIRECTOR vise à réaliser dans l’environnement virtuel ces objectifs scénaristiques
définis dynamiquement. Afin de pouvoir prendre en compte des propriétés globales du scénario, il
convient de considérer celui-ci dans son ensemble. DIRECTOR utilise donc une approche basée sur
de la planification de scénario, plutôt que sur de la sélection dynamique des événements, car celle-ci
ne permet d’opérer qu’un contrôle local.
La réalisation d’un scénario ainsi généré au travers du contrôle direct, comportemental ou motivationnel,
de personnages virtuels semi-autonomes ou de changements instantanés des états des
systèmes simulés nuirait à la cohérence des comportements. Plutôt que de considérer le scénario
généré comme prescriptif, DIRECTOR adopte une approche prédictive, en utilisant les modèles de
connaissances pour prédire l’évolution de la simulation — celle des systèmes techniques comme les
comportements des personnages virtuels autonomes. Ces comportements peuvent alors être orientés
par le biais d’ajustements qui en respectent la cohérence.
Ces ajustements, et la façon dont les scénarios sont générés et réalisés, sont décrits en détail dans le
chapitre 6 portant sur DIRECTOR.
4.4 A partir de quoi scénariser – les langages HUMANS-DL
Afin de calculer les prochaines étapes de la simulation, de générer les objectifs scénaristiques et
de prédire les scénarios, les différents moteurs du modèle SELDON doivent faire appel à un ensemble
de connaissances dépendantes du domaine considéré.
Après avoir étudié, dans le chapitre 3, les langages utilisés pour la représentation du contenu scénaristique,
des objectifs scénaristiques et des scénarios, nous avons constaté que les langages existants ne
répondaient pas à nos besoins en termes d’expressivité, d’interprétabilité, d’intelligibilité et de modularité.
La proposition du modèle SELDON est donc associée à celle de la suite de langages HUMANS-DL,
qui contient trois formalismes : DOMAIN-DL, ACTIVITY-DL et CAUSALITY-DL.
DOMAIN-DL et ACTIVITY-DL sont des langages de représentation du contenu scénaristique, utilisés
pour écrire respectivement des modèles de domaine et des modèles d’activité. Les modèles qu’ils
permettent de représenter sont utilisés notamment pour le calcul des états de la simulation, et pour
la génération des scénarios prédictifs.
CAUSALITY-DL est un langage de représentation d’espaces de scénarios d’intérêt sous forme de
graphe de causalité, utilisé pour exprimer des objectifs scénaristiques statiques. Les modèles qu’il
permet d’écrire servent notamment à la génération de certains objectifs scénaristiques dynamiques
(situations prescrites et proscrites) par le moteur TAILOR, à la génération des scénarios par DIRECTOR,
mais également à la génération d’explications par le module de suivi de l’utilisateur, chargé de générer
les traces de l’environnement virtuel.
Ces trois langages correspondent à différentes vues sur une même réalité de terrain, et ont vocation
à être remplis par différents experts (ergonomes, analystes de risques, etc.).
Les langages DOMAIN-DL et ACTIVITY-DL sont présentés dans le chapitre 5, qui porte sur la représentation
du contenu scénaristique, tandis que le langage CAUSALITY-DL est présenté dans le chapitre
7, qui porte sur la représentation des objectifs scénaristiques.
1094.4. A PARTIR DE QUOI SCÉNARISER – LES LANGAGES HUMANS-DL CHAPITRE 4. SELDON
110Chapitre 5
Représentation du contenu scénaristique
Sommaire
5.1 DOMAIN-DL – Représentation du domaine . . . . . . . . . . . . . . . . . . . . . . . . 112
5.1.1 Approche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Besoins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Proposition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
5.1.2 Description du langage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Agents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Etats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Composants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Comportements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Evénements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
5.1.3 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
5.2 ACTIVITY-DL – Représentation de l’activité . . . . . . . . . . . . . . . . . . . . . . . . 120
5.2.1 Approche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Besoins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Proposition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
5.2.2 Description du langage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Tâches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Opérations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Relations temporelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Contexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Marqueurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
5.2.3 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Le contenu scénaristique correspond à l’ensemble des événements unitaires pouvant intervenir
dans le scénario, et, de manière plus large, dans l’environnement virtuel. Nous avons ici choisi d’opter
pour une scénarisation extrinsèque, afin de favoriser l’adaptabilité de l’environnement virtuel. Le
contenu scénaristique représenté va donc servir à la fois au moteur de scénarisation — ses éléments
correspondant aux éléments de base des scénarios — et à la simulation — l’évolution de cette dernière
étant calculée à partir des comportements y étant définis.
Suite à l’étude des langages et formalismes existants, nous avons identifié un ensemble de propriétés
nécessaires pour pouvoir utiliser ces langages pour scénariser des environnements virtuels en assurant
à la fois leur adaptabilité et leur cohérence : la modularité, l’intelligibilité, l’expressivité et
l’interprétabilité.
1115.1. DOMAIN-DL CHAPITRE 5. CONTENU SCÉNARISTIQUE
L’intelligibilité est nécessaire car ces langages ont vocation à être directement utilisés par des experts
(opérateurs, ergonomes, formateurs, etc.) pour écrire les différents modèles, de sorte à créer un environnement
virtuel qui soit écologiquement valide. Le remplissage direct des modèles par les experts,
sans passer par une transcription réalisée par des informaticiens, permet en effet de s’affranchir de
la vision informatique de l’humain comme un système technique, et de laisser les experts créer et
confronter leurs propres modèles sans passer par le filtre d’interprétation de l’informaticien. Or différents
experts seront focalisés sur différents modèles, ou sur différentes composantes d’un même
modèle : le fonctionnement d’un système technique particulier, les procédures prescrites, les compromis
réalisés par les agents sur le terrain... De ce fait, nous cherchons à favoriser la modularité via
la séparation du modèle du domaine et du modèle de l’activité, en permettant ainsi qu’ils soient renseignés
par des experts différents, et réutilisés en totalité ou en partie d’une application à l’autre.
Nous proposons donc de représenter le contenu scénaristique à travers deux modèles :
– un modèle du domaine, qui décrit les objets du monde et leurs états, les actions pouvant être
réalisées sur ces objets et les comportements qui en résultent ;
– un modèle de l’activité, qui décrit les enchaînements et le contexte de réalisation de ces actions
en termes de tâches et de buts, tels que les opérateurs se les représentent.
Afin d’assurer l’interprétabilité de ces modèles, il est nécessaire qu’ils soient liés entre eux, et les différents
éléments unitaires du modèle d’activité seront donc définis en référence aux éléments du
modèle du domaine.
Nous avons ainsi participé, en collaboration avec notre équipe de recherche, à la proposition des
deux langages qui sont décrits dans ce chapitre : DOMAIN-DL, pour la modélisation du domaine, et
ACTIVITY-DL, pour la modélisation de l’activité.
5.1 DOMAIN-DL – Représentation du domaine
Le modèle du domaine décrit les objets du monde, ainsi que les actions et les comportements
qui leur sont associés. Pour le représenter, nous avons proposé le langage DOMAIN-DL. Les travaux
sur DOMAIN-DL ont été réalisés avec Kevin Carpentier [Carpentier et al., 2013], et font suite aux ré-
flexions sur le langage COLOMBO et ses limites [Edward et al., 2010] [Edward, 2011]. Nous détaillons
ici l’approche choisie, ainsi que le formalisme lui-même.
5.1.1 Approche
Besoins
Nous avons identifié précédemment quatre propriétés nécessaires pour les langages de représentation
du contenu scénaristique : modularité, intelligibilité, interprétabilité et expressivité.
Pour le langage de représentation du domaine, la modularité est nécessaire afin de pouvoir ajouter,
supprimer ou modifier facilement des types d’objets, des actions ou encore des instances d’objets au
modèle. Elle est également nécessaire pour l’intégration de modèles de domaine existants.
Le modèle ayant vocation à être renseigné par les experts, le langage doit être, dans une certaine
mesure, intelligible et accessible à des non-informaticiens.
Le langage doit également être interprétable, pour que les modules informatiques utilisant les modèles
puissent interroger directement l’état du monde, exécuter les comportements pour faire évoluer
la simulation, ou encore raisonner sur les règles qui régissent les actions et notamment leurs pré-
conditions et leurs effets.
Enfin, il doit être assez expressif pour permettre de représenter les actions des personnages virtuels
comme celles des utilisateurs et leurs effets sur le monde, de même que les comportements intrinsèques
des objets qui ne sont pas liés à des actions spécifiques, et ceci qu’il s’agisse de comportements
ponctuels ou continus.
112CHAPITRE 5. CONTENU SCÉNARISTIQUE 5.1. DOMAIN-DL
En particulier, les exemples suivants ont été identifiés lors d’analyses terrain sur nos différents cas
d’application comme devant pouvoir être représentés dans le langage :
– des actions ayant des effets binaires ou numériques, comme une action “ouvrir” permettant
de faire passer une vanne d’un état “fermé” à un état “ouvert” ou une action “tourner” prenant
un angle en paramètre et faisant faire à la poignée de la vanne une rotation de l’angle en question
;
– des préconditions déterminant soit la faisabilité d’une action, soit son succès : par exemple,
l’actionnement d’un extincteur n’est faisable que si sa goupille de sécurité est retirée, tandis
que son utilisation n’aura l’effet voulu sur l’incendie que si la classe de l’extincteur est en accord
avec la nature du feu ;
– des actions ayant des conséquences sur des objets liés dynamiquement aux objets cibles, par
exemple une action “tourner” sur la poignée d’un bras de chargement d’une pompe à essence,
qui permet de verrouiller le bras sur lequel est monté la poignée à la vanne du camion sur lequel
est actuellement branché ce bras ;
– des liens sémantiques entre plusieurs états, comme le fait qu’une porte ayant un angle d’ouverture
supérieur à 45˚soit considérée comme ouverte ;
– des comportements liés à un concept donné, et non à une instance d’objet particulière, comme
un comportement de rotation ;
– des comportements faisant évoluer un état en continu : l’action “utiliser” sur un extincteur
permet par exemple de déverser n litres de mousse par pas de temps ;
– des comportements déclenchés automatiquement sous certaines conditions, par exemple
l’extinction d’un feu lorsque le rapport entre la quantité de mousse déversée et l’ampleur du
feu a atteint un certain seuil, ou le débordement d’une cuve lorsque le nombre de litres de
liquide versés dans la cuve dépasse sa capacité.
Proposition
A l’instar de [Chevaillier et al., 2009], nous distinguons trois types de connaissances nécessaires à
la description d’un modèle de domaine :
– les connaissances statiques sur le domaine, c’est à dire les objets présents dans l’environnement,
leurs états et relations ;
– les possibilités d’interaction, c’est à dire les actions réalisables sur ces objets par les agents,
qu’ils soient des utilisateurs ou des personnages virtuels autonomes ;
– les comportements, qui définissent les changements d’états ou de relations entre les objets
causés soit par des comportements intrinsèques soit par des actions.
Pour représenter ces trois types de connaissances dans un méta-modèle du domaine, nous adoptons
une posture ontologique. Une ontologie, selon [Gruber, 1993], est la spécification explicite d’une conceptualisation.
[Uschold et al., 1996] précise cette notion en proposant la définition suivante, traduite
par [Charlet, 2002] :
“
Une ontologie implique ou comprend une certaine vue du monde par rapport à un domaine
donné. Cette vue est souvent conçue comme un ensemble de concepts – e.g. entités,
attributs, processus –, leurs définitions et leurs interrelations. On appelle cela une conceptualisation.
[...] Une ontologie peut prendre différentes formes mais elle incluera nécessairement
un vocabulaire de termes et une spécification de leur signification. [...] Une ontologie
est une spécification rendant partiellement compte d’une conceptualisation.
L’utilisation d’une ontologie pour la modélisation d’un domaine apporte de nombreux avantages,
”
comme mentionnés par [Noy and Mcguinness, 2001]. Elle permet la réutilisation des connaissances
du domaine et le partage d’une compréhension commune de l’information et de sa structuration
par les différentes personnes impliquées dans la conception de l’environnement virtuel. Elle permet
1135.1. DOMAIN-DL CHAPITRE 5. CONTENU SCÉNARISTIQUE
également de rendre explicites les suppositions et les hypothèses qui sont faites lors de la création
du modèle, du fait de la subjectivité inhérente au processus de modélisation, ainsi que de raisonner
sur le modèle à l’exécution, notamment par la réalisation d’inférences, c’est à dire la création de nouvelles
connaissances à partir des connaissances explicitées dans le modèle.
L’utilisation d’une ontologie permet également de séparer les connaissances sur le domaine des connaissances
opérationnelles. Nous considérons ainsi un quatrième type de connaissances : les connaissances
dynamiques sur le domaine. Ces connaissances vont concerner les instances d’objets
actuellement présentes dans l’environnement, leurs états courants et l’historique de ces états, de
même que les relations entre elles (par exemple, le fait qu’un bras de chargement soit actuellement
branché sur une vanne donnée). Il s’agit là à la fois des connaissances indiquées par les concepteurs
lors de l’initialisation de l’environnement, de sorte que les objets du modèle du domaine correspondent
à ce qui est présent dans le modèle géométrique d’un environnement virtuel particulier, et des
connaissances générées de manière dynamique suite à l’évolution de la simulation et des interactions
des utilisateurs et des personnages virtuels. Ces connaissances sont représentées dans le modèle
par des instances liées aux concepts qui correspondent aux trois types de connaissances décrits
précédemment.
Les formalismes ontologiques étant peu adaptés pour représenter les aspects dynamiques des systèmes
(temporalité, causalité, conditionnalité, etc.), la dynamique des comportements est spécifiée
par un ensemble de règles d’évolution associé à l’ontologie.
5.1.2 Description du langage
DOMAIN-DL permet d’écrire les modèles du domaine comme des ontologies. Il est basé pour
cela sur le langage OWL-DL [Bechhofer et al., 2004], un standard W3C qui permet ainsi la réutilisation
d’ontologies existantes, contrairement au langage MOSS utilisé pour COLOMBO [Edward, 2011]
qui est moins répandu. Les règles sont représentées avec la syntaxe Jena [McBride, 2002].
Ces ontologies reposent sur le méta-modèle présenté dans la figure 5.1.
Un modèle du domaine est ainsi constitué d’un ensemble d’entités (❊♥t✐t②) liées entre elles. Ces
entités correspondent aux objets et aux concepts qui seront manipulables en regard du fonctionnement
du monde. Nous détaillerons ici les entités suivantes : objets (❖❜❥❡❝t), agents (❆❣❡♥t), états
(❙t❛t❡), composants (❈♦♠♣♦♥❡♥t), actions (❆❝t✐♦♥), comportements (❇❡❤❛✈✐♦✉r) et événements
(❊✈❡♥t).
Objets
Un objet (❖❜❥❡❝t) est une entité, concrète ou abstraite, ayant une existence propre, c’est-à-dire
pouvant être décrite ou manipulée sans qu’il soit nécessaire de connaître d’autres objets. Les objets
concrets (❈♦♥❝r❡t❡❖❜❥❡❝t) ont une existence concrète dans le monde réel, mais ils ne sont pas
nécessairement associés à une représentation géométrique dans le monde virtuel. Par exemple, un
ressort se trouvant à l’intérieur d’une autre pièce ou un nuage de gaz incolore constituent des objets
concrets. Un objet géométrique est un objet possédant une représentation géométrique dans
l’environnement virtuel. Les objets abstraits (❆❜str❛❝t❖❜❥❡❝t) n’ont au contraire pas d’existence
concrète dans le monde réel. Il peut s’agir par exemple d’un processus de production, qui sera associé
à des notions de coût et de délais.
Agents
Un agent (❆❣❡♥t) est un objet concret capable d’interagir de manière autonome avec son environnement,
c’est à dire à la fois de le percevoir et d’effectuer des actions dessus. Un agent peut
114CHAPITRE 5. CONTENU SCÉNARISTIQUE 5.1. DOMAIN-DL
Entity
Object
is-linked
Action
*
Behaviour
*
Component
1..*
1..*
AbstractObject ConcreteObject
Agent
1..*
State
1..*
StateConstraint
*
Event
DurativeEvent PunctualEvent begins-with
ends-with 1..*
DurativeBehaviour
1..*
PunctualBehaviour
1..*
EndogenousEvent
ExogenousEvent
FIGURE 5.1 – Méta-modèle ontologique de DOMAIN-DL
être un utilisateur humain ou un personnage virtuel autonome. Dans ces deux cas, il s’agira d’un
objet géométrique, c’est à dire que l’agent aura une représentation dans le monde virtuel (dans le
cas de l’utilisateur, il s’agira de son avatar). Les agents ne sont cependant pas limités aux objets
géométriques. Un formateur pouvant déclencher des événements dans l’environnement correspondra
ainsi également à un agent, pour lequel seront définies des actions particulières. Il s’agira dans ce
cas d’un objet non-géométrique, puisque l’agent n’aura pas de position dans l’environnement virtuel.
Etats
Un état (❙t❛t❡) est une condition instantanée dans laquelle se trouve un objet ou un système.
Au niveau du modèle, un état est représenté comme un ensemble de couples (attribut, valeur) liés
sémantiquement. Il peut s’agir par exemple de la valeur de l’angle d’ouverture d’une porte, et d’un
booléen définissant si celle-ci est considérée comme “ouverte” ou “fermée”.
Les états sont liés à des contraintes (❙t❛t❡❈♦♥str❛✐♥t) permettant de donner les valeurs possibles
pour les différents attributs. Dans le cas précédent, par exemple, on pourra spécifier que la valeur de
l’angle est un nombre décimal compris entre 0 et 90 degrés.
Ils peuvent également être associés à des règles de cohérence (❈♦♥str❛✐♥t❘✉❧❡s) qui permettent de
vérifier que les valeurs des attributs respectent les contraintes qui ont été définies, ainsi que de s’assurer
de la cohérence interne des valeurs des attributs au sein d’un même état. Un exemple de règle
de cohérence est présenté dans le tableau 5.1.
Composants
Un composant (❈♦♠♣♦♥❡♥t) décrit une facette d’une entité. Il peut être lié à un ensemble d’états.
Un composant “Cassable” serait par exemple lié à un état “Cassure” associé à une valeur booléenne.
1155.1. DOMAIN-DL CHAPITRE 5. CONTENU SCÉNARISTIQUE
❬✭❄① ✿❛♥❣❧❡ ❄②✮
●r❡❛t❡r❚❤❛♥✭❄②✱ ✹✺✮
✲❃
❙❡t❱❛❧✉❡✭❄①✱ ✿♦♣❡♥✱ ❞♦♠❛✐♥✿❚r✉❡✮❪
TABLE 5.1 – Exemple de règle de contrainte liant les valeurs des attributs d’un même état
Les composants permettent de regrouper les entités ayant des propriétés communes signifiantes par
rapport au domaine considéré.
La notion de composant correspond en fait à une vue particulière sur l’entité ; les relations entre
une entité et un composant relèvent donc de la subsomption. Il est ainsi possible pour une entité de
relever de plusieurs composants — une porte pourra être à la fois “Ouvrable” et “Cassable” —, comme
pour un composant d’inclure plusieurs entités — une vanne sera également “Ouvrable”. La figure 5.2
présente un extrait de modèle de domaine contenant plusieurs composants.
Component
ConcreteObject
State
Tank Valve has-valve
Fillable
Openable
Breakable
Door
Opening
Capacity
Filling
Break
value:float
value:float
full:boolean
angle:float
open:boolean
broken:boolean
FIGURE 5.2 – Exemple de composants en DOMAIN-DL
Actions
Une action (❆❝t✐♦♥) est un processus physique ou cognitif, pouvant être mis en œuvre par un
agent à l’issue d’une décision. Une action peut être ponctuelle ou continue dans le temps.
Une action est liée à un (ou plusieurs) agent(s), ainsi qu’à un ensemble de paramètres éventuels.
Ceux-ci sont modélisés sous la forme de composants, liés à l’action par des sous-relations de la relation
❛❝t✐♦♥✲t❛r❣❡t. Ainsi, l’action ❖♣❡♥ pourra par exemple être réalisée sur tous les objets qui
instancient des sous-concepts du composant ❖♣❡♥❛❜❧❡.
Le concept d’action lui-même est un sous-concept des composants ❆❝t✐✈❛❜❧❡ et ❚✐♠❡st❛♠♣❛❜❧❡,
c’est à dire qu’une action peut être active ou non à un instant t, et qu’elle peut être tracée.
Les actions sont liées à des règles d’action, représentées en Jena, qui indiquent si l’action est physique-
116CHAPITRE 5. CONTENU SCÉNARISTIQUE 5.1. DOMAIN-DL
ment réalisable ou non. Cela ne signifie cependant pas que l’action sera réussie, au sens où l’utilisateur
ou le personnage virtuel pourrait se la représenter. Par exemple, l’action “Tourner” sur une
poignée de porte sera réalisable même si la porte est verrouillée, cependant elle n’aura pas pour effet
d’ouvrir la porte dans ce cas là. Les effets d’une action sont en effet gérés par l’activation d’un ou
plusieurs comportements.
Comportements
Un comportement(❇❡❤❛✈✐♦✉r) correspond à une manière d’évoluer de l’objet ou du système qui
en est doté. Ces comportements sont représentés par des concepts, liés à des règles de comportement
écrites dans le formalisme Jena. Ces règles expriment des conditions et des effets sur les objets cibles
des comportements (dans le cas d’un comportement déclenché par une action, il s’agit des objets
cibles de l’action qui l’a déclenché), mais également sur les objets liés dynamiquement à ces objets
cibles.
La figure 5.3 et la règle donnée dans le tableau 5.2 présentent un exemple d’un tel comportement :
réaliser l’action “Tourner” sur une poignée liée à un bras de chargement a pour effet non seulement
de faire effectuer une rotation à la poignée (❚✉r♥❇❡❤❛✈✐♦✉r), mais également de déclencher un second
comportement ▲♦❝❦❇❡❤❛✈✐♦✉r qui verrouille le bras lié à la poignée (relation statique créée
lors de l’instanciation du modèle du domaine) et la vanne sur laquelle est branchée ce bras (relation
dynamique créée au cours de la simulation).
Action PunctualBehaviour
Arm
Valve is-connected-to
Lockable
Handle
is-on
Turnable
LockBehaviour
target-handle
Lock
Turn
turn-object
TurnBehaviour
Rotation
triggers
triggers
angle:float turn-angle
locked:boolean
angle:float
FIGURE 5.3 – Exemple de comportement en DOMAIN-DL
Un comportement peut être ponctuel (P✉♥❝t✉❛❧❇❡❤❛✈✐♦✉r) ou continu dans le temps. On parlera
alors de comportement duratif (❉✉r❛t✐✈❡❇❡❤❛✈✐♦✉r). Les comportements ne sont pas nécessairement
liés à des actions, et peuvent être actifs en fonction de certains états — par exemple, le
remplissage d’un récipient lorsqu’un robinet est ouvert — ou bien être déclenchés par certains événements.
Evénements
Un événement (❊✈❡♥t) est un fait marquant, qui survient à un moment donné. Un événement
peut correspondre à une agrégation de changements d’états liés de manière causale ou au maintien
des valeurs d’un ensemble d’états sur une certaine durée, dès lors qu’ils sont signifiants du point de
vue de l’observateur. On parlera de Situation pour désigner un ensemble de couples 〈état, valeur〉 ou
de relations entre objets. Un événement correspond donc au passage d’une situation à une autre, ou
au maintien d’une même situation.
1175.1. DOMAIN-DL CHAPITRE 5. CONTENU SCÉNARISTIQUE
❬▲♦❝❦❇❡❤❛✈✐♦✉r✿
✭❄❜❡❤ r❞❢✿t②♣❡ ✿▲♦❝❦❇❡❤❛✈✐♦✉r✮
✭❄❜❡❤ ❞♦♠❛✐♥✿❤❛s✲❛❝t✐✈❡✲st❛t❡ ❄st❛t❡✮
✭❄st❛t❡ ❞♦♠❛✐♥✿❛❝t✐✈❡ ❞♦♠❛✐♥✿❚r✉❡✮
✭❄❜❡❤ ❞♦♠❛✐♥✿t❛r❣❡t✲❤❛♥❞❧❡ ❄❤❛♥❞❧❡✮
✭❄❤❛♥❞❧❡ r❞❢✿t②♣❡ ✿❍❛♥❞❧❡✮
✭❄❤❛♥❞❧❡ ✿✐s✲♦♥ ❄❛r♠✮
✭❄❛r♠ ✿✐s✲❝♦♥♥❡❝t❡❞✲t♦ ❄✈❛❧✈❡✮
✭❄✈❛❧✈❡ ✿❤❛s✲❧♦❝❦✲st❛t❡ ❄❧♦❝❦st❛t❡❱✮
✭❄❧♦❝❦st❛t❡❱ ✿❧♦❝❦❡❞ ❞♦♠❛✐♥✿❋❛❧s❡✮
✭❄❛r♠ ✿❤❛s✲❧♦❝❦✲st❛t❡ ❄❧♦❝❦st❛t❡❆✮
✲❃
❙❡t❱❛❧✉❡✭❄st❛t❡✱ ❞♦♠❛✐♥✿❛❝t✐✈❡✱ s②s✿❋❛❧s❡✮
❙❡t❱❛❧✉❡✭❄❧♦❝❦st❛t❡❱✱ ✿❧♦❝❦❡❞✱ ❞♦♠❛✐♥✿❚r✉❡✮
❙❡t❱❛❧✉❡✭❄❧♦❝❦st❛t❡❆✱ ✿❧♦❝❦❡❞✱ ❞♦♠❛✐♥✿❚r✉❡✮❪
TABLE 5.2 – Règle gérant la dynamique du comportement ▲♦❝❦❇❡❤❛✈✐♦✉r
Un événement peut être ponctuel ou duratif. Un événement ponctuel (P✉♥❝t✉❛❧❊✈❡♥t) correspond
au changement instantané d’un état ou d’un ensemble d’états. Un événement duratif (❉✉r❛t✐✈❡
❊✈❡♥t) correspond au changement continu d’un état ou ensemble d’états, ou au maintien d’un état
ou ensemble d’états signifiant sur une certaine durée. Les événements duratifs sont délimités par des
événements ponctuels indiquant leur début et leur fin. Un événement peut avoir une valeur indicative,
ou bien déclencher un ou plusieurs comportements, à la manière d’une action.
Un événement peut être endogène ou exogène. Un événement endogène est la résultante de comportements
du domaine, que ceux-ci relèvent d’actions de l’utilisateur, d’actions des personnages
virtuels ou de comportements propres au système lui-même. Un événement exogène est déclenché
de manière externe au système modélisé. Les événements considérés comme endogènes ou exogènes
sont donc fortement dépendants de la couverture du modèle : par exemple, la sonnerie d’un télé-
phone dans l’environnement virtuel pourra, selon que l’appel provient d’un agent présent dans l’environnement
ou non, être considérée respectivement comme un événement endogène ou exogène.
Les événements endogènes représentés dans le modèle ontologique sont associés à des règles, qui
permettent de déterminer s’ils sont actifs ou non. Un exemple d’événement est présenté dans la fi-
gure 5.4 et les tableaux 5.3, 5.4 et 5.5.
PunctualEvent
DurativeEvent
DurativeBehaviour
Tank TankOverflow
concern-tank TankOverflowStart
TankOverflowEnd
DomeLeakBehaviour target-tank
FillingBehaviour
starts-with
ends-with FIGURE 5.4 – Exemple d’événement en DOMAIN-DL
5.1.3 Bilan
Nous avons proposé le langage DOMAIN-DL, qui utilise une représentation ontologique et un
ensemble de règles de comportement pour permettre l’écriture de modèles du domaine visant à être
118CHAPITRE 5. CONTENU SCÉNARISTIQUE 5.1. DOMAIN-DL
❬❚❛♥❦❖✈❡r❢❧♦✇❆❝t✐✈❛t✐♦♥✿
✭❄t❛♥❦ ✿❤❛s✲❢✐❧❧❛❜❧❡✲st❛t❡ ❄❢✐❧❧st❛t❡✮
✭❄❢✐❧❧st❛t❡ ✿❝❛♣❛❝✐t② ❄❝❛♣❛❝✐t②✮
✭❄❢✐❧❧st❛t❡ ✿❢✐❧❧✐♥❣ ❄q✉❛♥t✐t②✮
●r❡❛t❡r✭❄q✉❛♥t✐t②✱ ❄❝❛♣❛❝✐t②✮
♥♦❱❛❧✉❡✭✭❄① r❞❢✿t②♣❡ ✿❚❛♥❦❖✈❡r❢❧♦✇✮✱
✭❄① ✿❝♦♥❝❡r♥s✲t❛♥❦ ❄t❛♥❦✮✱
✭❄① ❞♦♠❛✐♥✿❤❛s✲❛❝t✐✈❡✲st❛t❡ ❄st❛t❡✮✱
✭❄st❛t❡ ❞♦♠❛✐♥✿❛❝t✐✈❡ ❞♦♠❛✐♥✿❚r✉❡✮✮
✲❃
❈r❡❛t❡❊✈❡♥t✭✿❚❛♥❦❖✈❡r❢❧♦✇❙t❛rt✱ ❄st❛rt❡✈✮
❙❡t❱❛❧✉❡✭❄st❛rt❡✈✱ ✿❝♦♥❝❡r♥✲t❛♥❦✱ ❄t❛♥❦✮
❈r❡❛t❡❊✈❡♥t✭✿❚❛♥❦❖✈❡r❢❧♦✇✱ ❄❡✈✮
✭❄❡✈ ❞♦♠❛✐♥✿❤❛s✲❛❝t✐✈❡✲st❛t❡ ❄❡✈st❛t❡✮
❙❡t❱❛❧✉❡✭❄❡✈st❛t❡✱ ❞♦♠❛✐♥✿❛❝t✐✈❡✱ ❞♦♠❛✐♥✿❚r✉❡✮
❙❡t❱❛❧✉❡✭❄❡✈✱ ✿❝♦♥❝❡r♥✲t❛♥❦✱ ❄t❛♥❦✮
❈r❡❛t❡❇❡❤❛✈✐♦✉r✭✿❉♦♠❡▲❡❛❦❇❡❤❛✈✐♦✉r✱ ❄❜❡❤✮
✭❄❜❡❤ ❞♦♠❛✐♥✿❤❛s✲❛❝t✐✈❡✲st❛t❡ ❄❜❡❤st❛t❡✮
❙❡t❱❛❧✉❡✭❄❜❡❤st❛t❡✱ ❞♦♠❛✐♥✿❛❝t✐✈❡✱ ❞♦♠❛✐♥✿❚r✉❡✮
❙❡t❱❛❧✉❡✭❄❜❡❤✱ ✿t❛r❣❡t✲t❛♥❦✱ ❄t❛♥❦✮❪
TABLE 5.3 – Règle permettant de détecter le début de l’événement ❚❛♥❦❖✈❡r❢❧♦✇
❬❚❛♥❦❖✈❡r❢❧♦✇❉❡❛❝t✐✈❛t✐♦♥✿
✭❄❜❡❤ r❞❢✿t②♣❡ ✿❉♦♠❡▲❡❛❦❇❡❤❛✈✐♦✉r✮
✭❄❜❡❤ ✿t❛r❣❡ts✲t❛♥❦ ❄t❛♥❦✮
✭❄❜❡❤ ❞♦♠❛✐♥✿❤❛s✲❛❝t✐✈❡✲st❛t❡ ❄❜❡❤st❛t❡✮
✭❄❜❡❤st❛t❡ ❞♦♠❛✐♥✿❛❝t✐✈❡ ❞♦♠❛✐♥✿❚r✉❡✮
✭❄❡✈ r❞❢✿t②♣❡ ✿❚❛♥❦❖✈❡r❢❧♦✇✮
✭❄❡✈ ✿❝♦♥❝❡r♥s✲t❛♥❦ ❄t❛♥❦✮
✭❄❡✈ ❞♦♠❛✐♥✿❤❛s✲❛❝t✐✈❡✲st❛t❡ ❄❡✈st❛t❡✮
✭❄❡✈st❛t❡ ❞♦♠❛✐♥✿❛❝t✐✈❡ ❞♦♠❛✐♥✿❚r✉❡✮
✭❄t❛♥❦ ✿❤❛s✲❢✐❧❧❛❜❧❡✲st❛t❡ ❄❢✐❧❧st❛t❡✮
✭❄❢✐❧❧st❛t❡ ✿❝❛♣❛❝✐t② ❄❝❛♣❛❝✐t②✮
✭❄❢✐❧❧st❛t❡ ✿❢✐❧❧✐♥❣ ❄q✉❛♥t✐t②✮
●r❡❛t❡r✭❄❝❛♣❛❝✐t②✱ ❄q✉❛♥t✐t②✮
✲❃
❙❡t❱❛❧✉❡✭❄❡✈st❛t❡✱ ❞♦♠❛✐♥✿❛❝t✐✈❡✱ ❞♦♠❛✐♥✿❋❛❧s❡✮
✭❄❜❡❤st❛t❡ ❞♦♠❛✐♥✿❛❝t✐✈❡ ❞♦♠❛✐♥✿❋❛❧s❡✮
❈r❡❛t❡❊✈❡♥t✭✿❚❛♥❦❖✈❡r❢❧♦✇❊♥❞✱❄❡♥❞❡✈✮
❙❡t❱❛❧✉❡✭❄❡♥❞❡✈✱ ✿❝♦♥❝❡r♥✲t❛♥❦✱ ❄t❛♥❦✮❪
TABLE 5.4 – Règle permettant de détecter la fin de l’événement ❚❛♥❦❖✈❡r❢❧♦✇
opérationnalisés dans des environnements virtuels.
La modularité de ce langage est assurée par l’adoption d’une posture ontologique, qui permet l’inté-
gration de modèles pré-existants. La possibilité de définir des liens de subsomption entre les entités,
de décrire les objets en fonction de leurs composantes et de découper des comportements complexes
en comportements unitaires permet de modéliser le domaine à différents niveaux, et donc d’éviter au
maximum d’introduire de la redondance dans le modèle lorsqu’il s’agit d’ajouter de nouveaux types
d’objets ou des variations de comportements.
1195.2. ACTIVITY-DL CHAPITRE 5. CONTENU SCÉNARISTIQUE
❬❉♦♠❡▲❡❛❦❇❡❤❛✈✐♦✉r✿
✭❄❜❡❤ r❞❢✿t②♣❡ ✿❉♦♠❡▲❡❛❦❇❡❤❛✈✐♦✉r✮
✭❄❜❡❤ ❞♦♠❛✐♥✿❤❛s✲❛❝t✐✈❡✲st❛t❡ ❄st❛t❡✮
✭❄st❛t❡ ❞♦♠❛✐♥✿❛❝t✐✈❡ ❞♦♠❛✐♥✿❚r✉❡✮
✭❄❜❡❤ ✿t❛r❣❡t✲t❛♥❦ ❄t❛♥❦✮
✭❄t❛♥❦ ✿❤❛s✲❢✐❧❧❛❜❧❡✲st❛t❡ ❄❢✐❧❧st❛t❡✮
✭❄❢✐❧❧st❛t❡ ✿❝❛♣❛❝✐t② ❄❝❛♣❛❝✐t②✮
✲❃
❉✐❢❢❡r❡♥❝❡✭❄❝❛♣❛❝✐t②✱ ✶✱ ❄❝❛♣❛❝✐t②✮❪
TABLE 5.5 – Règle gérant la dynamique du comportement ❉♦♠❡▲❡❛❦❇❡❤❛✈✐♦✉r
DOMAIN-DL permet d’expliciter les concepts du domaine et les liens entre ces concepts, et de les
représenter de manière graphique et non uniquement sous forme de code informatique, ce qui assure
l’intelligibilité du langage. Cette explicitation permet d’assurer l’inter-compréhension entre les
différents acteurs impliqués dans la conception de l’environnement virtuel.
L’utilisation de formalismes informatiques — OWL-DL [Bechhofer et al., 2004] et Jena [McBride, 2002]
— assure l’interprétabilité des modèles, qui peuvent être directement utilisés par le moteur de simulation
du monde. D’autre part, le modèle est inspectable, de par la représentation des comportements
sous forme de règles explicites, et la possibilité d’effectuer des requêtes et des inférences sur la base
de connaissances ontologique.
DOMAIN-DL est de plus doté d’une grande expressivité. Les règles de comportements et les primitives
issues de Jena [McBride, 2002], permettent de représenter des comportements complexes, qu’ils
soient ponctuels ou continus, notamment via la prise en compte des liens dynamiques entre les objets.
Ces comportements étant séparés des actions, il est possible de modéliser des comportements
intrinsèques du système, et non plus seulement les effets directs des actions, comme c’est le cas avec
de nombreux langages. La distinction des préconditions d’une action des conditions nécessaires au
déclenchement des comportements qui y sont liés permet d’avoir des vues différentes sur une même
action, et de considérer son “succès” comme dépendant de la tâche pour laquelle elle est réalisée,
et non plus comme inhérent à cette action. La représentation des événements comme un ensemble
signifiant d’états permet d’exprimer n’importe quelle agrégation qui serait pertinente du point de vue
de l’utilisateur. Le méta-modèle permettant de définir des relations de subsomption entre les entités,
il est de plus possible de désigner ces événements et situations à plus ou moins haut niveau. Enfin,
la description des entités par les composants qu’elles possèdent pourrait permettre d’utiliser les modèles
de domaine pour du raisonnement par analogie, que ce soit au niveau des objets ou des actions.
5.2 ACTIVITY-DL – Représentation de l’activité
Associé à DOMAIN-DL, ACTIVITY-DL est le langage qui permet d’écrire les modèles de l’activité.
Nous détaillons ici l’approche choisie, puis le langage lui-même.
5.2.1 Approche
Besoins
De même que pour le langage de modélisation du domaine, nous recherchons pour le langage de
modélisation de l’activité les quatres propriétés identifiées précédemment : modularité, intelligibilité,
interprétabilité et expressivité.
Ici encore, la modularité est nécessaire pour l’ajout, la suppression ou la modification de tâches,
de propriétés de ces tâches (préconditions, objets cibles, etc.) ou encore de leur ordonnancement.
120CHAPITRE 5. CONTENU SCÉNARISTIQUE 5.2. ACTIVITY-DL
En particulier, l’adaptation d’un environnement virtuel existant pour une application donnée (par
exemple une formation visant un site ou une procédure spécifique) nécessite la spécifiation de portions
d’activité propres à cette activité en plus ou à partir des modèles d’activité existants.
Cette modélisation étant effectuée par des experts, notamment en ergonomie du travail, le langage
doit lui-aussi être intelligible et accessible à des non-informaticiens.
Afin de pouvoir être utilisé par les différents modules informatiques comme support de génération
ou de prédiction de l’activité des personnages virtuels ou des utilisateurs, le langage doit être interprétable.
En particulier, il est nécessaire qu’il soit construit autour du modèle du domaine afin de
pouvoir lier les tâches avec les actions, objets et états qu’elles référencent.
Enfin, il est important que le langage soit suffisamment expressif pour permettre la représentation
de comportements humains, complexes et non-idéaux 1
. Il doit ainsi pouvoir représenter à la fois
l’ordonnancement hiérarchique et logique des tâches — qui sera assimilé aux motivations des personnages
virtuels et de l’utilisateur et à la façon dont ils se représentent l’activité —, leur ordonnancement
temporel ainsi que leur contexte de réalisation. Ces connaissances doivent être formalisées de
sorte à permettre à la fois la génération d’activité (pour la génération des comportements des personnages
virtuels autonomes), le suivi d’activité (pour le suivi et l’analyse des actions de l’utilisateur) et
la prédiction d’activité (pour la génération de scénarios prédictifs).
Proposition
Nous avons choisi d’opter pour une modélisation hiérarchique basée sur la notion de tâches, qui
opérationnalise des principes issus de langages utilisées en ergonomie.
Plutôt que le séquencement temporel ou logique de l’activité, ACTIVITY-DL vise à permettre la description
de la manière dont un opérateur se représente sa tâche au niveau cognitif. Il s’agit donc d’une
analyse cognitive plutôt que logique de la tâche, ce qui se traduit à la fois au niveau des propriétés
du langage (par exemple, la modélisation des activités limites tolérées par l’usage) et au niveau des
méthodes qui seront utilisées par les ergonomes pour collecter des données sur les représentations
construites par les opérateurs.
ACTIVITY-DL étend en ceci les travaux réalisés précédemment sur HAWAI-DL [Amokrane et al., 2008]
[Edward et al., 2008], qui ont été présentés dans la section 3.1.2. La formalisation proposée pour
HAWAI-DL s’est en effet avérée limitée pour la prédiction des actions des personnages dans une optique
de scénarisation.
Les principaux concepts du langage sont un ensemble de tâches/buts et de sous-tâches/sous-buts,
qui traduisent le point de vue de l’opérateur sur son activité, les relations entre ces buts, le déroulement
possible des actions en fonction du contexte et leurs conditions de satisfaction. Ce déroulement
est spécifié de différentes manières. D’une part, par des constructeurs temporels qui expriment
la décomposition temporelle des tâches mères, et par des constructeurs logiques qui expriment leur
décomposition logique. D’autre part, par un ensemble de conditions qui déterminent le contexte
de réalisation de la tâche et sont classifiées en regard de la manière dont elles sont considérées par
l’opérateur, selon qu’il s’agit d’état du monde à atteindre afin de réaliser la tâche, ou à prendre en
compte dans la décision de la réaliser ou non.
5.2.2 Description du langage
ACTIVITY-DL repose sur l’organisation hiérarchique d’un ensemble de tâches, dont les propriétés
(actions, objets cibles, états pris en compte dans les conditions, etc.) se réfèrent à des entités
décrites dans le modèle de domaine représenté en DOMAIN-DL. Les modèles décrits en ACTIVITYDL
sont représentés en XML, et associés à une représentation graphique sous forme d’arbre ; un ex-
1. Une réflexion sur la nécessité d’intégrer des aspects facteurs humains dans les modèles informatiques de représentation
des connaissances est proposée dans [Lourdeaux, 2012].
1215.2. ACTIVITY-DL CHAPITRE 5. CONTENU SCÉNARISTIQUE
emple est présenté dans la figure 5.5.
FIGURE 5.5 – Représentation d’un modèle en ACTIVITY-DL
Les modèles sont décrits selon le méta-modèle présenté dans la figure 5.6.
Task
Parent Task
1..*
Leaf Task
Operation
1
Action
1
Resource
*
Context
1
Reference
*
Constraint
*
Temporal Relation
1..*
Tag
*
Condition
*
Precondition
Contextual
Examinable
Nomological
Realisable
Favorable Regulatory
Satisfaction Condition
Satisfaction
1..*
Stop Condition
Instances Assertion Duration Iterations
FIGURE 5.6 – Méta-modèle d’ACTIVITY-DL
Nous détaillerons ici les concepts suivants : tâche (❚❛s❦), opération (❖♣❡r❛t✐♦♥), relation temporelle
(❚❡♠♣♦r❛❧ ❘❡❧❛t✐♦♥), condition (❈♦♥❞✐t✐♦♥), contexte (❈♦♥t❡①t) et marqueur (❚❛❣).
122CHAPITRE 5. CONTENU SCÉNARISTIQUE 5.2. ACTIVITY-DL
Tâches
ACTIVITY-DL est basé sur un ensemble de tâches organisées hiérarchiquement, qui reflètent le
point de vue de l’opérateur sur son activité (ce n’est donc pas une représentation de la procédure
prescrite). Chaque tâche correspond à un but, qui peut être décomposé en sous-buts jusqu’à atteindre
le niveau de granularité le plus bas qui est celui des actions unitaires. On parlera de tâches mères
pour les tâches décomposables, et de tâches feuilles pour les tâches de plus bas niveau.
Les tâches mères reflètent l’organisation de l’activité selon trois aspects :
1. l’organisation hiérarchique se fait au travers de la décomposition en tâches filles ;
2. l’organisation temporelle se fait au travers des constructeurs ;
3. l’organisation logique se fait au travers des conditions de satisfaction.
Les tâches feuilles correspondent au plus bas niveau de granularité de la description. Elles sont directement
associées à l’exécution d’une action, qui est représentée par une opération.
Opérations
Une opération (❖♣❡r❛t✐♦♥) est composée d’une action, ainsi que d’éventuelles ressources additionnelles
qui jouent le rôle des paramètres de l’action. Les ressources peuvent être soit des variables
qui seront identifiées avec des instances d’objets du monde, soit des valeurs numériques. Les actions
et les prédicats qui relient une action à ses ressources sont extraits du modèle du monde. Un exemple
de tâche fille comportant une opération est présenté dans le tableau 5.6 ; cette opération reprend les
concepts du modèle du domaine présenté dans l’exemple de la figure 5.3.
Task ❚✉r♥ t❤❡ ❍❛♥❞❧❡
Operation
Action ❚✉r♥
Ressources t✉r♥✲♦❜❥❡❝t✿ ❄❤❛♥❞❧❡
t✉r♥✲❛♥❣❧❡✿ ✾✵
TABLE 5.6 – Exemple de tâche contenant une opération
Relations temporelles
Les relations temporelles entre les tâches filles d’une même tâche mère sont représentées à l’aide
de relations d’Allen [Allen, 1983], rappelées dans le tableau 5.7. Ces relations expriment les relations
possibles entre les intervalles de temps correspondant à l’exécution des tâches. Un ensemble de relations
possibles est associé à chaque couple de tâches. Si une tâche mère possède plus de deux tâches
filles, la table de composition d’Allen est utilisée pour calculer les relations manquantes.
Afin de faciliter la saisie et d’améliorer la lisibilité du modèle, ACTIVITY-DL contient également un
ensemble de constructeurs prédéfinis, qui correspondent à des agrégats de relations d’Allen couramment
utilisés. Ces constructeurs sont partiellement inspirés de ceux présents dans des langages de
modélisation de l’activité MAD* [Sebillotte and Scapin, 1994] et GTA [Van Der Veer et al., 1996]. Par
exemple, l’association des deux relations {<,m} qui correspond à l’exécution séquentielle de deux
tâches dans un ordre donné (soit directement à la suite, soit avec un délai entre les deux), peut être exprimée
à l’aide du constructeur ❙❊◗✲❖❘❉. Les différents constructeurs sont présentés dans le tableau
5.8.
1235.2. ACTIVITY-DL CHAPITRE 5. CONTENU SCÉNARISTIQUE
Relations Illustration Description
X < Y ,Y > X X a lieu avant Y
X mY ,Y mi X Y commence quand X finit
X oY ,Y oi X X et Y se superposent
X sY ,Y si X X a lieu au début de Y
X dY ,Y d i X X a lieu pendant Y
X f Y ,Y f i X X a lieu à la fin de Y
X = Y X et Y ont lieu en même temps
TABLE 5.7 – Relations temporelles d’Allen [Allen, 1983]
Constructeur Intitulé Relations Description
IND Indépendant A{<,>,m,mi,
o,oi,s,si,d,
d i, f , f i,=}B
Tâches ne partageant ni ressources, ni cibles, et
dont les exécutions n’influent pas les unes sur
les autres. Elles n’ont donc aucune contrainte
spécifique d’ordonnancement.
SEQ Séquentiel A{<,>
,m,mi}B
Tâches n’ayant pas d’intervalle de temps commun,
s’exécutant les unes à la suite des autres,
sans ordre spécifique.
SEQ-ORD Ordonné A{<,m}B Tâches n’ayant pas d’intervalle de temps commun,
s’exécutant les unes à la suite des autres
dans un ordre déterminé.
PAR Parallèle A{o,oi,s,si,d,
d i, f , f i,=}B
Tâches étant exécutées avec au moins un intervalle
de temps commun.
PAR-SIM Simultané A{=}B Tâches partageant le même intervalle de
temps : ayant la même durée et débutant et
finissant en même temps.
PAR-START Début A{s,si,=}B Tâches ayant un intervalle de temps commun
et débutant en même temps.
PAR-END Fin A{f , f i,=}B Tâches ayant un intervalle de temps commun
et finissant en même temps.
TABLE 5.8 – Constructeurs définis dans ACTIVITY-DL
Conditions
Les tâches peuvent posséder un ensemble de conditions, qui vont spécifier le contexte de leur
exécution. Ces conditions peuvent être de trois types :
1. préconditions ;
2. conditions de satisfaction ;
3. conditions d’arrêt.
Les préconditions et conditions de satisfaction sont exprimées à l’aide d’Assertions, associées à des
opérateurs logiques : ❆◆❉, ❖❘, ❳❖❘ et ◆❖❚.
124CHAPITRE 5. CONTENU SCÉNARISTIQUE 5.2. ACTIVITY-DL
Assertions Les assertions (❆ss❡rt✐♦♥) permettent d’exprimer ou de tester un élément de connaissance
sur le monde, et peuvent être évaluées à vrai ou faux. Elles sont constituées d’un ensemble de
triplets (sujet prédicat objet). On distingue deux types d’assertions : les assertions sur le domaine, qui
ont trait à l’état du monde (par exemple : ✭❄✈❛❧✈❡✵✶ ✿✐s✲♦♣❡♥ ✿❋❛❧s❡✮), et les assertions sur l’activité,
qui ont trait à l’état de l’activité (par exemple : ✭❖♣❡♥✲❱❛❧✈❡ ✿✐s✲❞♦♥❡ ✿❚r✉❡✮). Plutôt que
de référencer directement des instances d’objets, les assertions utilisent des variables typées — reconnaissables
ici à leurs identifiants qui commencent par ❄.
En plus des prédicats du modèle du domaine, les assertions peuvent contenir des opérateurs plus
complexes, appelés primitives. Les primitives prennent un ou plusieurs arguments, et sont utilisées
soit pour calculer une valeur numérique (par exemple ♣r♦❞✉❝t✭ ❄❛✱ ❄❜✱ ❄❝✮) soit pour obtenir une
valeur booléenne suite à un test (par exemple ❧❡ss❖r❊q✉❛❧✭ ❄①✱ ❄②✮). Les primitives considérées
correspondent aux primitives de base de Jena [McBride, 2002]. Un exemple d’assertion contenant
des primitives est présenté dans le tableau 5.9.
✭❄t❛♥❦ ✿❤❛s✲❝♦♥t❡♥t✲✈❛❧✉❡ ❄①✮✱ ✭❄t❛♥❦ ✿❤❛s✲♣r♦❣r❛♠♠❡❞✲q✉❛♥t✐t②✲✈❛❧✉❡ ❄②✮✱
✭❄t❛♥❦ ✿❤❛s✲♠❛①✲❝❛♣❛❝✐t②✲✈❛❧✉❡ ❄③✮✱ s✉♠✭❄①✱ ❄②✱ ❄✇✮✱ ❣r❡❛t❡r❚❤❛♥✭❄③✱ ❄✇✮
TABLE 5.9 – Exemple d’assertion contenant des primitives
Préconditions Le contexte dans lequel une tâche peut ou doit être réalisée est exprimé par les pré-
conditions (Pr❡❝♦♥❞✐t✐♦♥). Celles-ci sont classées selon deux catégories, selon le traitement qui en
est fait par rapport à la tâche : les préconditions à réaliser (❘❡❛❧✐s❛❜❧❡ Pr❡❝♦♥❞✐t✐♦♥), et les pré-
conditions à examiner (❊①❛♠✐♥❛❜❧❡ Pr❡❝♦♥❞✐t✐♦♥). Le tableau 5.10 détaille les différentes caté-
gories de préconditions.
Préconditions à réaliser Pour qu’une tâche donnée puisse être exécutée, ses préconditions à
réaliser doivent être vraies. Dans le cas contraire, elles devront être rendues vraies avant d’exécuter
la tâche. Par exemple, si la tâche “Ouvrir la porte” possède une précondition à réaliser “La porte est
déverrouillée”, et que le monde contient l’état “La porte est verrouillée”, alors exécuter la tâche demandera
au préalable l’exécution de l’action “Déverrouiller” afin de rendre la précondition vraie. Il
existe deux types de préconditions à réaliser : nomologiques et règlementaires.
Les préconditions nomologiques (◆♦♠♦❧♦❣✐❝❛❧ Pr❡❝♦♥❞✐t✐♦♥) sont liées aux contraintes physiques
du monde 2
: si on cherche à exécuter la tâche alors qu’une précondition nomologique est fausse,
la tâche échouera. Elles incluent notamment les préconditions liées aux actions, qui sont directement
importées depuis le modèle du domaine. Par exemple, la tâche feuille “Allumer la perceuse” contient
une opération qui se rapporte à l’action “Appuyer” et à l’objet “Bouton”. Les règles de l’action “Appuyer”
ont pour précondition “Bouton non enfoncé”, ainsi cette précondition va être ajoutée comme
précondition nomologique de la tâche. Les préconditions nomologiques peuvent également être des
conditions nécessaires pour que les effets désirés de la tâche soient atteints. Par exemple, “Allumer la
perceuse” aura également pour précondition “La perceuse est branchée au circuit électrique”. Elles
correspondront dans ce cas aux préconditions des comportements déclenchés par l’action dans le
modèle du domaine, et qui seront considérés comme pertinents par rapport à la tâche.
Les préconditions réglementaires (❘❡❣✉❧❛t♦r② Pr❡❝♦♥❞✐t✐♦♥) se rapportent aux bonnes pratiques,
et expriment les conditions nécessaires pour que la tâche se déroule dans le respect des procédures.
Elles peuvent concerner des domaines tels que la sécurité, l’hygiène ou la posture professionnelle.
Pour réaliser une tâche donnée, il est nécessaire de s’assurer que ses préconditions réglementaires
2. Le terme nomologique est issu du domaine de la psychologie cognitive, d’après la définition proposée par [Goel,
1992] : “Nomological constraints are constraints dictated by natural law”.
1255.2. ACTIVITY-DL CHAPITRE 5. CONTENU SCÉNARISTIQUE
Catégorie Précondition Description
Conditions
à réaliser
Nomologique
Les préconditions nomologiques correspondent à l’état dans
lequel le monde doit se trouver pour que la tâche soit physiquement
réalisable. Elles incluent les préconditions des règles
d’exécution de l’action liée à la tâche, définies dans le modèle
du domaine.
Exemple : Pour réaliser la tâche "Ouvrir la porte", il faut que la
porte soit fermée.
Règlementaire
Les préconditions règlementaires correspondent aux états du
monde nécessaires à la bonne réalisation de la tâche selon la
procédure.
Exemple : Pour réaliser la tâche "Débrancher le tuyau", il faut
porter ses gants de protection.
Conditions
à examiner
Contextuelle
Les préconditions contextuelles correspondent à l’état du
monde dans lequel il est pertinent de réaliser la tâche. Lorsque
ces conditions ne sont pas vérifiées, la tâche peut être ignorée.
Exemple : La réalisation de la tâche "Nettoyer le tuyau" n’est pertinente
que si le tuyau est sale.
Favorable
Les préconditions favorables correspondent aux états du
monde dans lesquelles la réalisation de la tâche sera privilégiée
par rapport à d’autres tâches. Elles permettent de choisir entre
plusieurs tâches lorsqu’il existe plusieurs alternatives permettant
de réaliser une même tâche mère.
Exemple : Si le boulon est rouillé, la réalisation de la tâche "Dé-
gripper le boulon" est à privilégier.
TABLE 5.10 – Préconditions définies dans ACTIVITY-DL
soient respectées. Autrement, la réalisation de la tâche serait possible, mais ne respecterait pas la
procédure. Par exemple, la tâche “Débrancher le tuyau” nécessite que la condition “L’agent porte ses
gants de protection” soit vraie. Si l’agent ne porte pas ses gants lorsqu’il souhaite débrancher le tuyau,
il devrait aller les chercher.
Préconditions à examiner Les préconditions à examiner spécifient les états du monde qui sont
significatifs par rapport à la tâche, mais qui ne nécessitent pas spécifiquement d’actions dans le but
de les atteindre. Ces conditions sont examinées lors de la décision de réaliser ou non la tâche. Par exemple,
la tâche “Utiliser un extincteur” a une précondition à examiner “Un objet est en feu”. Cependant,
si cette condition est fausse, il n’est pas pertinent de mettre le feu à un objet dans le but de la
rendre vraie.
Les préconditions contextuelles (❈♦♥t❡①t✉❛❧ Pr❡❝♦♥❞✐t✐♦♥) décrivent les états du monde dans
lesquels la tâche est considérée comme pertinente. Si ces conditions sont fausses, la réalisation de
la tâche n’a pas de sens, et peut donc être ignorée. Par exemple, la tâche “Nettoyer le tuyau” a pour
précondition contextuelle “Le tuyau est sale”. Ainsi, si cette condition est vraie, la tâche pourrait être
réalisée, mais dans le cas contraire elle n’a pas d’intérêt.
Les préconditions favorables (❋❛✈♦r❛❜❧❡ Pr❡❝♦♥❞✐t✐♦♥) sont utilisées pour mettre des priorités
ou choisir entre plusieurs tâches dans le cas d’une alternative. Elles représentent les conditions dans
lesquelles la réalisation d’une tâche donnée serait privilégiée. Par exemple, la tâche “Alerter l’opérateur”
se décompose en deux sous-tâches alternatives : “Appeler l’opérateur par l’interphone” et “Se
déplacer à la station de travail de l’opérateur”. Etant donné que la station de travail de l’opérateur est
située dans un autre bâtiment que celui du manager, la tâche “Appeler l’opérateur par l’interphone”
126CHAPITRE 5. CONTENU SCÉNARISTIQUE 5.2. ACTIVITY-DL
aura comme précondition favorable “Il pleut”. Quand ses conditions favorables sont vraies, une tâche
aura ainsi une désirabilité plus haute que ses tâches sœurs. Cependant, quand une condition favorable
est fausse, la tâche pourrait toujours être le meilleur choix, en fonction des conditions favorables
des autres tâches. Dans cet exemple, l’état “Il ne pleut pas” ne signifie pas que l’on choisirait forcé-
ment la tâche “Se déplacer à la station de travail de l’opérateur”.
Conditions de satisfaction Les conditions de satisfaction (❙❛t✐s❢❛❝t✐♦♥ ❈♦♥❞✐t✐♦♥) expriment
le contexte dans lequel la tâche sera considérée comme réussie. Elles peuvent contenir des assertions
sur le domaine (par exemple, la tâche “Ouvrir la porte” sera réussie si l’état “Porte ouverte” est
atteint), ou bien sur l’activité (par exemple, la tâche “Mettre les Equipements de Protection Individuels”
sera réussie lorsque ses sous-tâches “Mettre les lunettes” ET “Mettre le casque” ET “Mettre les
gants” seront réussies).
Conditions d’arrêt Les conditions d’arrêt (❙t♦♣ ❈♦♥❞✐t✐♦♥s) précisent le contexte dans lequel
l’exécution de la tâche devra être stoppée, que celle-ci soit réussie ou échouée. Il existe différents
types de préconditions, présentés dans le tableau 5.11. Des conditions d’arrêt de différents types peuvent
être associées à une même tâche, liées entre elles à l’aide d’opérateurs logiques.
Condition d’arrêt Description
satisfaction La tâche est considérée comme réalisée lorsque ses conditions
de satisfaction sont vérifiées.
Exemple : La tâche "Utiliser un extincteur" doit être arrêtée une
fois que la conséquence "Feu éteint" est atteinte.
assertions La tâche est considérée comme réalisée lorsqu’un certain état
du monde est atteint.
Exemple : La tâche "Utiliser un extincteur" doit être arrêtée
lorsque l’état du monde "Extincteur vide" est atteint.
durée La tâche est considérée comme réalisée après une certaine
durée.
Exemple : Pour refroidir une brûlure, la tâche "Placer la brûlure
sous l’eau froide" doit être exécutée pendant 10 minutes.
itérations La tâche est considérée comme réalisée au bout d’un certain
nombre d’itérations.
Exemple : Pour déverrouiller la porte, il faut répêter deux fois la
tâche "Faire un tour de clé".
instances La tâche est considérée comme réalisée après avoir itéré sur un
certain ensemble d’instances.
Exemple : La tâche "Vérifier les pneus" doit être réalisée sur
l’ensemble des pneus du camion.
TABLE 5.11 – Conditions d’arrêt définies dans ACTIVITY-DL
Contexte
Les ressources associées aux tâches sont représentées comme des variables typées, afin d’être
en mesure de transposer le même arbre d’activité sur différentes instances des objets du monde, ce
qui ne serait pas possible en référençant directement les instances d’objets dans l’activité. Dès lors,
un mécanisme est nécessaire pour lier les variables d’une tâche à l’autre afin de spécifier qu’elles se
1275.2. ACTIVITY-DL CHAPITRE 5. CONTENU SCÉNARISTIQUE
réfèrent à la même instance. Par exemple, il est nécessaire de préciser que les tâches sœurs “Amener
le bras de chargement”, qui possède une ressource ❄① de type “Bras de chargement”, et “Brancher le
bras de chargement sur la vanne”, qui possède deux ressources ❄① de type “Bras de chargement” et ❄②
de type “Vanne”, font référence à la même instance de bras de chargement.
Pour ce faire, ACTIVITY-DL utilise la notion de contexte de tâche (❈♦♥t❡①t), qui déclare les variables
qui sont passées d’une tâche mère à ses tâches filles. Le contexte de la tâche contient des références,
chacune composée d’un identifiant de variable et d’un type. Le contexte d’une tâche contient toutes
les références déclarées dans le contexte de sa tâche parente. Pour les tâches feuilles, les identifiants
des variables peuvent être directement utilisés comme ressources pour une opération. Un exemple
de tâche mère partageant un contexte avec ses tâches filles est présenté dans le tableau 5.12.
(a) Tâche mère
Task ❈♦♥♥❡❝t t❤❡ ▲♦❛❞✐♥❣ ❆r♠ ❛♥❞ t❤❡ ❱❛❧✈❡
Subtasks ❇r✐♥❣ t❤❡ ▲♦❛❞✐♥❣ ❆r♠
P❧✉❣ t❤❡ ▲♦❛❞✐♥❣ ❆r♠ ♦♥ t❤❡ ❱❛❧✈❡
Constructor ❙❊◗✲❖❘❉
Context References ✭❄① r❞❢✿t②♣❡ ✿▲♦❛❞✐♥❣❆r♠✮
✭❄② r❞❢✿t②♣❡ ✿❱❛❧✈❡✮
(b) Première tâche fille
Task ❇r✐♥❣ t❤❡ ▲♦❛❞✐♥❣ ❆r♠
Operation Action ❇r✐♥❣
Ressources ❜r♦✉❣❤t✲♦❜❥❡❝t✿ ❄①
Context References ✭❄① r❞❢✿t②♣❡ ✿▲♦❛❞✐♥❣❆r♠✮
✭❄② r❞❢✿t②♣❡ ✿❱❛❧✈❡✮
(c) Seconde tâche fille
Task P❧✉❣ t❤❡ ▲♦❛❞✐♥❣ ❆r♠ ♦♥ t❤❡ ❱❛❧✈❡
Operation
Action P❧✉❣
Ressources ♠❛❧❡✲♦❜❥❡❝t✿ ❄①
❢❡♠❛❧❡✲♦❜❥❡❝t✿ ❄②
Context References ✭❄① r❞❢✿t②♣❡ ✿▲♦❛❞✐♥❣❆r♠✮
✭❄② r❞❢✿t②♣❡ ✿❱❛❧✈❡✮
TABLE 5.12 – Exemple de tâche partageant un contexte avec ses sous-tâches
Le contexte de la tâche peut également contenir des contraintes, qui expriment les relations entre
les différents objets du contexte. Ces contraintes sont modélisés par des assertions. Un exemple
de contrainte est présenté dans le tableau 5.13.
Les variables qui sont utilisées au sein de la tâche, mais pas déclarées dans le contexte, sont traitées
comme des variables anonymes, ce qui signifie qu’elles peuvent être identifiées avec n’importe quelle
instance. Ceci est particulièrement utile dans les conditions, pour exprimer l’existence (“il existe au
moins un X qui . . . ”) et la négation (“il n’existe pas de X qui . . . ”). Un exemple d’utilisation de variables
anonymes est présenté dans le tableau 5.14.
Marqueurs
ACTIVITY-DL utilise un système de marqueurs (❚❛❣) génériques pour identifier, catégoriser, pré-
ciser ou mettre en avant certains éléments du modèle d’activité. Une tâche peut posséder un ensemble
de marqueurs. Il est également possible de placer des marqueurs sur les préconditions d’une
tâche. Ces marqueurs peuvent être soit des marqueurs binaires, ou “flags” (par exemple “optionnel”)
128CHAPITRE 5. CONTENU SCÉNARISTIQUE 5.2. ACTIVITY-DL
(a) Tâche mère
Task ▲♦❝❦ t❤❡ ▲♦❛❞✐♥❣ ❆r♠
Subtasks ❚✉r♥ t❤❡ ❍❛♥❞❧❡
Context References ✭❄① r❞❢✿t②♣❡ ✿▲♦❛❞✐♥❣❆r♠✮
(b) Tâche fille
Task ❚✉r♥ t❤❡ ❍❛♥❞❧❡
Operation
Action ❚✉r♥
Ressources t✉r♥✲♦❜❥❡❝t✿ ❄②
t✉r♥✲❛♥❣❧❡✿ ✾✵
Context References ✭❄① r❞❢✿t②♣❡ ✿▲♦❛❞✐♥❣❆r♠✮
✭❄② r❞❢✿t②♣❡ ✿❍❛♥❞❧❡✮
Constraints ✭❄② ✿✐s✲♦♥ ❄①✮
TABLE 5.13 – Exemple de tâche utilisant des contraintes
Task P❧✉❣ t❤❡ ▲♦❛❞✐♥❣ ❆r♠ ♦♥ t❤❡ ❱❛❧✈❡
Operation
Action P❧✉❣
Ressources ♠❛❧❡✲♦❜❥❡❝t✿ ❄①
❢❡♠❛❧❡✲♦❜❥❡❝t✿ ❄②
Context References ✭❄① r❞❢✿t②♣❡ ✿▲♦❛❞✐♥❣❆r♠✮
✭❄② r❞❢✿t②♣❡ ✿❱❛❧✈❡✮
Preconditions Nomological ✭❆◆❉ ✭◆❖❚ ✭❄① ✿✐s✲❝♦♥♥❡❝t❡❞✲t♦ ❄♦❜❥❡❝t✶✮✮
✭◆❖❚ ✭❄♦❜❥❡❝t✷ ✿✐s✲❝♦♥♥❡❝t❡❞✲t♦ ❄②✮✮✮
TABLE 5.14 – Exemple de tâche contenant des variables anonymes
soit des marqueurs valués qui sont associés à une valeur numérique ou textuelle (par exemple “priorité
= 3”).
Il existe un ensemble de marqueurs prédéfinis, présentés dans le tableau 5.15, et des marqueurs spé-
cifiques peuvent être déclarés pour les besoins d’une application donnée. Par exemple, pour une application
liée à la formation à la maîtrise des risques, certaines tâches pourraient être marquées avec
un marqueur “risque”, de façon à les mettre en exergue lors des retours et de l’évaluation de l’activité
de l’utilisateur.
Activités Limites Tolérées par l’Usage (ALU) Un marqueur particulier défini dans ACTIVITY-DL est
celui qui désigne les Activités Limites Tolérées par l’Usage (ALU). Les ALU sont des déviations de
l’activité prescrite pouvant être tolérées dans les faits, sur certains sites et dans certaines conditions,
dans le but d’atteindre des compromis. Il s’agit d’un concept dérivé de recherches en psychologie
cognitive, qui reflète un compromis local et souvent informel entre des acteurs d’un certain domaine
[Garza and Fadier, 2007]. Par exemple, il peut s’agir de ne pas effectuer une tâche de vérification afin
d’atteindre un compromis entre productivité et sécurité. Les tâches qui constituent des ALU sont
marquées comme telles dans le modèle grâce aux marqueurs spécifiques ❆▲❯✰ et ❆▲❯✲.
On distingue en effet deux types d’ALU :
– ALU+ : les tâches interdites, qu’il est tacitement toléré de réaliser sous certaines conditions ;
– ALU- : les tâches obligatoires, qu’il est tacitement toléré de ne pas réaliser sous certaines conditions.
Les ALU sont systématiquement associées à une ou plusieurs préconditions (en général de type contextuelles),
marquées comme CLU (Conditions Limites tolérées par l’Usage). Les CLU correspondent
aux conditions dans lesquelles la déviation peut être observée.
1295.2. ACTIVITY-DL CHAPITRE 5. CONTENU SCÉNARISTIQUE
Marqueur Description
itératif Tâches devant être répétées plusieurs fois, jusqu’à ce que
leurs conditions d’arrêt soient vérifiées.
optionnel Tâches pouvant être ignorées si leurs conditions de satisfaction
sont déjà vérifiées.
expert+ Tâches ou préconditions n’étant prises en compte que
par les experts.
expert- Tâches ou préconditions n’étant pas prises en compte
par les experts.
ALU+ Tâches interdites, qu’il est toléré de réaliser quand leurs
conditions CLU sont vérifiées.
ALU- Tâches obligatoires, qu’il est toléré de ne pas réaliser
quand leurs conditions CLU sont vérifiées.
CLU Préconditions contextuelles qui déterminent la réalisation
ou la non-réalisation des tâches ALU.
TABLE 5.15 – Marqueurs prédéfinis dans ACTIVITY-DL
5.2.3 Bilan
Nous avons proposé le langage ACTIVITY-DL, qui utilise une représentation hiérarchique des
tâches ainsi qu’un ensemble de constructeurs et de conditions pour permettre l’écriture de modèles
d’activité visant à être opérationnalisés dans des environnements virtuels.
La modularité du langage est assurée notamment par l’utilisation d’une structure hiérarchique, qui
permet une certaine souplesse dans la modification du modèle, en particulier pour l’ajout d’alternatives
pour la réalisation d’un même but. Le système de variables et de contraintes permet de désigner
les cibles des actions sans devoir passer par des instances, et donc de ne pas avoir à modifier le modèle
d’activité lorsque de nouveaux objets sont ajoutés à l’environnement virtuel. En particulier, la possibilité
de spécifier des variables anonymes et des itérations sur des ensembles d’instances déterminés
par des contraintes permet de conserver l’intégrité du modèle d’activité en cas de changements dans
le modèle du domaine — par exemple, de passer facilement d’un modèle où les camions contiennent
quatre cuves à un modèle où ils en contiennent six.
L’utilisation d’un formalisme inspiré de travaux en ergonomie, et donc proches des langages utilisés
par les ergonomes qui devront remplir les modèles d’activité, participe à son intelligibilité. De plus,
la représentation hiérarchique rend les modèles à la fois plus lisibles et plus simples à éditer, par rapport
à une représentation par un ensemble d’opérateurs de planification ou de règles logiques.
Ce langage étant représenté de manière informatique, selon le formalisme XML, il est également interprétable.
L’utilisation de relations d’Allen permet de déterminer précisément les contraintes temporelles
de réalisation des tâches, en particulier pour la génération de comportements des personnages
virtuels. Les tâches référencent directement les concepts du modèle du domaine, ce qui permet
également d’effectuer du raisonnement sur les préconditions, conditions de satisfaction ou conditions
d’arrêt des tâches.
Enfin, ACTIVITY-DL est particulièrement expressif, en cela qu’il permet de décrire la représentation
que l’opérateur se fait de sa tâche, à la fois au niveau de ses motivations, du contexte dans lequel sont
réalisées les activités, ainsi que de l’ordonnancement logique et temporel entre les tâches. En particulier,
la classification des préconditions permet de séparer les conditions de l’action des conditions
de la tâche, et d’expliciter les suppositions émises par les ergonomes lors de la création du modèle,
qui se sont avérées problématiques lors des travaux précédents de l’équipe sur la modélisation en
HAWAI-DL. En effet, lorsque les ergonomes rentrent une séquence de tâches dans un modèle, il était
souvent implicitement convenu que les tâches précédentes constituaient des prérequis pour faire la
tâche. De même, pour les tâches triviales, les ergonomes n’indiquaient pas les préconditions (par ex-
130CHAPITRE 5. CONTENU SCÉNARISTIQUE 5.2. ACTIVITY-DL
emple, qu’il n’est possible d’ouvrir une porte que si elle n’est pas déjà ouverte). ACTIVITY-DL permet
de clarifier ces “non-dits” : les préconditions nomologiques sont modélisées avec le fonctionnement
du système, soit au niveau de l’action, soit au niveau des comportements qui lui sont liés, et peuvent
être directement intégrés aux préconditions lors de l’ajout d’une nouvelle tâche par l’ergonome.
1315.2. ACTIVITY-DL CHAPITRE 5. CONTENU SCÉNARISTIQUE
132Chapitre 6
DIRECTOR – Moteur de planification et
réalisation de scénarios prédictifs
Sommaire
6.1 Ajustements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
6.1.1 Happenings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
6.1.2 Late commitment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
6.1.3 Contraintes d’occurrence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
6.2 Représentation des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
6.2.1 Plan partiellement ordonné . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
6.2.2 Opérateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Opérateurs de prédiction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Opérateurs d’ajustement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
6.3 Particularité de la génération de plans prédictifs . . . . . . . . . . . . . . . . . . . . . 142
6.4 Génération d’opérateurs de prédiction . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
6.4.1 Génération des opérateurs d’action . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Tâches feuilles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Tâches mères et tâches filles ordonnées . . . . . . . . . . . . . . . . . . . . . . . . 144
Tâches filles non ordonnées et conditions favorables . . . . . . . . . . . . . . . . 147
Conditions nomologiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Conditions contextuelles et conditions de satisfaction . . . . . . . . . . . . . . . 149
Conditions règlementaires, tâches expertes et ALUs . . . . . . . . . . . . . . . . 150
Gestion du tour par tour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
6.4.2 Génération des opérateurs de comportement . . . . . . . . . . . . . . . . . . . . 151
6.5 Processus de génération, suivi et exécution du scénario . . . . . . . . . . . . . . . . . 155
6.5.1 Génération du scénario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
6.5.2 Suivi et exécution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
6.5.3 Replanification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
6.6 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Le moteur DIRECTOR vise à guider dynamiquement le scénario d’une simulation interactive peuplée
de personnages virtuels autonomes pour réaliser des objectifs scénaristiques donnés, en respectant
la liberté d’action de l’utilisateur et la cohérence des comportements de la simulation, tout en
favorisant l’adaptabilité de l’environnement virtuel.
DIRECTOR utilise des techniques de planification pour générer un scénario répondant aux objectifs
scénaristiques. Cependant, plutôt que de considérer le scénario généré comme prescriptif, DIRECTOR
traite ce dernier comme une représentation du scénario souhaité. Pour cela, il utilise les modèles de
connaissances qui sous-tendent la simulation pour prédire son évolution — au niveau des systèmes
1336.1. AJUSTEMENTS CHAPITRE 6. DIRECTOR
techniques comme des comportements des personnages virtuels autonomes et des utilisateurs. Pour
modifier cette prédiction et influencer l’évolution de la simulation, DIRECTOR utilise un ensemble
d’ajustements, qui permettent d’intervenir indirectement sur le déroulement des événements sans
en perturber la cohérence.
Nous présentons tout d’abord les différents ajustements employés par DIRECTOR, puis le formalisme
utilisé pour représenter les scénarios. Nous nous attardons ensuite sur la particularité de la génération
de plans prédictifs, avant de présenter les processus de génération des opérateurs de prédiction,
ainsi que le processus global de génération, d’exécution et de suivi du scénario dans l’environnement
virtuel.
6.1 Ajustements
Il existe un certain nombre de moyens permettant d’influencer le déroulement des événements
dans une simulation : modification des états des objets, déclenchement d’événements, envoi d’ordres
aux personnages virtuels, paramétrisation de leurs états internes, etc.
Cependant, dans le cas où la simulation contient des personnages virtuels autonomes ou semi-autonomes,
la plupart de ces moyens d’actions sont problématiques. Nous avons ainsi pu voir dans le
chapitre 2 que le contrôle de personnages virtuels semi-autonomes par des ordres au niveau comportemental
ou motivationnel mettait en péril la cohérence de leurs comportements. De même, les
changements forcés d’états des objets (par exemple, un objet cassé redevenant intact) contrarient
l’explicabilité du scénario global.
Il est donc nécessaire d’identifier un certain nombre de leviers permettant de modifier le cours du
scénario sans pour autant faire obstacle à sa cohérence. Ces ajustements doivent à la fois favoriser la
validité écologique de l’environnement virtuel en respectant l’intégrité des modèles de domaine et
d’activité, et assurer l’explicabilité des comportements individuels et du scénario dans son ensemble.
Pour exercer un niveau de contrôle satisfaisant sur une simulation, nous estimons qu’il est nécessaire
de pouvoir influencer à la fois l’issue des comportements des systèmes techniques simulés et les dé-
cisions prises par les personnages virtuels. Influencer les choix d’actions des personnages virtuels —
sans pour autant leur donner d’ordres — peut se faire de deux manières : soit en agissant sur l’état du
monde, et donc sur la représentation qu’en a le personnage — ce que [Blumberg and Galyean, 1997]
nomment contrôle environnemental—, soit en agissant sur l’état mental du personnage virtuel —
ce qui correspond au contrôle motivationnel. Si le contrôle motivationnel direct peut nuire à la cohérence
des comportements, il est également possible d’effectuer un contrôle motivationnel indirect,
en prévoyant un changement d’état mental du personnage suite à un changement d’état d’un objet.
On se retrouve alors à nouveau dans une situation de contrôle environnemental. Il est cependant
nécessaire de s’assurer que ces ajustements soient cohérents à la fois au niveau des personnages
virtuels et au niveau des systèmes techniques ; ainsi, si le contrôle environnemental est réalisé en
déclenchant des comportements et en modifiant les états des objets de manière arbitraire, les comportements
des personnages virtuels resteront certes cohérents, mais le scénario global ne sera pas
explicable.
Nous proposons avec DIRECTOR trois types d’ajustements permettant d’assurer cette cohérence :
– les happenings, c’est à dire le déclenchement d’événements exogènes ;
– le late commitment, qui consiste à préciser progressivement durant la simulation des états
laissés incertains à l’initialisation ;
– les contraintes d’occurrence, qui permettent d’outrepasser les choix aléatoires pour les comportements
probabilistes.
134CHAPITRE 6. DIRECTOR 6.1. AJUSTEMENTS
6.1.1 Happenings
La manière la plus simple d’intervenir sur l’environnement virtuel est par le déclenchement d’évé-
nements particuliers, nommés happenings. Comme décrit dans la section 5.1, les événements repré-
sentés dans le modèle du domaine peuvent être soit endogènes, soit exogènes. Contrairement aux
événements endogènes, qui résultent d’un comportement du domaine — que celui-ci fasse suite
à une action ou bien à un autre comportement du système technique—, les événements exogènes
ne sont pas considérés comme étant la conséquence d’un autre phénomène modélisé, et peuvent
donc apparaître dans l’environnement virtuel sans pour autant nécessiter la présence d’une cause
permettant de les expliquer. Par exemple, l’arrivée d’un orage ou la réception d’un appel téléphonique
pourront correspondre dans certains modèles de domaine à des événements exogènes. Le fait qu’un
événement soit considéré comme endogène ou exogène dépend en effet fortement de la couverture
du modèle considéré.
Les happenings correspondent aux événements qui sont à la fois ponctuels et exogènes. Tandis que
la valeur d’activation des événements endogènes est déterminée par des règles d’activation qui inspectent
les états ou changement d’états du monde auxquels correspondent l’événement, les happenings
sont activés explicitement, à la manière des actions. La création et l’activation d’un happening
résulte de la réception par le moteur de simulation d’un message contenant l’événement et ses
paramètres, par exemple ✭P❤♦♥❡❈❛❧❧ ❤❛s✲♣❤♦♥❡✿P❤♦♥❡✵✶✮. L’activation d’un happening va ainsi
déclencher un certain nombre de comportements. Les règles associées ont la particularité de ne
pas posséder de préconditions. Un exemple est présenté dans le tableau 6.1. Cependant, les comportements
associés peuvent posséder des préconditions qui vont déterminer l’application ou non
de leurs effets. Par exemple, l’événement P❤♦♥❡❈❛❧❧ n’aura aucun effet si le téléphone est éteint, que
ce soit pour le comportement ❘✐♥❣✐♥❣❇❡❤❛✈✐♦✉r correspondant à la sonnerie du téléphone ou pour
le comportement ❙♣❛r❦❇❡❤❛✈✐♦✉r correspondant à la création d’une étincelle.
❬P❤♦♥❡❈❛❧❧❚r✐❣❣❡r✐♥❣✿
✭❄❡✈t r❞❢✿t②♣❡ ✿P❤♦♥❡❈❛❧❧✮
✭❄❡✈t ❞♦♠❛✐♥✿❤❛s✲❛❝t✐✈❡✲st❛t❡ ❄st❛t❡✮
✭❄st❛t❡ ❞♦♠❛✐♥✿❛❝t✐✈❡ ❞♦♠❛✐♥✿❚r✉❡✮
✭❄♣❤♦♥❡ r❞❢✿t②♣❡ ✿P❤♦♥❡✮
✭❄❡✈t ✿❝♦♥❝❡r♥s✲♣❤♦♥❡ ❄♣❤♦♥❡✮
✲❃
❙❡t❱❛❧✉❡✭❄st❛t❡✱ ❞♦♠❛✐♥✿❆❝t✐✈❡✱ ❞♦♠❛✐♥✿❋❛❧s❡✮
❈r❡❛t❡❇❡❤❛✈✐♦✉r✭✿❘✐♥❣✐♥❣❇❡❤❛✈✐♦✉r✱ ❄❜❡❤✮
✭❄❜❡❤ ❞♦♠❛✐♥✿❤❛s✲❛❝t✐✈❡✲st❛t❡ ❄❜❡❤st❛t❡✮
❙❡t❱❛❧✉❡✭❄❜❡❤st❛t❡✱ ❞♦♠❛✐♥✿❛❝t✐✈❡✱ ❞♦♠❛✐♥✿❚r✉❡✮
❙❡t❱❛❧✉❡✭❄❜❡❤✱ ✿t❛r❣❡t✲♣❤♦♥❡✱ ❄♣❤♦♥❡✮
❈r❡❛t❡❇❡❤❛✈✐♦✉r✭✿❙♣❛r❦❇❡❤❛✈✐♦✉r✱ ❄❜❡❤✷✮
✭❄❜❡❤✷ ❞♦♠❛✐♥✿❤❛s✲❛❝t✐✈❡✲st❛t❡ ❄❜❡❤st❛t❡✷✮
❙❡t❱❛❧✉❡✭❄❜❡❤st❛t❡✷✱ ❞♦♠❛✐♥✿❛❝t✐✈❡✱ ❞♦♠❛✐♥✿❚r✉❡✮
❙❡t❱❛❧✉❡✭❄❜❡❤✷✱ ✿t❛r❣❡t✲♣❤♦♥❡✱ ❄♣❤♦♥❡✮❪
TABLE 6.1 – Règle liée au déclenchement de l’événement exogène P❤♦♥❡❈❛❧❧
Les événements exogènes et duratifs sont également activés et désactivés de manière externe, à
l’aide d’happenings qui correspondent au début et à la fin de l’événement. Ainsi, l’événement duratif
❘❛✐♥ correspondant à une averse sera activé lors du déclenchement de l’événement ponctuel
❘❛✐♥❙t❛rt, correspondant au début de l’averse, et arrêté au moment du déclenchement de l’événement
ponctuel ❘❛✐♥❙t♦♣.
1356.1. AJUSTEMENTS CHAPITRE 6. DIRECTOR
6.1.2 Late commitment
Dans la plupart des environnements virtuels, le scénario de la simulation est limité par les conditions
initiales. Cependant, il existe dans certains cas des états qu’il n’est pas nécessaire de définir dès
le début de la simulation. Prenons l’exemple d’une vanne qui possède un joint, qui, s’il est usé, peut
causer une fuite lorsque le bouchon de la vanne est enlevé. Tant que la vanne a son bouchon, l’état
du joint n’est pas connu de l’utilisateur, et ce n’est qu’en enlevant le bouchon qu’il pourra inférer
l’état du joint à partir de la présence ou non d’une fuite. On pourrait donc imaginer garder cet état
indéterminé jusqu’à ce que le bouchon soit enlevé, et qu’il soit déterminé à ce moment en fonction
de si l’on souhaite déclencher ou non la fuite. Le même principe peut être appliqué à tous les états qui
ne sont pas directement perceptibles par l’utilisateur, du moment qu’ils n’influencent pas les actions
des personnages virtuels ou les réactions des systèmes techniques.
Le late commitment, proposé par [Swartjes, 2010], consiste à permettre l’ajout, au cours de la simulation,
d’un ensemble de faits qui seront considérés rétrospectivement comme faisant partie des
conditions initiales. Ces faits sont ajoutés en fonction des besoins du scénario, à partir d’un ensemble
de framing operators qui définissent les éléments pouvant y être ajoutés. Notre modèle du late
commitment s’inspire de ce principe, mais se rapproche davantage des travaux de [Riedl, 2004] sur
l’Initial State Revision, en cela que ce dernier déclare explicitement les états considérés comme indéfinis
et les ensembles de valeurs pouvant être prises par ces états. Les travaux sur l’ISR portant
sur la génération d’un scénario hors-ligne, la nécessité de spécifier les valeurs de ces états apparaît
au cours du processus de planification, lorsque ces états interviennent dans les préconditions d’une
action. DIRECTOR réalisant au contraire la génération du scénario et l’exécution des ajustements de
manière dynamique au cours du déroulement de la simulation, il s’agira ici de spécifier ces valeurs
soit suite aux besoins du scénario, soit suite aux besoins de la simulation elle-même, lorsque les états
interviennent dans les règles de comportement des objets de l’environnement virtuel.
Notre modèle permet ainsi de déclarer, à partir d’un modèle de domaine donné, un certain nombre
d’états pouvant faire l’objet d’un tel mécanisme. On parlera d’une opération de “commitment"
lorsqu’il s’agira de réduire l’ensemble des valeurs possibles associé à un tel état. Ces états sont indiqués
dans le modèle de domaine comme étant des sous-concepts d’un composant ❈♦♠♠✐t❛❜❧❡.
Les valeurs initiales des attributs correspondant à ces états sont alors indéfinies : les attributs booléens
sont associés à la valeur ❞♦♠❛✐♥✿❯♥❦♥♦✇♥, tandis que les attributs numériques sont associés à une
valeur sous forme d’intervalle. Cela permet ainsi de raffiner progressivement la valeur des attributs
numériques : dans le cas où une règle de comportement nécessite seulement de savoir si une valeur
est supérieure ou non à un seuil donné, il sera possible de réduire l’intervalle sans pour autant spéci-
fier une valeur particulière.
Commitable Component
ConcreteObject
State
Tank
has-valve Valve
Spring has-spring
Breakable
Break
Spring01
Valve01
has-spring
Tank01
has-valve
broken:Unknown Break01
FIGURE 6.1 – Exemple d’état “commitable” dans le modèle de domaine
Les états pouvant être considérés comme “commitables” ne sont pas les états génériques spéci-
fiés dans le modèle du domaine (ex : ouverture, rotation, etc.), mais au contraire des instances d’é-
tats associées à des objets particuliers. Par exemple, on peut vouloir déclarer que l’état d’ouverture
d’une vanne est inconnu, puisqu’il n’est pas perceptible immédiatement, tandis que l’état d’ouver-
136CHAPITRE 6. DIRECTOR 6.1. AJUSTEMENTS
ture d’une porte doit être spécifié dès l’initialisation. Le fait qu’un état soit commitable ou non ne
peut donc être précisé directement au niveau des concepts d’états de l’ontologie. Pour spécifier ces
états, on utilise donc des règles d’initialisation qui précisent les propriétés des états pouvant faire
l’objet d’opérations de “commitment”, permettant ainsi des descriptions complexes. Un exemple de
règle d’initialisation est présenté dans le tableau 6.2, tandis que la figure 6.1 correspond à la portion
de modèle de domaine associée.
❬❙♣r✐♥❣❇r❡❛❦■♥✐t✐❛❧✐s❛t✐♦♥✿
✭❄t❛♥❦ ✿❤❛s✲✈❛❧✈❡ ❄✈❛❧✈❡✮
✭❄✈❛❧✈❡ ✿❤❛s✲s♣r✐♥❣ ❄s♣r✐♥❣✮
✭❄s♣r✐♥❣ ✿❤❛s✲❜r❡❛❦✲st❛t❡ ❄st❛t❡✮
✲❃
❙❡t❱❛❧✉❡✭❄st❛t❡ ❞♦♠❛✐♥✿✐s✲❛ ❞♦♠❛✐♥✿❈♦♠♠✐t❛❜❧❡✮❪
TABLE 6.2 – Exemple de règle d’initialisation de la propriété ❈♦♠♠✐t❛❜❧❡ d’un état
Les opérations de commitment peuvent être directement effectuées par DIRECTOR, afin de réaliser
un ajustement sur le scénario. Elle peuvent également être initiées par le moteur de simulation
du monde : lorsque les connaissances sur un état donné sont insuffisantes pour calculer la valeur de
vérité d’une précondition d’un comportement, le moteur de simulation peut envoyer une requête à
DIRECTOR lui demandant de préciser la valeur de cet état. Dans le cas où DIRECTOR a déjà prévu un
ajustement à réaliser sur cette valeur, il peut envoyer en retour l’opération de commitment prévue ;
dans le cas contraire, la valeur de cet état n’ayant pas d’influence sur le scénario planifié, il optera pour
une valeur par défaut. Dans le cas où la requête du moteur de simulation vise à lever l’incertitude sur
une précondition particulière, cette condition pourra être transmise à DIRECTOR, qui pourra ainsi
adopter une approche de least commitment en spécifiant un intervalle plutôt qu’une valeur spéci-
fique. Le diagramme de séquence correspondant à ces messages est présenté dans la figure 6.2.
FIGURE 6.2 – Diagramme de séquence concernant les opérations de “commitment”
Le late commitment ne concerne pas seulement les états des systèmes techniques simulés, mais
peut également s’appliquer aux états internes des personnages virtuels autonomes. Ici encore, il est
1376.1. AJUSTEMENTS CHAPITRE 6. DIRECTOR
nécessaire que le comportement du personnage reste cohérent, et donc que l’état concerné n’intervienne
pas dans son processus de prise de décision tant qu’il est indéfini. Par exemple, sur une
procédure donnée, il est possible que les opérateurs experts et les opérateurs novices se comportent
de manière similaire pour réaliser les premières tâches de la procédure. Il est donc possible de laisser
le niveau d’expérience d’un personnage virtuel indéfini jusqu’à ce qu’il intervienne dans une précondition
ou un marqueur d’une des tâches considérées dans le modèle d’activité. C’est dans ce cas le
moteur de simulation des personnages virtuels qui prendra le rôle du moteur de simulation repré-
senté dans la figure 6.2 pour demander à DIRECTOR de lever l’incertitude sur la valeur.
6.1.3 Contraintes d’occurrence
Le troisième type d’ajustements pouvant être réalisé par DIRECTOR est la spécification de contraintes
d’occurrence sur des comportements probabilistes.
Selon la granularité de la modélisation du domaine, il peut exister un certain nombre de règles régissant
des comportements qui soient simplifiées grâce à l’utilisation de probabilités. Par exemple, dans
le cas d’une fuite, il est possible dans certains cas que des éclaboussures atteignent les personnes
présentes aux alentours. Si la modélisation du domaine ne va pas jusqu’au niveau de la simulation
des fluides, il est possible de représenter de telles conséquences avec une règle de probabilité, par
exemple en modélisant qu’il y a 30% de chances que des éclaboussures se produisent. Dans de tels
cas, il devient possible de forcer de manière dynamique l’occurrence, ou la non-occurrence du comportement,
plutôt que de déterminer celle-ci de manière aléatoire.
Ces règles sont modélisées en DOMAIN-DL à l’aide de la primitive ❉r❛✇, qui permet d’effectuer un
tirage aléatoire et de comparer directement le résultat de ce tirage à une valeur de probabilité donnée,
représentant la fréquence d’occurrence du comportement. Ce tirage est associé à un identifiant. Un
exemple de règle est présenté dans le tableau 6.3.
❬▲❡❛❦❙♣❧❛tt❡r✐♥❣✿
✭❄❡✈ r❞❢✿t②♣❡ ✿▲❡❛❦✮
✭❄❡✈ ❞♦♠❛✐♥✿❤❛s✲❛❝t✐✈❡✲st❛t❡ ❄st❛t❡✮
✭❄st❛t❡ ❞♦♠❛✐♥✿❛❝t✐✈❡ ❞♦♠❛✐♥✿❚r✉❡✮
✭❄❡✈ ✿❝♦♥❝❡r♥✲♦❜❥❡❝t ❄♦❜❥✮
✭❄❛❣t r❞❢✿t②♣❡ ❞♦♠❛✐♥✿❆❣❡♥t
✭❄❛❣t ✿✐s✲❝❧♦s❡✲t♦ ❄♦❜❥✮
❉r❛✇✭✏▲❡❛❦❙♣❧❛tt❡r✐♥❣✑✱ ✵✳✸✮
✲❃
❈r❡❛t❡❇❡❤❛✈✐♦✉r✭✿❙♣❧❛tt❡r✐♥❣❇❡❤❛✈✐♦✉r✱ ❄❜❡❤✮
✭❄❜❡❤ ❞♦♠❛✐♥✿❤❛s✲❛❝t✐✈❡✲st❛t❡ ❄❜❡❤st❛t❡✮
❙❡t❱❛❧✉❡✭❄❜❡❤✱ ✿t❛r❣❡t✲s♦✉r❝❡✱ ❄♦❜❥✮
❙❡t❱❛❧✉❡✭❄❜❡❤✱ ✿t❛r❣❡t✲❞❡st✱ ❄❛❣t✮
❙❡t❱❛❧✉❡✭❄❜❡❤st❛t❡✱ ❞♦♠❛✐♥✿❛❝t✐✈❡✱ ❞♦♠❛✐♥✿❚r✉❡✮❪
TABLE 6.3 – Règle de déclenchement probabiliste du comportement ❙♣❧❛tt❡r✐♥❣❇❡❤❛✈✐♦✉r suite à
l’événement ▲❡❛❦
Tant que la probabilité originelle associée au tirage est supérieure à 0 et inférieure à 1, il est possible
de contraindre l’occurrence du comportement en associant à l’identifiant du tirage une nouvelle
valeur de probabilité. Ainsi, l’envoi par DIRECTOR d’un message contenant ✭✏▲❡❛❦❙♣❧❛tt❡r✐♥❣✑✱
✶✮ aura pour effet d’assurer le déclenchement du comportement ❙♣❧❛tt❡r✐♥❣ lors de la prochaine
activation de l’événement ▲❡❛❦.
138CHAPITRE 6. DIRECTOR 6.2. REPRÉSENTATION DES SCÉNARIOS
6.2 Représentation des scénarios
Ces ajustements sont utilisés par DIRECTOR pour modifier le scénario de l’environnement virtuel.
Pour représenter ces scénarios, DIRECTOR utilise un formalisme de représentation sous forme de
plans partiellement ordonnés.
Nous avons présenté dans la section 3.3 différents formalismes utilisés pour la représentation de
scénarios particuliers et d’espaces de scénarios. Suite à cette étude, nous avons pu extraire différentes
propriétés nécessaires pour la représentation d’un scénario particulier destiné à être suivi et réalisé
dans un environnement virtuel. D’une part, le formalisme utilisé doit être interprétable. D’autre
part, il doit être suffisamment expressif pour permettre de représenter les actions de l’utilisateur,
mais aussi celles des personnages virtuels et les comportements des systèmes techniques simulés,
auxquels nous ajouterons les ajustements décrits dans la section précédente, ainsi que les liens de
causalité entre ces éléments.
6.2.1 Plan partiellement ordonné
Pour représenter ces éléments, DIRECTOR utilise un formalisme sous forme de plans partiellement
ordonnés, associé à un moteur de génération de scénarios construit autour d’un moteur de
planification. La planification permet en effet de considérer un scénario dans son ensemble, afin de
mener à une situation finale particulière, ce qui n’est pas le cas de moteurs basés sur de la sélection
locale d’événements.
Goal :
(fire)
commitment: agent-novice marcel
action: ignore-turn-off-phone marcel phone1 tank1 car1
commitment: joint-used joint1
behaviour: leak tank1 joint1
commitment: tank-empty tank1
behaviour: ignore-leak tank1 joint1
action: open-tank marcel tank1 car1
behaviour: open tank1
action: pump-gas marcel tank1 car1
behaviour: pump-gas tank1 empty
behaviour: fire
happening: phonecall phone1
behaviour: spark phone1
occurrence: spark-true
FIGURE 6.3 – Exemple de scénario représenté sous forme de plan partiellement ordonné
1396.2. REPRÉSENTATION DES SCÉNARIOS CHAPITRE 6. DIRECTOR
Cette représentation sous forme de plans partiellement ordonnés permet de représenter de manière
explicite les liens de causalité entre éléments du scénario, et pas uniquement les liens de temporalité.
En particulier, elle permet de représenter explicitement les préconditions d’une étape du
scénario qui sont rendues vraies par une étape précédente, de façon à pouvoir raisonner sur le scé-
nario et notamment détecter les situations où celui-ci est en échec.
Les scénarios utilisés ici ont vocation à désigner un déroulement particulier des événements, en
représentant un ordonnancement partiel d’actions et de comportements menant à une situation fi-
nale. Ils ne concernent cependant qu’un sous-ensemble des objets et des agents présents dans l’environnement
virtuel. Un scénario n’est donc pas une description exhaustive de tous les changements
d’états ayant lieu dans la simulation ; il peut être réalisé de différentes manières du point de vue du
scénario global de l’environnement virtuel, selon la façon dont les étapes qui le composent seront
ordonnées, et selon les événements qui se dérouleront en parallèle de manière indépendante de ce
scénario.
Scénario
Un scénario est un tuple 〈E,I,L,SI
,SF 〉 tel que E est un ensemble d’étapes, I est un ensemble
de contraintes d’instanciation des paramètres des étapes de E, L est un ensemble de liens
de causalité entre ces étapes, SI est un ensemble d’assertions correspondant à l’état initial et
SF est un ensemble d’assertions correspondant à l’état final. Chaque étape est associée à un
opérateur.
Un exemple de scénario est présenté dans la figure 6.3
6.2.2 Opérateurs
Les opérateurs sont les éléments de base du scénario. Un opérateur possède un ensemble de
paramètres, qui correspondent aux objets qu’il concerne. Ces paramètres sont désignés par des variables
typées ; les opérateurs utilisés au niveau des étapes d’un plan donné sont instanciés, c’est à dire
que les variables qu’ils utilisent sont associées à des instances d’objets de l’environnement virtuel.
Les opérateurs contiennent également des préconditions — des assertions qui doivent être vérifiées
pour que l’opérateur soit applicable — et des effets — des assertions qui deviennent vraies une fois
que l’opérateur a été appliqué. Le lien de causalité o1
c→ o2 indique que les effets de l’opérateur o1
établissent une condition c nécessaire pour que l’opérateur o2 puisse être appliqué.
Les opérateurs peuvent être de deux types : opérateurs de prédiction ou opérateurs d’ajustement.
Opérateurs de prédiction
Les opérateurs de prédiction correspondent aux actions et comportements attendus de la part
des entités autonomes peuplant la simulation. Ils peuvent correspondre soit à des actions de l’utilisateur
ou des personnages virtuels (❆❝t✐♦♥), soit à des comportements des systèmes techniques
(❇❡❤❛✈✐♦✉r).
Les opérateurs d’action correspondent à la prédiction des prises de décision des personnages virtuels
autonomes ou des utilisateurs. Leurs préconditions permettent de préciser le contexte dans lesquels
une telle décision peut être prise. Ils sont générés à partir du modèle d’activité. L’exemple présenté
dans le tableau 6.4 correspond à la tâche ❖♣❡♥❱❛❧✈❡, contenue dans la procédure donnée en figure
5.5.
Les opérateurs de comportement correspondent à la prédiction des comportements des systèmes
140CHAPITRE 6. DIRECTOR 6.2. REPRÉSENTATION DES SCÉNARIOS
techniques simulés. Ces comportements peuvent faire suite à une action, ou bien à un autre comportement.
Ils sont générés à partir du modèle de domaine. L’exemple présenté dans le tableau 6.5
correspond au comportement activé par l’action précédente.
La génération des opérateurs de prédiction à partir des modèles de domaine et d’activité est décrite
dans la section 6.4.
Operator ❆❝t✐♦♥✲❖♣❡♥❱❛❧✈❡
Parameters ❄❛ ✲ ❛❣❡♥t
❄✈ ✲ ✈❛❧✈❡
❄t ✲ tr✉❝❦
Preconditions ✭t❛s❦✲st❛t❡ ❖♣❡♥✲❱❛❧✈❡ ❄❛ ♣❡♥❞✐♥❣✮
✭❤❛s✲t✉r♥ ❄❛✮
✭♥♦t ✭❤❛s✲❛❝t❡❞ ❄❛✮✮
✭♣❛r❡♥t✲♣❛r❛♠❡t❡rs✲▲❛✉♥❝❤❚r✉❝❦▲♦❛❞✐♥❣ ❄t ❄❛✮
✭❤❛s✲✈❛❧✈❡ ❄t ❄✈✮
✭♦♣❡♥✐♥❣✲st❛t❡✲✈❛❧✉❡ ❄✈ ❢❛❧s❡✮
Effects ✭♥♦t ✭t❛s❦✲st❛t❡ ❖♣❡♥✲❱❛❧✈❡ ❄❛ ♣❡♥❞✐♥❣✮✮
✭t❛s❦✲st❛t❡ ❖♣❡♥✲❱❛❧✈❡ ❄❛ ♦♥❣♦✐♥❣✮
✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❖♣❡♥✐♥❣✮
✭♣❛r❛♠❡t❡rs✲❖♣❡♥✐♥❣ ❄✈✮
✭❤❛s✲❛❝t❡❞ ❄❛✮
TABLE 6.4 – Opérateur d’action correspondant à la tâche ❖♣❡♥❱❛❧✈❡
Operator ❇❡❤❛✈✐♦✉r✲❖♣❡♥✐♥❣
Parameters ❄♦❜❥ ✲ ♦❜❥❡❝t
Preconditions ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❖♣❡♥✐♥❣✮
✭♣❛r❛♠❡t❡rs✲❖♣❡♥✐♥❣ ❄♦❜❥✮
✭♦♣❡♥✐♥❣✲st❛t❡✲✈❛❧✉❡ ❄♦❜❥ ❢❛❧s❡✮
Effects ✭♥♦t ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❖♣❡♥✐♥❣✮✮
✭♥♦t ✭♣❛r❛♠❡t❡rs✲❖♣❡♥✐♥❣ ❄♦❜❥✮✮
✭♥♦t ✭♦♣❡♥✐♥❣✲st❛t❡✲✈❛❧✉❡ ❄♦❜❥ ❢❛❧s❡✮✮
✭♦♣❡♥✐♥❣✲st❛t❡✲✈❛❧✉❡ ❄♦❜❥ tr✉❡✮
TABLE 6.5 – Opérateur de comportement correspondant à l’ouverture d’un objet
Opérateurs d’ajustement
Les opérateurs d’ajustement reflètent les ajustements présentés dans la section 6.1, et peuvent
donc correspondre au déclenchement d’un événement exogène (❍❛♣♣❡♥✐♥❣), au raffinement de la
valeur d’un état indéfini (❈♦♠♠✐t♠❡♥t) ou à une contrainte sur le déclenchement d’un comportement
probable (❖❝❝✉rr❡♥❝❡❈♦♥str❛✐♥t).
Les opérateurs d’happening correspondent au déclenchement d’un événement exogène ponctuel.
Ils sont générés automatiquement à partir des règles Jena associées à ces événements. Ces opérateurs
ont la particularité de ne pas posséder de préconditions, puisque les événements concernés
peuvent être déclenchés quel que soit l’état de la simulation. L’exemple d’opérateur présenté dans le
tableau 6.6 correspond à l’événement présenté dans le tableau 6.1.
1416.3. PARTICULARITÉ DE LA GÉNÉRATION DE PLANS PRÉDICTIFS CHAPITRE 6. DIRECTOR
Operator ❍❛♣♣❡♥✐♥❣✲P❤♦♥❡❈❛❧❧
Parameters ❄♣❤♦♥❡ ✲ P❤♦♥❡
Preconditions ✲
Effects ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❙♣❛r❦ ❄♣❤♦♥❡✮
✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❘✐♥❣✐♥❣ ❄♣❤♦♥❡✮
TABLE 6.6 – Opérateur de planification correspondant au happening P❤♦♥❡❈❛❧❧
Les opérateurs de commitment correspondent au raffinement d’une valeur incertaine, d’après le
principe du late commitment. Ils sont générés à partir des règles d’initialisation des états “commitables”,
et des types associés à ces états. L’exemple d’opérateur présenté dans le tableau 6.7 est généré
à partir de la règle d’initialisation présentée dans le tableau 6.2.
Operator ❈♦♠♠✐t♠❡♥t✲❙♣r✐♥❣❇r❡❛❦✲❚r✉❡
Parameters ❄s♣r✐♥❣ ✲ ❙♣r✐♥❣
❄t❛♥❦ ✲ ❚❛♥❦
❄✈❛❧✈❡ ✲ ❱❛❧✈❡
Preconditions ✭❤❛s✲✈❛❧✈❡ ❄t❛♥❦ ❄✈❛❧✈❡✮
✭❤❛s✲s♣r✐♥❣ ❄✈❛❧✈❡ ❄s♣r✐♥❣✮
✭❜r❡❛❦✲st❛t❡✲✈❛❧✉❡ ❄s♣r✐♥❣ ✉♥❦♥♦✇♥✮
Effects ✭♥♦t ✭❜r❡❛❦✲st❛t❡✲✈❛❧✉❡ ❄s♣r✐♥❣ ✉♥❦♥♦✇♥✮✮
✭❜r❡❛❦✲st❛t❡✲✈❛❧✉❡ ❄s♣r✐♥❣ tr✉❡✮
TABLE 6.7 – Opérateur de planification raffinant la valeur de l’état de cassure d’un ressort
Les opérateurs de contraintes d’occurrence permettent de forcer le déclenchement ou le nondéclenchement
de conséquences liées à des règles probabilistes. Deux opérateurs de contraintes
d’occurrence sont créés pour chaque identifiant utilisé dans une primitive ❉r❛✇ : un qui permet
de forcer l’occurrence du comportement associé à l’identifiant, et un qui permet de forcer sa nonoccurrence.
L’exemple d’opérateur présenté dans le tableau 6.8 permet d’influencer le tirage aléatoire
réalisé dans la règle 6.3.
Operator ❖❝❝✉rr❡♥❝❡✲▲❡❛❦❙♣❧❛tt❡r✐♥❣✲❚r✉❡
Parameters ✲
Preconditions ✲
Effects ✭❢♦r❝❡✲♦❝❝✉rr❡♥❝❡ ▲❡❛❦❙♣❧❛tt❡r✐♥❣✮
TABLE 6.8 – Opérateur de planification contraignant l’occurrence du comportement
❙♣❧❛tt❡r✐♥❣❇❡❤❛✈✐♦✉r, lié au tirage aléatoire ▲❡❛❦❙♣❧❛tt❡r✐♥❣
6.3 Particularité de la génération de plans prédictifs
Contrairement aux scénarios générés par des systèmes de scénarisation à base de planification
classiques, comme Mimesis [Riedl et al., 2003], les scénarios générés par DIRECTOR n’ont pas vocation
à être exécutés dans l’environnement virtuel en déclenchant des actions des personnages virtuels
et des comportements des systèmes techniques, mais décrivent une prédiction souhaitée des événements
de la simulation, associée à un ensemble d’ajustements nécessaires pour réaliser cette prédiction.
Le but de la phase de génération des scénarios n’est donc pas de générer le plan optimal entre une
142CHAPITRE 6. DIRECTOR 6.3. PARTICULARITÉ DE LA GÉNÉRATION DE PLANS PRÉDICTIFS
situation initiale SI et une situation finale SF , en regard de sa longueur, de son intérêt narratif, etc. Il
s’agit au contraire de trouver un ensemble d’ajustements permettant d’amener la simulation de SI à
SF , et de prédire les actions des personnages virtuels autonomes et les comportements des systèmes
techniques à partir de SI et compte tenu de ces ajustements.
Dès lors, il n’est pas possible de traduire directement les actions réalisables par les personnages
virtuels en opérateurs de planification, et d’utiliser ces opérateurs pour calculer un plan entre SI et
SF : il n’y aurait alors aucune garantie que les actions composant le plan soient effectivement choisies
par les personnages virtuels autonomes durant la simulation.
De plus, les situations que l’on cherche à atteindre correspondent le plus souvent à des situations accidentelles
auxquelles confronter un apprenant, ou bien à étudier dans le cadre d’un système d’aide
à la décision. La recherche d’un plan optimal en terme de nombre d’étapes pour aller vers de telles
situations donnerait ainsi des résultats absurdes, les personnages virtuels semblant adopter des comportements
de sabotage, voire de suicide, pour arriver au plus vite à l’accident. La figure 6.4 représente
un scénario généré de cette manière, à partir des actions et des situations utilisées pour le scénario
représenté dans la figure 6.3.
Goal :
(fire)
action: open-tank marcel tank1
behaviour: open tank1
action: use-lighter-on marcel tank1
behaviour: light-up tank1
behaviour: fire
FIGURE 6.4 – Exemple de scénario planifié à partir des actions
Il serait alors envisageable d’utiliser non pas les actions, mais les ajustements, comme étapes du
plan, en faisant alors correspondre à chaque étape un scénario candidat, c’est à dire une prédiction
de la simulation compte tenu des ajustements appliqués jusque là. Cela nécessiterait cependant de
simuler un scénario entier pour chaque combinaison d’opérateurs, et, sans garantie que la situation
but soit atteinte dans un scénario candidat donné, il serait impossible de savoir combien d’étapes
prédire dans ces scénarios.
Il est donc nécessaire d’inclure dans les opérateurs considérés à la fois les opérateurs d’ajustement et
les opérateurs de prédiction, et de cadrer ces derniers afin que leur application soit déterministe et
reflète le déroulement réel de la simulation. En particulier, il est nécessaire que les opérateurs correspondant
aux actions des personnages virtuels expriment les connaissances contenues dans le modèle
d’activité, et non uniquement celles du modèle du domaine. Pour un personnage virtuel donné, un
seul opérateur d’action doit être applicable dans une situation donnée : celui correspondant à l’action
que le personnage virtuel autonome choisirait effectivement de réaliser dans la simulation.
1436.4. GÉNÉRATION D’OPÉRATEURS DE PRÉDICTION CHAPITRE 6. DIRECTOR
6.4 Génération d’opérateurs de prédiction
Les opérateurs de prédiction sont générés automatiquement à partir des modèles qui sous-tendent
la simulation, afin que, pour chaque situation possible, un seul opérateur soit applicable.
Deux types d’opérateurs de prédiction sont générés :
– les opérateurs d’action sont générés à partir du modèle d’activité représenté en ACTIVITY-DL ;
– les opérateurs de comportement sont générés à partir du modèle du domaine représenté en
DOMAIN-DL.
6.4.1 Génération des opérateurs d’action
Les opérateurs d’action correspondent aux prédiction des prises de décision des agents. Les effets
de ces opérateurs incluent le déclenchement des comportements associés à l’action. Ces opérateurs
sont générés à partir de modèles représentés en ACTIVITY-DL, le langage de représentation de
l’activité décrit dans la section 5.2. Nous décrivons ici les règles de traduction utilisées pour les propriétés
suivantes du langage : tâches feuilles, tâches mères, constructeurs séquentiels ordonnés ou
non, préconditions favorables, nomologiques, contextuelles et règlementaires, conditions de satisfaction,
tâches expertes et Activités Limites tolérées par l’Usage, ainsi que la gestion du tour par tour
(alternance des actions des différents agents). Les constructeurs parallèles ainsi que les tâches itératives
n’ont pour le moment pas été traités.
Tâches feuilles
Les tâches feuilles du modèle d’activité correspondent à des actions concrètes. Chaque tâche est
associée à un opérateur d’action, tel celui ayant été présenté dans le tableau 6.4.
Une tâche peut être indiquée comme étant en attente (♣❡♥❞✐♥❣), en cours (♦♥❣♦✐♥❣) ou réalisée
(❞♦♥❡). Les opérateurs correspondant aux actions peuvent être appliqués si la tâche correspondante
est indiquée comme en attente, et ont pour effet d’activer les comportements liés à l’action, et d’indiquer
la tâche comme étant en cours de réalisation.
Plusieurs opérateurs peuvent correspondre à une même action si celle-ci est présente dans plusieurs
taches feuilles du modèle d’activité. Les opérateurs diffèrent alors par leurs préconditions, qui correspondent
aux conditions de réalisation des tâches feuilles.
Tâches mères et tâches filles ordonnées
L’organisation hiérarchique des tâches du modèle d’activité, qui reflète les différents niveaux de
granularité des motivations des agents, est traduite par le biais d’opérateurs abstraits, qui expriment
l’adoption d’une tâche mère, c’est à dire d’un but (❆❜str❛❝t✲P❛r❡♥t✲❁❚❛s❦❃) ou la fin d’une tâche
(❆❜str❛❝t✲❊♥❞✲❁❚❛s❦❃). De même que les paramètres d’une action sont transmis aux comportements
déclenchés par cette action, le contexte d’une tâche mère est transmis à ses tâches filles par
l’intermédiaire d’un prédicat ♣❛r❛♠❡t❡rs✲♣❛r❡♥t✲❁❚❛s❦❃.
Dans un premier temps, le plan généré contient ces opérateurs abstraits, puis il est nettoyé pour ne
garder dans le scénario que les opérateurs d’action qui correspondent à la réalisation d’une action
concrète par un agent. La figure 6.5 contient ainsi un plan généré à l’aide d’opérateurs abstraits
correspondant à une tâche mère liée à ses tâches filles par un constructeur de type ❙❊◗✲❖❘❉, et la
figure 6.6 correspond à ce même plan une fois nettoyé.
144CHAPITRE 6. DIRECTOR 6.4. GÉNÉRATION D’OPÉRATEURS DE PRÉDICTION
Goal :
(task-state Refill-Gas marcel done)
action: abstract-parent-refill-gas marcel tank1 car1
action: open-tank marcel tank1 car1
behaviour: open tank1
action: abstract-end-open-tank marcel
action: pump-gas marcel tank1 car1
behaviour: pump-gas tank1 empty
action: abstract-end-pump-gas marcel
action: close-tank marcel tank1 car1
behaviour: close tank1
action: abstract-end-close-tank marcel
action: abstract-end-parent-refill-gas tank1 marcel car1
FIGURE 6.5 – Exemple de plan contenant des opérateurs abstraits
1456.4. GÉNÉRATION D’OPÉRATEURS DE PRÉDICTION CHAPITRE 6. DIRECTOR
Goal :
(task-state Refill-Gas marcel done)
action: open-tank marcel tank1 car1
behaviour: open tank1
action: pump-gas marcel tank1 car1
behaviour: pump-gas tank1 empty
action: close-tank marcel tank1 car1
behaviour: close tank1
FIGURE 6.6 – Exemple de plan 6.5 une fois les tâches abstraites retirées
Le constructeur ❙❊◗✲❖❘❉ exprime l’ordonnancement strict des tâches filles d’une même tâche
mère. Dans ce cas, la première tâche fille est indiquée comme en attente dans les effets de l’opérateur
correspondant à l’adoption de la tâche mère, et chaque tâche suivante est ajoutée en attente dans
les effets de l’opérateur correspondant à la fin de la tâche qui la précède. Des exemples d’opérateurs
abstraits correspondant à l’adoption d’une tâche mère et à la fin d’une tâche feuille sont présentés
respectivement dans les tableaux 6.9 et 6.10.
Operator ❆❝t✐♦♥✲❆❜str❛❝t✲P❛r❡♥t✲❘❡❢✐❧❧✲●❛s
Parameters ❄❛ ✲ ❛❣❡♥t
❄t ✲ t❛♥❦
❄❝ ✲ ❝❛r
Preconditions ✭♥♦t ✭t❛s❦✲st❛t❡ ❘❡❢✐❧❧✲●❛s ❄❛ ♦♥❣♦✐♥❣✮✮
✭❤❛s✲t✉r♥ ❄❛✮
✭♥♦t ✭❤❛s✲❛❝t❡❞ ❄❛✮✮
✭❤❛s✲t❛♥❦ ❄❝❛r ❄t❛♥❦✮
✭❢♦r❛❧❧ ✭❄❛✷ ✲ ❆❣❡♥t✮
✭♥♦t ✭♣❛r❡♥t✲♣❛r❛♠❡t❡rs✲❘❡❢✐❧❧✲●❛s ❄t❛♥❦ ❄❛✷ ❄❝❛r✮✮
Effects ✭t❛s❦✲st❛t❡ ❘❡❢✐❧❧✲●❛s ❄❛ ♦♥❣♦✐♥❣✮
✭t❛s❦✲st❛t❡ ❖♣❡♥✲❚❛♥❦ ❄❛ ♣❡♥❞✐♥❣✮
✭♣❛r❡♥t✲♣❛r❛♠❡t❡rs✲❘❡❢✐❧❧✲●❛s ❄t❛♥❦ ❄❛ ❄❝❛r✮
TABLE 6.9 – Opérateur abstrait correspondant à une tâche mère avec un constructeur SEQ-ORD
146CHAPITRE 6. DIRECTOR 6.4. GÉNÉRATION D’OPÉRATEURS DE PRÉDICTION
Operator ❆❝t✐♦♥✲❆❜str❛❝t✲❊♥❞✲❖♣❡♥✲❚❛♥❦
Parameters ❄❛ ✲ ❛❣❡♥t
Preconditions ✭t❛s❦✲st❛t❡ ❖♣❡♥✲❚❛♥❦ ❄❛ ♦♥❣♦✐♥❣✮
✭♥♦t ✭❛❝t✐✈❡✲❜❡❤❛✈✐♦✉r✮✮
Effects ✭♥♦t ✭t❛s❦✲st❛t❡ ❖♣❡♥✲❚❛♥❦ ❄❛ ♦♥❣♦✐♥❣✮✮
✭t❛s❦✲st❛t❡ ❖♣❡♥✲❚❛♥❦ ❄❛ ❞♦♥❡✮
✭t❛s❦✲st❛t❡ P✉♠♣✲●❛s ❄❛ ♣❡♥❞✐♥❣✮
TABLE 6.10 – Opérateur abstrait correspondant à une fin de tâche
Tâches filles non ordonnées et conditions favorables
Par défaut, les tâches filles non ordonnées sont réalisées dans l’ordre dans lequel elles sont dé-
clarées au niveau de la tâche mère. Si certaines de ces tâches possèdent des préconditions favorables,
et que celles-ci sont vérifiées, alors elles seront réalisées en priorité. Si les préconditions favorables de
plusieurs tâches filles sont vraies, alors ces tâches seront là encore réalisées dans l’ordre dans lequel
elles sont déclarées. L’algorithme d’ordonnancement utilisé pour ajouter aux opérateurs d’action les
préconditions correspondantes est présenté dans l’annexe D.
La figure 6.7 présente deux plans correspondant à une procédure liée aux Equipements de Protection
Individuels (EPI) : l’agent peut choisir de revêtir ses lunettes, son casque et ses gants sans contrainte
d’ordonnancement. Une condition favorable est spécifiée : dans un cas de pluie, l’agent commencera
par mettre son casque. L’opérateur correspondant à cette tâche est présenté dans le tableau 6.11.
Operator ❆❝t✐♦♥✲P✉t✲❖♥✲❍❡❧♠❡t
Parameters ❄❛ ✲ ❛❣❡♥t
❄❤❡❧♠❡t ✲ ❤❡❧♠❡t
Preconditions ✭t❛s❦✲st❛t❡ P✉t✲❖♥✲❍❡❧♠❡t ❄❛ ♣❡♥❞✐♥❣✮
✭♣❛r❡♥t✲♣❛r❛♠❡t❡rs✲P✉t✲❖♥✲PP❊ ❄❛✮
✭❤❛s✲t✉r♥ ❄❛✮
✭♥♦t ✭❤❛s✲❛❝t❡❞ ❄❛✮✮
✭♦r ✭t❛s❦✲st❛t❡ P✉t✲❖♥✲●♦❣❣❧❡s ❄❛ ❞♦♥❡✮
✭✇❡❛t❤❡r✲st❛t❡✲✈❛❧✉❡ r❛✐♥✮✮
Effects ✭♥♦t ✭t❛s❦✲st❛t❡ P✉t✲❖♥✲❍❡❧♠❡t ❄❛ ♣❡♥❞✐♥❣✮✮
✭t❛s❦✲st❛t❡ P✉t✲❖♥✲❍❡❧♠❡t ❄❛ ♦♥❣♦✐♥❣✮
✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r P✉t✲❖♥✮
✭♣❛r❛♠❡t❡rs✲P✉t✲❖♥ ❄❛ ❄❤❡❧♠❡t✮
✭❛❝t✐✈❡✲❜❡❤❛✈✐♦✉r✮
✭❤❛s✲❛❝t❡❞ ❄❛✮
TABLE 6.11 – Opérateur correspondant à une sous-tâche non ordonnée possédant une condition favorable
Conditions nomologiques
Les conditions nomologiques d’une tâche indiquent les états devant être atteints pour que la
tâche soit physiquement réalisable. Si ce n’est pas le cas, alors l’agent effectue une action supplé-
mentaire pour les atteindre avant de réaliser la tâche 1
. Au niveau des opérateurs de prédiction, cela
1. Si la situation correspondant à la condition nomologique ne peut être atteinte en une seule action, il serait possible
pour l’agent de planifier une suite d’actions à effectuer pour atteindre cet état. Cela n’est pour l’instant pas pris en compte
dans le modèle.
1476.4. GÉNÉRATION D’OPÉRATEURS DE PRÉDICTION CHAPITRE 6. DIRECTOR
Goal :
(task-state Put-On-PPE marcel done)
action: put-on-helmet marcel helmet1
behaviour: put-on marcel helmet1
action: put-on-goggles marcel goggles1
behaviour: put-on marcel goggles1
action: put-on-gloves marcel gloves1
behaviour: put-on marcel gloves1
Initial State :
(weather rain)
Goal :
(task-state Put-On-PPE marcel done)
action: put-on-goggles marcel goggles1
behaviour: put-on marcel goggles1
action: put-on-helmet marcel helmet1
behaviour: put-on marcel helmet1
action: put-on-gloves marcel gloves1
behaviour: put-on marcel gloves1
Initial State :
(weather sun)
FIGURE 6.7 – Exemple des plans générés à partir d’opérateurs correspondant à des tâches séquentielles
non ordonnées
se traduit par l’ajout de trois opérateurs : un opérateur ❆❝t✐♦♥ correspondant à la réalisation de l’action
et ayant comme précondition le fait que la condition nomologique soit fausse, un opérateur
abstrait ❊♥❞ correspondant à la fin de cette action, et un opérateur abstrait ■❣♥♦r❡, pouvant être
appliqué si la condition nomologique est vraie. Pour chaque opérateur correspondant à une tâche
mère ou de même niveau et ayant pour effet de mettre la tâche en attente, l’identifiant de la tâche
est remplacé par celui de l’action nomologique (ou de l’action correspondant à la première condition
nomologique déclarée si la tâche en possède plusieurs). Les opérateurs nomologiques reprennent
également les préconditions de l’opérateur correspondant à la tâche afin de respecter les contraintes
d’ordonnancement.
La génération de ces opérateurs à partir d’une condition nomologique fait appel au modèle du domaine,
afin d’identifier l’action permettant de déclencher le comportement qui réalise la condition.
Les tableaux 6.12 et 6.13 présentent les opérateurs correspondant à une action ❯♥❧♦❝❦, permettant
d’atteindre la condition nomologique ✭❧♦❝❦✲st❛t❡✲✈❛❧✉❡ ❄t❛♥❦ ❢❛❧s❡✮ nécessaire à la tâche ❖♣❡♥
❚❛♥❦.
148CHAPITRE 6. DIRECTOR 6.4. GÉNÉRATION D’OPÉRATEURS DE PRÉDICTION
Operator ❆❝t✐♦♥✲◆♦♠♦❧♦❣✐❝❛❧✲❯♥❧♦❝❦
Parameters ❄❛ ✲ ❛❣❡♥t
❄t ✲ t❛♥❦
❄❝ ✲ ❝❛r
Preconditions ✭♣❛r❡♥t✲♣❛r❛♠❡t❡rs✲❘❡❢✐❧❧✲●❛s ❄t❛♥❦ ❄❛ ❄❝❛r✮
✭❤❛s✲t✉r♥ ❄❛✮
✭♥♦t ✭❤❛s✲❛❝t❡❞ ❄❛✮✮
✭❤❛s✲t❛♥❦ ❄❝❛r ❄t❛♥❦✮
✭❧♦❝❦✲st❛t❡✲✈❛❧✉❡ ❄t❛♥❦ tr✉❡✮
✭t❛s❦✲st❛t❡ ◆♦♠♦❧♦❣✐❝❛❧✲❯♥❧♦❝❦ ❄❛ ♣❡♥❞✐♥❣✮
Effects ✭♥♦t ✭t❛s❦✲st❛t❡ ◆♦♠♦❧♦❣✐❝❛❧✲❯♥❧♦❝❦ ❄❛ ♣❡♥❞✐♥❣✮✮
✭t❛s❦✲st❛t❡ ◆♦♠♦❧♦❣✐❝❛❧✲❯♥❧♦❝❦ ❄❛ ♦♥❣♦✐♥❣✮
✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❯♥❧♦❝❦✮
✭♣❛r❛♠❡t❡rs✲❯♥❧♦❝❦ ❄t❛♥❦✮
✭❛❝t✐✈❡✲❜❡❤❛✈✐♦✉r✮
✭❤❛s✲❛❝t❡❞ ❄❛✮
TABLE 6.12 – Opérateur correspondant à une action réalisant une condition nomologique
Operator ❆❝t✐♦♥✲❆❜str❛❝t✲■❣♥♦r❡✲❯♥❧♦❝❦
Parameters ❄❛ ✲ ❛❣❡♥t
❄t ✲ t❛♥❦
❄❝ ✲ ❝❛r
Preconditions ✭♣❛r❡♥t✲♣❛r❛♠❡t❡rs✲❘❡❢✐❧❧✲●❛s ❄t❛♥❦ ❄❛ ❄❝❛r✮
✭❤❛s✲t✉r♥ ❄❛✮
✭♥♦t ✭❤❛s✲❛❝t❡❞ ❄❛✮✮
✭❤❛s✲t❛♥❦ ❄❝❛r ❄t❛♥❦✮
✭❧♦❝❦✲st❛t❡✲✈❛❧✉❡ ❄t❛♥❦ ❢❛❧s❡✮
✭t❛s❦✲st❛t❡ ◆♦♠♦❧♦❣✐❝❛❧✲❯♥❧♦❝❦ ❄❛ ♣❡♥❞✐♥❣✮
Effects ✭♥♦t ✭t❛s❦✲st❛t❡ ◆♦♠♦❧♦❣✐❝❛❧✲❯♥❧♦❝❦ ❄❛ ♦♥❣♦✐♥❣✮✮
✭t❛s❦✲st❛t❡ ◆♦♠♦❧♦❣✐❝❛❧✲❯♥❧♦❝❦ ❄❛ ❞♦♥❡✮
✭t❛s❦✲st❛t❡ ❖♣❡♥✲❚❛♥❦ ❄❛ ♣❡♥❞✐♥❣✮
TABLE 6.13 – Opérateur abstrait correspondant à une condition nomologique déjà réalisée
Conditions contextuelles et conditions de satisfaction
Les conditions contextuelles et les conditions de satisfaction d’une tâche peuvent mener un agent
à ignorer cette tâche, dans le cas où les conditions contextuelles ne sont pas vérifées ou dans celui où
les conditions de satisfaction le sont déjà. Si une tâche possède ces types de conditions, elle est donc
associée à un opérateur ■❣♥♦r❡ ayant dans ses préconditions une disjonction contenant chacune
des conditions de satisfaction, ainsi que la négation de chacune des conditions contextuelles. Par exemple,
l’opérateur correspondant à l’action d’ouverture du réservoir aura comme précondition que
le réservoir ne soit pas déjà ouvert, tandis que l’opérateur ■❣♥♦r❡ associé aura la précondition opposée.
Les conditions de satisfaction sont également ajoutées comme préconditions des opérateurs abstraits
de fin de tâche ❊♥❞. Dans le cas des tâches mères, le traitement est différent selon que la tâche est satisfaite
si toutes ses tâches filles sont satisfaites (❆◆❉), ou que la tâche est satisfaite si au moins l’une
de ses tâches filles est satisfaite (❖❘).
Dans le premier cas, la conjonction des prédicats ✭t❛s❦✲st❛t❡ ❁❚❛s❦❃ ❞♦♥❡✮ est ajoutée aux
préconditions de l’opérateur ❊♥❞✲P❛r❡♥t, comme c’est le cas pour l’opérateur présenté dans le tableau
1496.4. GÉNÉRATION D’OPÉRATEURS DE PRÉDICTION CHAPITRE 6. DIRECTOR
Operator ❆❝t✐♦♥✲❆❜str❛❝t✲❊♥❞✲P❛r❡♥t✲❘❡❢✐❧❧✲●❛s
Parameters ❄❛ ✲ ❛❣❡♥t
❄❝ ✲ ❝❛r
Preconditions ✭t❛s❦✲st❛t❡ ❖♣❡♥✲❚❛♥❦ ❄❛ ❞♦♥❡✮
✭t❛s❦✲st❛t❡ P✉♠♣✲●❛s ❄❛ ❞♦♥❡✮
✭t❛s❦✲st❛t❡ ❈❧♦s❡✲❚❛♥❦ ❄❛ ❞♦♥❡✮
✭t❛s❦✲st❛t❡ ❘❡❢✐❧❧✲●❛s ❄❛ ♦♥❣♦✐♥❣✮
✭♣❛r❡♥t✲♣❛r❛♠❡t❡rs✲❘❡❢✐❧❧✲●❛s ❄t❛♥❦ ❄❛ ❄❝❛r✮
Effects ✭t❛s❦✲st❛t❡ ❘❡❢✐❧❧✲●❛s ❄❛ ❞♦♥❡✮
✭♥♦t ✭t❛s❦✲st❛t❡ ❘❡❢✐❧❧✲●❛s ❄❛ ♦♥❣♦✐♥❣✮✮
✭♥♦t ✭♣❛r❡♥t✲♣❛r❛♠❡t❡rs✲❘❡❢✐❧❧✲●❛s ❄t❛♥❦ ❄❛ ❄❝❛r✮✮
TABLE 6.14 – Opérateur abstrait correspondant à la fin d’une tâche mère
6.14.
Dans le second cas, l’opérateur ❊♥❞✲P❛r❡♥t peut être appliqué si au moins l’une des tâches filles
est indiquée comme terminée, et a pour effet d’enlever le statut “en cours” de l’ensemble des tâches
filles restantes. De plus, chaque tâche fille possède également comme précondition le fait qu’aucune
de ses tâches soeurs ne soit indiquée comme terminée 2
.
Conditions règlementaires, tâches expertes et ALUs
La traduction du modèle d’activité en opérateurs de planification prédictifs est fortement dépendante
des modèles d’agents utilisés, c’est à dire des hypothèses émises sur la façon dont le module de
personnages virtuels va interpréter le modèle d’activité, et sur les mécanismes de prise de décision
des utilisateurs. Cette dépendance est particulièrement importante lorsqu’il s’agit de considérer les
comportements qui dévient des comportements prescrits, c’est à dire les violations conscientes ou
les erreurs inconscientes effectuées par les agents.
Dans un premier temps, nous avons travaillé sur une version basique du modèle des agents ne considérant
que deux propriétés : le niveau d’expertise et le niveau de stress. Un agent peut ainsi être
novice ou expert dans le domaine, et être stressé ou non. Il s’agit d’une version très simplifiée des
modèles utilisés dans les travaux précédents de notre équipe de recherche sur le suivi de l’apprenant
[Amokrane, 2010] et la génération de comportements de personnages virtuels [Edward, 2011] [Lhommet,
2012].
Ainsi, le traitement des conditions règlementaires des tâches va être conditionné au niveau de stress
de l’agent. Les conditions règlementaires d’une tâche sont traduites, à l’instar des conditions nomologiques,
par la création d’un opérateur d’action supplémentaire précédant l’opérateur correspondant
à la tâche, à la différence que celui-ci possède également comme précondition le fait que l’agent ne
soit pas stressé. L’opérateur ■❣♥♦r❡ associé est ainsi applicable si la condition règlementaire est déjà
atteinte ou si l’agent est stressé.
De même, le traitement des tâches expertes, taguées comme étant réalisables uniquement par les
experts (❡①♣❡rt✰) ou bien uniquement par les non-experts (❡①♣❡rt✲) correspondra à l’ajout d’un
opérateur ■❣♥♦r❡ ayant comme précondition le niveau d’expertise de l’agent, et l’ajout de la précondition
opposée à l’opérateur ❆❝t✐♦♥.
La réalisation des Activités Limites tolérées par l’Usage (ALUs) dépend également du niveau d’expertise
et du niveau de stress de l’agent : les tâches ❆▲❯✰ (resp. ❆▲❯✲) seront réalisées (resp. ignorées)
par les agents experts et stressés lorsque les conditions ❈▲❯ (Conditions Limites tolérées par l’Usage)
2. Ceci suppose que les conditions de satisfaction des tâches feuilles soient équivalentes aux effets de l’action, et que
ces actions ne puissent pas échouer si les préconditions nomologiques de la tâche sont respectées. Cette limite est traitée
dans la section 10.2.4.
150CHAPITRE 6. DIRECTOR 6.4. GÉNÉRATION D’OPÉRATEURS DE PRÉDICTION
associées sont vérifiées, et ignorées (resp. réalisées) dans les autres cas. Par exemple, s’il s’agit d’une
tâche qu’il est toléré de ne pas réaliser, l’opérateur ■❣♥♦r❡ associé aura comme précondition le fait
que l’agent soit un expert, le fait qu’il soit stressé, et les conditions ❈▲❯ de la tâche, et l’opérateur
❆❝t✐♦♥ possèdera la précondition inverse.
Gestion du tour par tour
Dans le cas où l’environnement virtuel contient plusieurs agents — personnages virtuels autonomes
ou utilisateurs —, ceux-ci vont être considérés au niveau du scénario comme agissant en
“tour par tour”, c’est à dire en effectuant une action chacun, les uns à la suite des autres.
Cette alternance se fait à l’aide de l’opérateur abstrait ❊♥❞❚✉r♥, retranscrit dans le tableau 6.15. Cet
opérateur peut être appliqué une fois que tous les comportements déclenchés, directement ou non,
par l’action précédente ont été désactivés, et a pour effet de modifier l’agent courant en fonction de
l’ordre de tours ayant été défini. Cet ordre est indiqué à l’aide de prédicats précisant quel agent agit
immédiatement après un agent donné.
Par défaut, ces prédicats sont calculés de sorte que tous les agents effectuent une action avant que
le premier agent de la liste puisse agir à nouveau. Ainsi, si l’environnement virtuel contient trois
agents, ❣❛st♦♥, ♠❛r❝❡❧ et r♦❜❡rt, l’état initial transmis au moteur de planification contiendra les
prédicats ✭❤❛s✲t✉r♥ ❣❛st♦♥✮, ✭t✉r♥✲♦r❞❡r ❣❛st♦♥ ♠❛r❝❡❧✮, ✭t✉r♥✲♦r❞❡r ♠❛r❝❡❧ r♦❜❡rt✮ et
✭t✉r♥✲♦r❞❡r r♦❜❡rt ❣❛st♦♥✮. Si un seul agent est présent, alors il sera déclaré comme agissant
après lui-même : ✭t✉r♥✲♦r❞❡r ♠❛r❝❡❧ ♠❛r❝❡❧✮. Un exemple de plan généré à partir d’un problème
contenant deux agents est présenté dans la figure 6.8.
Operator ❆❝t✐♦♥✲❆❜str❛❝t✲❊♥❞❚✉r♥
Parameters ❄❝✉rr❡♥t ✲ ❛❣❡♥t
❄♥❡①t ✲ ❛❣❡♥t
Preconditions ✭❢♦r❛❧❧ ✭❄❜❡❤ ✲ ❇❡❤❛✈✐♦✉r✮ ✭♥♦t ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❄❜❡❤✮✮
✭❤❛s✲t✉r♥ ❄❝✉rr❡♥t✮
✭❤❛s✲❛❝t❡❞ ❄❝✉rr❡♥t✮
✭t✉r♥✲♦r❞❡r ❄❝✉rr❡♥t ❄♥❡①t✮
Effects ✭♥♦t ✭❛❝t✐✈❡✲❜❡❤❛✈✐♦✉r✮✮
✭♥♦t ✭❤❛s✲t✉r♥ ❄❝✉rr❡♥t✮✮
✭♥♦t ✭❤❛s✲❛❝t❡❞ ❄❝✉rr❡♥t✮✮
✭❤❛s✲t✉r♥ ❄♥❡①t✮
TABLE 6.15 – Opérateur abstrait gérant le changement de tour
6.4.2 Génération des opérateurs de comportement
Les opérateurs de comportement correspondent à la prédiction des comportements des systèmes
techniques simulés, qu’ils soient déclenchés par des actions des agents ou bien à la suite d’autres
comportements. Leurs effets incluent les changements d’états causés par ces comportements. Ces
opérateurs sont générés à partir de modèles représentés en DOMAIN-DL, le langage de représentation
du domaine décrit dans la section 5.1.
A chaque comportement du modèle de domaine sont associés deux opérateurs de prédiction : un
opérateur ❇❡❤❛✈✐♦✉r, tel que celui présenté dans le tableau 6.5, qui correspond à l’exécution du
comportement en question, et un opérateur abstrait ■❣♥♦r❡, qui correspond à la non-exécution de
ce comportement lorsque les préconditions de ce dernier ne sont pas vérifiées.
Ces opérateurs sont applicables lorsque le comportement est indiqué comme activé, ce qui correspond
au prédicat ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❁❇❡❤❛✈✐♦✉r❃✮. Ce prédicat peut être ajouté dans les ef-
1516.4. GÉNÉRATION D’OPÉRATEURS DE PRÉDICTION CHAPITRE 6. DIRECTOR
Goal :
(task-state Refill-Gas marcel done)
(task-state Refill-Gas gaston done)
action: open-tank marcel tank1 car1
behaviour: open tank1
action: abstract-endturn marcel gaston
action: pump-gas marcel tank1 car1
action: open-tank gaston tank2 car2
behaviour: open tank2
action: abstract-endturn gaston marcel
action: pump-gas gaston tank2 car2
behaviour: pump-gas tank1 empty
action: abstract-endturn marcel gaston
action: close-tank marcel tank1 car1
behaviour: pump-gas tank2 empty
action: abstract-endturn gaston marcel
action: close-tank gaston tank2 car2
behaviour: close tank1
action: abstract-endturn marcel gaston
behaviour: close tank2
FIGURE 6.8 – Exemple de plan généré avec deux agents
152CHAPITRE 6. DIRECTOR 6.4. GÉNÉRATION D’OPÉRATEURS DE PRÉDICTION
fets d’un opérateur d’action, s’il s’agit du comportement lié à cette action dans le modèle du domaine,
ou bien dans les effets d’un autre opérateur de comportement, lorsque le premier est une
conséquence du second.
Ces liens entre comportements sont générés à partir du modèle du domaine : pour chaque état modifié
par le premier comportement, on récupère les événements dont les préconditions dépendent
de cet état, et on ajoute ces préconditions aux opérateurs de comportements indiqués comme dé-
clenchés par ces événements. Par exemple, l’événement correspondant à une fuite causée par un joint
défectueux dépend de l’état du joint, de l’ouverture du réservoir et du remplissage du réservoir, et dé-
clenche un comportement de fuite aboutissant à la formation d’une flaque de liquide inflammable.
L’activation du comportement de fuite est donc ajoutée aux effets des opérateurs correspondant aux
comportements d’ouverture et de remplissage du réservoir. Les conditions sur ces trois états sont
également ajoutées aux préconditions de l’opérateur correspondant au comportement de fuite, et la
négation de ces conditions est ajoutée à l’opérateur ■❣♥♦r❡ associé, présenté dans le tableau 6.16. La
figure 6.9 présente trois plans générés à partir de ces opérateurs, selon différents états initiaux.
Pour les comportements probabilistes, le tirage aléatoire est remplacé par les contraintes d’occurrence
dans les préconditions des opérateurs. Les tableaux 6.17 et 6.18 présentent des exemples de
tels opérateurs.
Leak :
(flammable-pool)
action: open-tank marcel tank1 car1
behaviour: open tank1
behaviour: ignore-leak tank1 joint1
action: pump-gas marcel tank1 car1
behaviour: pump-gas tank1 empty
behaviour: leak tank1 joint1
Initial State :
(use-state-value joint1 used)
(filling-state-value tank1 empty)
Leak :
(flammable-pool)
action: open-tank marcel tank1 car1
behaviour: open tank1
behaviour: leak tank1 joint1
Initial State :
(use-state-value joint1 used)
(filling-state-value tank1 full)
End Procedure :
(task-state Refill-Gas marcel done)
action: open-tank marcel tank1 car1
behaviour: open tank1
behaviour: ignore-leak tank1 joint1
action: pump-gas marcel tank1 car1
behaviour: pump-gas tank1 empty
behaviour: ignore-leak tank1 joint1
action: close-tank marcel tank1 car1
behaviour: close tank1
Initial State :
(use-state-value joint1 ok)
(filling-state-value tank1 empty)
FIGURE 6.9 – Exemples de plans générés à partir d’opérateurs de comportement ignorables
1536.4. GÉNÉRATION D’OPÉRATEURS DE PRÉDICTION CHAPITRE 6. DIRECTOR
Operator ❇❡❤❛✈✐♦✉r✲■❣♥♦r❡✲▲❡❛❦
Parameters ❄t ✲ ❚❛♥❦
❄❥ ✲ ❏♦✐♥t
Preconditions ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ▲❡❛❦✮
✭♣❛r❛♠❡t❡rs✲▲❡❛❦ ❄t✮
✭❤❛s✲❥♦✐♥t ❄t ❄❥✮
✭♦r ✭✉s❡✲st❛t❡✲✈❛❧✉❡ ❄❥ ♦❦✮
✭❢✐❧❧✲st❛t❡✲✈❛❧✉❡ ❄t ❡♠♣t②✮
✭♦♣❡♥✲st❛t❡✲✈❛❧✉❡ ❄t ❢❛❧s❡✮✮
Effects ✭♥♦t ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ▲❡❛❦✮✮
✭♥♦t ✭♣❛r❛♠❡t❡rs✲▲❡❛❦ ❄t✮✮
TABLE 6.16 – Opérateur de comportement correspondant au non-déclenchement d’une fuite
Operator ❇❡❤❛✈✐♦✉r✲❙♣❛r❦
Parameters ❄♣❤♦♥❡ ✲ P❤♦♥❡
Preconditions ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❙♣❛r❦✮
✭♣❛r❛♠❡t❡rs✲❙♣❛r❦ ❄♣❤♦♥❡✮
✭❢♦r❝❡✲♦❝❝✉rr❡♥❝❡ ❙♣❛r❦✮
✭♦♥✲st❛t❡✲✈❛❧✉❡ ❄♣❤♦♥❡ tr✉❡✮
Effects ✭♥♦t ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❙♣❛r❦✮✮
✭♥♦t ✭♣❛r❛♠❡t❡rs✲❙♣❛r❦ ❄♣❤♦♥❡✮✮
✭♥♦t ✭❢♦r❝❡✲♦❝❝✉rr❡♥❝❡ ❙♣❛r❦✮✮
✭✐❣♥✐t✐♦♥✲s♦✉r❝❡✮
✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❋✐r❡✮
TABLE 6.17 – Opérateur correspondant au déclenchement du comportement probabiliste ❙♣❛r❦
Operator ❇❡❤❛✈✐♦✉r✲■❣♥♦r❡✲❙♣❛r❦
Parameters ❄♣❤♦♥❡ ✲ P❤♦♥❡
Preconditions ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❙♣❛r❦✮
✭♣❛r❛♠❡t❡rs✲❙♣❛r❦ ❄♣❤♦♥❡✮
✭♦r ✭❢♦r❝❡✲♥♦♥✲♦❝❝✉rr❡♥❝❡ ❙♣❛r❦✮
✭♦♥✲st❛t❡✲✈❛❧✉❡ ❄♣❤♦♥❡ ❢❛❧s❡✮✮
Effects ✭♥♦t ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❙♣❛r❦✮✮
✭♥♦t ✭♣❛r❛♠❡t❡rs✲❙♣❛r❦ ❄♣❤♦♥❡✮✮
✭♥♦t ✭❢♦r❝❡✲♦❝❝✉rr❡♥❝❡ ❙♣❛r❦✮✮
✭♥♦t ✭❢♦r❝❡✲♥♦♥✲♦❝❝✉rr❡♥❝❡ ❙♣❛r❦✮✮
TABLE 6.18 – Opérateur correspondant au non-déclenchement du comportement probabiliste ❙♣❛r❦
154CHAPITRE 6. DIRECTOR6.5. PROCESSUS DE GÉNÉRATION, SUIVI ET EXÉCUTION DU SCÉNARIO
6.5 Processus de génération, suivi et exécution du scénario
La génération des opérateurs de prédiction et d’ajustement à partir des modèles de domaine et
d’activité est réalisée en amont de la simulation. Durant la simulation, DIRECTOR utilise ces opérateurs
pour générer des scénarios, qui seront ensuite suivi et exécutés dans l’environnement virtuel.
Les étapes de ce processus sont représentées dans la figure 6.10. A la réception des objectifs scénaristiques
envoyés par le module TAILOR, DIRECTOR génère un scénario à partir de l’état courant du
monde. Puis, à chaque message indiquant l’activation d’une action ou d’un comportement, il met à
jour l’avancement dans ce scénario et exécute les éventuels ajustements nécessaires. Dans le cas où
le déroulement des événements de l’environnement virtuel dévie du scénario généré, un nouveau
scénario est généré à partir de l’état courant.
FIGURE 6.10 – Processus de génération, suivi et exécution du scénario par DIRECTOR
6.5.1 Génération du scénario
La première étape de la génération du scénario consiste à utiliser un moteur de planification pour
générer un plan à partir de l’ensemble des opérateurs d’ajustement et de prédiction, de l’état courant
du monde, et de la situation but ayant été définie dans les objectifs scénaristiques.
Le plan ainsi généré contient des étapes liées à des opérateurs d’action, de comportement et des
ajustements, mais également à des opérateurs de prédiction abstraits, qui correspondent aux tâches
de haut niveau des agents, ou à l’absence d’action ou d’événement (opérateurs ■❣♥♦r❡). Un exemple
de plan est présenté dans la figure 6.11.
Les étapes liées à des opérateurs abstraits correspondant à des tâches de haut niveau ou à des
fins de tâches sont ensuite supprimées du plan ; des liens de causalité sont rajoutés entre les étapes
précédant et suivant les étapes supprimées. Les étapes correspondant à des non-événements — liées
à des opérateurs ■❣♥♦r❡ — sont conservées dans le plan, en vue de la phase de suivi du scénario.
Les étapes liées à l’opérateur ❊♥❞❚✉r♥ sont elles aussi supprimées, mais les liens de causalité entre
les étapes précédentes (liées aux actions d’un agent A) et les étapes suivantes (liées aux actions d’un
agent B) ne sont pas recréés. En effet, les agents n’agissant pas en tour par tour dans l’environnement
virtuel mais en parallèle, l’ordonnancement entre les actions des différents agents, nécessaire pour la
génération du plan prédictif, n’a plus lieu d’être dans le scénario. La figure 6.12 présente un exemple
de plan une fois les opérateurs abstraits supprimés.
1556.5. PROCESSUS DE GÉNÉRATION, SUIVI ET EXÉCUTION DU SCÉNARIOCHAPITRE 6. DIRECTOR
Fire :
(fire)
commitment: joint-used joint2
behaviour: leak tank2 joint2
commitment: agent-novice marcel
action: ignore-turn-off-phone marcel phone1 tank2 car2
occurrence: spark-true
behaviour: spark phone1
commitment: joint-ok joint1
behaviour: ignore-leak tank1 joint1
commitment: tank-empty tank2
action: abstract-parent-refill-gas marcel tank2 car2
action: open-tank marcel tank2 car2
behaviour: open tank2
behaviour: ignore-leak tank2 joint2
action: abstract-end-open-tank marcel
action: abstract-endturn marcel gaston
action: pump-gas marcel tank2 car2
commitment: tank-empty tank1
commitment: agent-novice gaston action: abstract-parent-refill-gas gaston tank1 car1
action: ignore-turn-off-phone gaston phone2 tank1 car1
action: open-tank gaston tank1 car1
behaviour: open tank1
action: abstract-endturn gaston marcel
happening: phonecall phone1 behaviour: pump-gas tank2 empty
behaviour: fire FIGURE 6.11 – Plan généré contenant des opérateurs abstraits
156CHAPITRE 6. DIRECTOR6.5. PROCESSUS DE GÉNÉRATION, SUIVI ET EXÉCUTION DU SCÉNARIO
Fire :
(fire)
commitment: joint-used joint2
behaviour: leak tank2 joint2
commitment: agent-novice marcel
action: ignore-turn-off-phone marcel phone1 tank2 car2
occurrence: spark-true
behaviour: spark phone1
commitment: joint-ok joint1
behaviour: ignore-leak tank1 joint1
commitment: tank-empty tank2
action: open-tank marcel tank2 car2
behaviour: open tank2
behaviour: ignore-leak tank2 joint2
action: pump-gas marcel tank2 car2
commitment: tank-empty tank1
action: ignore-turn-off-phone gaston phone2 tank1 car1
commitment: agent-novice gaston
action: open-tank gaston tank1 car1
behaviour: open tank1
happening: phonecall phone1 behaviour: pump-gas tank2 empty
behaviour: fire
FIGURE 6.12 – Plan 6.11 une fois les opérateurs abstraits supprimés
Le plan “nettoyé” va ainsi contenir des séquences d’actions parallèles, correspondant chacune
aux actions d’un agent différent. Dans le cas où les actions d’un agent n’ont pas d’influence sur les
actions d’un autre agent et les comportements qu’elles déclenchent, il n’y aura pas de lien de causalité
entre les étapes des deux séquences. Si, de plus, les actions de l’agent et les comportements qu’elles
déclenchent n’ont pas d’influence sur la situation finale du plan, alors la séquence d’étapes sera complètement
indépendante du reste du plan. C’est le cas dans le plan présenté en figure 6.12.
Les séquences d’étapes n’étant pas liées à la situation finale sont alors supprimées du plan. Cependant,
les opérations de commitment présentes dans la séquence sont gardées en mémoire : ainsi,
dans le cas où le moteur de simulation du monde demande à DIRECTOR de raffiner la valeur d’un de
ces états, c’est la valeur utilisée dans le plan qui sera renvoyée, puisqu’elle ne met pas en péril le scé-
nario. Pour autant, ces opérations de commitment ne sont pas réalisées à l’initiative de DIRECTOR,
contrairement à celles présentes dans le scénario final, afin de laisser l’état du monde le plus ouvert
possible.
Si la génération du scénario échoue, car aucun plan vers la situation but n’est possible compte tenu
de l’état du monde, alors DIRECTOR envoie un message à TAILOR lui demandant de relâcher les contraintes.
Il pourra s’agir de choisir une autre situation but ou bien une situation moins précise, par
exemple de demander une fuite sans en préciser le type plutôt que de demander un type de fuite particulier.
Si la génération du scénario réussit, alors DIRECTOR passe à l’étape de suivi et exécution du
scénario.
6.5.2 Suivi et exécution
Une fois le scénario généré, DIRECTOR suit le déroulement des événements dans l’environnement
virtuel afin de vérifier que tout se passe comme prévu dans le scénario et de déclencher les ajuste-
1576.5. PROCESSUS DE GÉNÉRATION, SUIVI ET EXÉCUTION DU SCÉNARIOCHAPITRE 6. DIRECTOR
ments au moment où ils sont nécessaires.
Pour cela, à chaque réception d’un message indiquant le déclenchement d’un comportement ou
d’une action, DIRECTOR met à jour l’état d’avancement du scénario et déclenche les éventuels ajustements
nécessaires selon l’algorithme 1.
A la génération du plan, toutes les étapes correspondant à des actions qui ne sont pas précédées
par des étapes correspondant à des opérateurs de prédiction sont ajoutées aux étapes suivies, et les
ajustements qui les précèdent sont déclenchés. A la réception d’un message informant du déclenchement
d’une action ou d’un comportement correspondant à l’une des étapes suivies, DIRECTOR valide
l’étape et examine ses étapes suivantes : si toutes les étapes de prédiction précédant une étape donnée
sont validées, alors DIRECTOR ajoute cette étape aux étapes suivies, et déclenche les ajustements
associés.
Les ajustements ne sont pas déclenchés dès la génération du scénario afin de laisser l’état du monde
le plus ouvert possible dans le cas où les objectifs scénaristiques viendraient à changer, ou bien où les
actions de l’utilisateur mettraient en péril le scénario prévu et amènerait à devoir générer un scénario
différent.
Lorsque le plan comporte des étapes correspondant à des comportements qui ne sont précédées que
par des ajustements, comme c’est le cas de l’étape ❙♣❛r❦ dans la figure 6.13, ces ajustements ne sont
pas déclenchés dès la génération du plan. Lors de la validation d’une étape, si toutes les étapes de
même niveau soit sont déjà validées, soit n’ont pas d’étape de type action dans les chaînes de causalité
les précédant, alors les étapes de type comportement en début de ces chaînes sont ajoutées aux
étapes suivies et les comportements associés sont déclenchés. Ce sera ici le cas lors de la validation de
l’étape ▲❡❛❦, qui permettra de déclencher les ajustements P❤♦♥❡❈❛❧❧ et ❋♦r❝❡✲❖❝❝✉rr❡♥❝❡ ❙♣❛r❦.
Lorsque la prochaine étape à suivre est de type ■❣♥♦r❡, elle est ajoutée aux étapes suivies, de
même que les étapes suivantes de ce type, jusqu’à arriver à une étape correspondant à la réalisation
d’une action ou d’un comportement. A la réception d’un message correspondant à cette dernière
étape, DIRECTOR valide en même temps cette étape et l’ensemble des étapes ■❣♥♦r❡ qui la précè-
dent.
Si le moteur de simulation du monde a besoin de raffiner un état particulier, alors DIRECTOR vérifie
d’abord si une opération de commitment est prévue sur cet état dans le scénario, puis si une telle
opération a été enregistrée lors de la phase de génération du scénario. Dans le cas contraire, il ne
donne aucune consigne particulière au moteur de simulation, et celui-ci peut choisir une valeur par
défaut.
Si le comportement ou l’action activé dans l’environnement virtuel correspond à une étape censée
être ignorée, ou que l’action activée est différente de l’action attendue de la part de cet agent, alors le
scénario est en échec, et DIRECTOR va générer un nouveau scénario.
6.5.3 Replanification
Lorsque le scénario prévu est en échec, DIRECTOR génère un nouveau scénario à partir de l’é-
tat courant du monde, prenant donc en compte les ajustements ayant été effectués jusque là. Afin
de pouvoir prédire les actions des agents alors que la simulation est déjà lancée, il est nécessaire de
connaître leur avancement dans le modèle d’activité. Pour cela, DIRECTOR interroge le moteur de
simulation des personnages virtuels, et le moteur de suivi de l’utilisateur, afin d’obtenir les prédicats
t❛s❦✲st❛t❡ et ♣❛r❛♠❡t❡rs✲t❛s❦ reflétant l’activité des agents. De même, DIRECTOR interroge le
moteur de simulation du monde pour obtenir les nouvelles valeurs des états des objets, et des relations
entre eux.
158CHAPITRE 6. DIRECTOR6.5. PROCESSUS DE GÉNÉRATION, SUIVI ET EXÉCUTION DU SCÉNARIO
Algorithm 1 Algorithme de suivi du scénario et exécution des ajustements
function ONSCENARIOGENERATED(Steps, CausalLinks)
moni tor edStep s ← []
comple tedStep s ← []
for all ac t i onStep in Ge t Ac t i onStep s(Step s) do
inLinks ←Ge t InLinks(ac t i onStep,C ausalLink s)
if Ge t Sour ces(inLinks)∩Ge tP r ed i c t i onStep s(Step s) = [] then
ADDMONITOREDSTEP(ac t i onStep)
function ONACTIVATIONMESSAGERECEIVED(S)
if S ∈ moni tor edStep s then
VALIDATESTEP(S)
else if I g nor e(S) ∈ moni tor edStep s then
REPLANSCENARIO()
else
for all ac t i onStep in moni tor edStep s ∩Ge t Ac t i onStep s(Step s) do
if ac t i onStep.ag ent = S.ag ent and !I s I g nor e(ac t i onStep) then
REPLANSCENARIO()
function VALIDATESTEP(S)
remove S from moni tor edStep s
REMOVEPREVIOUSIGNORESTEPS(S)
add S to comple tedStep s
for all nex t Step in Ge tTar g e t s(Ge tOutLinks(S,C ausalLink s)) do
inLinks ←Ge t InLinks(nex t Step,C ausalLink s)
if (Ge t Sour ces(inLinks)∩Ge tP r ed i c t i onStep s(Step s)) ⊂ comple tedStep s then
ADDMONITOREDSTEP(nex t Step)
else
si bl ing s ←Ge t Sour ces(inLinks)∩Ge tP r ed i c t i onStep s(Step s)
si bl ing s ← si bl ing s\(moni tor edStep s ∪comple tedStep s)
for all si bl ing Step in si bl ing s do
if Ge t Ancestor s(si bl ing Step)∩Ge t Ac t i onStep s(Step s) 6= [] then
continue to next nex t Step
for all si bl ing Step in si bl ing s do
for all behStep in Ge t Ancestor s(si bl ing Step)∩Ge tBehav i our Step s(Step s) do
beh InLinks ←Ge t InLinks(behStep,C ausalLink s)
if Ge t Sour ces(beh InLinks)∩Ge tP r ed i c t i onStep s(Step s) = [] then
ADDMONITOREDSTEP(behStep)
function ADDMONITOREDSTEP(S)
add S to moni tor edStep s
inLinks ←Ge t InLinks(S,C ausalLink s)
for all ad j ustment Step in (Ge t Sour ces(inLinks)∩Ge t Ad j ustment Step s(Step s)) do
TRIGGERADJUSTMENT(ad j ustment Step)
if I s I g nor e(S) then
for all nex t Step in Ge tTar g e t s(Ge tOutLinks(S,C ausalLink s)) do
ADDMONITOREDSTEP(nex t Step)
function REMOVEPREVIOUSIGNORESTEPS(S)
inLinks ←Ge t InLinks(S,C ausalLink s)
for all pr ev i ousStep in (Ge t Sour ces(inLinks)∩moni tor edStep s) do
if I s I g nor e(pr ev i ousStep) then
REMOVEPREVIOUSIGNORESTEPS(pr ev i ousStep)
remove pr ev i ousStep from moni tor edStep s
add pr ev i ousStep to comple tedStep s
1596.5. PROCESSUS DE GÉNÉRATION, SUIVI ET EXÉCUTION DU SCÉNARIOCHAPITRE 6. DIRECTOR Goal :
(fire)
commitment: agent-novice marcel
action: ignore-turn-off-phone marcel phone1 tank1 car1
commitment: joint-used joint1
behaviour: leak tank1 joint1
commitment: tank-empty tank1
behaviour: ignore-leak tank1 joint1
action: open-tank marcel tank1 car1
behaviour: open tank1
action: pump-gas marcel tank1 car1
behaviour: pump-gas tank1 empty
behaviour: fire
happening: phonecall phone1
behaviour: spark phone1
occurrence: spark-true
Goal :
(fire)
commitment: agent-novice marcel
action: ignore-turn-off-phone marcel phone1 tank1 car1
commitment: joint-used joint1
behaviour: leak tank1 joint1
commitment: tank-empty tank1
behaviour: ignore-leak tank1 joint1
action: open-tank marcel tank1 car1
behaviour: open tank1
action: pump-gas marcel tank1 car1
behaviour: pump-gas tank1 empty
behaviour: fire
happening: phonecall phone1
behaviour: spark phone1
occurrence: spark-true
FIGURE 6.13 – Etat d’avancement du scénario 6.3 avant et après la réception d’un message informant
de l’activation du comportement correspondant à l’étape ❧❡❛❦ t❛♥❦✶ ❥♦✐♥t✶
160CHAPITRE 6. DIRECTOR 6.6. BILAN
6.6 Bilan
Le moteur DIRECTOR permet de générer des scénarios menant à une situation but donnée, en
utilisant des opérateurs de prédiction pour planifier une séquence d’étapes basée sur les modèles de
domaine et d’activité utilisés par une simulation. Ces scénarios sont réalisés dans l’environnement
virtuel par le biais d’ajustements déclenchés au fur et à mesure de l’avancement du scénario via les
actions de l’utilisateur ou des personnages virtuels autonomes.
Plutôt que d’exécuter directement le scénario généré en utilisant ses étapes comme des ordres envoyés
aux personnages virtuels, DIRECTOR utilise celles-ci pour suivre leurs actions et celles de l’utilisateur.
Cela permet d’une part davantage de réactivité face aux perturbations induites par les interactions
de ce dernier, puisque les personnages virtuels autonomes sont capables d’adapter leurs
actions à une nouvelle situation sans pour autant nécessiter que le scénario entier soit recalculé. Cela
permet d’autre part de laisser certains aspects de l’environnement virtuel évoluer de manière libre
lorsqu’ils ne sont pas concernés par le scénario ou bien qu’aucune situation but particulière n’a été
définie. De plus, l’utilisation d’ajustements pour contrôler des entités autonomes permet d’influencer
non seulement les personnages virtuels mais également les utilisateurs, en utilisant ces ajustements
pour modifier l’issue des comportements résultant de leurs actions.
La génération du scénario présentée dans ce chapitre ne permet cependant pas de contrôler d’autres
propriétés du scénario en dehors de la situation finale. Le chapitre suivant porte donc sur la représentation
et l’utilisation par DIRECTOR de différents objectifs scénaristiques, en particulier la représentation
d’espaces de scénarios d’intérêt grâce au langage CAUSALITY-DL.
1616.6. BILAN CHAPITRE 6. DIRECTOR
162Chapitre 7
Représentation et prise en compte des
objectifs scénaristiques
Sommaire
7.1 CAUSALITY-DL – Représentation d’espaces de scénarios d’intérêt . . . . . . . . . . . 164
7.1.1 Approche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Besoins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Proposition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
7.1.2 Description du langage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Evénements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Relations de subsomption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Relations de causalité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Barrières . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Propriétés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
7.1.3 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
7.2 Trames scénaristiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
7.3 Situations prescrites et proscrites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
7.4 Propriétés des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
7.4.1 Complexité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
7.4.2 Gravité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
7.4.3 Crédibilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
7.5 Prise en compte des objectifs scénaristiques par DIRECTOR . . . . . . . . . . . . . . 177
7.5.1 Sélection de la trame scénaristique . . . . . . . . . . . . . . . . . . . . . . . . . . 177
7.5.2 Instanciation de la trame scénaristique . . . . . . . . . . . . . . . . . . . . . . . . 178
7.5.3 Complétion du scénario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
7.6 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Afin de pouvoir exercer un contrôle plus important sur le scénario de l’environnement virtuel
que de se limiter à la spécification de la situation finale, le processus de génération de scénarios de
DIRECTOR, présenté dans le chapitre 6 peut être étendu pour prendre en compte un ensemble d’objectifs
scénaristiques.
Nous avons distingué dans le chapitre 3 deux types d’objectifs scénaristiques complémentaires : les
objectifs de bas niveau, permettant d’opérer un contrôle fin au niveau des situations, et les objectifs
scénaristiques de haut niveau, permettant de contrôler des propriétés globales du scénario. Nous
avons également distingué les objectifs scénaristiques statiques, qui s’ajoutent au contenu scénaristique
pour cadrer un environnement virtuel existant dans le cas d’une scénarisation extrinsèque, des
objectifs scénaristiques dynamiques, qui sont générés au cours d’une session d’utilisation de l’environnement
virtuel et permettent d’adapter le scénario à l’activité de l’utilisateur. Nous estimons que
1637.1. CAUSALITY-DL CHAPITRE 7. OBJECTIFS SCÉNARISTIQUES
tous ces types d’objectifs sont importants et doivent être considérés pour la scénarisation d’un environnement
virtuel, particulièrement dans un cadre de formation et d’aide à la décision.
Nous proposons de prendre en compte au niveau de la génération des scénarios par DIRECTOR à la
fois des espaces de scénarios d’intérêt statiques, et des objectifs générés de manière dynamique au
cours de la simulation par le moteur TAILOR, sous la forme de situations prescrites et proscrites et de
contraintes sur les propriétés du scénario.
Dans ce chapitre, nous présenterons tout d’abord CAUSALITY-DL, le langage utilisé pour écrire des
modèles de causalité qui définissent des espaces de scénarios d’intérêt, puis nous détaillerons la
représentation des trames scénaristiques qui peuvent être extraites de ces modèles. Nous présenterons
ensuite les deux types d’objectifs scénaristiques dynamiques pris en compte par DIRECTOR :
les situations prescrites et proscrites, et les propriétés des scénarios. Enfin, la dernière section de ce
chapitre porte sur la prise en compte de l’ensemble de ces éléments dans le processus de génération
de scénario de DIRECTOR.
7.1 CAUSALITY-DL – Représentation d’espaces de scénarios d’intérêt
Le modèle de causalité décrit les événements considérés comme signifiants pour une utilisation
donnée de l’environnement virtuel, et les liens de subsomption et de causalité qui les relient, qu’un
événement permette de réaliser un autre événement ou inhibe au contraire cette réalisation. Pour le
représenter, nous avons proposé le langage CAUSALITY-DL, qui fait suite aux réflexions sur les formalismes
de représentation utilisés en analyse de risques réalisées précédemment par notre équipe
de recherche, notamment sur les nœuds papillons [Camus, 2010] et leur traduction sous forme de
réseaux bayésiens [Amokrane, 2010].
7.1.1 Approche
Besoins
Le langage de représentation des espaces de scénarios d’intérêt a, de même que les langages de
représentation du contenu scénaristique, vocation à être utilisé par des experts du domaine noninformaticiens,
en l’occurrence par des formateurs ou des experts de l’analyse de risques pour les cas
d’application considérés. Il est donc nécessaire que ce langage soit intelligible et utilisable par ces
experts.
Il est également nécessaire qu’il soit interprétable, afin de permettre, d’une part, de raisonner sur
les événements du modèle à l’aide du moteur de planification, et d’autre part, d’évaluer l’activation
ou la non-activation de chaque événement afin de situer de manière dynamique l’avancement de la
simulation par rapport au modèle.
Ce langage doit aussi être expressif. Il doit tout d’abord permettre la représentation des relations de
causalité entre événements, y compris les conjonctions et disjonctions pouvant exister au niveau de
ces relations. Il doit également proposer plusieurs niveau d’abstraction, à la fois via la spécification
de relations de subsomption entre événements et par l’utilisation de variables et de concepts plutôt
que de références directes à des instances d’objets de l’environnement virtuel. Enfin, il doit permettre
de représenter le modèle à différents niveaux de granularité, en spécifiant ou non les événements
intermédiaires entre deux événements principaux.
Nous souhaitons également que ce langage soit modulaire, afin de permettre d’ajouter ou d’enlever
facilement des parties du modèle pour pouvoir adapter l’environnement virtuel à de nouvelles utilisations
sans avoir à réécrire un nouveau modèle à chaque fois.
Cette modularité, associée à la possibilité de représenter les modèles avec différents niveau de granularité
et d’abstraction, donnent au système de scénarisation utilisant ce langage davantage d’adaptabilité,
en regard des systèmes basés sur des graphes exhaustifs décrivant l’ensemble des scénarios
164CHAPITRE 7. OBJECTIFS SCÉNARISTIQUES 7.1. CAUSALITY-DL
possibles. Il n’est pas question ici d’expliciter les séquences d’actions et de comportements à réaliser
dans l’environnement virtuel, mais de spécifier un ensemble d’étapes d’intérêt pour une utilisation
donnée.
Proposition
Nous avons choisi pour cela de proposer un formalisme sous forme de graphe inspiré de formalismes
utilisés en analyse de risques, et en particulier de celui des nœuds papillons [Bernuchon
et al., 2006]. Ce formalisme, CAUSALITY-DL, permet ainsi de représenter informatiquement les ré-
sultats des analyses de risques réalisées sur le terrain, jusqu’ici représentées à l’aide de formalismes
graphiques.
Les figures 7.1 et 7.2 présentent un extrait des parties en amont et en aval de l’événement redouté
central d’un nœud papillon réalisé dans le cadre d’une analyse de risques sur le cas d’application
des dépôts pétroliers. Elles correspondent respectivement à un arbre de défaillance (causes) et à un
arbre d’événements (conséquences) autour de l’événement correspondant au débordement d’une
citerne par le dôme. Le rectangle rouge correspond à cet événement redouté central, tandis que les
rectangles blancs correspondent aux événements menant à ou découlant de cet événement, et les
rectangles noirs correspondent aux barrières permettant d’interrompre la propagation de la causalité
d’un événement à un autre.
FIGURE 7.1 – Extrait d’un nœud papillon présentant les causes d’un débordement de citerne.
FIGURE 7.2 – Extrait d’un nœud papillon présentant les conséquences d’un débordement de citerne.
1657.1. CAUSALITY-DL CHAPITRE 7. OBJECTIFS SCÉNARISTIQUES
Contrairement aux nœuds papillons qui associent deux arbres autour d’un événement redouté
central, CAUSALITY-DL repose sur un graphe orienté acyclique, afin de permettre la représentation
des causes et des conséquences de plusieurs événements à la fois. Les liens de causalité qui lient les
événements de ces graphes ont une valeur indicative, et ne correspondent pas à des états spécifiques
du monde. Il est ainsi possible d’omettre dans le modèle certains événements des chaînes de causalité,
afin de ne représenter que ceux qui sont signifiants par rapport à une utilisation donnée.
Les nœuds papillons sont un formalisme graphique et textuel, qu’il est nécessaire d’opérationnaliser.
Pour cela, les nœuds du graphe reprennent les événements définis dans le modèle du domaine écrit
en DOMAIN-DL. A l’instar des modèles représentés en DOMAIN-DL, les modèles représentés en
CAUSALITY-DL possèdent une partie statique et une partie dynamique : les événements sont associés
à un état d’activation dépendant de l’état courant du monde, et qui permet de suivre l’avancée
dans l’environnement virtuel et de déterminer l’activabilité ou non d’un événement en fonction des
barrières qui sont levées.
7.1.2 Description du langage
Les modèles de causalité représentés en CAUSALITY-DL sont des graphes orientés acycliques
dont les nœuds se réfèrent à des événements représentés dans le modèle de domaine. Ces événements
peuvent être liés par des relations de subsomption ou de causalité. Les relations de causalité
sont également déterminées par des portes logiques indiquant la conjonction ou la disjonction, et
sont conditionnées par la levée d’un ensemble de barrières, elles-aussi correspondant à des événements
du modèle du domaine. Les modèles décrits en CAUSALITY-DL s’appuient sur les modèles
représentés en DOMAIN-DL pour la spécification des événements et des liens de subsomption, et
sont associés à une représentation graphique. Un extrait de modèle de causalité est présenté dans la
figure 7.3.
Anti-Overflowing Probe Triggered Emergency Stop Triggered
Valve Lever Checked
Loading Plan Checked
Tank Emptyness Checked
Valve Leak Leak
Tank Overflow Dome Leak
Used Valve Spring Bad Valve Closure
Loading Programming Error
Non Empty Tank
Truck Cleaned with Water
Emergency Shower Triggered
Phone Turned Off
Protective Goggles Worn
Fire
Cloud Fire
Pool Fire
Driver on Fire
Explosible Cloud
Product Spreading
Product Splattering Eye Splattering
Ignition Source
Cigarette Lighting
Storm
Phone Call
Leak
FIGURE 7.3 – Extrait d’un modèle de causalité coupé en deux au niveau de l’événement ▲❡❛❦
Les modèles sont décrits selon le méta-modèle présenté dans la figure 7.4.
166CHAPITRE 7. OBJECTIFS SCÉNARISTIQUES 7.1. CAUSALITY-DL
Event
Cause
DurativeEvent PunctualEvent
OR-Gate AND-Gate
Barrier
PreventionBarrier
*
ProtectionBarrier
*
ActiveBarrier
0..1 1
PassiveBarrier
1
0..1
2..* 2..*
FIGURE 7.4 – Méta-modèle de CAUSALITY-DL
Evénements
Les éléments de base du modèle de causalité sont les événements sélectionnés à partir du modèle
de domaine écrit en DOMAIN-DL. Ces événements peuvent donc, comme dans le modèle de
domaine, être endogènes ou exogènes, être ponctuels ou duratifs, et correspondre ainsi à une situation
donnée ou à un changement de situation.
Chaque événement est lié aux objets qu’il concerne au travers des relations présentes dans le modèle
du domaine. Lorsqu’un événement est réalisé dans l’environnement virtuel, une instance du concept
correspondant à cet événement est créée et ces relations sont instanciées pour lier cette dernière aux
instances d’objets concernés.
Ces instances d’événements sont également dotées d’un état d’activation, permettant de connaître
l’état de l’environnement virtuel par rapport au modèle de causalité. Les règles qui régissent la création
et l’activation d’un événement dépendent du type d’événement :
– Les instances d’événements exogènes ponctuels sont créées et activées directement de manière
externe (il s’agit des happenings).
– Les instances d’événements exogènes duratifs sont créées et activées (resp. désactivées) via les
règles liées à l’activation des événements ponctuels correspondant à leur début (resp. à leur
fin). Par exemple, une instance de l’événement ❘❛✐♥ sera créée et activée suite au happening
❘❛✐♥❙t❛rt, et désactivée suite au happening ❘❛✐♥❙t♦♣.
– Les événements endogènes duratifs sont associés à des règles d’activation, comme celles présentées
précédemment dans les tableaux 5.3 et 5.4. C’est via ces règles que la création, l’activation
et la désactivation des instances de ces événements est réalisée.
– Deux cas de figure se posent pour les événements endogènes ponctuels : les événements ponctuels
qui correspondent au début ou à la fin d’un événement duratif, et les événements ponctuels
autonomes. Les premiers sont créés et activés via les mêmes règles que les événements
duratifs auxquels ils sont associés. Les seconds sont associés à leurs propres règles, qui comparent
l’état de l’environnement virtuel au pas de simulation courant et l’état au pas de simulation
1677.1. CAUSALITY-DL CHAPITRE 7. OBJECTIFS SCÉNARISTIQUES
précédent pour détecter les changements d’états ponctuels.
Relations de subsomption
Les relations de subsomption entre événements définies au niveau du modèle du domaine sont
reprises dans le modèle de causalité. C’est le cas par exemple des relations qui lient les événements
❱❛❧✈❡ ▲❡❛❦ et ❉♦♠❡ ▲❡❛❦ à l’événement ▲❡❛❦ dans l’exemple 7.3.
Un événement est ainsi considéré comme actif lorsque l’un des événements qu’il subsume est actif.
De même, les relations entre l’événement subsumant et les différents objets concernés subsument
des relations entre l’événement subsumé et les objets que celui-ci concerne.
Relations de causalité
Les événements du modèle sont liés par des relations de causalité, permettant d’indiquer les
chaines d’événements et les combinaisons d’événements pouvant mener à un événement donné.
Les conjonctions ou disjonctions au niveau de ces liens de causalité sont exprimées à l’aide de “portes
logiques” ❊❚ et ❖❯, à l’instar des arbres de défaillances.
Cependant, à l’inverse des arbres de défaillance, ces portes n’apparaissent qu’au niveau des liens de
causalité, et non au niveau des liens de subsomption. En effet, du fait de la dimension temporelle
des systèmes considérés, la présence d’un lien direct entre un événement A et un événement B n’implique
pas pour autant qu’il s’agisse du même événement : par exemple, la relation entre un événement
correspondant à la programmation d’un sur-remplissage d’une citerne et un événement correspondant
au sur-remplissage effectif de celle-ci ne relève pas de la subsomption. Il est donc possible
de considérer des chaines de causalité alternatives au niveau d’une porte ❖❯. Dans le formalisme des
arbres de défaillance, les portes ❖❯ sont au contraire nécessairement liées à des relations de subsomption
: cela nécessite de faire figurer dans le modèle des nœuds correspondant à des événements identiques
qui diffèrent uniquement par l’historique des événements y ayant mené. Cela nécessiterait par
exemple de considérer les événements “sur-remplissage d’une citerne causé par la programmation
d’une quantité supérieure à la capacité de la citerne sur une citerne vide” et “sur-remplissage d’une
citerne causé par la programmation d’une quantité égale à la capacité de la citerne sur une citerne
déjà pleine” comme étant deux événements différents.
Les relations de causalité sont également associées à un contexte permettant d’indiquer les correspondances
entre les objets liés aux différents événements. Un exemple est présenté dans le tableau
7.1.
✭❄❡✈✶ r❞❢✿t②♣❡ ✿❇❛❞❱❛❧✈❡❈❧♦s✉r❡✮
✭❄❡✈✶ ✿❝♦♥❝❡r♥s✲✈❛❧✈❡ ❄✈✶✮
✭❄❡✈✷ r❞❢✿t②♣❡ ✿❱❛❧✈❡▲❡❛❦✮
✭❄❡✈✷ ✿❝♦♥❝❡r♥s✲✈❛❧✈❡ ❄✈✷✮
❡q✉❛❧✭❄✈✶✱ ❄✈✷✮
TABLE 7.1 – Correspondance entre les objets concernés par les événements ❇❛❞ ❱❛❧✈❡ ❈❧♦s✉r❡ et
❱❛❧✈❡ ▲❡❛❦ contenue au niveau du lien de causalité entre ces événements.
Barrières
Chaque événement du graphe peut être associé à un ensemble de barrières, qui correspondent
aux événements permettant d’interrompre la propagation de la causalité — dans le cas d’analyses de
risques, ces événements résultent des systèmes de sécurité. En reprenant la typologie des barrières
proposée dans [Miche et al., 2009], on considère que ces barrières peuvent être actives ou passives.
168CHAPITRE 7. OBJECTIFS SCÉNARISTIQUES 7.1. CAUSALITY-DL
Les barrières passives correspondent à des événements duratifs de type maintien d’une situation,
par exemple : “Port des Equipements de Protection Individuels”. Les barrières actives correspondent
à l’association d’un événement duratif optionnel se rapportant à la mise en place de la barrière, par
exemple “Bon fonctionnement de l’arrêt d’urgence”, et d’un événement ponctuel se rapportant à son
activation, par exemple “Déclenchement de l’extincteur à eau automatique”. Dans le cas des barrières
humaines, cet événement ponctuel correspond à la réalisation d’une action, par exemple “Appui sur
l’arrêt d’urgence”.
Une même barrière peut être associée à un ou plusieurs événements. Pour chaque événement, la barrière
peut être une barrière de prévention ou une barrière de protection. Les barrières de prévention
apparaissent en amont de l’événement dans la représentation graphique du modèle et empêchent la
réalisation de l’événement. Les barrières de protection apparaissent en aval dans le modèle et empêchent
les conséquences de l’événement de déclencher à leur tour d’autres événements.
Les barrières ne peuvent apparaître qu’au niveau des relations de causalité, et non au niveau des relations
de subsomption.
Propriétés
Les événements et les barrières présents dans le modèle de causalité sont également annotés avec
un certain nombre de propriétés qualitatives. Celles-ci sont décrites en détail dans la section 7.4.
7.1.3 Bilan
Nous avons proposé le langage CAUSALITY-DL, qui permet de représenter des espaces de scénarios
d’intérêt au travers de relations de subsomption et de relations de causalité liant des événements
d’un modèle de domaine.
CAUSALITY-DL est inspiré du formalisme des nœuds papillons utilisé en analyse de risques, et est
associé à une représentation graphique très proche de celle utilisée par les experts des risques, le
rendant intelligible pour ces derniers. CAUSALITY-DL pourrait ainsi être utilisé directement par ces
experts pour spécifier les relations entre événements.
Contrairement aux nœuds papillons, cependant, CAUSALITY-DL n’est pas uniquement graphique,
mais est formalisé en termes d’événements liés au modèle du domaine représenté en DOMAIN-DL,
et est donc lui aussi interprétable. De même, la spécification des correspondances entre variables
concernées par les différents événements du modèle permet d’expliciter les connaissances tacites
des experts qui conçoivent celui-ci, de sorte à pouvoir les opérationnaliser. Les modèles ainsi décrits
sont utilisables à la fois pour du suivi de l’environnement virtuel, au travers des états d’activation
des événements, et pour de la génération de scénarios, comme nous le verrons dans la suite de ce
chapitre.
La possibilité d’écrire des modèles à différents niveau de granularité permet d’éviter d’avoir à spé-
cifier des séquences exhaustives d’événements de bas niveau. CAUSALITY-DL permet ainsi d’écrire
des modèles de manière modulaire, en ajoutant, modifiant ou supprimant des parties du graphe sans
avoir à modifier les autres parties. Il est par exemple possible d’enlever ou de rajouter une chaine de
causalité alternative menant à un événement selon qu’on souhaite ou non qu’elle puisse se produire
dans l’environnement virtuel.
Enfin, CAUSALITY-DL est un langage expressif qui permet de représenter des chaines de causalité
à différents niveaux de granularité et différents niveaux d’abstraction, au travers de relations de subsomption
entre événements et de référence à des concepts d’objets du modèle du domaine. Le graphe
n’est pas centré sur un événement particulier, et permet donc de représenter des modèles plus complexes
que ceux qui peuvent être représentés avec les formalismes classiques utilisés en analyse des
risques. A l’instar de ces modèles, l’utilisation de portes logiques au niveau des liens de causalité pour
représenter la conjonction et la disjonction, et de barrières pour représenter l’inhibition, permet la
1697.2. TRAMES SCÉNARISTIQUES CHAPITRE 7. OBJECTIFS SCÉNARISTIQUES
description de relations complexes entre événements.
Les modèles représentés en CAUSALITY-DL sont utilisés par le moteur DIRECTOR pour sélectionner
des trames scénaristiques, qui correspondent à un parcours particulier dans le modèle de causalité
menant à un événement but.
7.2 Trames scénaristiques
Une trame scénaristique (ou plot) est un ensemble de points clés (ou plot points) partiellement
ordonnés, généré par DIRECTOR en vue de guider la création d’un scénario.
Trame scénaristique
Une trame scénaristique est définie comme un tuple 〈P,L,pF ,C〉 tel que P est un ensemble de
points clés, L est un ensemble de liens de causalité entre ces points, tel que tout élément l ∈ L
est un couple 〈p1,p2〉 avec p1,p2 ∈ P, pF le point clé final de la trame scénaristique, tel que
∀〈p1,p2〉 ∈ L,p1 6= pF , et C le contexte de la trame scénaristique, c’est à dire un ensemble de
contraintes de correspondance sur les variables des points clés.
Un point clé correspond à une situation non instanciée, c’est à dire à un ensemble d’assertions
sur l’état du monde référençant des variables, et peut être associé à un ensemble de barrières, elles
aussi correspondant à des assertions sur le monde.
Point clé
Un point clé est défini comme un tuple 〈A,V,B〉 tel que A est un ensemble d’assertions, V
est un ensemble de variables tel que tout élément v ∈ V est un couple 〈i d,c〉 où i d est un
identifiant et c un concept du modèle du domaine, et B est un ensemble de barrières tel que
tout élément b ∈ B est un couple 〈Ab,Vb〉.
Chaque point clé correspond à un événement du modèle de causalité. Les assertions contenues
par un point clé dépendent du type d’événement considéré. Pour un événement endogène, il s’agira
des préconditions des règles d’activation de l’événement, ou de désactivation s’il s’agit d’un événement
ponctuel marquant la fin d’un événement duratif. Pour un événement exogène, il s’agira des
effets du ou des comportements directement déclenchés par l’événement.
La figure 7.5 présente un exemple de trame scénaristique, et le tableau 7.2 détaille un des points
clé de cette trame.
De même, les barrières associées aux points clés correspondent à des barrières du modèle de
causalité. Les barrières passives, associées à un événement duratif, contiennent ainsi les assertions
correspondant aux préconditions de la règle d’activation de l’événement. Les barrières actives, qui
sont à la fois associées à un événement duratif et à un événement ponctuel correspondant à l’activation
de la barrière, contiennent à la fois des assertions correspondant aux préconditions de la règle
d’activation de l’événement duratif, et des assertions témoignant de l’activation préalable du comportement
déclenché par l’événement ponctuel — ou par l’action désignée par cet événement —
par exemple les assertions ✭❤❛s✲❜❡❡♥✲❛❝t✐✈❛t❡❞ P✉s❤❇✉tt♦♥✮ et ✭♦❧❞✲♣❛r❛♠s✲P✉s❤❇✉tt♦♥ ❄❡❜
✲ ❊♠❡r❣❡♥❝②❙t♦♣❇✉tt♦♥✮ témoigneront de l’activation antérieure du comportement déclenché par
l’action d’appui sur l’arrêt d’urgence, activation représentée pour le moteur de planification par l’assertion
✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r P✉s❤❇✉tt♦♥✮.
Les barrières associées à un point clé correspondent aux barrières qu’il est nécessaire de lever pour
170CHAPITRE 7. OBJECTIFS SCÉNARISTIQUES 7.2. TRAMES SCÉNARISTIQUES
Pool Fire
Product Spreading ! Emergency Stop Triggered Cigarette Lighting
Dome Leak ! Anti-Overflowing Probe Triggered
Tank Overflow ! Tank Emptyness Checked
Non Empty Tank
FIGURE 7.5 – Exemple de trame scénaristique générée par DIRECTOR
Plot Point ❚❛♥❦ ❖✈❡r❢❧♦✇
Variables ❄t❛♥❦ ✲ ❚❛♥❦
❄q✉❛♥t✐t② ❄❝❛♣❛❝✐t② ✲ ◗✉❛♥t✐t②
Assertions
✭❢✐❧❧✲st❛t❡✲❢✐❧❧✐♥❣ ❄t❛♥❦ ❄q✉❛♥t✐t②✮
✭❢✐❧❧✲st❛t❡✲❝❛♣❛❝✐t② ❄t❛♥❦ ❄❝❛♣❛❝✐t②✮
✭s✉♣❡r✐♦r ❄q✉❛♥t✐t② ❄❝❛♣❛❝✐t②✮
Barriers
Variables ❄t❛♥❦ ✲ ❚❛♥❦
❚❛♥❦ ❊♠♣t✐♥❡ss ❄❛ ✲ ❆❣❡♥t
❈❤❡❝❦❡❞ Assertions ✭❤❛s✲❜❡❡♥✲❛❝t✐✈❛t❡❞ ❈❤❡❝❦❚❛♥❦❊♠♣t✐♥❡ss✮
✭♦❧❞✲♣❛r❛♠s✲❈❤❡❝❦❚❛♥❦❊♠♣t✐♥❡ss ❄❛ ❄t❛♥❦✮
Context
✭❢✐❧❧✲st❛t❡✲❝❛♣❛❝✐t② ❚❛♥❦❖✈❡r❢❧♦✇ ✿ ❄t❛♥❦ ❚❛♥❦❖✈❡r❢❧♦✇ ✿ ❄❝❛♣❛❝✐t②✮
✭s✉♣❡r✐♦r ❚❛♥❦❖✈❡r❢❧♦✇ ✿ ❄q✉❛♥t✐t② ❚❛♥❦❖✈❡r❢❧♦✇ ✿ ❄❝❛♣❛❝✐t②✮
❚❛♥❦❖✈❡r❢❧♦✇ ✿ ❄t❛♥❦ = ❚❛♥❦❊♠♣t✐♥❡ss❈❤❡❝❦❡❞ ✿ ❄t❛♥❦
TABLE 7.2 – Exemple de point clé correspondant à l’événement endogène duratif ❚❛♥❦ ❖✈❡r❢❧♦✇.
pouvoir atteindre le point clé en question. De fait, lors de la génération des trames scénaristiques, les
barrières de protection associées à un événement sont transformées en barrières de prévention des
événements qui le suivent directement, et ainsi associées au point clé correspondant. C’est le cas par
exemple de la barrière ❚❛♥❦ ❊♠♣t✐♥❡ss ❈❤❡❝❦❡❞ dans la figure 7.5. De même, les barrières associées
à un événement subsumant un autre événement sont répercutées sur ce dernier.
Le contexte de la trame scénaristique est créé à partir des contraintes de correspondance spécifiées
sur les liens de causalité du modèle et des attributs déclarés comme statiques dans le modèle du domaine
— dans l’exemple 7.2, il s’agit de la capacité de la cuve et de la relation de supériorité entre les
deux quantités.
Pour sélectionner une trame scénaristique à suivre, DIRECTOR se base sur les objectifs scénaristiques
dynamiques définis par le moteur TAILOR : les situations prescrites et proscrites, et les contraintes sur
les propriétés du scénario.
1717.3. SITUATIONS PRESCRITES ET PROSCRITES CHAPITRE 7. OBJECTIFS SCÉNARISTIQUES
7.3 Situations prescrites et proscrites
Le premier type d’objectifs dynamiques utilisé pour contrôler la génération des scénarios par
DIRECTOR est la spécification de situations prescrites ou proscrites dans le scénario.
Il s’agit d’un contrôle de bas niveau, permettant de contrôler précisément quelles situations seront
rencontrées par l’utilisateur ; il peut s’agir de spécifier des situations d’apprentissage mettant en jeu
des connaissances ou des compétences particulières, ou encore de tester la confiance dans les barrières
d’un système par rapport à un accident particulier.
TAILOR envoie ainsi à DIRECTOR un ensemble de contraintes de situations définies comme suit :
Contrainte de situation
Une contrainte de situation Csi t est un couple 〈e,d〉 tel que e est un événement appartenant
au modèle de causalité et d ∈ [−1; 1] est la désirabilité de cet événement.
Cet ensemble contient un élément particulier 〈eF , 1〉 qui correspond à la situation finale désirée
pour le scénario. Cette contrainte est une contrainte locale, qui porte sur la fin du scénario. Le reste
des contraintes sont des contraintes globales, qui doivent être respectées sur l’ensemble du scénario.
Les situations prescrites ont une désirabilité d positive et correspondent aux événements que l’on
souhaite voir apparaître dans le scénario. Les situations proscrites ont une désirabilité d négative et
correspondent aux événements à éviter.
Le modèle de causalité reprenant les relations de subsomption entre événements définies dans le modèle
du domaine, et donc l’ensemble de leur hiérarchie, il est possible de définir des contraintes de
haut niveau sur les situations, par exemple en spécifiant une désirabilité sur un événement “Accident”
plutôt que de donner un événement accidentel particulier. Cela est particulièrement utile lorsqu’on
s’intéresse à une situation d’apprentissage dans l’optique de mettre en jeu des compétences particulières
de l’utilisateur, mais que la façon d’arriver à cette situation est négligeable. Par exemple, dans
le cas d’application des assistantes de vie, on pourra chercher à amener l’apprenant à effectuer une
manœuvre de Heimlich sur un enfant, et donc viser une situation d’étouffement. Selon les cas, la
cause de l’étouffement (“Etouffement avec des billes” ou “Etouffement avec des cailloux”) peut ne
pas avoir d’incidence, et donc il sera possible de spécifier l’objectif à plus haut niveau (“Etouffement”)
afin de laisser à DIRECTOR davantage de marge de manœuvre dans la génération et la réalisation
du scénario.
Le score d’une trame scénaristique par rapport aux contraintes de situation est calculé de la manière
suivante : pour une contrainte donnée, s’il existe un point clé PT de la trame scénaristique qui correspond
à l’événement prescrit/proscrit ou à un événement qui est subsumé par celui-ci, alors on
ajoute au score total la désirabilité de l’événement, sinon on lui retire.
Calcul du score d’une trame scénaristique pour les contraintes de situations
f (e,T ) =
1 if ∃p ∈ PT : id(p) = id(e)
1 if ∃p ∈ PT ,∃e
0 ∈ E : id(p) = id(e
0
)∧is-a(e
0
,e)
−1 otherwise
Ssi t(T ) =
X
〈e,d〉∈Csi t
f (e,T )∗d
172CHAPITRE 7. OBJECTIFS SCÉNARISTIQUES 7.4. PROPRIÉTÉS DES SCÉNARIOS
7.4 Propriétés des scénarios
En parallèle des contraintes de bas niveau sur les situations, DIRECTOR peut également prendre
en compte des contraintes de haut niveau, portant sur des propriétés globales du scénario.
Les éléments du modèle de causalité — événements, et, dans certains cas, barrières — sont annotés
avec des valeurs individuelles pour ces propriétés. Plutôt que d’opter pour une approche quantitative,
il s’agira de qualifier ces éléments : comme il a été noté lors de l’état de l’art sur les formalismes
de représentation utilisés en analyse de risques, il est délicat pour les experts de fournir des chiffres
précis pour quantifier la fréquence d’occurrence ou encore la gravité d’événements particuliers. La
génération de scénarios dans un but de formation ne nécessitant pas une telle précision, ces valeurs
seront déterminées à partir d’un ensemble d’échelles qualitatives, détaillées dans chacune des parties
suivantes.
Les connaissances permettant d’évaluer ces propriétés pour l’ensemble d’une trame scénaristique
à partir des propriétés individuelles sont indépendantes du domaine, et encodées sous la forme de
fonctions d’évaluation.
Les propriétés prises en compte par DIRECTOR sont au nombre de trois : la complexité de la trame
scénaristique et des événements qu’elle contient, la gravité des conséquences des événements de la
trame scénaristique, et la crédibilité de la trame scénaristique.
7.4.1 Complexité
La complexité en informatique met en jeu de nombreux aspects. Nous ne nous intéressons pas
ici à la complexité d’un scénario en termes algorithmiques, c’est à dire au temps et aux ressources
nécessaires pour générer et exécuter le scénario, mais à la complexité ressentie par l’utilisateur de la
simulation, que l’on assimile d’une part à la charge cognitive nécessaire pour appréhender la trame
scénaristique et les liens de causalité entre les différents événements, et d’autre part à l’expertise
nécessaire pour réagir face à un événement donné.
Il peut être intéressant, particulièrement dans le cas d’environnements virtuels pour l’apprentissage,
de contrôler cette complexité, par exemple en la faisant croître au fur et à mesure des sessions d’utilisation.
Nous définissons ainsi quatre niveaux de complexité qualitatifs, présentés dans le tableau 7.3. Chaque
niveau est associé à une valeur entre 0 et 3.
Niveau de complexité Description Valeur
élémentaire
Aucune connaissance ou compétence particulière n’est
nécessaire pour réagir face à l’événement. 0
Aucun autre facteur n’intervient en parallèle
simple
Des connaissances et compétences limitées sont suffisantes
pour réagir face à l’événement. 1
Un nombre limité de facteurs interviennent en parallèle.
moyen
Certaines connaissances et compétences dans le domaine
sont nécessaires pour réagir face à l’événement. 2
Plusieurs facteurs interviennent en parallèle
élevé
Des connaissances et compétences expertes dans le domaine
sont nécessaires pour réagir face à l’événement 3
De nombreux facteurs interviennent en parallèle.
TABLE 7.3 – Niveaux de complexité d’un événement ou d’une trame scénaristique
Chaque événement est associé à un niveau de complexité, qui reflète le niveau d’expertise qui
1737.4. PROPRIÉTÉS DES SCÉNARIOS CHAPITRE 7. OBJECTIFS SCÉNARISTIQUES
serait nécessaire à une personne, dans la situation réelle, pour remettre le système dans un mode de
fonctionnement nominal, ou de manière générale, pour exécuter la suite de sa procédure à partir de
cet événement.
La complexité qui est calculée à partir des complexités des événements individuels correspond à la
complexité interactionnelle de la trame scénaristique. La complexité globale correspond à la moyenne
de la complexité interactionnelle et de la complexité temporelle.
Contrainte de complexité
Une contrainte de complexitéCcomp est constituée d’un couple 〈vcomp,dcomp〉tel que vcomp ∈
[0, 3] est un niveau de complexité et dcomp ∈ [0, 1] est la désirabilité de cette complexité.
Les niveaux de complexité d’une trame scénaristique et le score d’une trame scénaristique par
rapport à une contrainte de complexité donnée sont calculés de la manière suivante :
La complexité temporelle complexitytemp(T ) est calculée à partir du nombre de branches parallèles
et de barrières présentes dans la trame scénaristique, représenté par la fonction n(T ).
La complexité interactionnelle complexityint(T ) correspond à la complexité maximale des points clés
p de la trame scénaristique.
Le niveau de complexité d’une trame scénaristique complexity(T ) correspond à la moyenne de sa
complexité temporelle complexitytemp(T ) et de sa complexité interactionnelle complexityint(T ), ramenée
à l’entier directement inférieur.
Le score de complexité Scomp(T ) équivaut à la différence entre le niveau de complexité de la trame
scénaristique complexity(T ) et le niveau de complexité désiré vcomp, normalisée et multipliée par la
désirabilité dcomp.
Calcul du score d’une trame scénaristique pour la contrainte de complexité
complexitytemp(T ) =
0 if n(T ) = 0
1 if 1 É n(T ) É 2
2 if 3 É n(T ) É 7
3 if n(T ) Ê 8
complexityint(T ) = max
p∈PT
(complexity(p))
complexity(T ) =
$
complexityint(T )+complexitytemp(T )
2
+0, 5%
Scomp(T ) =
|3−complexity(T )− vcomp|
3
∗dcomp
7.4.2 Gravité
La gravité d’un événement correspond à une évaluation subjective de ses conséquences négatives
sur le système. Il s’agira ici de considérer la gravité selon le point de vue de l’utilisateur de la simulation.
Là encore, il est intéressant de pouvoir contrôler cette propriété, particulièrement dans un cadre d’environnements
virtuels pour la formation : on cherchera alors à minimiser la gravité des scénarios pour
des apprenants novices, de sorte à ne pas les choquer, mais on pourra augmenter la gravité pour des
apprenants experts afin de leur faire prendre conscience des conséquences possibles de leurs erreurs.
174CHAPITRE 7. OBJECTIFS SCÉNARISTIQUES 7.4. PROPRIÉTÉS DES SCÉNARIOS
Pour définir ces niveaux de gravité, nous reprenons l’échelle proposée dans la norme de sécurité CENELEC
EN 50126, reproduite dans [Belmonte, 2008]. Chacun de ces niveaux est associé à une valeur
entre 0 et 4. Le tableau 7.4 présente les différents niveaux de gravité considérés.
Niveau de gravité Description Valeur
nul Aucun dommage. 0
insignifiant Dommages mineurs pour un système ou sous-système. 1
Eventuellement une personne blessée.
marginal
Dommages graves pour un ou plusieurs systèmes ou
sous-systèmes. 2
Blessures légères et/ou menace pour l’environnement.
critique
Un mort et/ou une personne grièvement blessée et/ou
des dommages graves pour l’environnement. 3
Perte d’un système ou sous-système important.
catastrophique Des morts et/ou plusieurs personnes gravement blessées
et/ou des dommages majeurs pour l’environnement. 4
TABLE 7.4 – Niveaux de gravité d’un événement ou d’une trame scénaristique
La gravité d’une trame scénaristique correspond à la gravité la plus élevée parmi les événements
qui la composent. La gravité souhaitée est spécifiée par le biais de contraintes de gravité :
Contrainte de gravité
Une contrainte de gravité Cg r av est constituée d’un couple 〈vg r av ,dg r av 〉 tel que vg r av ∈ [0, 4]
est un niveau de gravité et dg r av ∈ [0, 1] est la désirabilité de cette gravité.
Le niveau de gravité d’une trame scénaristique et le score d’une trame par rapport à une contrainte
de gravité donnée sont calculés de la manière suivante :
Le niveau de gravité d’une trame scénaristique gravity(T ) correspond à la gravité maximale des points
clés p de la trame scénaristique.
Le score de gravité Sg r av (T ) équivaut à la différence entre le niveau de gravité de la trame scénaristique
gravity(T ) et le niveau de gravité désiré vg r av , normalisée et multipliée par la désirabilité dg r av .
Calcul du score d’une trame scénaristique pour la contrainte de gravité
gravity(T ) = max
p∈PT
(gravity(p))
Sg r av (T ) =
4−|gravity(T )− vg r av |
4
∗dg r av
7.4.3 Crédibilité
La crédibilité d’un scénario est fortement liée à sa probabilité d’occurrence : moins un scénario
sera probable, moins il sera crédible. Il n’est cependant pas question ici de demander aux experts
de quantifier précisément les fréquences d’occurrence des événements et de réaliser des calculs de
probabilité, comme c’est le cas en analyse de risques.
Plutôt que d’utiliser des probabilités d’occurrence, nous définissons ici également une échelle à partir
1757.4. PROPRIÉTÉS DES SCÉNARIOS CHAPITRE 7. OBJECTIFS SCÉNARISTIQUES
des plages de fréquences d’occurrence subjectives proposées dans la norme de sécurité CENELEC EN
50126 et reproduites dans [Belmonte, 2008]. Ces niveaux peuvent se rapporter à la fréquence d’occurrence
d’un événement du modèle de causalité, ou à celle de la levée d’une barrière. Chaque niveau
est associé à une valeur allant de 0 à 5. Le tableau 7.5 présente les différents niveaux de fréquence
considérés.
Niveau de fréquence Description Valeur
fréquent
Susceptible de se produire fréquemment.
La situation est continuellement présente. 5
La barrière est continuellement levée.
probable
Peut survenir à plusieurs reprises.
On peut s’attendre à ce que la situation survienne ou que 4
la barrière soit levée.
occasionnel
Peut survenir de temps en temps.
On peut s’attendre à ce que la situation survienne ou que 3
la barrière soit levée.
rare
Susceptible de se produire à un moment donné du cycle
de vie du système. 2
On peut raisonnablement s’attendre à ce que la situation
se produise ou que la barrière soit levée.
improbable
Peu susceptible de se produire, mais possible.
1
On peut supposer que la situation peut exceptionnellement
se produire ou la barrière exceptionnellement être
levée.
invraisemblable
Extrêmement improbable.
On peut supposer que la situation ne se produira pas et 0
que la barrière ne sera jamais levée.
TABLE 7.5 – Niveaux de fréquence d’un événement ou de la levée d’une barrière
Contrainte de crédibilité
Une contrainte de crédibilité Ccr ed est constituée d’un couple 〈vcr ed ,dcr ed 〉 tel que vcr ed ∈
[0, 5] est un niveau de crédibilité et dcr ed ∈ [0, 1] est la désirabilité de cette crédibilité.
Le niveau de crédibilité d’une trame scénaristique believability(T ) est ainsi évalué comme étant
le niveau de crédibilité minimal des points clés qu’il contient (believability(p)) et des levées de barrières
nécessaires à la réalisation des événements correspondant à ces points clés (believability(b)).
Le score de crédibilité Sbel(T ) par rapport à une contrainte de crédibilité donnée équivaut à la différence
entre le niveau de crédibilité de la trame scénaristique believability(T ) et le niveau de crédibilité
désiré vbel , normalisée et multipliée par la désirabilité dbel .
Calcul du score d’une trame scénaristique pour la contrainte de crédibilité
believability(T ) = min(min
p∈PT
(believability(p)),min
b∈BT
(believability(b)))
Sbel(T ) =
5−|believability(T )− vbel |
5
∗dbel
176CHAPITRE 7. OBJECTIFS SCÉNARISTIQUES 7.5. PRISE EN COMPTE PAR DIRECTOR
7.5 Prise en compte des objectifs scénaristiques par DIRECTOR
Pour prendre en compte ces objectifs scénaristiques dans la génération du scénario par DIRECTOR,
celle-ci est divisée en trois phases :
– la sélection de la trame narrative,
– l’instanciation de la trame narrative sélectionnée,
– et la complétion du scénario.
FIGURE 7.6 – Processus de génération des scénarios en trois phases
Ce processus de génération est représenté dans la figure 7.6.
7.5.1 Sélection de la trame scénaristique
Dans un premier temps, DIRECTOR se base sur le modèle de causalité représenté en CAUSALITYDL
pour générer un ensemble de trames scénaristiques. Une trame scénaristique correspond à un
parcours particulier dans le modèle de causalité.
Pour générer celles-ci, le graphe de causalité CG est divisé en plusieurs graphes alternatifs au niveau
de chaque porte ❖❯ et de chaque relation de subsomption en partant de la situation but SG , selon
l’algorithme 2, et ce jusqu’à ce que chaque graphe ne contienne plus que des portes ❊❚. Une trame
scénaristique est ensuite créée à partir de chaque graphe.
Le score de chaque trame scénaristique est évalué par rapport aux contraintes de situation et aux
contraintes sur les propriétés selon la formule suivante :
Calcul du score total d’une trame scénaristique
Stot al(T ) = Ssi t(T )+Scomp(T )+Sg r av (T )+Sbel(T )
Une trame scénaristique est ensuite sélectionnée au hasard parmi les trames ayant obtenu le plus
haut score.
1777.5. PRISE EN COMPTE PAR DIRECTOR CHAPITRE 7. OBJECTIFS SCÉNARISTIQUES
Algorithm 2 Algorithme de génération des trames scénaristiques
function GENERATEPLOTS(CG,SG )
delete nodes after SG in CG
L ← {CG}
while L contains decomposable graph G do
if G contains “OR” nodes or “is-a” links then
repeat N ← breadth-first search of G from SG
until N=“OR” or (l ∈ in-links(N) and l =“is-a”)
if N =“OR” then
for all l ∈ in-links(N) do
G
0 ←G
for all l
0 ∈ out-links(N) do
add link〈source(l), target(l
0
)〉 to G
0
delete in-links(N), out-links(N) and Nfrom G
0
delete nodes not connected to SG in G
0
L ← L ∪{G
0
}
else
for all l ∈ in-links(N) do
G
0 ←G
delete in-links(N)except l from G
0
delete nodes not connected to SG in G
0
if l =“is-a” then merge N and source(l) in G
0
L ← L ∪{G
0
}
7.5.2 Instanciation de la trame scénaristique
La trame scénaristique sélectionnée est ensuite instanciée à partir des instances d’objets présentes
dans l’état du monde. Pour cela, chacune des variables présentes dans les situations et les barrières
est associée à une instance du concept correspondant. A chaque association, les contraintes de correspondance
spécifiées dans le contexte de la trame sont appliquées pour associer chacune des variables
correspondantes à la même instance, et pour appliquer les liens statiques définis entre les objets
dans l’état initial du monde.
Un exemple de trame scénaristique instanciée est présentée dans la figure 7.7.
7.5.3 Complétion du scénario
La trame scénaristique instanciée est ensuite complétée à l’aide d’un moteur de planification.
L’algorithme utilisé (voir algorithme 3) étend l’algorithme Decomposition Search Control proposé
par [Porteous and Cavazza, 2009], en ajoutant la prise en compte des situations proscrites, ici les
barrières liées aux situations. L’algorithme DSC est inspiré du principe des landmarks. Il repose sur
l’utilisation de buts disjonctifs permettant au moteur de planification de trouver de lui-même quel
point clé valider en premier parmi ceux qui se trouvent en amont d’un arbre de contraintes.
Notre algorithme prend en entrée une trame scénaristique T , un ensemble d’opérateurs de planifi-
cation A, un ensemble d’objets O, et une situation initiale SI
. Un but disjonctif SG est créé à partir des
situations feuilles de la trame scénaristique — les points clés ne possédant pas de lien entrant —, puis
on ajoute à ce but la non réalisation de l’ensemble des barrières de cette trame. Ce but est donné en
entrée à un moteur de planification avec la situation de départ, l’ensemble des opérateurs et l’ensemble
des objets. Si un plan est trouvé, alors le point clé ainsi validé est enlevé de la trame scénaristique,
de même que les barrières qui lui sont associées, et le plan est ajouté au scénario global. L’algorithme
itère ainsi jusqu’à ce que tous les points clés de la trame scénaristique aient été validés.
178CHAPITRE 7. OBJECTIFS SCÉNARISTIQUES 7.5. PRISE EN COMPTE PAR DIRECTOR
Pool Fire :
(has-fire pool1)
Product Spreading :
(has-pool pool1)
! Emergency Stop Triggered :
(has-been-activated Push-Button)
(old-params-Push-Button emergency-stop1)
(break-state-value emergency-stop1 ok)
Cigarette Lighting :
(cigarette marcel)
Dome Leak :
(has-dome-leak tank1)
! Anti-Overflowing Probe Triggered :
(has-been-activated Anti-Overflowing-Probe)
(old-params-Anti-Overflowing-Probe probe1 tank1)
(break-state-value probe1 ok)
Tank Overflow :
(fill-state-filling tank1 overflow)
(fill-state-capacity tank1 full)
(superior overflow full)
! Tank Emptyness Checked :
(has-been-activated Check-Tank-Emptiness)
(old-params-Check-Tank-Emptiness tank1)
Non Empty Tank :
(fill-state-filling tank1 full)
FIGURE 7.7 – Exemple de trame scénaristique instanciée
Algorithm 3 Algorithme de planification étendant le Decomposition Search Control [Porteous and
Cavazza, 2009]
function PLANSCENARIO(T , A, O, SI)
S ← SI
while T 6= ; do
for all L in leaf nodes of T do
SG ← SG ∨L
for all B in barriers of T do
SG ← SG ∧ ¬B
P
0 ←PLANNER(SG , A, O, S)
if not P
0
then fail
else
P ← P ◦P
0
S ←result of executing P
0
in S
for all L in leaf nodes of T do
if L is reached by P then
remove L and every B of L from T
A la différence de [Porteous and Cavazza, 2009], les situations buts ne sont pas ici des faits uniques,
mais des ensembles de faits qui doivent être vérifiés simultanément. Il n’est donc pas question de retirer
certains faits des situations partiellement vérifiées par le plan, puisque ces faits pourraient être
1797.5. PRISE EN COMPTE PAR DIRECTOR CHAPITRE 7. OBJECTIFS SCÉNARISTIQUES
annulés par la suite. De plus, la trame scénaristique peut ici être un graphe plutôt qu’un simple arbre.
Un exemple de scénario ainsi complété est présenté dans la figure 7.8.
Non Empty Tank :
(fill-state-filling tank1 full)
behaviour: fill-full-tank pump1 loadingarm1 valve1 tank1
Tank Overflow :
(fill-state-filling tank1 overflow)
(fill-state-capacity tank1 full)
(superior overflow full)
behaviour: dome-leak tank1 overflow full
Dome Leak :
(has-dome-leak tank1)
behaviour: form-pool tank1 pool1
commitment: tank-full tank1
commitment: agent-novice gaston
action: ignore-check-tank-emptiness gaston tank1
action: bring-loading-arm gaston tank1 loadingarm1 valve1
behaviour: bring-arm gaston loadingarm1
action: program-loading gaston pump1 tank1 programmer1 loadingarm1 valve1
behaviour: program-loading gaston programmer1 pump1 full
action: push-loading-button gaston pump1 tank1 button1 programmer1 loadingarm1 valve1
behaviour: push-programmer-button gaston programmer1 button1
action: push-emergency-button marcel emergency-button1
Cigarette Lighting :
(cigarette marcel)
behaviour: pool-fire pool1
commitment: agent-expert marcel
action: check-tank-emptiness marcel tank2
behaviour: check marcel tank2
action: bring-loading-arm marcel tank2 loadingarm2 valve2
behaviour: bring-arm marcel loadingarm2
action: connect-loading-arm marcel tank2 loadingarm2 valve2
behaviour: connect-arm-to-valve marcel loadingarm2 valve2
behaviour: push-programmer-button marcel programmer2 button2
behaviour: fill-empty-tank pump2 loadingarm2 valve2 tank2
action: light-cigarette marcel tank2
commitment: agent-stressed marcel
behaviour: light-cigarette marcel
Pool Fire :
(has-fire pool1)
Product Spreading :
(has-pool pool1)
behaviour: ignore-pushbutton-emergency-button marcel emergency-button1
commitment: object-broken emergency-button1
commitment: object-broken probe1
(...)
(...)
FIGURE 7.8 – Exemple de scénario généré à partir d’une trame scénaristique
180CHAPITRE 7. OBJECTIFS SCÉNARISTIQUES 7.6. BILAN
7.6 Bilan
Nous avons présenté dans ce chapitre les objectifs scénaristiques pouvant être pris en compte par
DIRECTOR durant le processus de génération des scénarios, au travers de la génération et la sélection
de trames scénaristiques qui sont ensuite utilisées comme des points clés par le moteur de planifi-
cation.
Le langage CAUSALITY-DL permet de représenter des objectifs scénaristiques statiques, sous la forme
d’espaces de scénarios d’intérêt. Il tire ses origines de formalismes utilisés en analyses de risques,
mais les connaissances qu’il permet de représenter sont suffisamment abstraites — relations de causalité,
héritage, ou encore inhibition — pour qu’il puisse être étendu à d’autres domaines, comme la
représentation de structures narratives classiques.
En plus des connaissances statiques sur le domaine contenues dans le modèle de causalité, DIRECTOR
prend en compte deux sortes d’objectifs scénaristiques dynamiques, qui permettent d’adapter les
scénarios générés en fonction des besoins des différentes sessions d’utilisation de l’environnement
virtuel. Le premier type d’objectifs dynamiques est la spécification de situations prescrites ou proscrites,
qui peuvent induire un contrôle précis des événements pouvant apparaitre dans le scénario,
mais qui peuvent aussi mener à un contrôle de plus haut niveau via la désignation de situations abstraites
présentes dans le modèle de causalité et le modèle du domaine grâce aux relations de subsomption.
Le deuxième type d’objectifs dynamiques concerne des propriétés de haut niveau et indépendantes
du domaine, calculées à l’aide de fonctions d’évaluation qui se basent sur des annotations
des événements individuels du modèle de causalité. Ces contraintes sur les propriétés permettent
d’opérer un contrôle plus souple, notamment lorsqu’elles sont associées à des contraintes de
haut niveau sur les situations. On peut ainsi déclarer comme objectif la génération d’un scénario
menant vers un Accident, et associé à une forte gravité.
1817.6. BILAN CHAPITRE 7. OBJECTIFS SCÉNARISTIQUES
182Troisième partie
Implémentation et résultats
183Chapitre 8
Implémentation
Sommaire
8.1 Choix liés à la planification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
8.1.1 Représentation en PDDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
8.1.2 Choix du moteur de planification . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
8.2 Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
8.2.1 Génération du domaine PDDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
8.2.2 Génération du scénario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
8.2.3 Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
8.2.4 Plateforme HUMANS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Le moteur DIRECTOR a fait l’objet d’une implémentation, qui a rencontré des problématiques
particulières du fait de l’utilisation d’un moteur de planification. Nous présentons dans ce chapitre
les choix liés à la planification, ainsi que l’architecture logicielle de DIRECTOR.
8.1 Choix liés à la planification
Le processus de création d’un scénario par DIRECTOR repose sur la génération d’un domaine de
planification à partir des modèles de domaine et d’activité, sur la génération d’un problème de planification
à partir des objectifs scénaristiques, et sur l’utilisation d’un moteur de planification afin de
générer les plans qui correspondront aux étapes du scénario. Pour implémenter ce processus, nous
nous sommes basés sur l’utilisation du langage PDDL et d’un moteur de planification capable d’interpréter
ce langage.
8.1.1 Représentation en PDDL
Les connaissances utilisées pour la planification des scénarios sont représentées en PDDL. PDDL
(Planning Domain Definition Language) est un langage de représentation de tâches de planification
basé sur le Lisp. Ce langage a été proposé dans le cadre de la compétition de planification IPC (International
Planning Competition) dans le but de permettre l’échange des domaines et la comparaison
des résultats des différents moteurs.
Il en existe à ce jour différentes versions :
– PDDL1.2 [McDermott et al., 1998] , la première version de PDDL, permet de représenter des
problèmes de planification classiques, de manière très proche du STRIPS [Fikes and Nilsson,
1971] ;
1858.1. CHOIX LIÉS À LA PLANIFICATION CHAPITRE 8. IMPLÉMENTATION
– PDDL2.1 [Fox and Long, 2003] étend cette première version avec la représentation des problèmes
de planification numérique et temporelle ;
– PDDL2.2 [Edelkamp and Hoffmann, 2004] introduit les axiomes, ou prédicats dérivés, qui permettent
d’inférer directement certains faits à partir d’autres faits ;
– PDDL3.0 [Gerevini and Long, 2005] y ajoute la représentation de préférences, et de contraintes
sur l’occurrence ou l’ordonnancement de certaines situations ;
– PDDL3.1 [Kovacs, 2011], la dernière version en date, permet de considérer des fonctions pouvant
renvoyer n’importe quel type d’objet, et non plus seulement des booléens ou des nombres.
En PDDL, une tâche de planification est composée d’un domaine et d’un problème.
Le domaine est constitué de :
– la définition des types d’objets considérés,
– l’ensemble des constantes,
– la définition des prédicats,
– l’ensemble des opérateurs de planification (aussi appelés actions PDDL). Dans notre cas, il
s’agit des cinq types d’opérateurs : actions, comportements, commitments, happenings et contraintes
d’occurrence.
Le problème est constitué de :
– l’ensemble des objets,
– les faits constituant l’état initial,
– la spécification du but.
Le langage PDDL permet de représenter de nombreux types de problèmes, mais tous les types de
problèmes ne peuvent pas être traités par tous les moteurs de planification. PDDL définit donc un
certain nombre de prérequis, qui doivent être déclarés dans le domaine pour s’assurer que le moteur
utilisé a la capacité de traiter la tâche de planification.
Les tâches de planification créées par DIRECTOR possèdent les prérequis suivants :
– str✐♣s : les opérateurs de planification doivent pouvoir ajouter et supprimer des faits à l’état
du monde ;
– t②♣✐♥❣ : les objets doivent pouvoir être typés, de manière à reproduire la hiérarchie de concepts
définie dans le modèle du domaine, et de permettre ainsi d’appliquer les comportements sur
les objets du type associé ;
– ❞✐s❥✉♥❝t✐✈❡✲♣r❡❝♦♥❞✐t✐♦♥s : le moteur de planification doit pouvoir prendre en compte des
buts disjonctifs pour l’algorithme de complétion des trames scénaristiques à partir des points
clés ;
– q✉❛♥t✐❢✐❡❞ ♣r❡❝♦♥❞✐t✐♦♥s : le nombre d’instances d’un type d’objet donné n’est pas fixé
dans le domaine, et donc n’est pas connu lors de la génération des opérateurs. Il est donc
nécessaire de pouvoir exprimer à la fois la quantification universelle (∀) et la quantification
existentielle (∃) pour représenter certains comportements complexes, à la fois au niveau des
préconditions (par exemple, un bras de chargement ne peut être verrouillé que s’il existe une
vanne à laquelle il est branché) et des effets (par exemple, l’arrêt d’un programmateur entraine
l’arrêt de toutes les pompes auxquelles il est relié).
Ces prérequis correspondent à des tâches de planification classiques, et se retrouvent dans les tâches
de type ADL [Pednault, 1989], une extension de STRIPS incluant l’ensemble de ces prérequis, ainsi
que la définition d’effets conditionnels dans les opérateurs. Les actions ADL peuvent exprimer des
effets à l’aide du prédicat ♥♦t pour signaler le retrait d’un fait, plutôt que d’avoir deux listes d’ajout et
de retrait séparées comme c’est le cas dans STRIPS. Le choix du moteur de planification intégré dans
l’implémentation de DIRECTOR est guidé par ces prérequis.
8.1.2 Choix du moteur de planification
A partir de ces prérequis, nous avons étudié un ensemble de moteurs de planification parmi les
plus populaires, en les sélectionnant d’une part pour la disponibilité de leur code source, et d’autre
186CHAPITRE 8. IMPLÉMENTATION 8.1. CHOIX LIÉS À LA PLANIFICATION
part pour leur succès dans les différentes compétitions de planification.
Le tableau 8.1 présente les différents moteurs de planification envisagés. Nous avons considéré ici
uniquement des moteurs de planification classique, et nous avons notamment laissé de côté les moteurs
comme TLPlan [Bacchus and Kabanza, 1998] ou SHOP [Nau et al., 1999] qui utilisent des informations
dépendantes du domaine pour guider la recherche. De plus, nous n’avons pas étudié les moteurs
trop anciens pour supporter le PDDL, comme Prodigy [Veloso et al., 1995] ou Graphplan [Blum
and Furst, 1997]. Cependant, étant donné le grand nombre de moteurs de planification existants,
cette liste est tout de même loin d’être exhaustive.
Moteur Approche Forme de Code ADL
plan ♥♦t Types But ∧ ∀/∃
SGP1 1.0 graphe de plans POP Lisp + + + +
IPP2 4.1 graphe de plans POP exe + ≈ + +
VHPOP3 2.2.1 graphe de plans POP C++ + + + +
HSP4
1.12 recherche séquentiel C + - - -
heuristique avant
2.0 recherche séquentiel C + + + +
heuristique av./ar.
Fast-Forward 5 2.3
recherche
heuristique avant séquentiel C + + + +
+ graphe de plans
Fast Downward 6
2013- recherche séquentiel C++ + + + +
12-12 heuristique avant
TABLE 8.1 – Tableau comparatif de différents moteurs de planification
Parmi ces moteurs, nous avons écarté IPP, qui gère les types prédéfinis en PDDL mais ne prend pas
en compte les sous-types, et la version originale d’HSP qui ne prend pas en compte tous les prérequis
ADL. Les approches utilisées par HSP et FF (Fast-Forward) sont en réalité très proches, mais FF a
régulièrement réalisé de meilleures performances que HSP dans les compétitions de planification
(voir [Hoffmann and Nebel, 2001b]).
Trois moteurs nous semblent sortir du lot :
– Fast-Forward, qui est réputé pour être particulièrement utilisable, de par la qualité des explications
fournies lors de la construction des plans, et qui a été utilisé avec succès pour générer
des scénarios dans le domaine de la narration interactive [Porteous and Cavazza, 2009].
– Fast Downward, dont les différentes variantes (notamment LAMA) ont remporté les premières
places dans les catégories “sequential satisfaction” et “sequential optimisation” à IPC 2011 [GarciaOlaya
et al., 2011], et la première place dans la catégorie “sequentiel satisfaction” à IPC 2008
[Helmert et al., 2008].
– VHPOP, qui est capable de générer des plans partiellement ordonnés (POP).
1. Sensory Graphplan (SGP) [Anderson et al., 1998] est téléchargeable sur :
❤tt♣✿✴✴✇✇✇✳❝s✳✇❛s❤✐♥❣t♦♥✳❡❞✉✴❛✐✴s❣♣✳❤t♠❧ (accédé le 05/01/2014)
2. Interference Progression Planner (IPP) [Koehler, 2000] est téléchargeable sur :
❤tt♣✿✴✴✇✇✇✳✐s✐✳❡❞✉✴⑦❜❧②t❤❡✴❝s✺✹✶✴✷✵✵✵✴♣❧❛♥♥❡rs✴✐♣♣✳❤t♠❧ (accédé le 05/01/2014)
3. Versatile Heuristic Partial Order Planner (VHPOP) [Younes and Simmons, 2003] est téléchargeable sur :
❤tt♣✿✴✴✇✇✇✳t❡♠♣❛st✐❝✳♦r❣✴✈❤♣♦♣✴ (accédé le 05/01/2014)
4. Heuristic Search Planner (HSP) [Bonet and Geffner, 2001] est téléchargeable sur :
❤tt♣✿✴✴❝♦❞❡✳❣♦♦❣❧❡✳❝♦♠✴♣✴❤s♣✲♣❧❛♥♥❡rs✴ (accédé le 05/01/2014)
5. Fast-Forward (FF) [Hoffmann and Nebel, 2001a] est téléchargeable sur :
❤tt♣✿✴✴❢❛✐✳❝s✳✉♥✐✲s❛❛r❧❛♥❞✳❞❡✴❤♦❢❢♠❛♥♥✴❢❢✳❤t♠❧ (accédé le 05/01/2014)
6. Fast Downward [Helmert, 2006] est téléchargeable sur :
❤tt♣✿✴✴✇✇✇✳❢❛st✲❞♦✇♥✇❛r❞✳♦r❣ (accédé le 05/01/2014)
1878.2. ARCHITECTURE CHAPITRE 8. IMPLÉMENTATION
L’avantage de l’utilisation de PDDL pour représenter les tâches de planification est que les différents
moteurs sont conçus pour être compatibles avec ces domaines, dans la mesure où ils possèdent
les bons prérequis. Il est donc particulièrement aisé de passer d’un moteur de planification à un
autre. Ainsi, plutôt que de choisir un seul moteur, nous avons choisi d’intégrer ces trois moteurs dans
DIRECTOR, afin de pouvoir comparer leurs performances pour la génération des scénarios : ces trois
moteurs reflétant des approches différentes, cela permet ainsi de tirer des conclusions sur la génération
de la tâche de planification plutôt que sur les performances d’une technique de planification
particulière.
De plus, ces trois moteurs étant implémentés en C ou C++, cela donne la possibilité de les utiliser
comme une librairie dans une architecture globale en C++, comme celle de DIRECTOR qui est présentée
dans la section suivante.
8.2 Architecture
Le processus global de génération, suivi et exécution des scénarios de DIRECTOR a été implé-
menté dans un module développé en C++. Ce module utilise les librairies BGL (Boost Graph Library) 7
et Qt 8
. ll intègre les trois moteurs de planification évoqués précédemment : FF-v2.3, Fast Downward
et VHPOP.
Un effort particulier a été fourni lors de l’implémentation pour mettre en place une architecture et des
interfaces claires, afin que DIRECTOR puisse être étendu et réutilisé par la suite. Le diagramme UML
des principales classes de l’implémentation est présenté dans la figure 8.1. Les diagrammes concernant
les types de graphes manipulés et les concepts liés au PDDL sont présentés dans l’annexe C.
8.2.1 Génération du domaine PDDL
La génération du domaine PDDL est réalisée offline par un module complémentaire développé
en Python.
Tout d’abord, l’ontologie du modèle de domaine est interrogée pour récupérer la hiérarchie des types
d’objets, ainsi que les noms des Comportements, qui sont déclarés comme des constantes dans le
domaine de planification.
Le fichier XML correspondant au modèle d’activité, créé au préalable via un éditeur graphique, est
ensuite parsé et utilisé pour générer un ensemble d’opérateurs de prédiction d’après les algorithmes
décrits dans la section 6.4.
A ce jour, seule la génération des opérateurs de prédiction d’actions à partir du modèle d’activité a
été implémentée. Les opérateurs de prédiction des comportements ont fait l’objet d’une traduction
manuelle à partir du modèle du domaine.
8.2.2 Génération du scénario
La génération d’un scénario à partir d’une trame scénaristique est implémentée selon l’algorithme
présenté dans la section 7.5.3. A chaque itération, un nouveau problème PDDL est généré
à partir du but disjonctif, et donné en entrée au moteur de planification sélectionné.
Dans le cas de FF et Fast Downward, le plan ainsi obtenu est séquentiel, ce qui ne correspond pas
au scénario désiré pour le suivi et l’exécution dans l’environnement virtuel. Dans le cas de VHPOP, le
plan est partiellement ordonné, cependant certains liens de causalité, tels ceux basés sur les prédicats
✭❤❛s✲t✉r♥ ❄❛✮, servent à s’assurer de l’alternance des actions des différents agents lors de la génération
du plan mais n’ont pas lieu de figurer dans le scénario final.
7. ❤tt♣✿✴✴✇✇✇✳❜♦♦st✳♦r❣
8. ❤tt♣✿✴✴qt✲♣r♦❥❡❝t✳♦r❣
188CHAPITRE 8. IMPLÉMENTATION 8.2. ARCHITECTURE
FIGURE 8.1 – Diagramme UML de l’architecture de DIRECTOR
Le scénario résultant de la phase de complétion est donc traité de la manière suivante : dans un premier
temps, les plans séquentiels sont transformés en plans partiellement ordonnés, en liant chaque
étape à un ensemble d’étapes précédentes — situation initiale comprise — qui permette de vérifier
ses préconditions, en raisonnant à partir des préconditions et des effets de chaque étape. Puis ces
plans sont nettoyés en supprimant les liens redondants : par exemple si il existe déjà des liens de
précédence entre les étapes S1 et S2 et entre S2 et S3, alors le lien entre S1 et S3 sera supprimé. Puis
dans un deuxième temps, les opérateurs abstraits sont supprimés de ces plans partiellement ordonnés,
en conservant les liens de précédence entre les étapes qui les précèdent et les suivent directement,
à l’exception des opérateurs ❆❜str❛❝t✲❊♥❞❚✉r♥ où le lien n’est pas recréé entre les actions des
deux agents concernés, mais entre l’action du deuxième agent et le dernier comportement déclenché
à la suite de l’action précédente de ce même agent. Cela permet ainsi d’obtenir des séquences d’actions
parallèles pour chaque agent dans le cas où les actions de l’un n’influencent pas celles de l’autre,
et réciproquement.
8.2.3 Interfaces
DIRECTOR est doté d’une interface graphique, qui utilise le logiciel GraphViz 9 pour générer automatiquement
des graphes permettant de visualiser les scénarios générés et de suivre l’avancement
de ces scénarios par rapport aux événements de l’environnement virtuel. Une capture d’écran de
cette interface est présentée dans la figure 8.2.
9. ❤tt♣✿✴✴✇✇✇✳❣r❛♣❤✈✐③✳♦r❣
1898.2. ARCHITECTURE CHAPITRE 8. IMPLÉMENTATION
DIRECTOR possède également une interface d’envoi et de réception de messages en JSON 10, afin de
pouvoir communiquer avec les modules de simulation du monde, de génération des comportements
des personnages virtuels, et de suivi de l’utilisateur. Il peut ainsi être intégré au sein de la plateforme
HUMANS — décrite dans l’annexe B — mais pourrait également être interfacé avec d’autres modules
sous réserve qu’ils utilisent le même format de messages.
FIGURE 8.2 – Capture d’écran de l’interface utilisateur de DIRECTOR
10. ❤tt♣✿✴✴✇✇✇✳❥s♦♥✳♦r❣✴
190CHAPITRE 8. IMPLÉMENTATION 8.2. ARCHITECTURE
8.2.4 Plateforme HUMANS
L’implémentation de DIRECTOR a été réalisée au sein de la plateforme de création d’environnements
virtuels HUMANS, décrite en détail dans l’annexe B. La part de mes contributions à cette
plateforme ainsi que l’état de l’implémentation des différents modules sont présentés dans la figure
8.3.
FIGURE 8.3 – Schéma des différents modules de la plateforme HUMANS.
Les éléments colorés en vert ont été proposés dans le cadre de cette thèse.
Les éléments entourés en vert ont été proposés par l’ensemble de l’équipe HUMANS
et enrichis dans le cadre de ce travail (événements pour DOMAIN-DL, constructeurs et
préconditions pour ACTIVITY-DL).
Les éléments grisés n’ont pas encore été implémentés à l’heure actuelle.
Cette implémentation a servi de support à une évaluation informatique de DIRECTOR, présentée
dans le chapitre suivant.
1918.2. ARCHITECTURE CHAPITRE 8. IMPLÉMENTATION
192Chapitre 9
Validation
Sommaire
9.1 Evaluation informatique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
9.1.1 Eléments comparés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Domaines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Moteurs de planification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
9.1.2 Influence du moteur sur les plans générés . . . . . . . . . . . . . . . . . . . . . . 196
9.1.3 Validité des plans générés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
9.1.4 Temps de génération des plans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
9.1.5 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
9.2 Retours d’usage sur la conception des modèles . . . . . . . . . . . . . . . . . . . . . . 201
9.2.1 DOMAIN-DL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
9.2.2 ACTIVITY-DL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
9.3 Pistes d’évaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
9.3.1 Efficacité de la prédiction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
9.3.2 Efficacité du contrôle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
9.3.3 Résilience du système . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
9.3.4 Variabilité des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
9.3.5 Cohérence des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Les systèmes de scénarisation ou de génération d’histoires sont réputés pour être difficiles à
valider. Jusqu’ici, peu d’entre eux ont fait l’objet d’une évaluation, qu’il s’agisse d’évaluations individuelles
ou de comparaisons entre systèmes [Magerko, 2007].
L’une des raisons principales de ce constat est que chaque système est conçu avec un ensemble de
scénarios particuliers en tête, et a donc ses propres objectifs en termes de scénarios générés. Le contrôle
sur le scénario offert par un système comme SELDON, qui accorde une grande importance à
mener le scénario vers un événement but précis, n’est ainsi pas comparable à celui offert par exemple
par Thespian [Si, 2010] qui ne peut prévoir les événements qu’à un horizon très limité, mais qui
s’attache à satisfaire des contraintes temporelles sur la réalisation de différents événements.
De même, il existe une forte inter-dépendance entre les moteurs de scénarisation et les formalismes
de représentation du contenu qu’ils utilisent. Il ne serait pas possible de modéliser le même contenu
pour deux systèmes différents ; par exemple, les formalismes utilisés par un moteur visant des
scénarios fortement axés sur des simulations de systèmes technico-humains, comme SELDON, et
par un moteur visant des scénarios centrés sur des dialogues en langage naturel, comme par exemple
Façade [Mateas and Stern, 2005], ne permettront pas de représenter les mêmes connaissances.
Contrairement à d’autres domaines, comme celui de la planification, il n’existe pas de “benchmark”
pour la scénarisation ou la narration interactive. On peut cependant souligner une tentative dans
cette direction ayant été réalisée lors d’un atelier de la conférence TIDSE 2006 (Technologies for
1939.1. EVALUATION INFORMATIQUE CHAPITRE 9. VALIDATION
Interactive Digital Storytelling and Entertainment), autour du conte bien connu du Petit Chaperon
Rouge [Spierling and Iurgel, 2006]. Dans cet atelier, qui portait sur l’authoring, c’est à dire sur la création
du contenu et des objectifs scénaristiques, les participants étaient encouragés à modifier leurs
systèmes de scénarisation pour permettre la génération d’histoires sur le modèle du Petit Chaperon
Rouge 1
. Cependant, le problème de l’adéquation entre domaine et systèmes de scénarisation se pose
ici à nouveau. Comme noté par [Riedl et al., 2008b], ce conte est particulièrement difficile à transposer
en narration interactive : le personnage principal est une victime et se fait dévorer, et il y a
dans l’ensemble très peu de personnages et d’interactions. Pour SELDON, qui repose sur des modèles
de systèmes techniques complexes et représente l’activité comme un ensemble de procédures
et de déviations de ces procédures, l’exemple du Petit Chaperon Rouge serait particulièrement délicat
à adapter.
Une raison supplémentaire à cette difficulté d’évaluation est que, les scénarios générés dépendant
fortement du contenu scénaristique représenté, il est également délicat de distinguer l’évaluation du
système de scénarisation lui-même de l’évaluation de la qualité des modèles de domaine ou d’activité
utilisés. Un problème additionnel se pose dans notre cas : les cas d’application considérés étant des
cas métier fortement techniques, des connaissances métier adéquates sont nécessaires pour pouvoir
juger de la cohérence des comportements des personnages virtuels et du système à partir du seul ré-
sultat de la simulation. Un panel de sujets suffisamment expérimentés dans le domaine serait nécessaire
à l’expérimentation. Mais même alors, une telle évaluation ne permettrait pas de distinguer
entre l’explicabilité du scénario final par rapport aux modèles de la simulation, et la validité écologique
de ces modèles eux-mêmes.
Nous avons donc opté dans un premier temps pour une évaluation informatique, portant notamment
sur les performances des différents moteurs de planification sur les tâches de planification générées
par DIRECTOR. Cette évaluation est associée à des retours qualitatifs sur la conception des environnements
virtuels et des différents modèles associés. Nous proposons enfin un ensemble de pistes
d’évaluation se rapportant aux différents objectifs fixés pour notre système de scénarisation, qui, s’ils
elles n’ont pas pu être concrétisées dans le cadre de ce travail de thèse, nous paraissent toutefois devoir
être explorées par la suite .
9.1 Evaluation informatique
Pour évaluer la phase de génération des scénarios par DIRECTOR, nous avons comparé les performances
de trois moteurs de planification sur plusieurs domaines. Nous présentons ici tout d’abord
les domaines et les moteurs de planification utilisés pour cette comparaison, puis les résultats sur le
plan qualitatif — influence du moteur sur le contenu du scénario et validité des plans générés — et
sur le plan quantitatif — temps de génération. Nous discutons ensuite brièvement ces résultats.
9.1.1 Eléments comparés
Nous avons utilisé pour cette comparaison deux domaines distincts, dans plusieurs configurations,
ainsi que trois moteurs de planification, là encore avec différents ensembles de paramètres.
Domaines
La génération de scénarios a été réalisée sur deux exemples : Gas Station, un exemple très simplifié
portant sur une opération de remplissage d’une voiture dans une station service, et Arakis,
un exemple plus complet correspondant au chargement d’un camion citerne sur un dépôt pétrolier.
1. Les résultats de cet atelier peuvent être consultés sur : ❤tt♣✿✴✴r❡❞❝❛♣✳✐♥t❡r❛❝t✐✈❡✲st♦r②t❡❧❧✐♥❣✳❞❡✴ (accédé
le 05/01/2014)
194CHAPITRE 9. VALIDATION 9.1. EVALUATION INFORMATIQUE
Chaque exemple est associé à un modèle d’activité en ACTIVITY-DL, qui est utilisé pour générer un
domaine de planification PDDL, auquel sont ensuite rajoutés les opérateurs de prédiction des comportements,
traduits manuellement depuis le modèle du domaine en DOMAIN-DL.
Chacun des deux exemples a été testé avec deux situations buts différentes : End, correspondant à
la réalisation de la tâche principale, et Fire, qui correspond au déclenchement d’un feu. La première
demande un minimum d’ajustements, tandis que la seconde en nécessite a priori davantage. Dans le
cas du feu, la génération a été faite avec et sans sélection préalable d’une trame scénaristique.
De plus l’exemple Arakis, de par sa taille, a été testé avec deux modèles de domaine différents : une
version Arakis-Basic, où seuls sont présents les opérateurs de prédiction des comportements correspondant
au bon déroulement de la procédure (c’est à dire que les comportements “accidentels” —
feu, fuite, etc. — ont été enlevés), et une version Arakis-Full qui comporte l’ensemble des opérateurs.
Enfin, chaque exemple a été testé avec une situation initiale correspondant à la présence d’un seul
agent, ou bien de deux agents.
Un troisième domaine de planification est présenté à titre de comparaison : Fake, qui contient des
actions écrites à la main et non générées à partir d’un modèle d’activité, et qui ne garantit donc pas la
cohérence des actions des agents. Il s’agit du domaine utilisé pour générer le plan présenté précédemment
dans la figure 6.4. Le tableau 9.1 récapitule les caractéristiques de chaque condition.
Domaine Fake Gas Station Arakis
Basic Full
Tâches mères - 1 4 5
Tâches feuilles - 4 8 11
Comportements - 10 14 34
Ajustements - 9 12 18
Opérateurs 13 31 52 88
Prédicats 18 24 38 56
Constantes 17 26 45 59
Objets 5 5 / 10 10 / 20 14 / 28
But Fire End Fire End End Fire
Trame - - - + - - - +
Identifiant F G
E
1
/G
E
2 G
F
1
/G
F
2 G
F∗
1
/G
F∗
2
AbE
1
/AbE
2
A
E
1
/A
E
2
A
F
1
/A
F
2
A
F∗
1
/A
F∗
2
TABLE 9.1 – Tableau récapitulatif des domaines ayant été utilisés pour les évaluations
Le modèle d’activité écrit pour l’exemple ●❛s ❙t❛t✐♦♥, ainsi que le domaine PDDL généré à partir
de celui-ci, et les deux problèmes PDDL générés par DIRECTOR pour chacun des buts — dans la
configuration à un seul agent sans sélection de trame scénaristique — sont retranscrits dans l’annexe
E.
Moteurs de planification
La génération des scénarios a été réalisée avec les trois moteurs de planification présentés précédemment
: FF, Fast Downward et VHPOP.
FF-v2.3 a été utilisé sans modifications, ce qui correspond au moteur utilisé comme point de comparaison
lors de la compétition IPC-6 pour la catégorie “satisfaction” [Helmert et al., 2008].
Fast Downward a été testé dans deux configurations différentes : d’une part, avec une recherche A*
sans heuristique (A* blind), ce qui correspond au moteur utilisé comme point de comparaison pour
la catégorie “optimisation” lors de la même compétition, et d’autre part dans une configuration “lazy
greedy best-first” avec deux heuristiques : FF et “context-enhanced additive”. On les notera respectivement
F DA∗ et F DLG .
1959.1. EVALUATION INFORMATIQUE CHAPITRE 9. VALIDATION
VHPOP a été également utilisé dans deux configurations : d’un côté, la configuration utilisée pour la
compétition IPC-3, et de l’autre, une configuration reprenant les heuristiques et stratégies de sélection
de failles du moteur UCPOP sur lequel il est basé. On notera respectivement VI PC et VUCP .
9.1.2 Influence du moteur sur les plans générés
Le premier constat réalisé est que le choix du moteur de planification influence fortement le contenu
du plan généré, et donc du scénario, et ce même sur des domaines très simples comme ●❛s
❙t❛t✐♦♥ où il n’existe qu’une seule combinaison d’ajustements permettant d’aboutir à l’événement
❋✐r❡.
La figure 9.1 présente une comparaison visuelle des plans générés à partir des conditions G
1
F
par trois
moteurs différents : le plan (a) a été généré avec F F, le plan (b) a été généré avec F DA∗ et le plan
(c) a été généré par VI PC /VUCP (F DLG génère, comme F F, le plan (a)). Les plans (a) et (b) ont fait
l’objet d’une phase de réécriture des liens de causalité pour obtenir un plan partiellement ordonné,
et les opérateurs abstraits ont ensuite été supprimés des trois plans. Les graphes correspondant sont
retranscrits dans l’annexe E.
On peut ainsi remarquer que le plan (b) contient le minimum d’ajustements nécessaires, tandis que
le plan (a), généré par des moteurs visant un plan satisfaisant et non optimal, contient des ajustements
inutiles qui mènent à un comportement de type ■❣♥♦r❡.
Le plan (c), dont les étapes ont été directement ordonnées par le moteur VHPOP, n’est pas optimal
non plus, dans le sens où certains ajustements sont placés en début de plan alors qu’ils ne sont nécessaires
que pour des étapes ultérieures. Ceci peut poser problème dans le cas où l’on doive générer un
nouveau plan en cours d’exécution : ces ajustements auront alors été déclenchés inutilement, ce qui
aurait pu être évité en attendant le dernier moment pour les lancer.
9.1.3 Validité des plans générés
Les plans générés ont été validés à l’aide du validateur PDDL INVAL 2
, créé par Patrick Haslum.
D’une part, nous nous sommes assurés de la validité des plans directement générés par les moteurs
de planification : plans séquentiels pour F F et F D, et plans partiellement ordonnés pour V HPOP.
D’autre part, nous avons cherché à valider les plans générés par DIRECTOR à partir de ces moteurs
en réalisant les étapes suivantes :
– complétion du graphe de points clés avec les plans intermédiaires générés par les moteurs
(dans le cas où le scénario résulte de la sélection préalable d’une trame scénaristique) ;
– réécriture des liens de causalité entre les étapes ;
– traduction de ce graphe de scénario vers une représentation d’un plan partiellement ordonné
en PDDL, en parcourant le graphe à partir de la situation finale et en associant à chaque étape
un marqueur temporel, en suivant l’algorithme 5 décrit dans l’annexe D ;
– validation de ces plans à partir d’un problème PDDL composé de la situation initiale et de la
situation but du scénario.
Un problème intéressant se pose pour la validation des plans générés par DIRECTOR à partir de domaines
comportant un seul agent et plus d’un niveau de tâches mères. On se retrouve alors dans le cas
où les étapes ❆❜str❛❝t✲❊♥❞❚✉r♥ possèdent comme effet à la fois le retrait et l’ajout du fait ✭❤❛s✲t✉r♥
❛❣❡♥t✮, et que ce fait est présent dans les préconditions des étapes ❆❜str❛❝t✲❊♥❞✲❁❚❛s❦❃, qui sont
considérées comme parallèles par DIRECTOR. Elles peuvent en effet être appliquées soit avant soit
après ces dernières, selon que l’on considère que l’agent évalue les conditions de satisfaction de ses
tâches en cours à la fin de son tour, ou au début de son tour suivant — ce qui n’a pas d’incidence sur
le scénario une fois les tâches abstraites retirées. Il semblerait que INVAL considère ce cas comme un
conflit (une précondition d’une étape étant rendue vraie par une étape parallèle), même si dans notre
2. INVAL est disponible sur : ❤tt♣✿✴✴✉s❡rs✳❝❡❝s✳❛♥✉✳❡❞✉✳❛✉✴⑦♣❛tr✐❦✴ (accédé le 05/01/2014)
196CHAPITRE 9. VALIDATION 9.1. EVALUATION INFORMATIQUE
Fire :
(fire)
occurrence: spark-true
behaviour: spark phone1
happening: phonecall phone1
commitment: agent-novice marcel
action: ignore-turn-off-phone marcel phone1 tank1 car1
commitment: joint-used joint1
behaviour: leak tank1 joint1
behaviour: ignore-fire
commitment: tank-empty tank1
action: open-tank marcel tank1 car1
behaviour: open tank1
behaviour: ignore-leak tank1 joint1
action: pump-gas marcel tank1 car1
occurrence: spark-true
behaviour: spark phone1
behaviour: pump-gas tank1 empty happening: phonecall phone1
behaviour: fire
(a)
Fire :
(fire)
occurrence: spark-true
behaviour: spark phone1
commitment: tank-empty tank1
action: ignore-turn-off-phone marcel phone1 tank1 car1
commitment: agent-novice marcel
action: open-tank marcel tank1 car1
behaviour: open tank1
behaviour: ignore-leak tank1 joint1
action: pump-gas marcel tank1 car1
happening: phonecall phone1
behaviour: fire
behaviour: pump-gas tank1 empty
behaviour: leak tank1 joint1
commitment: joint-used joint1
(b)
Fire :
(fire)
commitment: joint-used joint1
action: ignore-turn-off-phone marcel phone1 tank1 car1
commitment: agent-novice marcel commitment: tank-empty tank1 occurrence: spark-true
action: open-tank marcel tank1 car1
behaviour: open tank1
behaviour: ignore-leak tank1 joint1
action: pump-gas marcel tank1 car1
behaviour: pump-gas tank1 empty behaviour: spark phone1
happening: phonecall phone1
behaviour: leak tank1 joint1
behaviour: fire
(c)
FIGURE 9.1 – Scénarios générés dans la configuration G
F
1
avec les trois moteurs de planification :
(a) FF, (b) Fast Downward (A* blind), (c) VHPOP
1979.1. EVALUATION INFORMATIQUE CHAPITRE 9. VALIDATION
cas l’opérateur ❆❜str❛❝t✲❊♥❞❚✉r♥ a un impact nul sur la base de faits. Ces plans sont cependant
considérés comme valides par INVAL à partir du moment où les étapes sont ordonnées manuellement,
dans un ordre comme dans l’autre, nous considérons donc que ces plans constituent des plans
partiellement ordonnées PDDL valides. Il est également à noter que VHPOP génère les plans correspondants
comme des plans séquentiels et ne considère pas lui non plus ces étapes comme pouvant
être parallèles. Une fois ce cas particulier résolu, cependant, tous les plans générés par DIRECTOR
ont été considérés comme valides par INVAL.
Une meilleure mesure de la validité d’un scénario serait toutefois de valider ceux-ci après la suppression
des étapes abstraites : pour cela il serait nécessaire de modifier le domaine de planification en
supprimant toutes les préconditions et effets des opérateurs qui ont trait à l’ordonnancement des
tâches et des actions (❤❛s✲t✉r♥, t❛s❦✲st❛t❡, etc.).
9.1.4 Temps de génération des plans
Les temps obtenus pour la génération des plans dans chaque condition et par chaque moteur de
configuration sont présentés dans les tableaux 9.2 et 9.3. Chaque chiffre correspond à la moyenne des
temps obtenus sur trois itérations de la génération de plan.
Le tableau 9.2 présente les temps obtenus dans le cas de la génération d’un scénario sans sélection
de trame scénaristique préalable, chiffres qui correspondent donc au temps mis par le moteur de
planification pour générer un plan, auquel doivent être ajoutés le temps de transformation du plan
séquentiel en plan partiellement ordonné pour FF et Fast Downward, et le temps de suppression des
opérateurs abstraits dans tous les cas, soit entre 0.010s et 0.040s pour chacune de ces deux étapes
(temps obtenus sur les générations présentées ici).
Le tableau 9.3 présente les temps obtenus pour la génération de scénario avec sélection préalable
d’une trame scénaristique, ici choisie arbitrairement. La trame scénaristique utilisée pour l’exemple
G comportait 3 points clés (❙♦✉r❝❡ ❞✬■❣♥✐t✐♦♥, ❋✉✐t❡ et ❋❡✉), tandis que la trame utilisée pour l’exemple
A en comportait 7 (il s’agit de celle présentée dans la figure 7.5). La première ligne de chaque
exemple correspond au temps total de complétion de la trame scénaristique (temps de création des
liens de causalité et de suppression des opérateurs abstraits compris), et les lignes suivantes correspondent
aux temps de planification obtenus pour chaque itération sur les points clés.
Une durée de 120s a été fixée comme limite haute pour la génération d’un plan, durée à partir de
laquelle la génération a été arrêtée manuellement ; ces cas sont indiqués dans le tableau par le symbole
∞. Le symbole ① représente les cas où le moteur de planification a subi un crash lors des trois
tentatives de génération de plan. Le symbole − indique que la génération n’a pas pu être évaluée
dans ces conditions : soit parce que la génération a été arrêtée lors d’une étape précédente pour la
complétion d’une trame scénaristique, soit dans le cas de VHPOP et du domaine A pour une raison
de prérequis. En effet, si VHPOP est censé prendre en compte les quantifications universelles dans
les préconditions et effets des opérateurs, les heuristiques correspondantes ne sont implémentées
que lorsque les quantifications portent sur des constantes, et non sur des objets. Le domaine ❆r❛❦✐s
❋✉❧❧, qui contient de telles préconditions, n’a donc pas pu être évalué avec VHPOP.
9.1.5 Discussion
Des trois moteurs utilisés, seul Fast Downward s’est avéré suffisamment stable et complet pour
la génération de plans sur les domaines créés par DIRECTOR. FF, qui a obtenu des résultats prometteurs
sur le domaine G, n’a pas été capable de traiter le domaine A, d’une taille plus conséquente.
VHPOP, quant à lui, s’est heurté sur ce dernier à un problème de prise en compte des quantifications
universelles.
La question se pose à présent de savoir si les temps obtenus par Fast Downward sont acceptables
pour les besoins de DIRECTOR en termes de génération de scénarios. D’après [Porteous et al., 2010],
198CHAPITRE 9. VALIDATION 9.1. EVALUATION INFORMATIQUE
F F F DA∗ F DLG VI PC VUCP
F 0.009 0.093 0.086 0.010 0.009
G
E
1
0.012 0.141 0.129 0.379 6.925
G
E
2
0.014 14.739 0.173 ∞ ①
G
F
1
0.012 0.167 0.132 17.889 0.370
G
F
2
0.017 10.654 0.181 ∞ ①
AbE
1
1.659 0.205 0.197 4.955 ∞
AbE
2
① 0.615 0.325 ∞ ①
A
E
1
① 18.322 0.247 − −
A
E
2
① ∞ ∞ − −
A
F
1
① 12.860 0.241 − −
A
F
2
① ∞ ∞ − −
TABLE 9.2 – Temps de génération en secondes par condition et par moteur (sans sélection de trame
scénaristique préalable)
① : crash | − : impossible de générer | ∞ : génération stoppée après t = 120s
F F F DA∗ F DLG VI PC VUCP
G
F∗
1
0.121 0.507 0.495 ∞ 1.082
i1 0.012 0.131 0.132 0.010 0.012
i2 0.010 0.158 0.139 ∞ 0.500
i3 0.007 0.112 0.120 − 0.440
G
F∗
2
0.147 7.393 0.597 ∞ ①
i1 0.011 0.157 0.185 0.016 0.014
i2 0.006 6.963 0.165 ∞ ①
i3 0.014 0.151 0.151 − −
A
F∗
1
① 4.702 2.118 − −
i1 ① 0.237 0.241 − −
i2 − 0.236 0.238 − −
i3 − 2.856 0.235 − −
i4 − 0.213 0.247 − −
i5 − 0.231 0.228 − −
i6 − 0.248 0.238 − −
i7 − 0.216 0.206 − −
A
F∗
2
① ∞ ∞ − −
i1 ① 0.369 0.383 − −
i2 − 0.379 0.372 − −
i3 − ∞ ∞ − −
... − − − − −
TABLE 9.3 – Temps de génération en secondes par condition et par moteur pour la complétion d’une
trame scénaristique
① : crash | − : impossible de générer | ∞ : génération stoppée après t = 120s
1999.1. EVALUATION INFORMATIQUE CHAPITRE 9. VALIDATION
un système de narration interactive devrait avoir un temps de réponse inférieur à 1.5s pour permettre
de réagir de manière satisfaisante aux interactions des utilisateurs. Dans le cas de DIRECTOR, cette
notion de temps interactif est à mettre en regard de la façon dont le scénario est exécuté : les personnages
virtuels et la simulation évoluant de manière autonome, la phase de génération du plan
n’est pas bloquante pour l’environnement virtuel. Cependant, pour certains scénarios comportant
des ajustements dès les premières étapes, un trop grand délai dans la génération mettrait aussitôt ces
scénarios en échec.
Ces chiffres sont également à considérer dans le contexte des systèmes de génération d’histoires
textuelles basés sur de la planification, où les temps constatés pour les systèmes qui respectent les
motivations des personnages écartent souvent la possibilité d’utilisation pour des applications en
temps interactif : la génération d’une histoire avec l’algorithme IPOCL demandant par exemple un
temps de l’ordre de 12.3 heures [Riedl and Young, 2010]. Il s’agit cependant d’un domaine qui évolue
très rapidement : la transposition de cet algorithme vers des algorithmes de planification classique
proposée par [Haslum, 2012] a permis de réduire le temps de génération à 45s sur ce même domaine,
tandis que l’approche multiagent de [Teutenberg and Porteous, 2013] obtient des temps allant de 1s
à 25s environ.
Si l’utilisateur d’un moteur de planification générant des plans parallèles plutôt que séquentiels semblait
au départ être une meilleure solution que d’avoir à recréer les liens de causalité à partir d’un
plan séquentiel, cette idée est remise en question au vu des résultats de VHPOP. D’une part, l’ordonnancement
des étapes des plans générés par celui-ci n’est pas optimal, dans le sens où l’on souhaite
que les ajustements soit déclenchés le plus tard possible dans le scénario. D’autre part, la différence
de performance entre VHPOP et FF ou Fast Downward va bien au delà des temps constatés pour la
création des liens de causalité nécessaire pour ces derniers.
Un compromis est également à trouver entre l’optimalité du scénario généré — nombre d’ajustements
et d’étapes de prédiction nécessaires avant d’arriver à la situation but — et le temps de planification.
Ainsi, l’utilisation de l’algorithme A* sans heuristique (F DA∗) permet d’obtenir des plans
de meilleure qualité que la recherche avec heuristique (F DLG ) mais est beaucoup plus coûteuse, en
mémoire comme en temps de calcul. Cette solution correspond en fait à l’approche triviale ayant été
écartée dans la section 6.3, qui consistait à calculer une prédiction de scénario pour chaque combinaison
d’ajustements.
On peut cependant constater que dans ce cas de figure, la sélection préalable d’une trame scénaristique
permet d’améliorer fortement les performances à partir d’une certaine taille de problème. C’est
le cas pour G
F
2
, où l’on passe d’un temps moyen de 10.654s à 7.393s, et pour A
F
1
, où l’on passe de
12.860s à 4.702s.
Par ailleurs, les performances obtenues pour la complétion d’une trame scénaristique pourraient
être grandement améliorées. Le temps de planification par les moteurs comprend en effet, en plus
du temps de recherche, le temps nécessaire à l’instanciation des différents opérateurs avec les objets
et les constantes correspondant aux types des paramètres de ces opérateurs. Dans le cas de F F,
par exemple, l’instanciation sur le domaine Ab1 prend en moyenne 1.51s sur 1.66s de temps total de
planification. Cette phase d’instanciation pourrait ainsi être mise en commun pour l’ensemble des
itérations sur les points clés, en instanciant les opérateurs au préalable comme c’est le cas par exemple
dans [Porteous and Cavazza, 2009].
Cette instanciation préalable permettrait également de réduire le nombre d’opérateurs considérés.
En effet, certaines relations entre objets peuvent être déclarées comme statiques dans le modèle
du domaine : ✭❤❛s✲t❛♥❦ ❄tr✉❝❦ ❄t❛♥❦✮, ou ✭❤❛s✲s♣r✐♥❣ ❄✈❛❧✈❡ ❄s♣r✐♥❣) par exemple. Toutes les
combinaisons de ces objets seront instanciées au niveau des opérateurs, pourtant les préconditions
de ces derniers ne pourront être vérifiées que dans le cas où ces relations statiques sont présentes
dans l’état initial du monde. L’instanciation des opérateurs pourrait donc être limitée aux combinaisons
d’objets qui permettent de vérifier ces relations.
200CHAPITRE 9. VALIDATION 9.2. RETOURS D’USAGE SUR LA CONCEPTION DES MODÈLES
9.2 Retours d’usage sur la conception des modèles
Le projet NIKITA, décrit dans la section 1.7.2, a donné lieu à la création d’un environnement
virtuel utilisant la plateforme HUMANS. Cet environnement vise à servir de support à la formation
des assembleurs-monteurs en aéronautique, sur la tâche d’assemblage de la barque d’un avion. Des
ergonomes du LATI de l’Université Paris Descartes ont réalisé les analyses terrain, à partir desquelles
ils ont écrit les modèles de domaine et d’activité.
9.2.1 DOMAIN-DL
Pour l’écriture du modèle de domaine, les ergonomes ont utilisé la version gratuite de l’éditeur
TopBraid Composer 3
. Il leur a également été fourni le méta-modèle ontologique de DOMAIN-DL,
ainsi que plusieurs exemples de règles pour les comportements.
Les ergonomes ont ainsi défini 22 composants, 28 types d’objets, 33 actions et 34 comportements. Si
la définition des concepts et des relations dans l’ontologie n’a demandé de notre part que des interventions
limitées, le formalisme des règles s’est avéré au contraire inutilisable pour les ergonomes.
Cette difficulté pourrait être dûe en grande partie à la syntaxe Jena des règles, qui se trouve être assez
lourde. Un outil auteur est en cours de développement pour tenter d’explorer davantage les possibilités
d’utilisations de DOMAIN-DL par des non-informaticiens.
9.2.2 ACTIVITY-DL
Les ergonomes ont également écrit un modèle d’activité associé à ce modèle du domaine, portant
sur une tâche d’assemblage d’un support à la barque de l’avion, tâche qui demande notamment des
opérations de perçage de trous et de pose d’agrafes.
Du fait du manque d’éditeur dédié à ACTIVITY-DL, la structure de base du modèle a été créée dans
l’éditeur Visual-HAWAI, correspondant à l’ancienne version du langage [Amokrane, 2010], et complétée
ensuite en XML.
Le modèle d’activité ainsi créé contient 11 tâches mères et 37 tâches feuilles, pour une durée réelle de
la procédure d’une quinzaine de minutes. La structure arborescente du modèle d’activité ainsi que le
lien explicite avec les objets et actions définis dans le modèle du domaine ont été particulièrement
appréciés, car permettant de structurer le modèle et d’éliminer certaines ambiguïtés.
Le problème majeur qui s’est posé lors de la modélisation a été celui de la granularité des actions à
modéliser, de par la distinction des tâches feuilles (liées aux actions du modèle du domaine) et des
tâches mères ; or, ce qui constitue une tâche élémentaire dans cette procédure dans certains contexte
(lors de la phase de production par exemple) sera au contraire décomposé en un ensemble de tâches
élémentaires dans un autre (par exemple, en début de formation).
De plus, du fait de la structure arborescente du modèle, les ergonomes ont été forcés de répéter à
l’identique certains sous-arbres de tâches dans des branches différentes. Cela pose notamment un
problème au niveau de la maintenabilité, puisque si une partie de cet arbre est modifié, cette modification
doit être reportée manuellement à tous les endroits où il est présent. Une piste d’amélioration
serait la proposition de “templates” de tâches, qui prendraient en paramètres un ensemble de
variables, à la manière du contexte des tâches, et correspondraient à des sous-arbres de tâches qui
pourraient être référencés à plusieurs endroits du modèle d’activité.
Comme pour le modèle du domaine, un éditeur dédié est en cours de réalisation, permettant d’extraire
directement les concepts et les relations définies dans le modèle de domaine, afin de pouvoir
spécifier les actions, les objets et les prédicats concernés par les tâches, et réciproquement d’ajouter
au modèle de domaine les éléments manquants par rapport au modèle d’activité.
3. TopBraid Composer est disponible sur : ❤tt♣✿✴✴✇✇✇✳t♦♣q✉❛❞r❛♥t✳❝♦♠✴ (accédé le 05/01/2014)
2019.3. PISTES D’ÉVALUATION CHAPITRE 9. VALIDATION
9.3 Pistes d’évaluation
Nous proposons ici un ensemble de pistes pour l’évaluation de nos propositions, en regard des
différents objectifs qui ont été définis pour notre système de scénarisation. Si ces pistes n’ont pas pu
être concrétisées dans le cadre de ce travail de thèse, il nous semble essentiel de veiller à la validation
de ces différents points avant d’envisager l’utilisation du système SELDON en conditions réelles.
9.3.1 Efficacité de la prédiction
Tout d’abord, il serait nécessaire d’évaluer la prédiction des actions des personnages virtuels
et des comportements des systèmes techniques simulés, en validant les opérateurs de prédiction
générés à partir des modèles de domaine et d’activité.
Pour cela, il serait possible de lancer la simulation à partir d’un état initial donné, d’explorer l’espace
d’états à partir de l’état courant pour chaque message de changement d’état transmis par la simulation,
et de vérifier, d’une part, qu’un seul opérateur d’action peut être appliqué par personnage, et
d’autre part, que cet opérateur correspond bien à la prochaine action qui sera choisie par celui-ci.
Il serait également possible, à partir de chacune des situations permises par la simulation, de lancer
cette dernière jusqu’à ce qu’elle arrive à une seconde situation donnée, considérée arbitrairement
comme la fin du scénario (fin de la procédure d’un personnage, accident, etc.), puis d’utiliser un moteur
de planification pour calculer, en utilisant des opérateurs de prédiction uniquement, un plan
allant de l’une à l’autre de ces situations, et de comparer le plan généré avec la trace de la simulation.
La prédiction des actions des utilisateurs est quant à elle plus délicate à évaluer, puisqu’elle nécessite
de faire la distinction entre ce qui relève de la transposition du modèle d’activité vers des opérateurs
de planification, et ce qui relève directement du modèle d’activité lui-même.
9.3.2 Efficacité du contrôle
De même, l’efficacité du contrôle offert par les ajustements devrait être validée. Il serait possible,
de manière similaire, de comparer systématiquement le scénario planifié et le scénario effectif, pour
un ensemble de combinaisons de situations initiales et d’objectifs scénaristiques. Il faudrait alors
limiter les agents aux personnages virtuels ou, à défaut, à un utilisateur se comportant de manière
conforme au modèle d’activité.
9.3.3 Résilience du système
En plus de valider le contrôle du scénario dans le cas où les agents se comportent de manière
conforme aux prédictions, il faudrait également évaluer la résilience du système face aux actions de
l’utilisateur. En particulier, il s’agirait de quantifier le nombre de tentatives possibles pour atteindre
un objectif donné avant que l’ensemble des opérations de commitment possibles ne devienne trop
limité pour permettre l’ajustement du scénario.
Une évaluation similaire à la précédente pourrait être menée, mais, plutôt que de simuler des agents
se comportant de manière conforme au modèle d’activité, il s’agirait d’utiliser un utilisateur simulé
sur le modèle de celui utilisé pour les évaluations de [Si, 2010], en introduisant par exemple des actions
aléatoires.
9.3.4 Variabilité des scénarios
La variabilité des scénarios étant l’un des objectifs de notre système de scénarisation, il serait intéressant
de quantifier celle qu’offre DIRECTOR. Il serait par exemple possible de générer l’ensemble
202CHAPITRE 9. VALIDATION 9.3. PISTES D’ÉVALUATION
des trames scénaristiques possibles à partir d’une situation initiale et d’un objectif scénaristique donnés,
puis de générer un scénario pour chacune d’entre elles. Une mesure de la variabilité pourrait être
calculée à partir du nombre de scénarios différents et de la distance entre chaque paire de scénarios
(voir par exemple l’utilisation de la distance de Levenshtein par [Porteous et al., 2013]), et rapportée
au nombre d’objets et d’opérateurs présents dans le domaine. Cependant, il est ici encore difficile de
faire la part des choses entre ce qui relève de DIRECTOR et ce qui relève du modèle de causalité luimême.
S’il était possible de quantifier la variabilité offerte par DIRECTOR, il serait alors intéressant
de comparer celui-ci avec un autre système de scénarisation, notamment sur la taille des modèles
nécessaires pour atteindre une certaine variabilité dans les scénarios. En particulier, la question suivante
se pose : “A partir de quelle taille de domaine devient-il rentable d’utiliser un système comme
DIRECTOR plutôt que de définir explicitement et exhaustivement l’ensemble des scénarios ?”
9.3.5 Cohérence des scénarios
Il serait également nécessaire d’évaluer la cohérence des scénarios générés par DIRECTOR, et des
scénarios effectifs qui en résultent dans la simulation. Par cohérence des scénarios nous entendons
ici la cohérence des comportements des personnages virtuels et des systèmes techniques, compte
tenu de leurs motivations et de leurs règles de fonctionnement apparentes.
Pour [Riedl and Young, 2005], cette cohérence peut être évaluée au travers de mesures de la compréhension
par des lecteurs ou spectateurs des liens de causalité qui relient les événements d’une
histoire et les différentes motivations exprimées par les personnages. Ils proposent pour cela un protocole
d’évaluation basé sur le modèle QUEST, décrit dans la section 3.3.
Il serait ainsi possible de comparer la cohérence d’un scénario généré à partir d’opérateurs transposant
simplement les actions du modèle de domaine (comme le domaine ❋❛❦❡ décrit précédemment)
et d’un scénario généré à partir d’opérateurs de prédiction, ou encore de comparer un scé-
nario généré à partir d’opérateurs d’ajustement classiques, et un scénario généré à partir d’opérateurs
d’ajustement “incohérents”, c’est à dire qui changent directement des états de la simulation.
Ces scénarios pourraient être présentés aux sujets sous la forme de textes, ou encore de vidéos de la
simulation.
Le problème se pose toujours quant à la distinction entre ce qui a trait à l’explicabilité qui est assurée
par DIRECTOR, et ce qui relève de la validité écologique des modèles utilisés. De plus, il est
nécessaire que les sujets de l’expérience aient suffisamment de connaissances dans le domaine pour
pouvoir inférer les motivations des personnages virtuels à partir de leurs actions, et les règles de fonctionnement
des systèmes techniques à partir de leurs réactions.
2039.3. PISTES D’ÉVALUATION CHAPITRE 9. VALIDATION
204Quatrième partie
Discussion et conclusion
205Chapitre 10
Discussion
Sommaire
10.1 Points forts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
10.1.1 Cohérence des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
10.1.2 Liberté et capacité d’action de l’utilisateur . . . . . . . . . . . . . . . . . . . . . . 208
10.1.3 Degrés de contrôle des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
10.1.4 Variabilité et pertinence des scénarios . . . . . . . . . . . . . . . . . . . . . . . . 209
10.1.5 Adaptabilité du système . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
10.2 Limites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
10.2.1 Temps de planification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
10.2.2 Replanification et instanciation des trames scénaristiques . . . . . . . . . . . . 211
10.2.3 Prise en compte des objectifs lors de la planification . . . . . . . . . . . . . . . . 211
10.2.4 Génération des opérateurs de prédiction . . . . . . . . . . . . . . . . . . . . . . . 212
10.2.5 Dépendance des modèles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
10.2.6 Cas où la planification est impossible . . . . . . . . . . . . . . . . . . . . . . . . . 213
10.3 Perspectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
10.3.1 Représentation des scénarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
10.3.2 Modèle de la cognition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
10.3.3 Modélisation de l’utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
10.3.4 Discours et récit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
10.3.5 Calcul de l’intérêt narratif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
La problématique de nos travaux était de concevoir un système de scénarisation qui permette de
concilier le contrôle du scénario avec la liberté d’action de l’utilisateur, la cohérence des comportements
présentés, et l’adaptabilité du système.
Nous avons proposé le modèle SELDON, un modèle pour la scénarisation qui offre à la fois les avantages
des approches émergentes centrées sur les personnages et des approches centrées sur le scé-
nario. SELDON permet d’adapter dynamiquement le déroulement des événements d’un environnement
virtuel en influençant de manière indirecte le comportement d’un ensemble d’entités autonomes
par le biais d’ajustements.
Ces ajustements sont calculés par le moteur DIRECTOR, qui utilise des techniques de planification
pour générer des scénarios prédictifs à partir des modèles qui sous-tendent la simulation.
Dans ce chapitre, nous présentons tout d’abord les points forts de nos propositions, puis nous discutons
de leurs limites. Enfin, nous proposons un ensemble de perspectives pour la suite de ce travail.
20710.1. POINTS FORTS CHAPITRE 10. DISCUSSION
10.1 Points forts
L’originalité de notre proposition réside dans l’association de la planification de scénarios avec
un environnement virtuel évoluant de manière autonome. Cette autonomie encourage la réactivité
de l’environnement face aux actions de l’utilisateur et la variabilité des scénarios, tandis que la plani-
fication permet d’assurer leur pertinence.
La génération d’opérateurs de prédiction à partir des modèles de la simulation garantit la cohérence
des comportements des personnages virtuels et des systèmes techniques au sein du scénario. Il ne
s’agit cependant pas simplement de planification intentionnelle, telle que proposée par [Riedl and
Young, 2010], [Haslum, 2012] ou [Teutenberg and Porteous, 2013] : la prédiction considère les actions
de tous les agents — à travers le système de tour par tour — et l’ensemble du système technique —
via la vérification systématique des comportements activables — et permet ainsi de s’assurer que
les événements qui vont se dérouler en parallèle de ceux nécessaires au scénario ne mettront pas ce
dernier en échec.
Nous considérons que les points forts de nos contributions résident en particulier dans les aspects
suivants :
– la cohérence des scénarios,
– la liberté et la capacité d’action de l’utilisateur,
– les différents degrés de contrôle des scénarios,
– l’équilibre entre variabilité et pertinence des scénarios,
– l’adaptabilité du système.
10.1.1 Cohérence des scénarios
Les personnages virtuels qui peuplent l’environnement évoluent de manière autonome à partir
des modèles d’activité et de domaine, de même que les systèmes techniques simulés. Les ajustements
réalisés par le module de scénarisation sont conçus de sorte à ne pas aller à l’encontre de ces
modèles : la gestion du late commitment assure que les états indéterminés soient précisés dès lors
qu’ils donnent lieu à une alternative possible entre plusieurs comportements ou actions, les happenings
sont choisis pour pouvoir être déclenchés sans qu’il y ait besoin de les justifier, et les contraintes
d’occurrence ne peuvent être spécifiées que dans la mesure où l’événement probabiliste auquel elles
se rattachent est possible. Les scénarios qui en résultent sont donc explicables en regard des modèles
de domaine et d’activité.
De plus, l’utilisation du langage ACTIVITY-DL, issu de langages directement utilisés par les ergonomes,
permet de créer des modèles d’activité qui reflètent la complexité des comportements de terrain, notamment
dans la prise en compte des contextes de réalisation des tâches et des déviations des procé-
dures prescrites. De même, le langage DOMAIN-DL permet de représenter des systèmes techniques
complexes. L’expressivité offerte par ces langages contribue ainsi à la validité écologique des modèles
qui les utilisent, et donc à celle de l’environnement virtuel.
10.1.2 Liberté et capacité d’action de l’utilisateur
Etant donné que la simulation évolue de manière autonome à partir des modèles, il est possible
pour l’utilisateur de réaliser n’importe quelle action qui soit permise par ces modèles, et d’obtenir
une réaction cohérente de la part des personnages virtuels et des systèmes techniques simulés.
De plus, cette liberté d’action ne met pas nécessairement en péril le scénario prévu par DIRECTOR.
En effet, les scénarios prédictifs ne concernent qu’un sous-ensemble d’agents et d’objets de l’environnement
virtuel, dont DIRECTOR suit l’évolution pour évaluer le bon déroulement du plan ; le
reste des agents et des objets peuvent évoluer comme bon leur semble tant que cela ne modifie pas
les actions et comportements attendus pour le scénario. Ainsi, si le scénario souhaité ne concerne
qu’un personnage virtuel donné, l’utilisateur pourra interagir avec les autres personnages sans que
208CHAPITRE 10. DISCUSSION 10.1. POINTS FORTS
cela ne force DIRECTOR à calculer un nouveau scénario : il pourra ainsi discuter avec un conducteur
de camion sur un poste de chargement pendant que s’annonce une fuite sur le poste voisin, ou jouer
avec un enfant pendant qu’un autre choisit la bille avec laquelle il s’étouffera.
10.1.3 Degrés de contrôle des scénarios
Les objectifs scénaristiques pris en compte par DIRECTOR pour le contrôle des scénarios peuvent
être définis à plus ou moins haut niveau.
D’une part, la représentation ontologique des entités avec DOMAIN-DL et CAUSALITY-DL permet,
de par les liens de subsomption entre événements, de spécifier des situations prescrites ou proscrites
allant d’événements très concrets (par exemple “Chute d’un bébé de la table à langer”) à plus abstraits
(“Chute d’un enfant”, voire “Accident domestique”). La modélisation des espaces de scénarios
d’intérêt à différents niveaux de granularité dans CAUSALITY-DL permet également de préciser les
relations de causalité qui sont signifiantes pour une application donnée, et, associées à la spécification
de situations prescrites, d’opérer un contrôle sur les événements apparaissant tout au long du
scénario, en prenant en compte un nombre plus ou moins important de points clés dans les trames
scénaristiques.
D’autre part, les contraintes sur les propriétés globales du scénario permettent de spécifier des objectifs
de haut niveau qui ne soient pas directement liés aux situations. Pour l’instant, des fonctions
d’évaluation ont été implémentées pour trois propriétés : la complexité, la gravité et la crédibilité
d’un scénario. Il serait possible d’en définir de nouvelles, que ces propriétés soient indépendantes du
domaine et uniquement fonction de la structure de la trame scénaristique (par exemple, le nombre
de barrières à lever, qui pourrait être une mesure du conflit), ou qu’elles reposent sur des annotations
des éléments du modèle de causalité.
10.1.4 Variabilité et pertinence des scénarios
C’est également cette possibilité de définir les espaces de scénarios d’intérêt à différents niveaux
de granularité qui permet d’atteindre un équilibre entre la variabilité des scénarios et leur pertinence.
L’émergence des scénarios à partir des modèles de domaine et d’activité et de l’évolution autonome
de la simulation permet en effet d’obtenir des scénarios variés pour un effort réduit, en comparaison
des systèmes qui se basent sur des graphes multi-linéaires de scénarios. Une simulation purement
émergente n’offre cependant pas de garanties sur la pertinence des situations qui surviennent suite
aux interactions de l’utilisateur avec l’environnement virtuel.
Il est donc possible de spécifier à l’aide de CAUSALITY-DL un espace de scénarios d’intérêt. Plus cet
espace sera défini de manière fine et plus l’on se rapprochera du niveau de contrôle offert par les
systèmes basés sur des graphes multi-linéaires, tout en gardant la flexibilité offerte par le langage
et la façon dont il est interprété par DIRECTOR : d’une part car il est possible de spécifier dans un
même modèle des événements ou des sous-graphes d’événements qui ne soient pas reliés entre eux,
et d’autre part car les trames scénaristiques qui en résultent peuvent être instanciées et complétées
différemment en fonction des objets et des agents qui sont présents dans l’environnement.
10.1.5 Adaptabilité du système
De par le choix d’une scénarisation extrinsèque, le système de scénarisation proposé n’est pas
spécifique aux modules de simulation du monde et de simulation des personnages autonomes utilisés
pour l’environnement virtuel, et pourrait ainsi être intégré à d’autres plateformes.
De plus, DIRECTOR, tout comme les modules de simulation du monde et des personnages virtuels,
est générique et opère à partir d’un ensemble de modèles du contenu scénaristique. Il peut donc, via
20910.2. LIMITES CHAPITRE 10. DISCUSSION
un changement de modèles, servir à d’autres applications que celles présentées dans ce mémoire. En
particulier, les modèles de causalité utilisés ici en tant qu’objectifs scénaristiques statiques étaient
issus de modèles réalisés lors d’analyses de risques, mais CAUSALITY-DL pourrait être utilisé pour
exprimer des espaces de scénarios qui ne soient pas nécessairement liés à des accidents. Il pourrait
par exemple être utilisé pour représenter des structures narratives classiques, en assimilant les victoires
du protagoniste à des événements, et les antagonistes à des barrières.
Les modèles eux-mêmes peuvent être réutilisés en totalité ou en partie : l’exemple ❆r❛❦✐s✲❋✉❧❧ utilisé
pour l’évaluation informatique dans la section 9.1 étend le domaine ❆r❛❦✐s✲❇❛s✐❝ par l’ajout de
tâches dans le modèle d’activité, et l’ajout d’un ensemble de comportements accidentels liés aux objets
dans le modèle du domaine.
Cette adaptabilité pourrait être poussée encore plus loin, puisque notre proposition permettrait de
modifier les modèles de la simulation de manière dynamique, durant les sessions d’utilisation de l’environnement
virtuel. En effet, si la génération des opérateurs de prédiction est actuellement réalisée
à l’initialisation, rien n’empêche de mettre à jour les modèles et de générer ces opérateurs à nouveau
avant de planifier un nouveau scénario. Les modifications dynamiques des règles de comportement
des objets sont d’ailleurs déjà permises par le moteur de simulation du monde de la plateforme HUMANS,
présenté dans l’annexe B.
10.2 Limites
Nous constatons cependant un certain nombre de limites à ces propositions, particulièrement en
ce qui concerne l’utilisation de la planification, comme il a été constaté dans le chapitre 9. Ces limites
portent sur le temps nécessaire à la planification, la replanification et la prise en compte des objectifs
scénaristique durant ces phases. Elles portent également sur la génération des opérateurs de prédiction,
sur la dépendance de DIRECTOR par rapport au contenu des modèles, et sur la gestion des cas
où il est impossible de planifier un scénario.
10.2.1 Temps de planification
Les temps de génération constatés lors de l’évaluation présentée dans le chapitre 9 sont suffisamment
élevés pour remettre en question l’utilisation de techniques de planification pour la génération
dynamique de scénarios. Ces temps sont d’autant plus problématiques que les domaines sur lesquels
cette génération a été évaluée restent relativement simplifiés par rapport aux domaines modélisés
pour les cas d’application réels, notamment en termes de nombre de tâches ou d’ajustements possibles
(voir par exemple dans la section 9.2).
Le passage à l’échelle est donc très limité, ce qui est une difficulté notoire du domaine de la planifi-
cation où les moteurs sont souvent évalués et comparés sur des problèmes “de laboratoire”, comme
blocks world, et peu sur des problèmes liés à des cas d’application réels.
Cependant, les spécificités de notre approche offrent quelques pistes pour réduire le temps nécessaire
à la planification des scénarios, qui pourraient permettre de les générer, si ce n’est en temps
interactif, tout du moins dans un temps acceptable pour nos besoins de scénarisation dynamique.
Nous avons déjà évoqué dans la section 9.1.5 la possibilité de procéder à l’instanciation des opérateurs
en amont de la planification, et de limiter cette instanciation aux combinaisons d’objets respectant
les relations statiques définies dans le modèle du domaine. Cela pourrait faire gagner un temps
considérable, particulièrement lorsqu’il s’agit d’effectuer plusieurs tentatives de planification successives
pour compléter une trame scénaristique.
Une autre spécificité de DIRECTOR qu’il serait possible d’exploiter est le fait que, dans certains cas,
seule une partie des agents et des objets de l’environnement virtuel est effectivement impliquée dans
la réalisation du plan, et que dans ce cas les actions des autres agents et les comportements des autres
210CHAPITRE 10. DISCUSSION 10.2. LIMITES
objets, qui ne sont pas reliés à la situation finale, sont retirés du scénario durant la phase de suppression
des opérateurs abstraits ; c’était le cas pour les plans présentés dans les figures 6.5 et 6.6. Or dans
certains cas il devrait être possible de proposer des heuristiques dépendantes du domaine permettant
de déterminer à l’avance, à partir d’une trame scénaristique donnée, quels sont les agents ou
objets qui ne seront pas présents dans le scénario. Par exemple, on pourrait considérer que les actions
d’un conducteur situé à un bout du dépôt pétrolier n’auront pas d’incidence sur celles d’un
second conducteur situé à l’autre bout. Il serait alors possible d’utiliser de telles heuristiques pour
réduire l’ampleur de la tâche de planification, sans pour autant modifier le scénario qui en résulte.
Nous pourrions également nous inspirer des travaux de [Teutenberg and Porteous, 2013] en couplant
le moteur de planification à un système multi-agent et en chargeant chaque agent de calculer de
lui-même l’opérateur de prédiction qui serait applicable pour l’agent lui correspondant dans l’environnement
virtuel.
10.2.2 Replanification et instanciation des trames scénaristiques
En parallèle de la réduction du temps de planification, la replanification serait également à amé-
liorer. Dans le cadre de DIRECTOR, la replanification d’un scénario est nécessaire dans deux cas : soit
car l’utilisateur met en péril le scénario existant, soit car de nouveaux objectifs scénaristiques sont
reçus.
Or la phase d’instanciation des trames scénaristique est actuellement réalisée de manière très simpliste,
à partir des correspondances entre variables spécifiées au niveau des liens entre les points
clés, sans prendre en compte l’état courant du monde ou le déroulement précédent des événements.
Il serait toutefois possible d’instancier cette trame à partir des événements déjà activés, plutôt que de
repartir de zéro, voire de considérer la progression dans les différentes trames scénaristiques comme
un critère de choix lors de la phase de sélection.
De même, plutôt que de répéter toute la phase de génération d’un scénario (sélection, instanciation
et complétion d’une trame scénaristique), il serait plus pertinent de mettre en place des mécanismes
de réparation de scénario, en cherchant tout d’abord à réparer le plan entre les points clés en échec,
et en ne sélectionnant une nouvelle trame scénaristique que si cette réparation est impossible.
10.2.3 Prise en compte des objectifs lors de la planification
La séparation des phases de sélection, instanciation et complétion des trames scénaristiques a
également pour effet de limiter la prise en compte des objectifs scénaristiques. En effet, pour l’instant
les contraintes sur les situations et sur les propriétés du scénario ne sont considérées que durant la
phase de sélection de la trame.
Les situations prescrites et proscrites sont donc limitées aux événements présents dans le modèle de
causalité, ce qui s’explique par le fait que ce modèle est censé contenir l’ensemble des événements
d’intérêt pour une application donnée : une situation suffisamment signifiante pour être prescrite ou
proscrite devrait donc figurer dans ce modèle. De même, le calcul des propriétés du scénario (complexité,
gravité et crédibilité) est effectué à partir de la trame scénaristique, ce qui peut être justifié
par les mêmes raisons.
Cependant, ces contraintes ne sont pas prises en compte durant la phase de planification pour la
complétion de la trame scénaristique. En particulier, il est possible que des situations proscrites apparaissent
dans le scénario final, alors même qu’elles avaient été écartées de la trame scénaristique
au préalable.
Il serait possible de prendre en compte ces situations proscrites comme des barrières dans l’algorithme
de complétion entre les points clés, en ajoutant systématiquement leur négation au but transmis
au moteur de planification. Cependant cela reviendrait à leur affecter systématiquement une
désirabilité de −1, ce qui n’est pas nécessairement le cas au départ.
21110.2. LIMITES CHAPITRE 10. DISCUSSION
Il semblerait plus pertinent de prendre en compte ces contraintes directement au niveau de la plani-
fication, en les représentant comme des contraintes faibles ou fortes de PDDL3.0 [Gerevini and Long,
2005]. De même, le calcul de la crédibilité devrait prendre en compte les choix faits au niveau des
contraintes d’occurrence par rapport aux probabilités originelles des événements qu’elles contraignent.
Cela pourrait être pris en compte au niveau de la planification en définissant une métrique de
crédibilité liée à ces opérateurs, et en cherchant à la minimiser ou la maximiser selon les cas.
De manière générale, le processus de génération de scénario gagnerait à être rendu itératif plutôt que
linéaire, sur le plan de la prise en compte des objectifs scénaristiques tout du moins. Cela permettrait
ainsi de remettre en question le choix d’une trame scénaristique si le scénario, une fois complété,
s’avère ne pas répondre de manière satisfaisante aux objectifs.
10.2.4 Génération des opérateurs de prédiction
La génération des opérateurs de prédiction à partir des modèles du domaine et de l’activité pourrait
elle aussi être améliorée sur un certain nombre de points.
Tout d’abord, les algorithmes de génération des opérateurs d’action considèrent pour l’instant le
modèle d’activité de manière séquentielle. Or la représentation hiérarchique des tâches permet de
modéliser des comportements plus riches, notamment le suivi de plusieurs tâches mères en parallèle,
ou de plusieurs arbres d’activité indépendants, permettant aux personnages virtuels de changer
de tâche principale si l’état du monde évolue. Par exemple, si un feu se déclenche, la tâche principale
de l’agent ne sera plus “Effectuer le chargement du camion” mais deviendra “Eteindre le feu”. Cela
nécessiterait l’ajout de tâches abstraites permettant de continuer ou d’interrompre une tâche mère
en cours — toutefois cela aurait pour effet d’augmenter encore le nombre d’opérateurs nécessaires
pour prédire l’activité à partir d’un même domaine. De même, ces algorithmes ne considèrent pas
pour l’instant qu’une tâche est susceptible d’échouer, ce qu’il serait possible de prendre en compte
avec un mécanisme similaire.
Le fait de considérer les actions en “tour par tour” au niveau du plan permet d’assurer que les actions
de tous les agents seront considérées, cependant les actions se déroulant dans l’environnement
virtuel n’ont pas toutes la même durée, et il serait possible pour un agent d’effectuer plusieurs actions
pendant qu’un autre n’en fait qu’une, ce qui rendrait la prédiction erronée. De même, les effets
des comportements duratifs des comportements du domaine sont simplifiés en effets instantanés au
niveau des opérateurs.
Certains moteurs de planification, compatibles avec des versions de PDDL ultérieures à la 1.1, permettent
toutefois de considérer la temporalité dans la planification. D’autres fonctionnalités pourraient
s’avérer pertinentes pour la génération des opérateurs de prédiction : l’utilisation d’axiomes (ou “prédicats
dérivés”) pour traduire les liens de subsomption entre événements, ou d’événements PDDL pour
appliquer systématiquement les comportements activables sans devoir passer par des opérateurs. La
représentation des scénarios pourrait être enrichie de manière similaire ; nous en discutons dans la
section 10.3.1.
10.2.5 Dépendance des modèles
Les performances de DIRECTOR dépendent directement de la qualité des modèles de domaine,
d’activité et de causalité qu’il utilise.
Ces modèles posent un certain nombre de difficultés lors de leur conception. Certaines sont liées directement
aux langages : par exemple, la représentation des règles de comportement dans DOMAINDL
ne permet pas, en l’état, leur définition par les experts sans l’appui d’un informaticien. D’autres
sont liées aux méta-modèles : par exemple, les constructeurs d’ACTIVITY-DL étant formalisés à l’aide
de couples de relations d’Allen, il est nécessaire que l’ensemble des couples définis pour un constructeur
personnalisé soit calculable.
212CHAPITRE 10. DISCUSSION 10.2. LIMITES
Du fait de l’ambiguïté de ces langages sur certains aspects, une certaine subjectivité est présente lors
de la phase de conception, notamment pour ce qui concerne le modèle de causalité : par exemple,
certains éléments pourront être représentés comme des barrières dans un cas (“Déclenchement de
la sonde”), et comme des événements dans d’autres cas (“Non fonctionnement de la sonde”).
Le facteur limitant reste cependant la cohérence des modèles entre eux : le modèle d’activité doit
être réalisable d’après les règles de comportement du modèle de domaine ; les relations de subsomption
entre événements doivent être cohérentes avec les règles d’activation de ces événements ; les
relations de causalité entre événements doivent correspondre à un ensemble de comportements du
modèle du domaine.
Une problématique particulière de DIRECTOR est qu’il nécessite de plus que le modèle de causalité
soit complet : si certaines barrières ne sont pas indiquées dans le modèle, alors elles ne seront pas
considérées lors de la complétion de la trame scénaristique, et la planification échouera. Par exemple,
la réalisation de l’événement “Eclaboussure dans les yeux d’un agent” est soumise à la levée de
la barrière “Port des lunettes de protection”. Si cette barrière n’est pas indiquée dans le modèle, sa
négation ne sera pas ajoutée au but considéré pour la phase de planification vers le premier point clé
de la trame menant à l’événement, et rien ne sera fait pour empêcher l’agent de mettre ses lunettes
de protection, ce qui rendra impossible la génération ultérieure d’un plan vers le dernier point clé.
Au final, les premières versions des modèles sont rarement complètes, et nécessitent un certain nombre
d’itérations avant qu’il soit possible d’exécuter la simulation et de générer des scénarios. Une piste
de solution serait d’associer aux outils auteurs permettant d’éditer les modèles un ensemble de mé-
canismes de vérification de ces derniers (voir par exemple [Rempulski, 2013].
10.2.6 Cas où la planification est impossible
Enfin, l’une des principales limites de DIRECTOR se situe dans les cas où il est impossible de
générer un plan permettant d’atteindre les objectifs scénaristiques donnés par TAILOR. Ce problème
est intrinsèquement lié à l’utilisation du late commitment : plus la simulation avance, et moins
DIRECTOR aura d’ajustements possibles sur le scénario.
Il est alors essentiel de chercher à limiter le nombre d’ajustements effectués pour réaliser un scénario
donné. On retrouve alors la question du compromis entre optimalité et performances de la planifi-
cation, déjà évoquée dans la section 9.1.5. Le choix d’une planification non-optimale amène en effet
à l’exécution d’un ensemble d’ajustements qui ne soient pas nécessaires pour la réalisation du scé-
nario.
Sur le plan narratif, la présence d’ajustements “inutiles” n’est toutefois pas inintéressante. Prenons
l’exemple du plan généré par le moteur FF sur l’exemple de la station service, présenté dans la figure
E.1 de l’annexe E. Dans ce scénario, un appel téléphonique est déclenché au départ, créant une étincelle
qui reste sans conséquence puisqu’il n’y a pas encore de fuite d’essence à ce moment. On peut
considérer ici que ce premier appel a pour effet de créer du suspense en préfigurant ce qui risque
d’arriver, un peu à la manière de la série de films Destination Finale où le spectateur assiste à la mise
en place graduelle de situations qui vont, par effet domino, aboutir à la mort accidentelle des personnages.
Cependant, si ces ajustements “inutiles” ne sont pas problématiques dans le cas de happenings ou
de contraintes d’occurrence, le raffinement superflu de certains états ferme inutilement des portes
pour la suite de la simulation. Il faudrait dès lors chercher à minimiser le nombre d’opérateurs de
type late commitment dans les plans, par exemple en définissant des coûts pour les opérateurs de
planification qui permettraient de minimiser le nombre d’ajustements. Ce mécanisme pourrait être
utilisé alternativement pour tenter de minimiser la longueur du scénario en assignant des coûts aux
actions concrètes.
Il serait également possible d’étendre les possibilités d’ajustement, en permettant l’ajout de nouveaux
objets, soit via les mécanismes de late commitment (par exemple, l’ajout d’un outil dans un
casier n’ayant pas encore été ouvert), soit via les mécanismes de happenings (par exemple, en faisant
21310.3. PERSPECTIVES CHAPITRE 10. DISCUSSION
arriver un nouvel agent dans la scène). Les contraintes d’occurrence pourraient également être étendues,
en particulier pour moduler les actions erronées des personnages, qui pour l’instant sont considérées
comme systématiques.
Dans le cas où DIRECTOR ne parvienne toutefois pas à trouver un plan satisfaisant, un mécanisme de
négociation devrait être mis en place avec TAILOR, afin de permettre le relâchement des contraintes.
10.3 Perspectives
En parallèle des améliorations visant à résoudre les problèmes venant d’être évoqués, nous envisageons
un certain nombre de pistes pour étendre nos propositions. Ces pistes concernent l’amélioration
de la représentation des scénarios, l’ajout d’un modèle de la cognition et d’un modèle de l’utilisateur,
la prise en compte de différents niveaux de présentation du scénario, et enfin l’évaluation de
l’intérêt narratif des scénarios en complément des propriétés déjà considérées.
10.3.1 Représentation des scénarios
Une première piste serait d’améliorer l’expressivité des formalismes de représentation des scénarios,
en particulier la représentation hiérarchique du scénario et la prise en compte de la temporalité,
à la fois au niveau des espaces de scénarios modélisés en CAUSALITY-DL et du scénario généré
lui-même.
En effet, si CAUSALITY-DL permet d’exprimer des liens de subsomption entre événements (par exemple,
une “Chute dans l’escalier” et une “Chute de la table à langer” sont deux types de “Chute”, qui
est un type d’“Evénement Accidentel”), la représentation des scénarios sous forme de plans partiellement
ordonnés ne permet pas d’exprimer au niveau des opérateurs :
– ni la subsomption, par exemple ✭❛✈❛❧❡r ♠❛♥♦♥ ❜✐❧❧❡✮ et ✭❛✈❛❧❡r ♠❛♥♦♥ ❝❛✐❧❧♦✉✮ héritent
de ✭❛✈❛❧❡r ♠❛♥♦♥ ♣❡t✐t✲♦❜❥❡t✮ ;
– ni la décomposition, par exemple ✭❛❧❧❡r✲❝❤❡r❝❤❡r✲❜✐❜❡r♦♥ ❛♥✐t❛✮ se décompose en :
– ✭❛❧❧❡r ❛♥✐t❛ ❢r✐❣♦✮,
– ✭♦✉✈r✐r ❛♥✐t❛ ❢r✐❣♦✮,
– ✭♣r❡♥❞r❡ ❛♥✐t❛ ❜✐❜❡r♦♥ ❢r✐❣♦✮,
– ✭❢❡r♠❡r ❛♥✐t❛ ❢r✐❣♦✮.
Utiliser un algorithme de planification hiérarchique, comme DPOCL [Young and Moore, 1994], pourrait
permettre de prendre en compte ces relations, et de manipuler ainsi le scénario à plus haut
niveau. Cela permettrait notamment d’identifier des phases dans le scénario, par le biais d’opérateurs
abstraits correspondant chacun à un ensemble d’actions des agents et de comportements du système
technique. Ce niveau d’abstraction supplémentaire simplifierait grandement la replanification
du scénario en permettant de ne modifier que certaines phases. Il permettrait également d’avoir une
plus grande marge de manœuvre par rapport aux actions de l’utilisateur, en intégrant dans le plan
des actions abstraites pouvant être réalisées de différentes manières par celui-ci sans mettre en péril
le scénario global.
De plus, la représentation de la temporalité dans CAUSALITY-DL permettrait d’augmenter la couverture
des scénarios pouvant être considérés. Certains scénarios accidentels, identifiés lors d’analyses
de risques servant à définir l’espace de scénarios d’intérêt, reposent en effet sur une synchronisation
très précise entre plusieurs événements. Un exemple, mentionné lors du recueil d’expertise
sur le cas d’application des dépôts pétroliers, est le cas où un conducteur ayant fini son chargement
démarre son camion au moment même où un second conducteur déclenche accidentellement une
fuite sur le poste de chargement voisin, ne laissant pas à ce dernier le temps de sécuriser la zone.
La prise en compte de la temporalité en CAUSALITY-DL devrait ainsi permettre de décrire la synchronisation
entre :
214CHAPITRE 10. DISCUSSION 10.3. PERSPECTIVES
– deux événements liés par une porte ET, qui peuvent être :
– synchrones, par exemple “Présence d’une source d’ignition” et “Epandage de produit in-
flammable” menant à “Formation d’un feu de nappe”,
– asynchrones, par exemple “Retour d’une citerne non-vide” et “Arrivée d’un nouveau chauffeur”
menant à “Citerne pleine non identifiée”,
– une barrière et l’événement qu’elle prévient, pouvant également être :
– synchrones, par exemple “Déclenchement de la sonde anti-débordement” par rapport à
“Non-arrêt du système de comptage”,
– asynchrones, par exemple “Contrôle de la vacuité” par rapport à “Citerne pleine non identi-
fiée”.
En parallèle, l’utilisation de planification temporelle pour la génération du scénario permettrait de
considérer les durées des différentes actions afin de prendre en compte ces différents cas de figure, et
notamment de déclencher les événements exogènes au moment précis où ils sont nécessaires — et
non avec une approche “tour par tour” comme c’est actuellement le cas.
10.3.2 Modèle de la cognition
Une amélioration nécessaire pour rendre compte de scénarios plus complexes sur le plan humain
serait la proposition et l’intégration dans notre architecture d’un modèle de la cognition.
En effet, si le modèle de l’activité utilisé décrit un ensemble de connaissances sur l’activité des personnages
virtuels, il n’explicite pas pour autant leurs processus cognitifs. Notamment, les connaissances
modélisées à l’heure actuelle ne permettent pas de savoir comment les personnages virtuels
interprètent ce modèle d’activité : comment ils évaluent l’utilité de chaque action du modèle et pondè-
rent ces utilités en fonction de leurs buts, à quel horizon ils planifient leurs actions, etc. Selon l’architecture
cognitive utilisée, les décisions prises par un personnage virtuel, à partir du même modèle
d’activité, pourront être différentes. Ces connaissances sur l’interprétation du modèle d’activité sont
actuellement encodées de manière implicite dans l’algorithme qui traduit le modèle représenté en
ACTIVITY-DL en opérateurs de prédiction PDDL.
Abstraire les processus de prise de décision implémentés par différentes architectures cognitives
nous permettrait ainsi d’interfacer notre système de scénarisation avec des moteurs de personnages
virtuels basés sur des approches différentes : le module utilisé actuellement, REPLICANTS [Lhommet,
2012], utilise Soar [Laird et al., 1987], mais on pourrait imaginer utiliser une autre architecture,
comme par exemple PsychSim [Pynadath and Marsella, 2004] qui est basée sur des problèmes de
Markov partiellement observables (POMDPs).
Or, différentes architectures cognitives prennent en compte différentes composantes “humaines” :
émotions, personnalité, relations sociales, adoption et révision dynamique des buts, etc. Des travaux
précédents menés par [Edward, 2011] sur l’architecture MASVERP ont notamment porté sur la prise
en compte du modèle de contrôle contextuel COCOM [Hollnagel, 1994]. Ce modèle définit quatre
modes de contrôle, qui représentent l’état dans lequel peut se trouver un agent en fonction de la
pression temporelle qu’il subit, et vont influer sur ses capacités de planification et prise de décision.
Un agent qui sera dans un mode “stratégique” va par exemple anticiper les préconditions des tâches
du modèle d’activité en allant chercher tous les outils nécessaires avant de se déplacer pour réaliser
la séquence de tâches, tandis qu’un agent en mode “tactique” ira récupérer ces outils au moment où
il en aura besoin. L’intégration d’un modèle de la cognition permettrait la prédiction et la prise en
compte dans le scénario de tels comportements.
10.3.3 Modélisation de l’utilisateur
Le système serait également grandement amélioré par l’intégration d’un meilleur modèle de l’utilisateur.
Dans la proposition actuelle, l’utilisateur est considéré lors de la construction du scénario
21510.3. PERSPECTIVES CHAPITRE 10. DISCUSSION
comme un personnage virtuel dotés de caractéristiques “moyennes”. Il est donc fréquent que son
comportement réel s’éloigne de ce comportement standard qui est attendu de lui. Pour les scénarios
qui reposent fortement sur les actions de l’utilisateur et non sur celles des personnages virtuels, il est
ainsi nécessaire de replanifier fréquemment le scénario.
Une meilleure modélisation du comportement de l’utilisateur permettrait d’adopter une approche
proactive, en anticipant davantage les déviations possibles du scénario souhaité pour éviter d’avoir
à le recalculer systématiquement. Cela permettrait également la construction de scénarios plus intéressants,
car en prédisant le type d’erreurs que peut commettre l’utilisateur, il est alors possible
d’amener ce dernier à des situations propices à ces erreurs, permettant ainsi de lui montrer les conséquences
de ses propres erreurs plutôt que de se reposer sur celles des personnages virtuels.
Nous envisageons trois pistes principales pour améliorer le modèle de l’utilisateur : la prise en compte
des traces d’activité, l’intégration de motivations propres à l’utilisateur, et la modélisation de ses
croyances.
Le modèle SELDON prend en entrée un ensemble de traces d’activité de l’utilisateur. Ces traces sont
analysées et interprétées par TAILOR, le module de génération de situations d’apprentissage, pour
déterminer des objectifs scénaristiques adaptés au profil et à l’historique de l’utilisateur. Cependant,
ces traces d’activité ne sont pas utilisées par DIRECTOR. Certains éléments du profil de l’utilisateur
sont certes utilisés pour ajuster le modèle de l’agent qui lui est associé dans le scénario, mais cette
paramétrisation reste très basique : il s’agit principalement de classifier celui-ci comme étant un
novice ou un expert. Des liens plus étroits avec le module de suivi de l’apprenant permettraient à
DIRECTOR d’améliorer la prédiction des actions de l’utilisateur. En effet, de même que les personnages
virtuels peuvent ne pas suivre à la lettre le modèle d’activité selon le modèle de la cognition
qui est utilisé, l’utilisateur ne respecte pas nécessairement les préconditions des tâches qui y sont
spécifiées. Un utilisateur peut ainsi ignorer une précondition contextuelle, ou ne pas respecter les
préconditions favorables lors d’une alternative entre deux tâches. La prédiction de son comportement
faite par DIRECTOR étant basée sur des opérateurs de planification déterministes construits à
partir du modèle d’activité, elle ne permet pas de prévoir ces cas. Le module de suivi de l’apprenant
MONITOR (décrit dans l’annexe B.4) intègre par contre un mécanisme de reconnaissance de plans
qui permet un suivi et une prédiction plus fine.
Une autre piste d’amélioration serait la prise en compte des spécificités de l’utilisateur de l’environnement
virtuel, en cela qu’il est différent des personnages virtuels autonomes mais également du
même utilisateur en situation réelle, en particulier au niveau de ses motivations. Le système actuel
n’attribue en effet qu’une seule motivation à l’utilisateur : la réalisation de la procédure (par exemple
“surveillance des enfants”). Or, bien que l’on recherche la validité écologique de l’environnement
pour tendre vers un apprentissage situé, l’utilisateur se comporte différemment dans la situation
simulée et dans la situation réelle. Il serait ainsi pertinent de lui attribuer des motivations propres
non pas au rôle qu’il joue dans la simulation, mais à l’utilisation de la simulation même — explorer
l’environnement, discuter avec les différents personnages, etc. —, comme c’est le cas dans le système
Thespian [Si, 2010].
Enfin, il serait possible de modéliser explicitement les croyances de l’utilisateur, non pas au niveau
pédagogique en termes de connaissances ou de compétences, mais en termes de croyances sur les
états de l’environnement. Il serait pour cela nécessaire d’intégrer un modèle de la perception, afin
d’inférer à la fois les croyances de l’utilisateur sur les états des objets en fonction des comportements
observés, et les croyances sur les motivations et autres états internes des personnages virtuels en
fonction des actions perçues. Cela permettrait notamment de laisser davantage de marge pour le late
commitment. La modélisation des croyances de l’utilisateur permet de recentrer la scénarisation sur
ce dernier, qui est son principal destinataire. Dans le domaine de la narration interactive, on parlera
alors d’experience management, plutôt que de drama management, c’est à dire que l’on s’intéresse
aux propriétés de l’expérience de l’utilisateur et non plus aux propriétés de l’histoire elle-même [Riedl
et al., 2008b]. Dans le système IN-TALE, les objectifs ne sont ainsi plus définis en termes d’états de
l’environnement mais de croyances de l’utilisateur, par exemple ✭❦♥♦✇s ♣❧❛②❡r ✭❤❛s ▼♦❤❛♠♠❡❞
216CHAPITRE 10. DISCUSSION 10.3. PERSPECTIVES
❜♦♠❜✶✮✮.
10.3.4 Discours et récit
Jusqu’ici, nos travaux sur la scénarisation se sont focalisés — pour reprendre le vocabulaire ciné-
matographique — sur la génération et la gestion du screenplay (“ce qu’on filme”), qui décrit les événements
et les actions ayant lieu dans l’environnement virtuel. Nous n’avons pas abordé la question du
shooting script (“comment on le filme”), qui définit la façon dont ces éléments sont mis en scène :
décors, caméras, lumières, musique, placement des personnages, narrateur...
Or l’utilisation d’un environnement virtuel offre de nombreuses possibilités pour la restitution d’une
séquence d’événements. En narratologie, notamment suite aux travaux de [Propp, 1928], on distingue
généralement trois composantes de la narration [Cheong, 2007] :
– la fabula : la séquence d’événements prenant place dans le monde de l’histoire, dans un ordre
chronologique ;
– le sjužet : une séquence d’événement extraite de la fabula, d’après un point de vue particulier
et dans un ordre particulier ;
– le discours : le résultat de la présentation du sjužet au travers d’un media particulier.
On peut traduire fabula et sjužet respectivement par histoire et récit [Swartjes, 2010].
L’approche choisie pour nos environnements virtuels, qui est de laisser l’utilisateur naviguer librement
— notamment dans le cas d’environnements immersifs à l’échelle 1 où le point de vue est
calqué sur le point de vue réel de l’utilisateur — et de se focaliser sur une scénarisation intra-diégétique,
limite le contrôle à celui de l’histoire, en restreignant les possibilités pour le système de maîtriser
quels événements sont perçus et comment ils sont perçus.
Certains éléments du discours peuvent toutefois être manipulés de manière intra-diégétique, c’est à
dire sans sortir l’utilisateur du monde virtuel dans lequel il est immergé. Il serait ainsi possible de travailler
sur une mise en scène adaptative, en jouant sur l’ambiance de l’environnement virtuel pour
modifier l’expérience de l’utilisateur. Le système pourrait notamment intégrer un modèle d’éclairage
interactif [El-Nasr and Horswill, 2003], ou utiliser le late commitment pour gérer le placement des
personnages et des objets dans l’environnement.
D’autres environnements virtuels pourraient permettre de manipuler davantage le discours, via la
manipulation du point de vue : dans un environnement avec vue à la troisième personne, le point de
vue de l’utilisateur et celui de son avatar (son incarnation dans l’environnement virtuel) ne coïncident
plus. L’utilisateur peut alors voir le personnage qu’il contrôle dans l’environnement et est toujours
capable de se déplacer librement dans l’environnement, mais le système contrôle les positions et les
angles de caméra utilisés pour restituer la scène. Selon l’effet voulu, le système pourra alors choisir
d’utiliser un plan large ou un plan serré, en plongée ou en contre-plongée, etc. Une telle manipulation
du discours serait par exemple réalisable via l’intégration, comme pour le système Mimesis [Young
et al., 2004], d’un discourse planner chargé de contrôler les mouvements de caméra et la musique durant
l’exécution du scénario dans l’environnement virtuel. Un certain nombre de travaux ont ainsi été
réalisés sur le placement dynamique de caméras pour des systèmes de narration interactive : [Courty
et al., 2003], [Riedl et al., 2008a], [Jhala and Young, 2010], [Lino et al., 2010].
En restreignant encore davantage la navigation, il serait possible de travailler sur le récit, en déterminant
quels événements doivent être présentés à l’utilisateur et dans quel ordre ils doivent l’être.
S’écarter d’un ordre chronologique permettrait d’introduire des structures narratives comme le suspense,
avec l’utilisation de flashbacks et de flashforwards [Cheong, 2007]. Cela pourrait être notamment
pertinent pour des applications de formation ou de prise de décision liées à la maîtrise des
risques, en présentant tout d’abord un événement accidentel, puis en remontant à la chaîne d’évé-
nements qui y a aboutie. Il serait également possible de travailler sur le point de vue subjectif avec
lequel est présenté le scénario, en se focalisant sur un personnage ou un autre [Porteous et al., 2010].
21710.3. PERSPECTIVES CHAPITRE 10. DISCUSSION
10.3.5 Calcul de l’intérêt narratif
Il existe de nombreuses manière d’évaluer la qualité d’un scénario, que ce soit en termes de pertinence
pédagogique ou d’intérêt narratif. Nous avons centré notre proposition sur le premier cas de
figure, avec la prise en compte de trois propriétés des scénarios : leur complexité, leur gravité, et leur
crédibilité. Ces propriétés sont intéressantes pour répondre à des demandes en termes de situations
pédagogiques, mais ne garantissent pas à elles seules que le scénario sera jugé intéressant par l’utilisateur.
On trouve dans la littérature d’autres critères permettant de juger de l’intérêt narratif d’un scénario,
et donc de sa capacité à maintenir l’attention et la motivation de l’utilisateur. L’architecture Moe
utilise ainsi une mesure de l’intensité, assimilée à la progression des connaissances de l’utilisateur
sur le monde [Weyhrauch, 1997]. Le système IDTension cherche à faire apparaître des situations de
conflit, en favorisant les situations où les personnages sont contraints à réaliser des actions contraires
à leurs valeurs ou à leurs motivations [Szilas, 2003]. D’autres systèmes, comme [Porteous et al., 2011]
ou [Delmas, 2009], se reposent sur des théories narratives classiques en assimilant l’intérêt narratif
d’un scénario à son adéquation à une structure narrative donnée.
Il serait ainsi pertinent de prendre en compte de telles propriétés dans le choix des trames narratives,
afin de favoriser non seulement l’intérêt pédagogique du scénario mais également sa qualité sur le
plan narratif.
218Chapitre 11
Conclusion
Les travaux présentés dans ce mémoire adressaient la problématique de la scénarisation d’environnements
virtuels au travers de quatre objectifs : la liberté d’action de l’utilisateur et sa capacité
d’action sur le scénario ; l’ampleur, le caractère dynamique et l’efficacité du contrôle exercé par les
concepteurs et/ou formateurs sur ce même scénario au travers du système de scénarisation ; la cohérence
des comportements présentés, à la fois au niveau de leur explicabilité au sein de la simulation
et de leur validité par rapport à la situation réelle simulée ; enfin, l’adaptabilité du système de scénarisation,
nécessaire pour proposer une variabilité des scénarios pour un effort modéré, en veillant à la
maintenabilité, à la réutilisabilité et au passage à l’échelle de ces scénarios.
Pour répondre à cette problématique, nous avons proposé le modèle SELDON, un modèle pour la
scénarisation d’environnements virtuels basé sur une approche émergente et modulaire. SELDON
assure la scénarisation extrinsèque d’un environnement peuplé de personnages virtuels autonomes,
où l’utilisateur est libre du choix de ses actions. Partant d’une simulation interactive, il réalise cette
scénarisation en deux étapes : dans un premier temps, des objectifs scénaristiques sont déterminés à
partir du profil et des traces d’activité de l’utilisateur ; puis un scénario est généré de sorte à atteindre
ces objectifs, et exécuté au travers d’ajustements indirects réalisés sur la simulation.
Nous avons réifié ce modèle au travers du moteur DIRECTOR. Plutôt que de contrôler directement
l’état du monde et de donner des ordres aux personnages virtuels, DIRECTOR utilise les modèles qui
sous-tendent la simulation pour prédire son évolution, et guide cette évolution au travers d’un ensemble
d’ajustements qui influencent les réactions des systèmes techniques et les prises de décision
des personnages virtuels de manière indirecte, sans nuire à leur explicabilité. DIRECTOR utilise un
moteur de planification pour générer des scénarios composés à la fois d’opérateurs de prédiction —
dont il va suivre l’instanciation dans la simulation — et d’opérateurs d’ajustement — dont il va dé-
clencher les effets.
Nous avons également proposé un ensemble de langages de représentation du contenu et des objectifs
scénaristiques : DOMAIN-DL, ACTIVITY-DL et CAUSALITY-DL. Ces langages sont issus de formalismes
utilisés par les experts chargés de concevoir les simulations à partir d’analyses terrain, et
permettent de représenter les connaissances de manière modulaire, à différents niveaux d’abstraction
et de granularité.
Ces contributions ont été implémentées et ont fait l’objet d’une évaluation informatique. Si elles possèdent
un certain nombre de limites, notamment en ce qui concerne la planification en temps interactif
des scénarios, nous estimons toutefois que notre approche consistant à associer planification
centralisée et simulation émergente permet de s’affranchir de nombreuses limitations classiques des
systèmes de scénarisation en termes de liberté d’action, d’adaptabilité ou de cohérence, et qu’elle
mérite d’être explorée davantage, en particulier au travers des pistes de solutions proposées dans la
discussion.
De manière plus générale, l’une des principales faiblesses de nos travaux est l’absence d’une validation
formelle de notre système vis à vis des objectifs fixés quant aux possibilités de contrôle qu’il offre
219CHAPITRE 11. CONCLUSION
et à la cohérence des scénarios. Il ne s’agit cependant pas là d’une spécificité liée à nos propositions,
mais d’un problème auquel se heurte l’ensemble du domaine de la narration interactive, et, par extension,
des travaux liés à la scénarisation d’environnements virtuels.
C’est ici que se situe pour nous la prochaine étape pour ce domaine de recherche : dans la proposition
de métriques et de protocoles d’évaluation permettant de valider les systèmes de scénarisation,
et surtout dans la proposition d’un formalisme standard de représentation des scénarios, du contenu
et des objectifs scénaristiques, qui, tel le PDDL pour le domaine de la planification, permettrait
l’échange et la comparaison des résultats, tout en gardant à l’esprit que la spécificité de la scénarisation
d’environnements virtuels est tout d’abord la multiplicité des usages auquel elle fait face, et
qu’elle ne saurait être évaluée sur des critères purement techniques.
220Cinquième partie
Annexes
221Annexe A
Glossaire
action Une action est un processus physique ou cognitif, pouvant être mis en œuvre
par un agent à l’issue d’une décision. Une action peut être ponctuelle ou
durative.
agent Un agent est un objet capable d’interagir de manière autonome avec son environnement,
c’est à dire à la fois de le percevoir et d’effectuer des actions dessus.
Un agent peut être un utilisateur humain ou un personnage virtuel autonome.
comportement Un comportement correspond à une manière d’évoluer de l’objet ou du système
qui en est doté. Un comportement peut être ponctuel ou duratif.
diégèse La diégèse est l’univers d’une œuvre, elle correspond au monde simulé.
discours Le discours est le résultat de la présentation du récit au travers d’un media
particulier.
endogène Un événement endogène est la résultante de comportements du domaine, que
ceux-ci relèvent d’actions de l’utilisateur, d’actions des personnages virtuels ou
de comportements propres au système lui-même.
état Un état est une condition instantanée dans laquelle se trouve un objet ou un
système.
événement Un événement est un fait marquant, qui survient à un moment donné. Un
événement correspond à une agrégation de changements d’états liés de manière
causale, signifiante du point de vue de l’observateur. Un événement peut
être ponctuel ou duratif.
exogène Un événement exogène est un événement déclenché de manière externe au
système.
extradiégétique Un événement extradiégétique est un événément qui n’appartient pas au domaine
simulé, se situant donc en dehors de la diégèse.
formalisme Un formalisme est une symbolisation matérielle (textuelle, graphique, etc.) arbitraire
permettant de rendre manipulables des concepts.
histoire L’histoire, ou fabula, est la séquence d’événements prenant place dans le
monde, dans un ordre chronologique.
223ANNEXE A. GLOSSAIRE
intradiégétique Un événement intradiégétique est un événément qui appartient au domaine
simulé et se situe donc dans la diégèse.
langage Un langage est un système de signes doté d’une sémantique et d’une syntaxe.
langage formel Un langage formel est un langage défini de sorte qu’il soit dénué d’ambiguïté,
par opposition aux langages naturels. Un langage formel peut être spécifié par
une grammaire formelle, une expression régulière, un automate, etc. Un langage
formel repose sur un ou plusieurs formalismes.
méta-modèle Un méta-modèle est un modèle qui a pour particularité de modéliser d’autres
modèles.
modèle Un modèle est un objet permettant de décrire la complexité inhérente à un
phénomène, un système, une situation, un domaine, etc., dans un but particulier.
Un modèle est écrit dans un langage de modélisation. Un langage de
modélisation se concentre sur certains aspects de ce qu’il modélise.
objet Un objet est une entité, concrète ou abstraite, ayant une existence propre, c’est-
à-dire pouvant être décrite ou manipulée sans qu’il soit nécessaire de connaître
d’autres objets.
objet
géométrique
Un objet géométrique est un objet possédant une représentation géométrique
dans l’environnement virtuel.
récit Le récit, ou sjužet, est une séquence d’événement extraite de l’histoire, d’après
un point de vue particulier et dans un ordre particulier.
scénario Un scénario est un ensemble d’événements particuliers, partiellement ordonnés
et instanciés dans un environnement virtuel.
scénarisation La scénarisation est un processus comprenant à la fois la spécification du
ou des déroulements possibles ou souhaitables de la simulation, et le contrôle
(exécution et/ou suivi et correction) du déroulement des événements en
temps-réel.
scénarisation
extrinsèque
La scénarisation est extrinsèque si elle est vue comme une surcouche, une
étape supplémentaire de cadrage ou de personnalisation d’un environnement
virtuel existant.
scénarisation
intrinsèque
La scénarisation est intrinsèque lorsqu’elle est partie intégrante du processus
de conception de l’environnement virtuel.
situation Une situation correspond à une agrégation d’états.
système de
scénarisation
Un système de scénarisation est composé d’un ou plusieurs langages de scé-
narisation, permettant de modéliser le contenu scénaristique et/ou les objectifs
scénaristiques, et d’un moteur de scénarisation permettant de gérer de manière
dynamique la réalisation du scénario.
trame
scénaristique
Une trame scénaristique, ou plot, est un ensemble de points clés partiellement
ordonnés et non instanciés.
224Annexe B
Description des modules de la plateforme
HUMANS
Sommaire
B.1 HUMANS-DL - Représentation des connaissances . . . . . . . . . . . . . . . . . . . . 226
B.2 WORLD MANAGER - Gestion de l’état du monde . . . . . . . . . . . . . . . . . . . . . . 227
B.3 REPLICANTS - Personnages virtuels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
B.4 MONITOR - Suivi de l’apprenant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
B.5 TAILOR - Génération de situations d’apprentissage . . . . . . . . . . . . . . . . . . . . 229
HUMANS, pour HUman Models based Artificial eNvironments Software platform, est une plateforme
de création d’environnements virtuels complexes prenant en compte les facteurs humains.
Elle est composée d’un ensemble de moteurs logiciels, qui raisonnent sur un ensemble de modèles
communs. Grâce à cette approche modulaire, elle peut fonctionner avec différentes configurations,
en ajoutant ou en enlevant des modules selon les besoins.
FIGURE B.1 – La plateforme HUMANS.
225B.1. HUMANS-DL ANNEXE B. PLATEFORME HUMANS
Cette plateforme se place dans le cadre théorique de la didactique professionnelle et vise à encourager
un apprentissage par la pratique, à partir de situations écologiquement valides qui reproduisent
des situations de terrain. Afin de rendre compte de comportements observés, les modèles qui
servent de base à la simulation sont créés à partir d’analyses terrain (analyses ergonomiques et analyses
de risque). De plus, ces modèles ne contiennent pas seulement le déroulement idéal des procé-
dures, mais décrivent également l’activité observée telle qu’elle apparait dans les conditions réelles,
tendant vers une description de l’activité finalisée. Ainsi les erreurs et les violations conscientes sont
prises en compte dans l’activité, que ce soit du côté de l’utilisateur ou de celui des personnages
virtuels qui peuplent l’environnement. En effet, afin de rendre compte de la complexité des situations
en termes de facteurs humains, la plateforme HUMANS permet de simuler des personnages
virtuels riches, capables de comportements variés et adaptables.
Les scénarios émergent des comportements individuels des personnages virtuels, des systèmes techniques,
et du ou des utilisateurs, afin de permettre de rendre compte d’une variété de situations sans
pour autant devoir les expliciter a priori. Ces scénarios sont représentés a posteriori sous la forme
de traces de la simulation, qui peuvent être consultées par les utilisateurs ou utilisées comme entrée
pour la scénarisation. Les scénarios peuvent en effet être adaptés dynamiquement grâce au modèle
SELDON, afin d’offrir des situations d’apprentissage pertinentes en regard du profil et de l’activité de
l’apprenant.
La plateforme HUMANS est composée de quatre modules :
– WORLD MANAGER, pour la gestion de l’état du monde ;
– REPLICANTS, pour la génération du comportement des personnages virtuels ;
– MONITOR, pour le suivi de l’apprenant et la génération de traces ;
– SELDON, pour la scénarisation adaptative.
Le module SELDON est lui-même divisé en deux sous-modules :
– TAILOR, pour la génération de situations d’apprentissage ;
– DIRECTOR, pour la génération et la mise en place de scénarios correspondant à ces situations
d’apprentissage.
Ces modules utilisent un ensemble de modèles communs, représentés à l’aide de trois langages de
description réunis dans le formalisme unifié HUMANS-DL.
B.1 HUMANS-DL - Représentation des connaissances
Les différents modules de la plateforme HUMANS raisonnent sur un ensemble commun de modèles.
Trois langages de description ont ainsi été formalisés :
– DOMAIN-DL, qui permet de représenter le fonctionnement du monde ;
– ACTIVITY-DL, qui permet de représenter l’activité des utilisateurs et des personnages virtuels ;
– CAUSALITY-DL, qui permet de représenter les chaînes de causalité.
Les connaissances représentées dans ces modèles sont issues d’analyses terrain, et sont spécifiques
au cas d’application addressé. Il est cependant possible de réutiliser tout ou partie de ces modèles
pour différents cas d’application : des formations traitant de deux sites industriels similaires pourront
par exemple utiliser un même modèle de domaine pour représenter des systèmes techniques
identiques, mais différents modèles d’activité pour représenter les différences de pratiques qui se
manifestent d’un site à l’autre.
Ces langages ont fait l’objet d’un travail de formalisation réalisé en commun avec l’ensemble de
l’équipe HUMANS (D. Lourdeaux, K. Amokrane, K. Carpentier, V. Lanquepin et M. Lhommet). Ils sont
présentés en détail dans les parties 5 et 7.1 de ce mémoire.
226ANNEXE B. PLATEFORME HUMANS B.2. WORLD MANAGER
B.2 WORLD MANAGER - Gestion de l’état du monde
FIGURE B.2 – Interface utilisateur de WORLD MANAGER.
WORLD MANAGER est le module en charge de la gestion des états du monde, qui a été développé
par K. Carpentier dans le cadre de sa thèse de doctorat.
L’implémentation de WORLD MANAGER est étroitement liée à la représentation du modèle du monde
en DOMAIN-DL. Il est doté une base de connaissances qui contient l’ensemble des instances d’objets
et leurs états courants.
WORLD MANAGER traite les demandes d’actions qui proviennent de l’utilisateur, via le moteur 3D,
ou des personnages virtuels. Il est doté d’un moteur de règles qui déclenche ou non les comportements
associés à ces actions. Ces comportements peuvent être ponctuels ou duratifs (changement
continu d’un état sur une certaine durée par exemple).
Il gère également le déclenchement des événements, qu’ils soient déclenchés par un message provenant
d’un autre module (événements exogènes) ou par des comportements en interne (événements endogènes).
WORLD MANAGER est implémenté sous la forme d’un programme Java, et utilise la bibliothèque
Jena pour interroger l’ontologie et la base de connaissances.
B.3 REPLICANTS - Personnages virtuels
REPLICANTS est le module qui gère le comportement des personnages virtuels qui peuplent l’environnement.
Il se place au niveau des processus cognitifs et de la prise de décision, l’objectif étant
d’obtenir des personnages à la fois adaptables et explicables afin de rendre compte de comportements
de terrain variés.
REPLICANTS faisait l’objet des travaux de doctorat de Margaux Lhommet [Lhommet, 2012]. Les personnages
virtuels de REPLICANTS sont modélisés à plusieurs niveaux : celui de la personnalité (avec
le modèle OCEAN [Costa and MacCrae, 1992] [Goldberg, 1992]), celui des émotions (avec les modèles
Lazarus [Lazarus, 1966] et OCC [Ortony et al., 1988]) et celui des relations sociales [Ochs et al., 2009].
REPLICANTS reprend en partie le modèle proposé par [Edward, 2011] pour la génération de comportements
non-idéaux. Les personnages sont capables de faire des déviations et des erreurs par rapport
aux procédures qu’ils doivent réaliser. Les erreurs sont générées en fonction de la classification
CREAM [Edward, 2011], et les violations conscientes sont modélisées par la notion d’Activités Limites
tolérées par l’Usage [Garza and Fadier, 2007] inclue dans le formalisme ACTIVITY-DL, et réalisées ou
non en fonction du mode de contrôle du personnage, d’après le modèle COCOM [Hollnagel, 1994].
REPLICANTS est implémenté avec l’architecture cognitive Soar [Laird et al., 1987], avec la sur-couche
Soar-NGS pour la génération des buts des personnages virtuels.
227B.4. MONITOR ANNEXE B. PLATEFORME HUMANS
FIGURE B.3 – Interface utilisateur de REPLICANTS.
B.4 MONITOR - Suivi de l’apprenant
FIGURE B.4 – Interface utilisateur de MONITOR.
MONITOR est le module en charge du suivi et de l’analyse de l’activité de l’apprenant, et de la
production de traces de l’environnement. Il est l’évolution du module HERA, issu des travaux de doctorat
de Kahina Amokrane [Amokrane, 2010].
MONITOR produit des traces de l’activité de l’apprenant, à la fois à destination du module de scénari-
228ANNEXE B. PLATEFORME HUMANS B.5. TAILOR
sation SELDON, de sorte à adapter le scénario de manière pertinente, et à destination du formateur
et de l’apprenant, afin de faciliter la compréhension de l’activité de ce dernier et de favoriser pour lui
l’adoption d’une posture réflexive. Il utilise pour cela de la reconnaissance de plan à partir du modèle
d’activité, et détecte les erreurs. Ces erreurs sont classifiées selon le modèle CREAM [Hollnagel,
1994]. Les violations faites consciemment, identifiées comme telles dans le modèle d’activité [Garza
and Fadier, 2007], sont elles aussi détectées. Suite à cette détection, MONITOR peut également fournir
des explications sur la gravité et les conséquences possible de l’erreur, en raisonnant sur les informations
contenues dans le modèle de la causalité. A partir de ces traces d’activité, MONITOR évalue
en temps réel l’apprenant par rapport à un certain nombre de critères de performances. Ces critères
peuvent être génériques (ex : erreurs, réactivité), ou dépendre de l’application considérée (ex : hygiène,
posture professionnelle). Ces critères visent à assister le formateur dans sa tâche de suivi, lui
permettant ainsi de considérer plusieurs apprenants à la fois.
En plus des traces de l’activité de l’apprenant, MONITOR produit également des traces de l’environnement,
permettant d’appréhender, en temps-réel ou a posteriori, les chaînes de conséquences
mettant en jeu les actions des personnages virtuels et le fonctionnement des systèmes techniques.
B.5 TAILOR - Génération de situations d’apprentissage
Le module TAILOR a pour but la sélection des situations d’apprentissage pertinentes en regard
du profil et de l’activité de l’apprenant. La notion de situations d’apprentissage est ici prise au sens
large : il ne s’agit pas seulement de sélectionner une situation but, mais également spécifier les situations
à favoriser ou à éviter au cours du scénario, ainsi qu’un ensemble de propriétés du scénario :
complexité, gravité, crédibilité...
Les contraintes générées par TAILOR sont utilisées en entrée par DIRECTOR afin de générer et d’exé-
cuter un scénario répondant à ces contraintes.
TAILOR est l’objet du travail de doctorat de Kevin Carpentier [Carpentier et al., 2013].
229B.5. TAILOR ANNEXE B. PLATEFORME HUMANS
230Annexe C
Diagrammes UML
FIGURE C.1 – Diagramme UML des graphes utilisés dans DIRECTOR
231ANNEXE C. DIAGRAMMES UML
FIGURE C.2 – Diagramme UML des concepts PDDL utilisés dans DIRECTOR
232Annexe D
Algorithmes
Algorithm 4 Algorithme d’ordonnancement de sous-tâches séquentielles
function ORDERSEQUENTIALSUBTASKS(subtasks)
for all task ∈ subtasks do
prev_task ← get_previous_task(task)
while prev_task do
fav_prec ← prev_task.favourable_precondition
if fav_prec then
tree_or ← Tree("OR")
tree_or.add(Tree("NOT").add(fav_prec))
tree_or.add("task-state", prev_task, "done")
task.precondition.add(tree_or)
prev_task ← get_previous_task(prev_task)
prev_task ← get_previous_task(task)
tree_and ← Tree("AND")
while prev_task do
tree_and.add("task-state", prev_task, "done")
prev_task ← get_previous_task(prev_task)
next_task ← get_next_task(task)
tree_or ← Tree("OR")
while next_task do
fav_prec ← next_task.favourable_precondition
if fav_prec then
tree_or.add(Tree("NOT").add(fav_prec))
tree_or.add("task-state", next_task, "done")
tree_and.add(tree_or)
next_task ← get_next_task(next_task)
if task.favourable_precondition then
tree_or ← Tree("OR")
tree_or.add(task.favourable_precondition)
tree_or.add(tree_and)
task.precondition.add(tree_or)
else
task.precondition.add(tree_and)
233ANNEXE D. ALGORITHMES
Algorithm 5 Algorithme de génération d’un plan partiellement ordonné en PDDL à partir du graphe
de scénario généré par DIRECTOR
function GENERATEPDDL(S)
cur r ent_nodes ← []
nex t_nodes ← []
pl an ← []
add S.g oal to cur r ent_nodes
i ← 0
while cur r ent_nodes do
if cur r ent_nodes does not contain only plot points theni ← i −1
while cur r ent_nodes do
pop N from cur r ent_nodes
for all N
0
in previous-nodes(N) do
if N
0
is a plot point then add N
0
to cur r ent_nodes
else
if N
0
is not in nex t_nodes then
if ∀x in following-nodes(N), x = N or x is a plot point or x is in pl an then
add N
0
to nex t_nodes
while pr ev i ous_nodes do
pop N from pr ev i ous_nodes
add N to nex t_nodes
if N is not a plot point then
pl an ← 〈i,N〉
for all 〈t,S〉 in pl an do
t ← t −i
return pl an
234Annexe E
Exemple “Gas Station”
Sommaire
E.1 Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
E.2 Scénarios générés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
E.1 Codes
Modèle d’activité XML
❁❄①♠❧ ✈❡rs✐♦♥❂✧✶✳✵✧ ❡♥❝♦❞✐♥❣❂✧❯❚❋✲✽✧❄❃
❁♠♦❞❡❧ ✈❡rs✐♦♥❂✧✶✳✵✧❃
❁t❛s❦s❃
❁t❛s❦❴♠❃
❁t❛s❦ ✐❞❂✧t❴r❡❢✐❧❧❴❣❛s✧ ♥❛♠❡❂✧❘❡❢✐❧❧ ●❛s✧❃
❁❝♦♥t❡①t❃
❁r❡❢s❃
❁r❡❢❝♦♥❝❡♣t ❝♦♥❝❡♣t❂✧❈❛r✧ r❡❢❂✧❄❝❛r✧✴❃
❁r❡❢❝♦♥❝❡♣t ❝♦♥❝❡♣t❂✧❚❛♥❦✧ r❡❢❂✧❄t❛♥❦✧✴❃
❁✴r❡❢s❃
❁❝♦♥str❛✐♥ts❃
❁❝♦♥str❛✐♥t❃
❁tr✐♣❧❡ ♣r❡❞✐❝❛t❡❂✧❤❛s✲t❛♥❦✧ s✉❜❥❡❝t❂✧❄❝❛r✧ ♦❜❥❡❝t❂✧❄t❛♥❦✧✴❃
❁✴❝♦♥str❛✐♥t❃
❁✴❝♦♥str❛✐♥ts❃
❁✴❝♦♥t❡①t❃
❁s✉❜t❛s❦s❃
❁s✉❜t❛s❦ ✐❞❂✧t❴t✉r♥❴♦❢❢❴♣❤♦♥❡✧✴❃
❁s✉❜t❛s❦ ✐❞❂✧t❴♦♣❡♥❴t❛♥❦✧✴❃
❁s✉❜t❛s❦ ✐❞❂✧t❴♣✉♠♣❴❣❛s✧✴❃
❁s✉❜t❛s❦ ✐❞❂✧t❴❝❧♦s❡❴t❛♥❦✧✴❃
❁✴s✉❜t❛s❦s❃
❁❝♦♥str✉❝t♦r t②♣❡❂✧❙❊◗✲❖❘❉✧❃
❁r❡❧❛t✐♦♥ ❧❤❂✧t❴t✉r♥❴♦❢❢❴♣❤♦♥❡✧ ♦♣❡r❛t♦r❂✧✫❧t❀✧ r❤❂✧t❴♦♣❡♥❴t❛♥❦✧✴❃
❁r❡❧❛t✐♦♥ ❧❤❂✧t❴♦♣❡♥❴t❛♥❦✧ ♦♣❡r❛t♦r❂✧✫❧t❀✧ r❤❂✧t❴♣✉♠♣❴❣❛s✧✴❃
❁r❡❧❛t✐♦♥ ❧❤❂✧t❴♣✉♠♣❴❣❛s✧ ♦♣❡r❛t♦r❂✧✫❧t❀✧ r❤❂✧t❴❝❧♦s❡❴t❛♥❦✧✴❃
❁✴❝♦♥str✉❝t♦r❃
❁❝♦♥❞✐t✐♦♥s❃
❁❝♦♥t❡①t✉❛❧ ✐❞❂✧✶✧❃
❁❆◆❉❃
❁st❛t❡♠❡♥t t②♣❡❂✧❞♦♠❛✐♥✧❃
❁tr✐♣❧❡ ♣r❡❞✐❝❛t❡❂✧❢✐❧❧✲st❛t❡✲✈❛❧✉❡✧ s✉❜❥❡❝t❂✧❄t❛♥❦✧ ♦❜❥❡❝t❂✧❡♠♣t②✧✴❃
235E.1. CODES ANNEXE E. EXEMPLE “GAS STATION”
❁✴st❛t❡♠❡♥t❃
❁✴❆◆❉❃
❁✴❝♦♥t❡①t✉❛❧❃
❁s❛t✐s❢❛❝t✐♦♥ ✐❞❂✧✶✧❃
❁❆◆❉❃
❁st❛t❡♠❡♥t t②♣❡❂✧❛❝t✐✈✐t②✧❃
❁tr✐♣❧❡ ♣r❡❞✐❝❛t❡❂✧t❛s❦✲st❛t❡✧ s✉❜❥❡❝t❂✧t❴♦♣❡♥❴t❛♥❦✧ ♦❜❥❡❝t❂✧❞♦♥❡✧✴❃
❁✴st❛t❡♠❡♥t❃
❁st❛t❡♠❡♥t t②♣❡❂✧❛❝t✐✈✐t②✧❃
❁tr✐♣❧❡ ♣r❡❞✐❝❛t❡❂✧t❛s❦✲st❛t❡✧ s✉❜❥❡❝t❂✧t❴♣✉♠♣❴❣❛s✧ ♦❜❥❡❝t❂✧❞♦♥❡✧✴❃
❁✴st❛t❡♠❡♥t❃
❁st❛t❡♠❡♥t t②♣❡❂✧❛❝t✐✈✐t②✧❃
❁tr✐♣❧❡ ♣r❡❞✐❝❛t❡❂✧t❛s❦✲st❛t❡✧ s✉❜❥❡❝t❂✧t❴❝❧♦s❡❴t❛♥❦✧ ♦❜❥❡❝t❂✧❞♦♥❡✧✴❃
❁✴st❛t❡♠❡♥t❃
❁✴❆◆❉❃
❁✴s❛t✐s❢❛❝t✐♦♥❃
❁✴❝♦♥❞✐t✐♦♥s❃
❁✴t❛s❦❃
❁✴t❛s❦❴♠❃
❁t❛s❦❴❢❃
❁t❛s❦ ✐❞❂✧t❴t✉r♥❴♦❢❢❴♣❤♦♥❡✧ ♥❛♠❡❂✧❚✉r♥ ❖❢❢ P❤♦♥❡✧❃
❁t❛❣s❃
❁t❛❣ t②♣❡❂✧❡①♣❡rt✧✴❃
❁✴t❛❣s❃
❁❝♦♥t❡①t❃
❁r❡❢s❃
❁r❡❢❝♦♥❝❡♣t ❝♦♥❝❡♣t❂✧❈❛r✧ r❡❢❂✧❄❝❛r✧✴❃
❁r❡❢❝♦♥❝❡♣t ❝♦♥❝❡♣t❂✧❚❛♥❦✧ r❡❢❂✧❄t❛♥❦✧✴❃
❁r❡❢❝♦♥❝❡♣t ❝♦♥❝❡♣t❂✧P❤♦♥❡✧ r❡❢❂✧❄♣❤♦♥❡✧✴❃
❁✴r❡❢s❃
❁❝♦♥str❛✐♥ts❃
❁❝♦♥str❛✐♥t❃
❁tr✐♣❧❡ ♣r❡❞✐❝❛t❡❂✧❤❛s✲t❛♥❦✧ s✉❜❥❡❝t❂✧❄❝❛r✧ ♦❜❥❡❝t❂✧❄t❛♥❦✧✴❃
❁✴❝♦♥str❛✐♥t❃
❁✴❝♦♥str❛✐♥ts❃
❁✴❝♦♥t❡①t❃
❁♦♣❡r❛t✐♦♥❃
❁❛❝t✐♦♥ ✐❞❂✧❚✉r♥✲❖❢❢✧✴❃
❁r❡s♦✉r❝❡s❃
❁r❡❢❝♦♥❝❡♣t r❡❢❂✧❄♣❤♦♥❡✧ ♣r❡❞✐❝❛t❡❂✧t✉r♥❡❞✲♦❢❢✲♦❜❥❡❝t✧✴❃
❁✴r❡s♦✉r❝❡s❃
❁✴♦♣❡r❛t✐♦♥❃
❁❝♦♥❞✐t✐♦♥s❃
❁❝♦♥t❡①t✉❛❧ ✐❞❂✧✷✧❃
❁❆◆❉❃
❁st❛t❡♠❡♥t t②♣❡❂✧❞♦♠❛✐♥✧❃
❁tr✐♣❧❡ ♣r❡❞✐❝❛t❡❂✧♦♥✲st❛t❡✲✈❛❧✉❡✧ s✉❜❥❡❝t❂✧❄♣❤♦♥❡✧ ♦❜❥❡❝t❂✧tr✉❡✧✴❃
❁✴st❛t❡♠❡♥t❃
❁✴❆◆❉❃
❁✴❝♦♥t❡①t✉❛❧❃
❁✴❝♦♥❞✐t✐♦♥s❃
❁✴t❛s❦❃
❁t❛s❦ ✐❞❂✧t❴♦♣❡♥❴t❛♥❦✧ ♥❛♠❡❂✧❖♣❡♥ ❚❛♥❦✧❃
❁❝♦♥t❡①t❃
❁r❡❢s❃
❁r❡❢❝♦♥❝❡♣t ❝♦♥❝❡♣t❂✧❈❛r✧ r❡❢❂✧❄❝❛r✧✴❃
❁r❡❢❝♦♥❝❡♣t ❝♦♥❝❡♣t❂✧❚❛♥❦✧ r❡❢❂✧❄t❛♥❦✧✴❃
❁✴r❡❢s❃
❁❝♦♥str❛✐♥ts❃
❁❝♦♥str❛✐♥t❃
❁tr✐♣❧❡ ♣r❡❞✐❝❛t❡❂✧❤❛s✲t❛♥❦✧ s✉❜❥❡❝t❂✧❄❝❛r✧ ♦❜❥❡❝t❂✧❄t❛♥❦✧✴❃
❁✴❝♦♥str❛✐♥t❃
236ANNEXE E. EXEMPLE “GAS STATION” E.1. CODES
❁✴❝♦♥str❛✐♥ts❃
❁✴❝♦♥t❡①t❃
❁♦♣❡r❛t✐♦♥❃
❁❛❝t✐♦♥ ✐❞❂✧❖♣❡♥✧✴❃
❁r❡s♦✉r❝❡s❃
❁r❡❢❝♦♥❝❡♣t r❡❢❂✧❄t❛♥❦✧ ♣r❡❞✐❝❛t❡❂✧♦♣❡♥❡❞✲♦❜❥❡❝t✧✴❃
❁✴r❡s♦✉r❝❡s❃
❁✴♦♣❡r❛t✐♦♥❃
❁❝♦♥❞✐t✐♦♥s❃
❁♥♦♠♦❧♦❣✐❝❛❧ ✐❞❂✧✷✧❃
❁❆◆❉❃
❁st❛t❡♠❡♥t t②♣❡❂✧❞♦♠❛✐♥✧❃
❁tr✐♣❧❡ ♣r❡❞✐❝❛t❡❂✧♦♣❡♥✲st❛t❡✲✈❛❧✉❡✧ s✉❜❥❡❝t❂✧❄t❛♥❦✧ ♦❜❥❡❝t❂✧❢❛❧s❡✧✴❃
❁✴st❛t❡♠❡♥t❃
❁✴❆◆❉❃
❁✴♥♦♠♦❧♦❣✐❝❛❧❃
❁s❛t✐s❢❛❝t✐♦♥ ✐❞❂✧✸✧❃
❁❆◆❉❃
❁st❛t❡♠❡♥t t②♣❡❂✧❞♦♠❛✐♥✧❃
❁tr✐♣❧❡ ♣r❡❞✐❝❛t❡❂✧♦♣❡♥✲st❛t❡✲✈❛❧✉❡✧ s✉❜❥❡❝t❂✧❄t❛♥❦✧ ♦❜❥❡❝t❂✧tr✉❡✧✴❃
❁✴st❛t❡♠❡♥t❃
❁✴❆◆❉❃
❁✴s❛t✐s❢❛❝t✐♦♥❃
❁✴❝♦♥❞✐t✐♦♥s❃
❁✴t❛s❦❃
❁t❛s❦ ✐❞❂✧t❴♣✉♠♣❴❣❛s✧ ♥❛♠❡❂✧P✉♠♣ ●❛s✧❃
❁❝♦♥t❡①t❃
❁r❡❢s❃
❁r❡❢❝♦♥❝❡♣t ❝♦♥❝❡♣t❂✧❈❛r✧ r❡❢❂✧❄❝❛r✧✴❃
❁r❡❢❝♦♥❝❡♣t ❝♦♥❝❡♣t❂✧❚❛♥❦✧ r❡❢❂✧❄t❛♥❦✧✴❃
❁✴r❡❢s❃
❁❝♦♥str❛✐♥ts❃
❁❝♦♥str❛✐♥t❃
❁tr✐♣❧❡ ♣r❡❞✐❝❛t❡❂✧❤❛s✲t❛♥❦✧ s✉❜❥❡❝t❂✧❄❝❛r✧ ♦❜❥❡❝t❂✧❄t❛♥❦✧✴❃
❁✴❝♦♥str❛✐♥t❃
❁✴❝♦♥str❛✐♥ts❃
❁✴❝♦♥t❡①t❃
❁♦♣❡r❛t✐♦♥❃
❁❛❝t✐♦♥ ✐❞❂✧P✉♠♣✧✴❃
❁r❡s♦✉r❝❡s❃
❁r❡❢❝♦♥❝❡♣t r❡❢❂✧❄t❛♥❦✧ ♣r❡❞✐❝❛t❡❂✧❤❛s✲r❡❝✐♣✐❡♥t✧✴❃
❁✴r❡s♦✉r❝❡s❃
❁✴♦♣❡r❛t✐♦♥❃
❁❝♦♥❞✐t✐♦♥s❃
❁♥♦♠♦❧♦❣✐❝❛❧ ✐❞❂✧✹✧❃
❁❆◆❉❃
❁st❛t❡♠❡♥t t②♣❡❂✧❞♦♠❛✐♥✧❃
❁tr✐♣❧❡ ♣r❡❞✐❝❛t❡❂✧♦♣❡♥✲st❛t❡✲✈❛❧✉❡✧ s✉❜❥❡❝t❂✧❄t❛♥❦✧ ♦❜❥❡❝t❂✧tr✉❡✧✴❃
❁✴st❛t❡♠❡♥t❃
❁✴❆◆❉❃
❁✴♥♦♠♦❧♦❣✐❝❛❧❃
❁s❛t✐s❢❛❝t✐♦♥ ✐❞❂✧✺✧❃
❁❆◆❉❃
❁st❛t❡♠❡♥t t②♣❡❂✧❞♦♠❛✐♥✧❃
❁tr✐♣❧❡ ♣r❡❞✐❝❛t❡❂✧❢✐❧❧✲st❛t❡✲✈❛❧✉❡✧ s✉❜❥❡❝t❂✧❄t❛♥❦✧ ♦❜❥❡❝t❂✧❢✉❧❧✧✴❃
❁✴st❛t❡♠❡♥t❃
❁✴❆◆❉❃
❁✴s❛t✐s❢❛❝t✐♦♥❃
❁✴❝♦♥❞✐t✐♦♥s❃
❁✴t❛s❦❃
❁t❛s❦ ✐❞❂✧t❴❝❧♦s❡❴t❛♥❦✧ ♥❛♠❡❂✧❈❧♦s❡ ❚❛♥❦✧❃
❁❝♦♥t❡①t❃
237E.1. CODES ANNEXE E. EXEMPLE “GAS STATION”
❁r❡❢s❃
❁r❡❢❝♦♥❝❡♣t ❝♦♥❝❡♣t❂✧❈❛r✧ r❡❢❂✧❄❝❛r✧✴❃
❁r❡❢❝♦♥❝❡♣t ❝♦♥❝❡♣t❂✧❚❛♥❦✧ r❡❢❂✧❄t❛♥❦✧✴❃
❁✴r❡❢s❃
❁❝♦♥str❛✐♥ts❃
❁❝♦♥str❛✐♥t❃
❁tr✐♣❧❡ ♣r❡❞✐❝❛t❡❂✧❤❛s✲t❛♥❦✧ s✉❜❥❡❝t❂✧❄❝❛r✧ ♦❜❥❡❝t❂✧❄t❛♥❦✧✴❃
❁✴❝♦♥str❛✐♥t❃
❁✴❝♦♥str❛✐♥ts❃
❁✴❝♦♥t❡①t❃
❁♦♣❡r❛t✐♦♥❃
❁❛❝t✐♦♥ ✐❞❂✧❈❧♦s❡✧✴❃
❁r❡s♦✉r❝❡s❃
❁r❡❢❝♦♥❝❡♣t r❡❢❂✧❄t❛♥❦✧ ♣r❡❞✐❝❛t❡❂✧❝❧♦s❡❞✲♦❜❥❡❝t✧✴❃
❁✴r❡s♦✉r❝❡s❃
❁✴♦♣❡r❛t✐♦♥❃
❁❝♦♥❞✐t✐♦♥s❃
❁s❛t✐s❢❛❝t✐♦♥ ✐❞❂✧✻✧❃
❁❆◆❉❃
❁st❛t❡♠❡♥t t②♣❡❂✧❞♦♠❛✐♥✧❃
❁tr✐♣❧❡ ♣r❡❞✐❝❛t❡❂✧♦♣❡♥✲st❛t❡✲✈❛❧✉❡✧ s✉❜❥❡❝t❂✧❄t❛♥❦✧ ♦❜❥❡❝t❂✧❢❛❧s❡✧✴❃
❁✴st❛t❡♠❡♥t❃
❁✴❆◆❉❃
❁✴s❛t✐s❢❛❝t✐♦♥❃
❁✴❝♦♥❞✐t✐♦♥s❃
❁✴t❛s❦❃
❁✴t❛s❦❴❢❃
❁✴t❛s❦s❃
❁✴♠♦❞❡❧❃
238ANNEXE E. EXEMPLE “GAS STATION” E.1. CODES
Domaine PDDL généré pour DIRECTOR
✭❞❡❢✐♥❡
✭❞♦♠❛✐♥ ❣❛sst❛t✐♦♥✮
✭✿r❡q✉✐r❡♠❡♥ts ✿❛❞❧✮
✭✿t②♣❡s ✉s❡ t❛s❦ ♦❜❥ ❧❡✈❡❧ t❛s❦st❛t❡ ❜❡❤❛✈✐♦✉r ❢✐❧❧✐♥❣ ❜♦♦❧ ✲ ♦❜❥❡❝t
❥♦✐♥t ❝❛r ❛❣❡♥t ♣❤♦♥❡ t❛♥❦ ✲ ♦❜❥✮
✭✿❝♦♥st❛♥ts ✉♥❦♥♦✇♥✲❢✐❧❧✐♥❣ ❡♠♣t② ❢✉❧❧ ✲ ❢✐❧❧✐♥❣
✉♥❦♥♦✇♥✲✉s❡ ♦❦ ✉s❡❞ ✲ ✉s❡
♣❡♥❞✐♥❣ ♦♥❣♦✐♥❣ ❞♦♥❡ ✲ t❛s❦st❛t❡
✉♥❦♥♦✇♥✲❧❡✈❡❧ ♥♦✈✐❝❡ ❡①♣❡rt ✲ ❧❡✈❡❧
♦♣❡♥✲t❛♥❦ ♣✉♠♣✲❣❛s ❝❧♦s❡✲t❛♥❦ r❡❢✐❧❧✲❣❛s t✉r♥✲♦❢❢✲♣❤♦♥❡ ✲ t❛s❦
♦♣❡♥ ♣✉♠♣ ❝❧♦s❡ ❧❡❛❦ ❢✐r❡ s♣❛r❦ t✉r♥✲♦❢❢ ✲ ❜❡❤❛✈✐♦✉r
tr✉❡ ❢❛❧s❡ ✲ ❜♦♦❧✮
✭✿♣r❡❞✐❝❛t❡s ✭t✉r♥✲♦r❞❡r ❄❛✶ ✲ ❛❣❡♥t ❄❛✷ ✲ ❛❣❡♥t✮
✭♣❛r❛♠❡t❡rs✲♦♣❡♥ ❄t❛♥❦ ✲ t❛♥❦✮
✭❧❡✈❡❧✲st❛t❡✲✈❛❧✉❡ ❄❛ ✲ ❛❣❡♥t ❄❧ ✲ ❧❡✈❡❧✮
✭❢❧❛♠♠❛❜❧❡✲♣♦♦❧✮
✭❤❛s✲t✉r♥ ❄❛ ✲ ❛❣❡♥t✮
✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❄❜ ✲ ❜❡❤❛✈✐♦✉r✮
✭❢♦r❝❡✲♦❝❝✉rr❡♥❝❡ ❄❜❡❤ ✲ ❜❡❤❛✈✐♦✉r✮
✭❢✐❧❧✲st❛t❡✲✈❛❧✉❡ ❄t ✲ t❛♥❦ ❄❢ ✲ ❢✐❧❧✐♥❣✮
✭♣❛r❛♠❡t❡rs✲♣✉♠♣ ❄t❛♥❦ ✲ t❛♥❦✮
✭❢♦r❝❡✲♥♦♥✲♦❝❝✉rr❡♥❝❡ ❄❜❡❤ ✲ ❜❡❤❛✈✐♦✉r✮
✭♣❛r❛♠❡t❡rs✲❝❧♦s❡ ❄t❛♥❦ ✲ t❛♥❦✮
✭❤❛s✲❥♦✐♥t ❄t ✲ t❛♥❦ ❄❥ ✲ ❥♦✐♥t✮
✭♣❛r❛♠❡t❡rs✲❧❡❛❦ ❄t❛♥❦ ✲ t❛♥❦✮
✭❢✐r❡✮
✭✉s❡✲st❛t❡✲✈❛❧✉❡ ❄❥ ✲ ❥♦✐♥t ❄✉ ✲ ✉s❡✮
✭t❛s❦✲st❛t❡ ❄t ✲ t❛s❦ ❄❛ ✲ ❛❣❡♥t ❄s ✲ t❛s❦st❛t❡✮
✭♦♥✲st❛t❡✲✈❛❧✉❡ ❄♣ ✲ ♣❤♦♥❡ ❄❜ ✲ ❜♦♦❧✮
✭♦♣❡♥✲st❛t❡✲✈❛❧✉❡ ❄t ✲ t❛♥❦ ❄❜ ✲ ❜♦♦❧✮
✭♣❛r❡♥t✲♣❛r❛♠❡t❡rs✲r❡❢✐❧❧✲❣❛s ❄t❛♥❦ ✲ t❛♥❦ ❄❛✷ ✲ ♦❜❥❡❝t ❄❝❛r ✲ ❝❛r✮
✭✐❣♥✐t✐♦♥✲s♦✉r❝❡✮
✭♣❛r❛♠❡t❡rs✲t✉r♥✲♦❢❢ ❄♣❤♦♥❡ ✲ ♣❤♦♥❡✮
✭♣❛r❛♠❡t❡rs✲s♣❛r❦ ❄♣ ✲ ♣❤♦♥❡✮
✭❤❛s✲❛❝t❡❞ ❄❛ ✲ ❛❣❡♥t✮
✭❤❛s✲t❛♥❦ ❄❝❛r ✲ ❝❛r ❄t❛♥❦ ✲ t❛♥❦✮✮
✭✿❛❝t✐♦♥ ❛❝t✐♦♥✲❛❜str❛❝t✲♣❛r❡♥t✲r❡❢✐❧❧✲❣❛s
✿♣❛r❛♠❡t❡rs ✭❄❛ ✲ ❛❣❡♥t ❄t❛♥❦ ✲ t❛♥❦ ❄❝❛r ✲ ❝❛r✮
✿♣r❡❝♦♥❞✐t✐♦♥ ✭❛♥❞ ✭♥♦t ✭t❛s❦✲st❛t❡ r❡❢✐❧❧✲❣❛s ❄❛ ♦♥❣♦✐♥❣✮✮
✭❤❛s✲t✉r♥ ❄❛✮
✭❤❛s✲t❛♥❦ ❄❝❛r ❄t❛♥❦✮
✭❢✐❧❧✲st❛t❡✲✈❛❧✉❡ ❄t❛♥❦ ❡♠♣t②✮
✭♥♦t ✭❤❛s✲❛❝t❡❞ ❄❛✮✮
✭❢♦r❛❧❧ ✭❄❛✷ ✲ ❛❣❡♥t✮
✭♥♦t ✭♣❛r❡♥t✲♣❛r❛♠❡t❡rs✲r❡❢✐❧❧✲❣❛s ❄t❛♥❦ ❄❛✷ ❄❝❛r✮✮✮
✭♦r ✭♥♦t ✭t❛s❦✲st❛t❡ ♦♣❡♥✲t❛♥❦ ❄❛ ❞♦♥❡✮✮
✭♥♦t ✭t❛s❦✲st❛t❡ ♣✉♠♣✲❣❛s ❄❛ ❞♦♥❡✮✮
✭♥♦t ✭t❛s❦✲st❛t❡ ❝❧♦s❡✲t❛♥❦ ❄❛ ❞♦♥❡✮✮✮✮
✿❡❢❢❡❝t ✭❛♥❞ ✭♣❛r❡♥t✲♣❛r❛♠❡t❡rs✲r❡❢✐❧❧✲❣❛s ❄t❛♥❦ ❄❛ ❄❝❛r✮
✭t❛s❦✲st❛t❡ t✉r♥✲♦❢❢✲♣❤♦♥❡ ❄❛ ♣❡♥❞✐♥❣✮
✭t❛s❦✲st❛t❡ r❡❢✐❧❧✲❣❛s ❄❛ ♦♥❣♦✐♥❣✮✮✮
✭✿❛❝t✐♦♥ ❛❝t✐♦♥✲❛❜str❛❝t✲❡♥❞✲♣❛r❡♥t✲r❡❢✐❧❧✲❣❛s
✿♣❛r❛♠❡t❡rs ✭❄t❛♥❦ ✲ t❛♥❦ ❄❛ ✲ ❛❣❡♥t ❄❝❛r ✲ ❝❛r✮
✿♣r❡❝♦♥❞✐t✐♦♥ ✭❛♥❞ ✭t❛s❦✲st❛t❡ ♦♣❡♥✲t❛♥❦ ❄❛ ❞♦♥❡✮
✭t❛s❦✲st❛t❡ ♣✉♠♣✲❣❛s ❄❛ ❞♦♥❡✮
✭t❛s❦✲st❛t❡ ❝❧♦s❡✲t❛♥❦ ❄❛ ❞♦♥❡✮
✭♣❛r❡♥t✲♣❛r❛♠❡t❡rs✲r❡❢✐❧❧✲❣❛s ❄t❛♥❦ ❄❛ ❄❝❛r✮
239E.1. CODES ANNEXE E. EXEMPLE “GAS STATION”
✭❤❛s✲t✉r♥ ❄❛✮
✭t❛s❦✲st❛t❡ r❡❢✐❧❧✲❣❛s ❄❛ ♦♥❣♦✐♥❣✮
✭❢♦r❛❧❧ ✭❄❜❡❤ ✲ ❜❡❤❛✈✐♦✉r✮ ✭♥♦t ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❄❜❡❤✮✮✮✮
✿❡❢❢❡❝t ✭❛♥❞ ✭t❛s❦✲st❛t❡ r❡❢✐❧❧✲❣❛s ❄❛ ❞♦♥❡✮
✭♥♦t ✭t❛s❦✲st❛t❡ r❡❢✐❧❧✲❣❛s ❄❛ ♦♥❣♦✐♥❣✮✮
✭♥♦t ✭♣❛r❡♥t✲♣❛r❛♠❡t❡rs✲r❡❢✐❧❧✲❣❛s ❄t❛♥❦ ❄❛ ❄❝❛r✮✮✮✮
✭✿❛❝t✐♦♥ ❛❝t✐♦♥✲t✉r♥✲♦❢❢✲♣❤♦♥❡
✿♣❛r❛♠❡t❡rs ✭❄❛ ✲ ❛❣❡♥t ❄♣❤♦♥❡ ✲ ♣❤♦♥❡ ❄t❛♥❦ ✲ t❛♥❦ ❄❝❛r ✲ ❝❛r✮
✿♣r❡❝♦♥❞✐t✐♦♥ ✭❛♥❞ ✭♣❛r❡♥t✲♣❛r❛♠❡t❡rs✲r❡❢✐❧❧✲❣❛s ❄t❛♥❦ ❄❛ ❄❝❛r✮
✭♥♦t ✭t❛s❦✲st❛t❡ t✉r♥✲♦❢❢✲♣❤♦♥❡ ❄❛ ♦♥❣♦✐♥❣✮✮
✭❤❛s✲t✉r♥ ❄❛✮
✭❤❛s✲t❛♥❦ ❄❝❛r ❄t❛♥❦✮
✭♦♥✲st❛t❡✲✈❛❧✉❡ ❄♣❤♦♥❡ tr✉❡✮
✭♥♦t ✭❧❡✈❡❧✲st❛t❡✲✈❛❧✉❡ ❄❛ ♥♦✈✐❝❡✮✮
✭t❛s❦✲st❛t❡ t✉r♥✲♦❢❢✲♣❤♦♥❡ ❄❛ ♣❡♥❞✐♥❣✮
✭♥♦t ✭❤❛s✲❛❝t❡❞ ❄❛✮✮✮
✿❡❢❢❡❝t ✭❛♥❞ ✭♥♦t ✭t❛s❦✲st❛t❡ t✉r♥✲♦❢❢✲♣❤♦♥❡ ❄❛ ♣❡♥❞✐♥❣✮✮
✭t❛s❦✲st❛t❡ t✉r♥✲♦❢❢✲♣❤♦♥❡ ❄❛ ♦♥❣♦✐♥❣✮
✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r t✉r♥✲♦❢❢✮
✭❤❛s✲❛❝t❡❞ ❄❛✮
✭♣❛r❛♠❡t❡rs✲t✉r♥✲♦❢❢ ❄♣❤♦♥❡✮✮✮
✭✿❛❝t✐♦♥ ❛❝t✐♦♥✲❛❜str❛❝t✲❡♥❞✲t✉r♥✲♦❢❢✲♣❤♦♥❡
✿♣❛r❛♠❡t❡rs ✭❄❛ ✲ ❛❣❡♥t✮
✿♣r❡❝♦♥❞✐t✐♦♥ ✭❛♥❞ ✭t❛s❦✲st❛t❡ t✉r♥✲♦❢❢✲♣❤♦♥❡ ❄❛ ♦♥❣♦✐♥❣✮
✭❤❛s✲t✉r♥ ❄❛✮
✭❢♦r❛❧❧ ✭❄❜❡❤ ✲ ❜❡❤❛✈✐♦✉r✮ ✭♥♦t ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❄❜❡❤✮✮✮✮
✿❡❢❢❡❝t ✭❛♥❞ ✭♥♦t ✭t❛s❦✲st❛t❡ t✉r♥✲♦❢❢✲♣❤♦♥❡ ❄❛ ♦♥❣♦✐♥❣✮✮
✭t❛s❦✲st❛t❡ t✉r♥✲♦❢❢✲♣❤♦♥❡ ❄❛ ❞♦♥❡✮
✭t❛s❦✲st❛t❡ ♦♣❡♥✲t❛♥❦ ❄❛ ♣❡♥❞✐♥❣✮✮✮
✭✿❛❝t✐♦♥ ❛❝t✐♦♥✲✐❣♥♦r❡✲t✉r♥✲♦❢❢✲♣❤♦♥❡
✿♣❛r❛♠❡t❡rs ✭❄❛ ✲ ❛❣❡♥t ❄♣❤♦♥❡ ✲ ♣❤♦♥❡ ❄t❛♥❦ ✲ t❛♥❦ ❄❝❛r ✲ ❝❛r✮
✿♣r❡❝♦♥❞✐t✐♦♥ ✭❛♥❞ ✭♣❛r❡♥t✲♣❛r❛♠❡t❡rs✲r❡❢✐❧❧✲❣❛s ❄t❛♥❦ ❄❛ ❄❝❛r✮
✭♥♦t ✭t❛s❦✲st❛t❡ t✉r♥✲♦❢❢✲♣❤♦♥❡ ❄❛ ♦♥❣♦✐♥❣✮✮
✭❤❛s✲t✉r♥ ❄❛✮
✭❤❛s✲t❛♥❦ ❄❝❛r ❄t❛♥❦✮
✭t❛s❦✲st❛t❡ t✉r♥✲♦❢❢✲♣❤♦♥❡ ❄❛ ♣❡♥❞✐♥❣✮
✭♥♦t ✭❤❛s✲❛❝t❡❞ ❄❛✮✮
✭♦r ✭♥♦t ✭♦♥✲st❛t❡✲✈❛❧✉❡ ❄♣❤♦♥❡ tr✉❡✮✮
✭❧❡✈❡❧✲st❛t❡✲✈❛❧✉❡ ❄❛ ♥♦✈✐❝❡✮✮✮
✿❡❢❢❡❝t ✭❛♥❞ ✭t❛s❦✲st❛t❡ t✉r♥✲♦❢❢✲♣❤♦♥❡ ❄❛ ❞♦♥❡✮
✭♥♦t ✭t❛s❦✲st❛t❡ t✉r♥✲♦❢❢✲♣❤♦♥❡ ❄❛ ♣❡♥❞✐♥❣✮✮
✭t❛s❦✲st❛t❡ ♦♣❡♥✲t❛♥❦ ❄❛ ♣❡♥❞✐♥❣✮✮✮
✭✿❛❝t✐♦♥ ❛❝t✐♦♥✲♦♣❡♥✲t❛♥❦
✿♣❛r❛♠❡t❡rs ✭❄❛ ✲ ❛❣❡♥t ❄t❛♥❦ ✲ t❛♥❦ ❄❝❛r ✲ ❝❛r✮
✿♣r❡❝♦♥❞✐t✐♦♥ ✭❛♥❞ ✭♣❛r❡♥t✲♣❛r❛♠❡t❡rs✲r❡❢✐❧❧✲❣❛s ❄t❛♥❦ ❄❛ ❄❝❛r✮
✭♥♦t ✭♦♣❡♥✲st❛t❡✲✈❛❧✉❡ ❄t❛♥❦ tr✉❡✮✮
✭♥♦t ✭t❛s❦✲st❛t❡ ♦♣❡♥✲t❛♥❦ ❄❛ ♦♥❣♦✐♥❣✮✮
✭❤❛s✲t✉r♥ ❄❛✮
✭❤❛s✲t❛♥❦ ❄❝❛r ❄t❛♥❦✮
✭t❛s❦✲st❛t❡ ♦♣❡♥✲t❛♥❦ ❄❛ ♣❡♥❞✐♥❣✮
✭♥♦t ✭❤❛s✲❛❝t❡❞ ❄❛✮✮
✭t❛s❦✲st❛t❡ t✉r♥✲♦❢❢✲♣❤♦♥❡ ❄❛ ❞♦♥❡✮✮
✿❡❢❢❡❝t ✭❛♥❞ ✭♥♦t ✭t❛s❦✲st❛t❡ ♦♣❡♥✲t❛♥❦ ❄❛ ♣❡♥❞✐♥❣✮✮
✭t❛s❦✲st❛t❡ ♦♣❡♥✲t❛♥❦ ❄❛ ♦♥❣♦✐♥❣✮
✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ♦♣❡♥✮
✭❤❛s✲❛❝t❡❞ ❄❛✮
✭♣❛r❛♠❡t❡rs✲♦♣❡♥ ❄t❛♥❦✮✮✮
240ANNEXE E. EXEMPLE “GAS STATION” E.1. CODES
✭✿❛❝t✐♦♥ ❛❝t✐♦♥✲❛❜str❛❝t✲❡♥❞✲♦♣❡♥✲t❛♥❦
✿♣❛r❛♠❡t❡rs ✭❄❛ ✲ ❛❣❡♥t✮
✿♣r❡❝♦♥❞✐t✐♦♥ ✭❛♥❞ ✭t❛s❦✲st❛t❡ ♦♣❡♥✲t❛♥❦ ❄❛ ♦♥❣♦✐♥❣✮
✭❤❛s✲t✉r♥ ❄❛✮
✭❢♦r❛❧❧ ✭❄❜❡❤ ✲ ❜❡❤❛✈✐♦✉r✮ ✭♥♦t ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❄❜❡❤✮✮✮✮
✿❡❢❢❡❝t ✭❛♥❞ ✭♥♦t ✭t❛s❦✲st❛t❡ ♦♣❡♥✲t❛♥❦ ❄❛ ♦♥❣♦✐♥❣✮✮
✭t❛s❦✲st❛t❡ ♦♣❡♥✲t❛♥❦ ❄❛ ❞♦♥❡✮
✭t❛s❦✲st❛t❡ ♣✉♠♣✲❣❛s ❄❛ ♣❡♥❞✐♥❣✮✮✮
✭✿❛❝t✐♦♥ ❛❝t✐♦♥✲♣✉♠♣✲❣❛s
✿♣❛r❛♠❡t❡rs ✭❄❛ ✲ ❛❣❡♥t ❄t❛♥❦ ✲ t❛♥❦ ❄❝❛r ✲ ❝❛r✮
✿♣r❡❝♦♥❞✐t✐♦♥ ✭❛♥❞ ✭♣❛r❡♥t✲♣❛r❛♠❡t❡rs✲r❡❢✐❧❧✲❣❛s ❄t❛♥❦ ❄❛ ❄❝❛r✮
✭♥♦t ✭❢✐❧❧✲st❛t❡✲✈❛❧✉❡ ❄t❛♥❦ ❢✉❧❧✮✮
✭♥♦t ✭t❛s❦✲st❛t❡ ♣✉♠♣✲❣❛s ❄❛ ♦♥❣♦✐♥❣✮✮
✭❤❛s✲t✉r♥ ❄❛✮
✭❤❛s✲t❛♥❦ ❄❝❛r ❄t❛♥❦✮
✭t❛s❦✲st❛t❡ ♣✉♠♣✲❣❛s ❄❛ ♣❡♥❞✐♥❣✮
✭♥♦t ✭❤❛s✲❛❝t❡❞ ❄❛✮✮
✭t❛s❦✲st❛t❡ ♦♣❡♥✲t❛♥❦ ❄❛ ❞♦♥❡✮✮
✿❡❢❢❡❝t ✭❛♥❞ ✭♥♦t ✭t❛s❦✲st❛t❡ ♣✉♠♣✲❣❛s ❄❛ ♣❡♥❞✐♥❣✮✮
✭t❛s❦✲st❛t❡ ♣✉♠♣✲❣❛s ❄❛ ♦♥❣♦✐♥❣✮
✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ♣✉♠♣✮
✭❤❛s✲❛❝t❡❞ ❄❛✮
✭♣❛r❛♠❡t❡rs✲♣✉♠♣ ❄t❛♥❦✮✮✮
✭✿❛❝t✐♦♥ ❛❝t✐♦♥✲❛❜str❛❝t✲❡♥❞✲♣✉♠♣✲❣❛s
✿♣❛r❛♠❡t❡rs ✭❄❛ ✲ ❛❣❡♥t✮
✿♣r❡❝♦♥❞✐t✐♦♥ ✭❛♥❞ ✭t❛s❦✲st❛t❡ ♣✉♠♣✲❣❛s ❄❛ ♦♥❣♦✐♥❣✮
✭❤❛s✲t✉r♥ ❄❛✮
✭❢♦r❛❧❧ ✭❄❜❡❤ ✲ ❜❡❤❛✈✐♦✉r✮ ✭♥♦t ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❄❜❡❤✮✮✮✮
✿❡❢❢❡❝t ✭❛♥❞ ✭♥♦t ✭t❛s❦✲st❛t❡ ♣✉♠♣✲❣❛s ❄❛ ♦♥❣♦✐♥❣✮✮
✭t❛s❦✲st❛t❡ ♣✉♠♣✲❣❛s ❄❛ ❞♦♥❡✮
✭t❛s❦✲st❛t❡ ❝❧♦s❡✲t❛♥❦ ❄❛ ♣❡♥❞✐♥❣✮✮✮
✭✿❛❝t✐♦♥ ❛❝t✐♦♥✲❝❧♦s❡✲t❛♥❦
✿♣❛r❛♠❡t❡rs ✭❄❛ ✲ ❛❣❡♥t ❄t❛♥❦ ✲ t❛♥❦ ❄❝❛r ✲ ❝❛r✮
✿♣r❡❝♦♥❞✐t✐♦♥ ✭❛♥❞ ✭♣❛r❡♥t✲♣❛r❛♠❡t❡rs✲r❡❢✐❧❧✲❣❛s ❄t❛♥❦ ❄❛ ❄❝❛r✮
✭♥♦t ✭♦♣❡♥✲st❛t❡✲✈❛❧✉❡ ❄t❛♥❦ ❢❛❧s❡✮✮
✭♥♦t ✭t❛s❦✲st❛t❡ ❝❧♦s❡✲t❛♥❦ ❄❛ ♦♥❣♦✐♥❣✮✮
✭❤❛s✲t✉r♥ ❄❛✮
✭❤❛s✲t❛♥❦ ❄❝❛r ❄t❛♥❦✮
✭t❛s❦✲st❛t❡ ❝❧♦s❡✲t❛♥❦ ❄❛ ♣❡♥❞✐♥❣✮
✭♥♦t ✭❤❛s✲❛❝t❡❞ ❄❛✮✮
✭t❛s❦✲st❛t❡ ♣✉♠♣✲❣❛s ❄❛ ❞♦♥❡✮✮
✿❡❢❢❡❝t ✭❛♥❞ ✭♥♦t ✭t❛s❦✲st❛t❡ ❝❧♦s❡✲t❛♥❦ ❄❛ ♣❡♥❞✐♥❣✮✮
✭t❛s❦✲st❛t❡ ❝❧♦s❡✲t❛♥❦ ❄❛ ♦♥❣♦✐♥❣✮
✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❝❧♦s❡✮
✭❤❛s✲❛❝t❡❞ ❄❛✮
✭♣❛r❛♠❡t❡rs✲❝❧♦s❡ ❄t❛♥❦✮✮✮
✭✿❛❝t✐♦♥ ❛❝t✐♦♥✲❛❜str❛❝t✲❡♥❞✲❝❧♦s❡✲t❛♥❦
✿♣❛r❛♠❡t❡rs ✭❄❛ ✲ ❛❣❡♥t✮
✿♣r❡❝♦♥❞✐t✐♦♥ ✭❛♥❞ ✭t❛s❦✲st❛t❡ ❝❧♦s❡✲t❛♥❦ ❄❛ ♦♥❣♦✐♥❣✮
✭❤❛s✲t✉r♥ ❄❛✮
✭❢♦r❛❧❧ ✭❄❜❡❤ ✲ ❜❡❤❛✈✐♦✉r✮ ✭♥♦t ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❄❜❡❤✮✮✮✮
✿❡❢❢❡❝t ✭❛♥❞ ✭♥♦t ✭t❛s❦✲st❛t❡ ❝❧♦s❡✲t❛♥❦ ❄❛ ♦♥❣♦✐♥❣✮✮
✭t❛s❦✲st❛t❡ ❝❧♦s❡✲t❛♥❦ ❄❛ ❞♦♥❡✮✮✮
✭✿❛❝t✐♦♥ ❜❡❤❛✈✐♦✉r✲s♣❛r❦
✿♣❛r❛♠❡t❡rs ✭❄♣❤♦♥❡ ✲ ♣❤♦♥❡✮
✿♣r❡❝♦♥❞✐t✐♦♥ ✭❛♥❞ ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r s♣❛r❦✮
✭❢♦r❝❡✲♦❝❝✉rr❡♥❝❡ s♣❛r❦✮
241E.1. CODES ANNEXE E. EXEMPLE “GAS STATION”
✭♣❛r❛♠❡t❡rs✲s♣❛r❦ ❄♣❤♦♥❡✮
✭♦♥✲st❛t❡✲✈❛❧✉❡ ❄♣❤♦♥❡ tr✉❡✮✮
✿❡❢❢❡❝t ✭❛♥❞ ✭♥♦t ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r s♣❛r❦✮✮
✭♥♦t ✭♣❛r❛♠❡t❡rs✲s♣❛r❦ ❄♣❤♦♥❡✮✮
✭♥♦t ✭❢♦r❝❡✲♦❝❝✉rr❡♥❝❡ s♣❛r❦✮✮
✭✐❣♥✐t✐♦♥✲s♦✉r❝❡✮
✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❢✐r❡✮✮✮
✭✿❛❝t✐♦♥ ♦❝❝✉rr❡♥❝❡✲s♣❛r❦✲tr✉❡
✿♣❛r❛♠❡t❡rs ✭✮
✿❡❢❢❡❝t ✭❢♦r❝❡✲♦❝❝✉rr❡♥❝❡ s♣❛r❦✮✮
✭✿❛❝t✐♦♥ ♦❝❝✉rr❡♥❝❡✲s♣❛r❦✲❢❛❧s❡
✿♣❛r❛♠❡t❡rs ✭✮
✿❡❢❢❡❝t ✭❢♦r❝❡✲♥♦♥✲♦❝❝✉rr❡♥❝❡ s♣❛r❦✮✮
✭✿❛❝t✐♦♥ ❛❝t✐♦♥✲❛❜str❛❝t✲❡♥❞t✉r♥
✿♣❛r❛♠❡t❡rs ✭❄❝✉rr❡♥t ✲ ❛❣❡♥t ❄♥❡①t ✲ ❛❣❡♥t✮
✿♣r❡❝♦♥❞✐t✐♦♥ ✭❛♥❞ ✭❢♦r❛❧❧ ✭❄❜❡❤ ✲ ❜❡❤❛✈✐♦✉r✮ ✭♥♦t ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❄❜❡❤✮✮✮
✭❤❛s✲t✉r♥ ❄❝✉rr❡♥t✮
✭❤❛s✲❛❝t❡❞ ❄❝✉rr❡♥t✮
✭t✉r♥✲♦r❞❡r ❄❝✉rr❡♥t ❄♥❡①t✮✮
✿❡❢❢❡❝t ✭❛♥❞ ✭♥♦t ✭❤❛s✲t✉r♥ ❄❝✉rr❡♥t✮✮
✭♥♦t ✭❤❛s✲❛❝t❡❞ ❄❝✉rr❡♥t✮✮
✭❤❛s✲t✉r♥ ❄♥❡①t✮✮✮
✭✿❛❝t✐♦♥ ❜❡❤❛✈✐♦✉r✲✐❣♥♦r❡✲s♣❛r❦
✿♣❛r❛♠❡t❡rs ✭❄♣❤♦♥❡ ✲ ♣❤♦♥❡✮
✿♣r❡❝♦♥❞✐t✐♦♥ ✭❛♥❞ ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r s♣❛r❦✮
✭♣❛r❛♠❡t❡rs✲s♣❛r❦ ❄♣❤♦♥❡✮
✭♦r ✭♦♥✲st❛t❡✲✈❛❧✉❡ ❄♣❤♦♥❡ ❢❛❧s❡✮
✭❢♦r❝❡✲♥♦♥✲♦❝❝✉rr❡♥❝❡ s♣❛r❦✮✮✮
✿❡❢❢❡❝t ✭❛♥❞ ✭♥♦t ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r s♣❛r❦✮✮
✭♥♦t ✭♣❛r❛♠❡t❡rs✲s♣❛r❦ ❄♣❤♦♥❡✮✮
✭♥♦t ✭❢♦r❝❡✲♦❝❝✉rr❡♥❝❡ s♣❛r❦✮✮
✭♥♦t ✭❢♦r❝❡✲♥♦♥✲♦❝❝✉rr❡♥❝❡ s♣❛r❦✮✮✮✮
✭✿❛❝t✐♦♥ ❜❡❤❛✈✐♦✉r✲❢✐r❡
✿♣❛r❛♠❡t❡rs ✭✮
✿♣r❡❝♦♥❞✐t✐♦♥ ✭❛♥❞ ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❢✐r❡✮
✭✐❣♥✐t✐♦♥✲s♦✉r❝❡✮
✭❢❧❛♠♠❛❜❧❡✲♣♦♦❧✮✮
✿❡❢❢❡❝t ✭❛♥❞ ✭❢✐r❡✮
✭♥♦t ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❢✐r❡✮✮✮✮
✭✿❛❝t✐♦♥ ❜❡❤❛✈✐♦✉r✲✐❣♥♦r❡✲❢✐r❡
✿♣❛r❛♠❡t❡rs ✭✮
✿♣r❡❝♦♥❞✐t✐♦♥ ✭❛♥❞ ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❢✐r❡✮
✭♦r ✭♥♦t ✭✐❣♥✐t✐♦♥✲s♦✉r❝❡✮✮
✭♥♦t ✭❢❧❛♠♠❛❜❧❡✲♣♦♦❧✮✮✮✮
✿❡❢❢❡❝t ✭❛♥❞ ✭♥♦t ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❢✐r❡✮✮
✭♥♦t ✭✐❣♥✐t✐♦♥✲s♦✉r❝❡✮✮✮✮
✭✿❛❝t✐♦♥ ❜❡❤❛✈✐♦✉r✲♦♣❡♥
✿♣❛r❛♠❡t❡rs ✭❄t ✲ t❛♥❦✮
✿♣r❡❝♦♥❞✐t✐♦♥ ✭❛♥❞ ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ♦♣❡♥✮
✭♣❛r❛♠❡t❡rs✲♦♣❡♥ ❄t✮
✭♦♣❡♥✲st❛t❡✲✈❛❧✉❡ ❄t ❢❛❧s❡✮✮
✿❡❢❢❡❝t ✭❛♥❞ ✭♦♣❡♥✲st❛t❡✲✈❛❧✉❡ ❄t tr✉❡✮
✭♥♦t ✭♦♣❡♥✲st❛t❡✲✈❛❧✉❡ ❄t ❢❛❧s❡✮✮
✭♥♦t ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ♦♣❡♥✮✮
✭♥♦t ✭♣❛r❛♠❡t❡rs✲♦♣❡♥ ❄t✮✮
242ANNEXE E. EXEMPLE “GAS STATION” E.1. CODES
✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❧❡❛❦✮
✭♣❛r❛♠❡t❡rs✲❧❡❛❦ ❄t✮✮✮
✭✿❛❝t✐♦♥ ❜❡❤❛✈✐♦✉r✲t✉r♥✲♦❢❢
✿♣❛r❛♠❡t❡rs ✭❄♣ ✲ ♣❤♦♥❡✮
✿♣r❡❝♦♥❞✐t✐♦♥ ✭❛♥❞ ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r t✉r♥✲♦❢❢✮
✭♣❛r❛♠❡t❡rs✲t✉r♥✲♦❢❢ ❄♣✮
✭♦♥✲st❛t❡✲✈❛❧✉❡ ❄♣ tr✉❡✮✮
✿❡❢❢❡❝t ✭❛♥❞ ✭♥♦t ✭♦♥✲st❛t❡✲✈❛❧✉❡ ❄♣ tr✉❡✮✮
✭♦♥✲st❛t❡✲✈❛❧✉❡ ❄♣ ❢❛❧s❡✮
✭♥♦t ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r t✉r♥✲♦❢❢✮✮
✭♥♦t ✭♣❛r❛♠❡t❡rs✲t✉r♥✲♦❢❢ ❄♣✮✮✮✮
✭✿❛❝t✐♦♥ ❜❡❤❛✈✐♦✉r✲❧❡❛❦
✿♣❛r❛♠❡t❡rs ✭❄t ✲ t❛♥❦ ❄❥ ✲ ❥♦✐♥t✮
✿♣r❡❝♦♥❞✐t✐♦♥ ✭❛♥❞ ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❧❡❛❦✮
✭♣❛r❛♠❡t❡rs✲❧❡❛❦ ❄t✮
✭❤❛s✲❥♦✐♥t ❄t ❄❥✮
✭✉s❡✲st❛t❡✲✈❛❧✉❡ ❄❥ ✉s❡❞✮
✭♦♣❡♥✲st❛t❡✲✈❛❧✉❡ ❄t tr✉❡✮
✭❢✐❧❧✲st❛t❡✲✈❛❧✉❡ ❄t ❢✉❧❧✮✮
✿❡❢❢❡❝t ✭❛♥❞ ✭❢❧❛♠♠❛❜❧❡✲♣♦♦❧✮
✭♥♦t ✭♣❛r❛♠❡t❡rs✲❧❡❛❦ ❄t✮✮
✭♥♦t ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❧❡❛❦✮✮✮✮
✭✿❛❝t✐♦♥ ❜❡❤❛✈✐♦✉r✲✐❣♥♦r❡✲❧❡❛❦
✿♣❛r❛♠❡t❡rs ✭❄t ✲ t❛♥❦ ❄❥ ✲ ❥♦✐♥t✮
✿♣r❡❝♦♥❞✐t✐♦♥ ✭❛♥❞ ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❧❡❛❦✮
✭♣❛r❛♠❡t❡rs✲❧❡❛❦ ❄t✮
✭❤❛s✲❥♦✐♥t ❄t ❄❥✮
✭♦r ✭✉s❡✲st❛t❡✲✈❛❧✉❡ ❄❥ ♦❦✮
✭♦♣❡♥✲st❛t❡✲✈❛❧✉❡ ❄t ❢❛❧s❡✮
✭❢✐❧❧✲st❛t❡✲✈❛❧✉❡ ❄t ❡♠♣t②✮✮✮
✿❡❢❢❡❝t ✭❛♥❞ ✭♥♦t ✭♣❛r❛♠❡t❡rs✲❧❡❛❦ ❄t✮✮
✭♥♦t ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❧❡❛❦✮✮✮✮
✭✿❛❝t✐♦♥ ❜❡❤❛✈✐♦✉r✲♣✉♠♣✲❣❛s
✿♣❛r❛♠❡t❡rs ✭❄t ✲ t❛♥❦ ❄♦❧❞ ✲ ❢✐❧❧✐♥❣✮
✿♣r❡❝♦♥❞✐t✐♦♥ ✭❛♥❞ ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ♣✉♠♣✮
✭♣❛r❛♠❡t❡rs✲♣✉♠♣ ❄t✮
✭♦♣❡♥✲st❛t❡✲✈❛❧✉❡ ❄t tr✉❡✮
✭❢✐❧❧✲st❛t❡✲✈❛❧✉❡ ❄t ❄♦❧❞✮✮
✿❡❢❢❡❝t ✭❛♥❞ ✭♥♦t ✭❢✐❧❧✲st❛t❡✲✈❛❧✉❡ ❄t ❄♦❧❞✮✮
✭❢✐❧❧✲st❛t❡✲✈❛❧✉❡ ❄t ❢✉❧❧✮
✭♥♦t ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ♣✉♠♣✮✮
✭♥♦t ✭♣❛r❛♠❡t❡rs✲♣✉♠♣ ❄t✮✮
✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❧❡❛❦✮
✭♣❛r❛♠❡t❡rs✲❧❡❛❦ ❄t✮✮✮
✭✿❛❝t✐♦♥ ❜❡❤❛✈✐♦✉r✲❝❧♦s❡
✿♣❛r❛♠❡t❡rs ✭❄t ✲ t❛♥❦✮
✿♣r❡❝♦♥❞✐t✐♦♥ ✭❛♥❞ ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❝❧♦s❡✮
✭♣❛r❛♠❡t❡rs✲❝❧♦s❡ ❄t✮
✭♦♣❡♥✲st❛t❡✲✈❛❧✉❡ ❄t tr✉❡✮✮
✿❡❢❢❡❝t ✭❛♥❞ ✭♥♦t ✭♦♣❡♥✲st❛t❡✲✈❛❧✉❡ ❄t tr✉❡✮✮
✭♦♣❡♥✲st❛t❡✲✈❛❧✉❡ ❄t ❢❛❧s❡✮
✭♥♦t ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r ❝❧♦s❡✮✮
✭♥♦t ✭♣❛r❛♠❡t❡rs✲❝❧♦s❡ ❄t✮✮✮✮
✭✿❛❝t✐♦♥ ❝♦♠♠✐t♠❡♥t✲❥♦✐♥t✲♦❦
✿♣❛r❛♠❡t❡rs ✭❄❥ ✲ ❥♦✐♥t✮
✿♣r❡❝♦♥❞✐t✐♦♥ ✭✉s❡✲st❛t❡✲✈❛❧✉❡ ❄❥ ✉♥❦♥♦✇♥✲✉s❡✮
243E.1. CODES ANNEXE E. EXEMPLE “GAS STATION”
✿❡❢❢❡❝t ✭❛♥❞ ✭♥♦t ✭✉s❡✲st❛t❡✲✈❛❧✉❡ ❄❥ ✉♥❦♥♦✇♥✲✉s❡✮✮
✭✉s❡✲st❛t❡✲✈❛❧✉❡ ❄❥ ♦❦✮✮✮
✭✿❛❝t✐♦♥ ❝♦♠♠✐t♠❡♥t✲❥♦✐♥t✲✉s❡❞
✿♣❛r❛♠❡t❡rs ✭❄❥ ✲ ❥♦✐♥t✮
✿♣r❡❝♦♥❞✐t✐♦♥ ✭✉s❡✲st❛t❡✲✈❛❧✉❡ ❄❥ ✉♥❦♥♦✇♥✲✉s❡✮
✿❡❢❢❡❝t ✭❛♥❞ ✭♥♦t ✭✉s❡✲st❛t❡✲✈❛❧✉❡ ❄❥ ✉♥❦♥♦✇♥✲✉s❡✮✮
✭✉s❡✲st❛t❡✲✈❛❧✉❡ ❄❥ ✉s❡❞✮✮✮
✭✿❛❝t✐♦♥ ❝♦♠♠✐t♠❡♥t✲t❛♥❦✲❡♠♣t②
✿♣❛r❛♠❡t❡rs ✭❄t ✲ t❛♥❦✮
✿♣r❡❝♦♥❞✐t✐♦♥ ✭❢✐❧❧✲st❛t❡✲✈❛❧✉❡ ❄t ✉♥❦♥♦✇♥✲❢✐❧❧✐♥❣✮
✿❡❢❢❡❝t ✭❛♥❞ ✭♥♦t ✭❢✐❧❧✲st❛t❡✲✈❛❧✉❡ ❄t ✉♥❦♥♦✇♥✲❢✐❧❧✐♥❣✮✮
✭❢✐❧❧✲st❛t❡✲✈❛❧✉❡ ❄t ❡♠♣t②✮✮✮
✭✿❛❝t✐♦♥ ❝♦♠♠✐t♠❡♥t✲t❛♥❦✲❢✉❧❧
✿♣❛r❛♠❡t❡rs ✭❄t ✲ t❛♥❦✮
✿♣r❡❝♦♥❞✐t✐♦♥ ✭❢✐❧❧✲st❛t❡✲✈❛❧✉❡ ❄t ✉♥❦♥♦✇♥✲❢✐❧❧✐♥❣✮
✿❡❢❢❡❝t ✭❛♥❞ ✭♥♦t ✭❢✐❧❧✲st❛t❡✲✈❛❧✉❡ ❄t ✉♥❦♥♦✇♥✲❢✐❧❧✐♥❣✮✮
✭❢✐❧❧✲st❛t❡✲✈❛❧✉❡ ❄t ❢✉❧❧✮✮✮
✭✿❛❝t✐♦♥ ❝♦♠♠✐t♠❡♥t✲❛❣❡♥t✲◆♦✈✐❝❡
✿♣❛r❛♠❡t❡rs ✭❄❛ ✲ ❛❣❡♥t✮
✿♣r❡❝♦♥❞✐t✐♦♥ ✭❧❡✈❡❧✲st❛t❡✲✈❛❧✉❡ ❄❛ ✉♥❦♥♦✇♥✲❧❡✈❡❧✮
✿❡❢❢❡❝t ✭❛♥❞ ✭♥♦t ✭❧❡✈❡❧✲st❛t❡✲✈❛❧✉❡ ❄❛ ✉♥❦♥♦✇♥✲❧❡✈❡❧✮✮
✭❧❡✈❡❧✲st❛t❡✲✈❛❧✉❡ ❄❛ ♥♦✈✐❝❡✮✮✮
✭✿❛❝t✐♦♥ ❝♦♠♠✐t♠❡♥t✲❛❣❡♥t✲❡①♣❡rt
✿♣❛r❛♠❡t❡rs ✭❄❛ ✲ ❛❣❡♥t✮
✿♣r❡❝♦♥❞✐t✐♦♥ ✭❧❡✈❡❧✲st❛t❡✲✈❛❧✉❡ ❄❛ ✉♥❦♥♦✇♥✲❧❡✈❡❧✮
✿❡❢❢❡❝t ✭❛♥❞ ✭♥♦t ✭❧❡✈❡❧✲st❛t❡✲✈❛❧✉❡ ❄❛ ✉♥❦♥♦✇♥✲❧❡✈❡❧✮✮
✭❧❡✈❡❧✲st❛t❡✲✈❛❧✉❡ ❄❛ ❡①♣❡rt✮✮✮
✭✿❛❝t✐♦♥ ❤❛♣♣❡♥✐♥❣✲♣❤♦♥❡❝❛❧❧
✿♣❛r❛♠❡t❡rs ✭❄♣❤♦♥❡ ✲ ♣❤♦♥❡✮
✿❡❢❢❡❝t ✭❛♥❞ ✭❛❝t✐✈❛t❡✲❜❡❤❛✈✐♦✉r s♣❛r❦✮
✭♣❛r❛♠❡t❡rs✲s♣❛r❦ ❄♣❤♦♥❡✮✮✮
✮
244ANNEXE E. EXEMPLE “GAS STATION” E.1. CODES
Problème PDDL généré par DIRECTOR - But : fin de la tâche principale
✭❞❡❢✐♥❡ ✭♣r♦❜❧❡♠ ♣r♦❜❧❡♠✶✮ ✭✿❞♦♠❛✐♥ ❣❛sst❛t✐♦♥✮
✭✿♦❜❥❡❝ts
♠❛r❝❡❧ ✲ ❛❣❡♥t
❥♦✐♥t✶ ✲ ❥♦✐♥t
t❛♥❦✶ ✲ t❛♥❦
❝❛r✶ ✲ ❝❛r
♣❤♦♥❡✶ ✲ ♣❤♦♥❡
✮
✭✿✐♥✐t
✭♦♥✲st❛t❡✲✈❛❧✉❡ ♣❤♦♥❡✶ tr✉❡✮
✭♦♣❡♥✲st❛t❡✲✈❛❧✉❡ t❛♥❦✶ ❢❛❧s❡✮
✭❤❛s✲t❛♥❦ ❝❛r✶ t❛♥❦✶✮
✭✉s❡✲st❛t❡✲✈❛❧✉❡ ❥♦✐♥t✶ ✉♥❦♥♦✇♥✲✉s❡✮
✭❧❡✈❡❧✲st❛t❡✲✈❛❧✉❡ ♠❛r❝❡❧ ✉♥❦♥♦✇♥✲❧❡✈❡❧✮
✭❤❛s✲❥♦✐♥t t❛♥❦✶ ❥♦✐♥t✶✮
✭❢✐❧❧✲st❛t❡✲✈❛❧✉❡ t❛♥❦✶ ✉♥❦♥♦✇♥✲❢✐❧❧✐♥❣✮
✭t✉r♥✲♦r❞❡r ♠❛r❝❡❧ ♠❛r❝❡❧✮
✭❤❛s✲t✉r♥ ♠❛r❝❡❧✮
✮
✭✿❣♦❛❧ ✭♦r ✭❛♥❞ ✭t❛s❦✲st❛t❡ ❘❡❢✐❧❧✲●❛s ♠❛r❝❡❧ ❞♦♥❡✮✮
✮
✮
✮
245E.1. CODES ANNEXE E. EXEMPLE “GAS STATION”
Problème PDDL généré par DIRECTOR - But : feu
✭❞❡❢✐♥❡ ✭♣r♦❜❧❡♠ ♣r♦❜❧❡♠✷✮ ✭✿❞♦♠❛✐♥ ❣❛sst❛t✐♦♥✮
✭✿♦❜❥❡❝ts
♠❛r❝❡❧ ✲ ❛❣❡♥t
❥♦✐♥t✶ ✲ ❥♦✐♥t
t❛♥❦✶ ✲ t❛♥❦
❝❛r✶ ✲ ❝❛r
♣❤♦♥❡✶ ✲ ♣❤♦♥❡
✮
✭✿✐♥✐t
✭♦♥✲st❛t❡✲✈❛❧✉❡ ♣❤♦♥❡✶ tr✉❡✮
✭♦♣❡♥✲st❛t❡✲✈❛❧✉❡ t❛♥❦✶ ❢❛❧s❡✮
✭❤❛s✲t❛♥❦ ❝❛r✶ t❛♥❦✶✮
✭✉s❡✲st❛t❡✲✈❛❧✉❡ ❥♦✐♥t✶ ✉♥❦♥♦✇♥✲✉s❡✮
✭❧❡✈❡❧✲st❛t❡✲✈❛❧✉❡ ♠❛r❝❡❧ ✉♥❦♥♦✇♥✲❧❡✈❡❧✮
✭❤❛s✲❥♦✐♥t t❛♥❦✶ ❥♦✐♥t✶✮
✭❢✐❧❧✲st❛t❡✲✈❛❧✉❡ t❛♥❦✶ ✉♥❦♥♦✇♥✲❢✐❧❧✐♥❣✮
✭t✉r♥✲♦r❞❡r ♠❛r❝❡❧ ♠❛r❝❡❧✮
✭❤❛s✲t✉r♥ ♠❛r❝❡❧✮
✮
✭✿❣♦❛❧ ✭♦r ✭❛♥❞ ✭❢✐r❡✮✮
✮
✮
✮
246ANNEXE E. EXEMPLE “GAS STATION” E.2. SCÉNARIOS GÉNÉRÉS
E.2 Scénarios générés
Fire :
(fire)
occurrence: spark-true
behaviour: spark phone1
happening: phonecall phone1
commitment: agent-novice marcel
action: ignore-turn-off-phone marcel phone1 tank1 car1
commitment: joint-used joint1
behaviour: leak tank1 joint1
behaviour: ignore-fire
commitment: tank-empty tank1
action: open-tank marcel tank1 car1
behaviour: open tank1
behaviour: ignore-leak tank1 joint1
action: pump-gas marcel tank1 car1
occurrence: spark-true
behaviour: spark phone1
behaviour: pump-gas tank1 empty happening: phonecall phone1
behaviour: fire
FIGURE E.1 – Scénario généré par FF
247E.2. SCÉNARIOS GÉNÉRÉS ANNEXE E. EXEMPLE “GAS STATION”
Fire :
(fire)
occurrence: spark-true
behaviour: spark phone1
commitment: tank-empty tank1
action: ignore-turn-off-phone marcel phone1 tank1 car1
commitment: agent-novice marcel
action: open-tank marcel tank1 car1
behaviour: open tank1
behaviour: ignore-leak tank1 joint1
action: pump-gas marcel tank1 car1
happening: phonecall phone1
behaviour: fire
behaviour: pump-gas tank1 empty
behaviour: leak tank1 joint1
commitment: joint-used joint1
FIGURE E.2 – Scénario généré par Fast Downward (A* blind)
248ANNEXE E. EXEMPLE “GAS STATION” E.2. SCÉNARIOS GÉNÉRÉS
Fire :
(fire)
commitment: joint-used joint1
action: ignore-turn-off-phone marcel phone1 tank1 car1
commitment: agent-novice marcel commitment: tank-empty tank1 occurrence: spark-true
action: open-tank marcel tank1 car1
behaviour: open tank1
behaviour: ignore-leak tank1 joint1
action: pump-gas marcel tank1 car1
behaviour: pump-gas tank1 empty behaviour: spark phone1
happening: phonecall phone1
behaviour: leak tank1 joint1
behaviour: fire
FIGURE E.3 – Scénario généré par VHPOP
249E.2. SCÉNARIOS GÉNÉRÉS ANNEXE E. EXEMPLE “GAS STATION”
250Table des figures
1.1 Modèle SELDON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.2 Légende des schémas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.3 Moteur DIRECTOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.4 Exemple de scénario prédictif construit par le modèle DIRECTOR . . . . . . . . . . . . . 28
1.5 Extrait d’un modèle de causalité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.6 Exemple de modèle représenté en ACTIVITY-DL . . . . . . . . . . . . . . . . . . . . . . . 30
1.7 Méta-modèle ontologique de DOMAIN-DL . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.8 La plateforme HUMANS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
1.9 Capture d’écran du démonstrateur ARAKIS . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
1.10 Capture d’écran du démonstrateur SimADVF. . . . . . . . . . . . . . . . . . . . . . . . . . 34
1.11 Capture d’écran du démonstrateur NIKITA. . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.1 Des graphes d’histoires à la génération dynamique [Mateas, 2002] . . . . . . . . . . . . . 42
2.2 Le dispositif CS WAVE [Da Dalto, 2004] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.3 Capture d’écran de VRaptor [Shawver, 1997] . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.4 Influence de l’utilisateur sur l’histoire dans EmoEmma [Pizzi and Cavazza, 2007] . . . . 44
2.5 Le menu de sélection d’action de EMSAVE [Vidani and Chittaro, 2009] . . . . . . . . . . 46
2.6 L’environnement GVT [Gerbaud and Arnaldi, 2009] . . . . . . . . . . . . . . . . . . . . . . 46
2.7 Arbre de StoryBits [Silva et al., 2003] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.8 Capture d’écran de ICT Leaders [Gordon et al., 2004] . . . . . . . . . . . . . . . . . . . . . 48
2.9 Graphe de scénario de ICT Leaders [Iuppa et al., 2004] . . . . . . . . . . . . . . . . . . . . 48
2.10 Capture d’écran de Façade [Mateas, 2002] . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.11 Un plan généré par le système Mimesis [Riedl et al., 2003] . . . . . . . . . . . . . . . . . . 51
2.12 Extrait du StoryNet de MRE [Hill et al., 2001] . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.13 Capture d’écran de IN-TALE [Riedl et al., 2008b] . . . . . . . . . . . . . . . . . . . . . . . . 54
2.14 Espace de recherche de plans résultant de l’ISR [Riedl, 2004] . . . . . . . . . . . . . . . . 56
2.15 Un framing operator illustrant le principe de late commitment [Swartjes, 2010] . . . . . 57
2.16 Un plan généré par le moteur de planification sociale de [Chang and Soo, 2008] . . . . 59
3.1 Comportements liés à un Smart Object de type porte [Kallmann and Thalmann, 1999b] 67
3.2 Machine à état représentant le comportement d’une porte [Badawi and Donikian, 2004] 67
3.3 Relation STORM relative à la visserie [Mollet, 2005] . . . . . . . . . . . . . . . . . . . . . . 68
3.4 Comportement associé à la relation de visserie [Mollet, 2005] . . . . . . . . . . . . . . . . 68
3.5 Modèle d’un porte avions [Chevaillier et al., 2009] . . . . . . . . . . . . . . . . . . . . . . . 69
3.6 Comportement d’un déflecteur [Chevaillier et al., 2009] . . . . . . . . . . . . . . . . . . . 70
3.7 Extrait de l’ontologie COLOMBO [Edward et al., 2010] . . . . . . . . . . . . . . . . . . . . 70
3.8 Règle d’exécution d’une action en MOSS [Edward, 2011] . . . . . . . . . . . . . . . . . . . 71
3.9 Règle de transition d’un object en MOSS [Edward, 2011] . . . . . . . . . . . . . . . . . . . 71
3.10 Représentation d’une action et d’un objet dans [Lugrin and Cavazza, 2006] . . . . . . . . 72
3.11 Exemples d’opérateurs dans [Riedl and Young, 2010] . . . . . . . . . . . . . . . . . . . . . 73
3.12 Opérateurs STRIPS [Charles et al., 2003] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
251TABLE DES FIGURES TABLE DES FIGURES
3.13 Opérateurs PDDL [Porteous et al., 2013] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
3.14 Opérateur de planification émotionnel dans EmoEmma [Pizzi and Cavazza, 2007] . . . 74
3.15 Règle de sélection de l’action d’incitation dans IDtension [Szilas, 2003] . . . . . . . . . . 75
3.16 Exemple de réseau de tâches hiérarchique [Cavazza et al., 2002] . . . . . . . . . . . . . . 76
3.17 Comportement de déplacement modélisé en HPTS++ [Lamarche and Donikian, 2002] . 77
3.18 Exemple de modèle d’activité HAVE [Marion, 2010] . . . . . . . . . . . . . . . . . . . . . . 78
3.19 Extrait de procédure en CTT contenant un choix [Vidani and Chittaro, 2009] . . . . . . . 78
3.20 Extrait de modèle d’activité HAWAI-DL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.21 Comportements synchronisés représentés en ABL [Mateas, 2002] . . . . . . . . . . . . . 80
3.22 Situations initiale et finale sous forme de prédicats [Riedl and Young, 2010] . . . . . . . 82
3.23 Opérateurs et exemples de contraintes utilisées dans [Porteous and Cavazza, 2009] . . . 83
3.24 Courbe canonique de tension dramatique [Delmas, 2009] . . . . . . . . . . . . . . . . . . 85
3.25 Arcs de tension dramatique et points clés associés [Porteous et al., 2011] . . . . . . . . . 85
3.26 Portion de graphe QUEST présentée dans [Riedl and Young, 2005] . . . . . . . . . . . . . 87
3.27 Exemple de Fabula [Swartjes, 2010] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
3.28 Exemple de scénario pédagogique POSEIDON [Marion, 2010] . . . . . . . . . . . . . . . 90
3.29 Exemple de porte OU (à gauche) et de porte ET (à droite) [Vesely et al., 1981] . . . . . . . 91
3.30 Exemple d’arbre d’événements [Rausand and Høyland, 2004] . . . . . . . . . . . . . . . . 92
3.31 Exemple de nœud papillon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
3.32 Typologie des barrières de sécurité [Miche et al., 2009] . . . . . . . . . . . . . . . . . . . . 93
3.33 Extrait du modèle de risques de [Amokrane, 2010] . . . . . . . . . . . . . . . . . . . . . . . 94
3.34 Exemple de scénario représenté à l’aide d’un automate [Fitzgerald et al., 2009] . . . . . 95
3.35 Exemple de tâche modélisée avec YALTA [Burkhardt et al., 2009] . . . . . . . . . . . . . . 97
3.36 Extrait d’un plan POCL [Riedl and Young, 2010] . . . . . . . . . . . . . . . . . . . . . . . . 98
3.37 Points clés partiellement ordonnés [Magerko, 2005] . . . . . . . . . . . . . . . . . . . . . . 99
4.1 Modèle SELDON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
4.2 Composantes principales du modèle SELDON . . . . . . . . . . . . . . . . . . . . . . . . . 108
5.1 Méta-modèle ontologique de DOMAIN-DL . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
5.2 Exemple de composants en DOMAIN-DL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
5.3 Exemple de comportement en DOMAIN-DL . . . . . . . . . . . . . . . . . . . . . . . . . . 117
5.4 Exemple d’événement en DOMAIN-DL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
5.5 Représentation d’un modèle en ACTIVITY-DL . . . . . . . . . . . . . . . . . . . . . . . . . 122
5.6 Méta-modèle d’ACTIVITY-DL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
6.1 Exemple d’état “commitable” dans le modèle de domaine . . . . . . . . . . . . . . . . . . 136
6.2 Diagramme de séquence concernant les opérations de “commitment” . . . . . . . . . . 137
6.3 Exemple de scénario représenté sous forme de plan partiellement ordonné . . . . . . . 139
6.4 Exemple de scénario planifié à partir des actions . . . . . . . . . . . . . . . . . . . . . . . 143
6.5 Exemple de plan contenant des opérateurs abstraits . . . . . . . . . . . . . . . . . . . . . 145
6.6 Exemple de plan 6.5 une fois les tâches abstraites retirées . . . . . . . . . . . . . . . . . . 146
6.7 Exemples de plans avec tâches séquentielles non-ordonnées . . . . . . . . . . . . . . . . 148
6.8 Exemple de plan généré avec deux agents . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
6.9 Exemples de plans générés à partir d’opérateurs de comportement ignorables . . . . . . 153
6.10 Processus de génération, suivi et exécution du scénario par DIRECTOR . . . . . . . . . . 155
6.11 Plan généré contenant des opérateurs abstraits . . . . . . . . . . . . . . . . . . . . . . . . 156
6.12 Plan 6.11 une fois les opérateurs abstraits supprimés . . . . . . . . . . . . . . . . . . . . . 157
6.13 Etat d’avancement du scénario 6.3 avant et après la réception d’un message . . . . . . . 160
7.1 Extrait d’un nœud papillon présentant les causes d’un débordement de citerne. . . . . . 165
7.2 Extrait d’un nœud papillon présentant les conséquences d’un débordement de citerne. 165
252TABLE DES FIGURES TABLE DES FIGURES
7.3 Extrait d’un modèle de causalité coupé en deux au niveau de l’événement ▲❡❛❦ . . . . . 166
7.4 Méta-modèle de CAUSALITY-DL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
7.5 Exemple de trame scénaristique générée par DIRECTOR . . . . . . . . . . . . . . . . . . . 171
7.6 Processus de génération des scénarios en trois phases . . . . . . . . . . . . . . . . . . . . 177
7.7 Exemple de trame scénaristique instanciée . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
7.8 Exemple de scénario généré à partir d’une trame scénaristique . . . . . . . . . . . . . . . 180
8.1 Diagramme UML de l’architecture de DIRECTOR . . . . . . . . . . . . . . . . . . . . . . . 189
8.2 Capture d’écran de l’interface utilisateur de DIRECTOR . . . . . . . . . . . . . . . . . . . 190
8.3 Etat d’implémentation des modules de la plateforme HUMANS . . . . . . . . . . . . . . 191
9.1 Scénarios générés dans la configuration G
F
1
avec les trois moteurs de planification . . . 197
B.1 La plateforme HUMANS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
B.2 Interface utilisateur de WORLD MANAGER. . . . . . . . . . . . . . . . . . . . . . . . . . . 227
B.3 Interface utilisateur de REPLICANTS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
B.4 Interface utilisateur de MONITOR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
C.1 Diagramme UML des graphes utilisés dans DIRECTOR . . . . . . . . . . . . . . . . . . . . 231
C.2 Diagramme UML des concepts PDDL utilisés dans DIRECTOR . . . . . . . . . . . . . . . 232
E.1 Scénario généré par FF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
E.2 Scénario généré par Fast Downward (A* blind) . . . . . . . . . . . . . . . . . . . . . . . . . 248
E.3 Scénario généré par VHPOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
253TABLE DES FIGURES TABLE DES FIGURES
254Liste des tableaux
2.1 Tableau récapitulatif des différentes approches de scénarisation . . . . . . . . . . . . . . 62
5.1 Exemple de règle de contrainte liant les valeurs des attributs d’un même état . . . . . . 116
5.2 Règle gérant la dynamique du comportement ▲♦❝❦❇❡❤❛✈✐♦✉r . . . . . . . . . . . . . . . 118
5.3 Règle permettant de détecter le début de l’événement ❚❛♥❦❖✈❡r❢❧♦✇ . . . . . . . . . . . 119
5.4 Règle permettant de détecter la fin de l’événement ❚❛♥❦❖✈❡r❢❧♦✇ . . . . . . . . . . . . . 119
5.5 Règle gérant la dynamique du comportement ❉♦♠❡▲❡❛❦❇❡❤❛✈✐♦✉r . . . . . . . . . . . . 120
5.6 Exemple de tâche contenant une opération . . . . . . . . . . . . . . . . . . . . . . . . . . 123
5.7 Relations temporelles d’Allen [Allen, 1983] . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
5.8 Constructeurs définis dans ACTIVITY-DL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
5.9 Exemple d’assertion contenant des primitives . . . . . . . . . . . . . . . . . . . . . . . . . 125
5.10 Préconditions définies dans ACTIVITY-DL . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
5.11 Conditions d’arrêt définies dans ACTIVITY-DL . . . . . . . . . . . . . . . . . . . . . . . . . 127
5.12 Exemple de tâche partageant un contexte avec ses sous-tâches . . . . . . . . . . . . . . . 128
5.13 Exemple de tâche utilisant des contraintes . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
5.14 Exemple de tâche contenant des variables anonymes . . . . . . . . . . . . . . . . . . . . . 129
5.15 Marqueurs prédéfinis dans ACTIVITY-DL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
6.1 Règle liée au déclenchement de l’événement exogène P❤♦♥❡❈❛❧❧ . . . . . . . . . . . . . 135
6.2 Exemple de règle d’initialisation de la propriété ❈♦♠♠✐t❛❜❧❡ d’un état . . . . . . . . . . 137
6.3 Règle de déclenchement probabiliste du comportement ❙♣❧❛tt❡r✐♥❣❇❡❤❛✈✐♦✉r . . . 138
6.4 Opérateur d’action correspondant à la tâche ❖♣❡♥❱❛❧✈❡ . . . . . . . . . . . . . . . . . . . 141
6.5 Opérateur de comportement correspondant à l’ouverture d’un objet . . . . . . . . . . . 141
6.6 Opérateur de planification correspondant au happening P❤♦♥❡❈❛❧❧ . . . . . . . . . . . 142
6.7 Opérateur de planification raffinant la valeur de l’état de cassure d’un ressort . . . . . . 142
6.8 Opérateur de planification contraignant l’occurrence d’un comportement . . . . . . . . 142
6.9 Opérateur abstrait correspondant à une tâche mère avec un constructeur SEQ-ORD . . 146
6.10 Opérateur abstrait correspondant à une fin de tâche . . . . . . . . . . . . . . . . . . . . . 147
6.11 Opérateur correspondant à une sous-tâche non ordonnée avec condition favorable . . 147
6.12 Opérateur correspondant à une action réalisant une condition nomologique . . . . . . 149
6.13 Opérateur abstrait correspondant à une condition nomologique déjà réalisée . . . . . . 149
6.14 Opérateur abstrait correspondant à la fin d’une tâche mère . . . . . . . . . . . . . . . . . 150
6.15 Opérateur abstrait gérant le changement de tour . . . . . . . . . . . . . . . . . . . . . . . 151
6.16 Opérateur correspondant au non-déclenchement d’une fuite . . . . . . . . . . . . . . . . 154
6.17 Opérateur correspondant au déclenchement du comportement probabiliste ❙♣❛r❦ . . 154
6.18 Opérateur correspondant au non-déclenchement du comportement probabiliste ❙♣❛r❦ 154
7.1 Correspondance entre objets contenue au niveau d’un lien de causalité . . . . . . . . . . 168
7.2 Exemple de point clé correspondant à l’événement endogène duratif ❚❛♥❦ ❖✈❡r❢❧♦✇. . 171
7.3 Niveaux de complexité d’un événement ou d’une trame scénaristique . . . . . . . . . . . 173
7.4 Niveaux de gravité d’un événement ou d’une trame scénaristique . . . . . . . . . . . . . 175
7.5 Niveaux de fréquence d’un événement ou de la levée d’une barrière . . . . . . . . . . . . 176
255LISTE DES TABLEAUX LISTE DES TABLEAUX
8.1 Tableau comparatif de différents moteurs de planification . . . . . . . . . . . . . . . . . . 187
9.1 Tableau récapitulatif des domaines ayant été utilisés pour les évaluations . . . . . . . . 195
9.2 Temps de génération par condition et par moteur sans sélection de trame scénaristique 199
9.3 Temps de génération par condition et par moteur pour la complétion d’une trame . . . 199
256Publications
[1] C. Barot, D. Lourdeaux, J.-M. Burkhardt, K. Amokrane, and D. Lenne. V3S : A Virtual Environment
for Risk-Management Training Based on Human-Activity Models. Presence : Teleoperators and
Virtual Environments, 22(1) :1–19, 2013.
[2] C. Barot, D. Lourdeaux, and D. Lenne. Using planning to predict and influence autonomous
agents behaviour in a virtual environment for training. In Proceedings of the 12th IEEE International
Conference on Cognitive Informatics & Cognitive Computing (ICCI*CC 2013), pages 274–
281, New York, USA, 2013.
[3] C. Barot, D. Lourdeaux, and D. Lenne. Dynamic scenario adaptation balancing control, coherence
and emergence. In Proceedings of ICAART’13 : International Conference on Agents and Artificial
Intelligence, volume 2, pages 232–237, Barcelona, Spain, 2013.
[4] V. Lanquepin, D. Lourdeaux, C. Barot, K. Carpentier, M. Lhommet, and K. Amokrane. HUMANS :
a HUman Models based Artificial eNvironments Software platform. In Proceedings of the Virtual
Reality International Conference (VRIC 2013), Laval, France, 2013.
[5] C. Barot, K. Carpentier, M. Collet, A. Cuella-Martin, V. Lanquepin, M. Muller, E. Pasquier, L. Picavet,
A. Van Ceulen, and K. Wagrez. The Wonderland Builder : using storytelling to guide dreamlike
interaction. In Proceedings of the 2013 IEEE Symposium on 3D User Interfaces, Orlando, USA,
2013.
[6] C. Barot, J.-M. Burkhardt, D. Lourdeaux, and D. Lenne. V3S, a Virtual Environment for Risk Management
Training. In Proceedings of JVRC11 : Joint Virtual Reality Conference of EGVE - EuroVR,
pages 95–102, Nottingham, United Kingdom, 2011. Best Paper Award.
[7] C. Barot, D. Lourdeaux, D. Lenne, and J.-M. Burkhardt. V3s, un environnement virtuel pour la formation
à la maîtrise des risques. In EIAH’2011, Atelier IHM avancées pour l’apprentissage, Mons,
Belgium, 2011.
257258Bibliographie
[Abedmouleh, 2012] Abedmouleh, A. (2012). Formalisation du langage de conception pédagogique
implicite d’un LMS : motivations et processus. In Quatrièmes Rencontres Jeunes Chercheurs en
EIAH, Amiens.
[Allen, 1983] Allen, J. F. (1983). Maintaining knowledge about temporal intervals. Commun. ACM,
26(11) :832–843.
[Amokrane, 2010] Amokrane, K. (2010). Suivi de l’apprenant en environnement virtuel pour la formation
à la prévention des risques sur des sites SEVESO. PhD thesis, Université de Technologie de
Compiègne.
[Amokrane et al., 2008] Amokrane, K., Lourdeaux, D., and Burkhardt, J. M. (2008). HERA : learner
tracking in a virtual environment. The International Journal of Virtual Reality, 7(3) :23–30.
[Anderson et al., 1998] Anderson, C. R., Smith, D. E., and Weld, D. S. (1998). Conditional effects in
graphplan. In Proceedings of AIPS ’98.
[Aylett, 1999] Aylett, R. (1999). Narrative in virtual environments-towards emergent narrative. In
Working notes of the Narrative Intelligence Symposium.
[Aylett et al., 2006] Aylett, R., Figueiredo, R., Louchart, S., Dias, J., and Paiva, A. (2006). Making it up
as you go along-improvising stories for pedagogical purposes. In Intelligent Virtual Agents, page
304–315.
[Aylett et al., 2011] Aylett, R., Louchart, S., and Weallans, A. (2011). Research in interactive drama
environments, role-play and story-telling. Interactive Storytelling, page 1–12.
[Bacchus and Kabanza, 1998] Bacchus, F. and Kabanza, F. (1998). Planning for temporally extended
goals. Annals of Mathematics and Artificial Intelligence, 22(1-2) :5–27.
[Badawi and Donikian, 2004] Badawi, M. and Donikian, S. (2004). Autonomous agents interacting
with their virtual environments through synoptic objects. In Proceedings of CASA 2004, pages 179–
187.
[Balas et al., 2008] Balas, D., Brom, C., Abonyi, A., and Gemrot, J. (2008). Hierarchical petri nets for
story plots featuring virtual humans. Artificial Intelligence and Interactive Digital Entertainment
Conference.
[Barot et al., 2013] Barot, C., Lourdeaux, D., Burkhardt, J.-M., Amokrane, K., and Lenne, D. (2013).
V3S : a virtual environment for risk management training based on human-activity models. PRESENCE
: Teleoperators and Virtual Environments.
[Barthès and Ramos, 2002] Barthès, J.-P. A. and Ramos, M. P. (2002). Agents assistants personnels
dans les systèmes multi-agents mixtes - réalisation sur la plate-forme OMAS. Technique et Science
Informatiques, 21 :473–498.
[Bates, 1992] Bates, J. (1992). The nature of character in interactive worlds and the oz project. Technical
report.
[Baudouin, 2007] Baudouin, C. (2007). Un environnement virtuel d’Apprentissage humain pour les
travaux pratiques : la paillasse virtuelle. In Actes du séminaire annuel du Laboratoire d’Informatique
des Systèmes Complexes.
259BIBLIOGRAPHIE BIBLIOGRAPHIE
[Bechhofer et al., 2004] Bechhofer, S., Harmelen, F. v., Hendler, J., Horrocks, I., McGuinness, D. L.,
Patel-Schneider, P. F., and Stein, L. A. (2004). OWL web ontology language reference. Technical
report, W3C.
[Belmonte, 2008] Belmonte, F. (2008). Impact des postes centraux de supervision de trafic ferroviaire
sur la sécurité. PhD thesis, PhD Thesis, Université de Technologie de Compiègne.
[Bernuchon et al., 2006] Bernuchon, E., Salvi, O., and Debray, B. (2006). Oméga 7 - méthodes d’analyse
des risques générés par une installation industrielle. Technical report, INERIS.
[Blum and Furst, 1997] Blum, A. L. and Furst, M. L. (1997). Fast planning through planning graph
analysis. Artificial intelligence, 90(1) :281–300.
[Blumberg and Galyean, 1997] Blumberg, B. and Galyean, T. (1997). Multi-level control for animated
autonomous agents : Do the right thing... oh, not that... In Trappl, R. and Petta, P., editors, Creating
Personalities for Synthetic Actors, number 1195 in Lecture Notes in Computer Science, pages 74–82.
Springer Berlin Heidelberg.
[Bonet and Geffner, 2001] Bonet, B. and Geffner, H. (2001). Planning as heuristic search. Artificial
Intelligence, 129 :5–33. ACM ID : 380332.
[Bosse and Mogles, 2013] Bosse, T. and Mogles, N. M. (2013). Studying aviation incidents by agentbased
simulation and analysis. In Proceedings of the Fifth International Conference on Agents and
Artificial Intelligence.
[Bourdot et al., 2006] Bourdot, P., Jessel, J.-P., and Thouvenin, I. (2006). Industries manufacturières.
In Le traité de la réalité virtuelle : Volume 4, Les applications de la réalité virtuelle. Les Presses-Mines
Paris.
[Burkhardt et al., 2009] Burkhardt, J., Lourdeaux, D., Couix, S., and Rouillé, M. (2009). La modélisation
de l’activité humaine finalisée. In Le traité de la réalité virtuelle : Volume 5, L’humain virtuel.
Les Presses-Mines Paris.
[Burkhardt, 2010] Burkhardt, J.-M. (2010). Conception, utilisation et formation : trois perspectives sur
l’apprentissage en ergonomie des technologies émergentes. Habilitation à diriger des recherches.
[Burkhardt et al., 2003] Burkhardt, J. M., Bardy, B., and Lourdeaux, D. (2003). Immersion, réalisme
et présence dans la conception et l’évaluation des environnements virtuels. Psychologie française,
48 :35–42.
[Burkhardt et al., 2005] Burkhardt, J.-m., Lourdeaux, D., and Lequatre, F. (2005). Environnements
virtuels pour l’apprentissage : de l’image d’epinal à la réalité des usages et des configurations sociotechniques.
In Proceedings of the 17th international conference on Francophone sur l’Interaction
Homme-Machine, IHM 2005, page 163–170, New York, NY, USA. ACM.
[Burkhardt et al., 2006] Burkhardt, J.-M., Lourdeaux, D., and Mellet-d’Huart, D. (2006). La réalité
virtuelle pour l’apprentissage humain. In Le traité de la réalité virtuelle : Volume 4, Les applications
de la réalité virtuelle. Les Presses-Mines Paris.
[Buttussi et al., 2013] Buttussi, F., Pellis, T., Cabas Vidani, A., Pausler, D., Carchietti, E., and Chittaro, L.
(2013). Evaluation of a 3D serious game for advanced life support retraining. International Journal
of Medical Informatics, 82(9) :798–809.
[Camus, 2010] Camus, F. (2010). Conception d’environnements virtuels dédiés à la maîtrise des
risques : l’approche MELISSA. PhD thesis, Université de Technologie de Compiègne.
[Carpentier et al., 2013] Carpentier, K., Lourdeaux, D., and Mouttapa-Thouvenin, I. (2013). Dynamic
selection of learning situations in virtual environment. In Proceedings of the 5th International Conference
on Agents and Artificial Intelligence (ICAART 2013), Barcelona, Spain.
[Castagna et al., 2001] Castagna, P., Mebarki, N., and Gauduel, R. (2001). Apport de la simulation
comme outil d’aide au pilotage des systemes de production-exemples d’application. In Proceedings
of the 3e Conférence Francophone de MOdélisation et SIMulation «Conception, Analyse et Gestion
des Systèmes Industriels» MOSIM’01.
260BIBLIOGRAPHIE BIBLIOGRAPHIE
[Cavazza et al., 2002] Cavazza, M., Charles, F., and Mead, S. J. (2002). Character-based interactive
storytelling. IEEE Intelligent Systems, 17(4) :17—24.
[Champagnat et al., 2005] Champagnat, R., Prigent, A., and Estraillier, P. (2005). Scenario building
based on formal methods and adaptative execution. ISAGA, Atlanta (USA).
[Chang and Soo, 2008] Chang, H.-M. and Soo, V.-W. (2008). Planning to influence other characters in
agent-based narratives. In Integrating Technologies for Interactive Stories Workshop, International
Conference on Intelligent Technologies for Interactive Entertainment, pages 12—17.
[Charles et al., 2003] Charles, F., Lozano, M., Mead, S. J., Bisquerra, A. F., and Cavazza, M. (2003). Planning
formalisms and authoring in interactive storytelling. In Proceedings of TIDSE, volume 3.
[Charles et al., 2002] Charles, F., Mead, S. J., and Cavazza, M. (2002). Generating dynamic storylines
through characters’ interactions. Int. J. Intell. Games & Simulation, 1(1) :5–11.
[Charlet, 2002] Charlet, J. (2002). L’ingénierie des connaissances : développements, résultats et perspectives
pour la gestion des connaissances médicales. PhD thesis, Université Pierre et Marie Curie
- Paris VI.
[Cheong, 2007] Cheong, Y. (2007). A Computational Model of Narrative Generation for Suspense. PhD
thesis, North Carolina State University.
[Chevaillier et al., 2009] Chevaillier, P., Querrec, R., and Septseault, C. (2009). VEHA, un métamodèle
d’environnement virtuel informé et structuré. Techniques et sciences informatiques, 28(6-7) :715–
740.
[Ciarlini et al., 2005] Ciarlini, A. E. M., Pozzer, C. T., Furtado, A. L., and Feijó, B. (2005). A logicbased
tool for interactive generation and dramatization of stories. In Proceedings of the 2005 ACM
SIGCHI International Conference on Advances in computer entertainment technology, ACE ’05, page
133–140, New York, NY, USA. ACM.
[Costa and MacCrae, 1992] Costa, P. T. and MacCrae, R. R. (1992). Revised NEO Personality Inventory
(NEO PI-R) and NEO Five-Factor Inventory (NEO FFI) : Professional Manual. Psychological Assessment
Resources.
[Couix and Burkhardt, 2011] Couix, S. and Burkhardt, J. (2011). Task descriptions using academic
oriented modelling languages : a survey of actual practices across the SIGCHI community. HumanComputer
Interaction–INTERACT 2011, page 555–570.
[Courty et al., 2003] Courty, N., Lamarche, F., Donikian, S., and Marchand, E. (2003). A cinematography
system for virtual storytelling. In Int. Conf. on Virtual Storytelling ICVS’03, Toulouse, France.
Balet, O. and Subsol, G. and Torguet, P.
[Crison et al., 2005] Crison, F., Lecuyer, A., d’Huart, D. M., Burkhardt, J.-M., Michel, G., and Dautin,
J.-L. (2005). Virtual technical trainer : Learning how to use milling machines with multi-sensory
feedback in virtual reality. In Proceedings of the 2005 IEEE Conference 2005 on Virtual Reality, pages
139–146, 322. IEEE Computer Society.
[Da Dalto, 2004] Da Dalto, L. (2004). CS WAVE : la réalité virtuelle pour la formation au soudage.
Techniques de l’ingénieur. Génie mécanique, BT1(IN27).
[Damiano and Pizzo, 2008] Damiano, R. and Pizzo, A. (2008). Emotions in drama characters and virtual
agents. In AAAI Spring Symposium : Emotion, Personality, and Social Behavior, pages 30—37.
[De Vries and Baille, 2006] De Vries, E. and Baille, J. (2006). Apprentissage : référents théoriques pour
les EIAH. In Environnements Informatiques pour l’Apprentissage Humain.
[Dede et al., 1996] Dede, C., Salzman, M. C., and Loftin, R. B. (1996). ScienceSpace : virtual realities
for learning complex and abstract scientific concepts. In Proceedings of IEEE VRAIS, page 246–252.
[Delmas, 2009] Delmas, G. (2009). Pilotage de récits interactifs et mise en oeuvre de formes narratives
dans le contexte du jeu vidéo. PhD thesis, Université de La Rochelle.
261BIBLIOGRAPHIE BIBLIOGRAPHIE
[Deust et al., 2008] Deust, C., Bolvin, C., Kordek, M.-A., and Chaumette, S. (2008). Programme EATDRA
71-opération c2.1 : Estimation des aspects probabilistes. fiches pratiques : Intégration de la
probabilité dans les études de dangers. Technical report, INERIS, Verneuil-en-Halatte (Oise).
[Devillers, 2001] Devillers, F. (2001). Langage de scénario pour des acteurs semi-autonomes. PhD
thesis, Université de Rennes 1.
[Donikian, 2001] Donikian, S. (2001). HPTS : a behaviour modelling language for autonomous
agents. In Proceedings of the fifth international conference on Autonomous agents, AGENTS ’01,
page 401–408, New York, NY, USA. ACM.
[Donikian, 2004] Donikian, S. (2004). Modélisation, contrôle et animation d’agents virtuels autonomes
évoluant dans des environnements informés et structurés. Habilitation à diriger des
recherches.
[Edelkamp and Hoffmann, 2004] Edelkamp, S. and Hoffmann, J. (2004). PDDL2.2 : the language for
the classical part of the 4th international planning competition. Technical Report Technical Report
No. 195, Institut für Informatik.
[Edward, 2011] Edward, L. (2011). Modélisation décisionnelle de personnages virtuels autonomes
évoluant dans un environnement pour la présentation des risques sur les sites SEVESO. PhD thesis,
Université de Technologie de Compiègne.
[Edward et al., 2010] Edward, L., Lourdeaux, D., and Barthès, J.-P. (2010). Knowledge representation :
an ontology for managing a virtual environment. In ICAART 2010, Valencia, Spain.
[Edward et al., 2008] Edward, L., Lourdeaux, D., Lenne, D., Barthes, J. P., and Burkhardt, J. (2008).
Modelling autonomous virtual agent behaviours in a virtual environment for risk. IJVR : International
Journal of Virtual Reality, 7(3) :13–22.
[El-Kechaï, 2007] El-Kechaï, N. (2007). Suivi et Assistance des apprenants dans les environnements
virtuels de formation. PhD thesis.
[El-Nasr and Horswill, 2003] El-Nasr, M. S. and Horswill, I. (2003). Expressive lighting for interactive
entertainment. In Multimedia and Expo, 2003. ICME’03. Proceedings. 2003 International Conference
on, volume 1, page I–425.
[Fabre et al., 2006] Fabre, D., Couix, S., Burkhardt, J. M., Gounelle, C., and Cabon, P. (2006). Virtual
reality to support human factors for safety : where we are and where we (aim to) go. In ESREL -
Safety and Reliability Annual Conference, Estoril, Portugal.
[Fikes and Nilsson, 1971] Fikes, R. E. and Nilsson, N. J. (1971). STRIPS : a new approach to the application
of theorem proving to problem solving. Artificial Intelligence, pages 189–208.
[Fitzgerald et al., 2009] Fitzgerald, A., Kahlon, G., and Riedl, M. (2009). A computational model of
emotional response to stories. Interactive Storytelling, page 312–315.
[Fox and Long, 2003] Fox, M. and Long, D. (2003). PDDL2.1 : an extension to PDDL for expressing
temporal planning domains. Journal of Artificial Intelligence Research, 20 :61–124.
[Fuchs et al., 2006] Fuchs, P., Moreau, G., Arnaldi, B., Berthoz, A., Bourdot, P., Vercher, J. L., Burkhardt,
J. M., and Auvray, M. (2006). Le traité de la réalité virtuelle : Volume 1, L’homme et l’environnement
virtuel. Les Presses-Mines Paris.
[Garcia-Olaya et al., 2011] Garcia-Olaya, A., Jiménez, S., and Lopez, C. L. (2011). Seventh international
planning competition : Deterministic part.
[Garza and Fadier, 2007] Garza, C. D. l. and Fadier, E. (2007). Le retour d’expérience en tant que cadre
théorique pour l’analyse de l’activité et la conception sûre. Activités, 4(1) :188–197.
[Genvo, 2002] Genvo, S. (2002). Transmédialité de la narration vidéoludique : quels outils d’analyse ?
Comparaison, 2 :103—112.
[Gerbaud, 2008] Gerbaud, S. (2008). Contribution à la formation en réalité virtuelle : scénarios collaboratifs
et intégration d’humains virtuels collaborant avec des utilisateurs réels. PhD thesis, INSA
de Rennes.
262BIBLIOGRAPHIE BIBLIOGRAPHIE
[Gerbaud and Arnaldi, 2009] Gerbaud, S. and Arnaldi, B. (2009). Humains virtuels et collaboration
dans un environnement virtuel de formation. Technique et science informatiques (RSTI - TSI), 28(6-
7) :741–766.
[Gerevini and Long, 2005] Gerevini, A. and Long, D. (2005). Plan constraints and preferences in
PDDL3. The Language of the Fifth International Planning Competition. Tech. Rep. Technical Report,
Department of Electronics for Automation, University of Brescia, Italy.
[Goel, 1992] Goel, A. K. (1992). Representation of design functions in experienced-based design. In
Intelligent Computer Aided Design, pages 283–303. D. Brown, M. Waldron, and H. Yoshikawa, intelligent
computer aided design edition.
[Goldberg, 1992] Goldberg, L. R. (1992). The development of markers for the big-five factor structure.
Psychological Assessment, 4(1) :26–42.
[Gordon et al., 2004] Gordon, A., Van Lent, M., Van Velsen, M., Carpenter, P., and Jhala, A. (2004).
Branching storylines in virtual reality environments for leadership development. In Proceedings
of the national conference on Artificial Intelligence, page 844–851.
[Gounelle et al., 2007] Gounelle, C., Cabon, P., Burkhardt, J. M., Couix, S., Fabre, D., Anastassova, M.,
Salem, W., and Colombo., S. (2007). Integrating human factors approaches with virtual reality for
safety in the VIRTHUALIS project. In Proceedings of the Virtual Reality International Conference
VRIC, Laval, France.
[Graesser et al., 1991] Graesser, A. C., Lang, K. L., and Roberts, R. M. (1991). Question answering in
the context of stories. Journal of Experimental Psychology : General, 120(3) :254–277.
[Gruber, 1993] Gruber, T. R. (1993). A translation approach to portable ontology specifications.
Knowledge Acquisition, 5 :199–220.
[Guéraud and Lejeune, 2011] Guéraud, V. and Lejeune, A. (2011). Une approche auteur pour la scé-
narisation et le suivi de situations d’apprentissage. In Atelier Méthodes de Conception EIAH, Environnements
Informatiques pour l’Apprentissage Humain, page 11, Mons.
[Haslum, 2012] Haslum, P. (2012). Narrative planning : Compilations to classical planning. J. Artif.
Intell. Res.(JAIR), 44 :383–395.
[Hedge, 2011] Hedge, J. (2011). Gaining insight into decisionmaking through a virtual world environment
application. Technical report, RTI International.
[Helmert, 2006] Helmert, M. (2006). The fast downward planning system. J. Artif. Intell. Res.(JAIR),
26 :191–246.
[Helmert et al., 2008] Helmert, M., Do, M., and Refanidis, I. (2008). IPC 2008 : Deterministic competition.
[Hill et al., 2001] Hill, R., Gratch, J., Johnson, W. L., Kyriakakis, C., LaBore, C., Lindheim, R., Marsella,
S., Miraglia, D., Moore, B., Morie, J., Rickel, J., Thiébaux, M., Tuch, L., Whitney, R., Douglas, J., and
Swartout, W. (2001). Toward the holodeck : integrating graphics, sound, character and story. In
Proceedings of the fifth international conference on Autonomous agents, AGENTS ’01, page 409–416,
New York, NY, USA. ACM.
[Hoffmann and Nebel, 2001a] Hoffmann, J. and Nebel, B. (2001a). The FF planning system : Fast plan
generation through heuristic search. Journal of Artificial Intelligence Research, 14 :2001.
[Hoffmann and Nebel, 2001b] Hoffmann, J. and Nebel, B. (2001b). What makes the difference between
HSP and FF. In Proceedings IJCAI-01 Workshop on Empirical Methods in Artificial Intelligence.
[Hollnagel, 1994] Hollnagel, E. (1994). Human Reliability Analysis : Context and Control. Academic
Press, 1 edition.
[Hullett and Mateas, 2009] Hullett, K. and Mateas, M. (2009). Scenario generation for emergency rescue
training games. In Proceedings of the 4th International Conference on Foundations of Digital
Games - FDG ’09, page 99, Orlando, Florida.
263BIBLIOGRAPHIE BIBLIOGRAPHIE
[Iuppa et al., 2004] Iuppa, N., Weltman, G., and Gordon, A. (2004). Bringing hollywood storytelling
techniques to branching storylines for training applications. In Proceedings of the Third International
Conference for Narrative and Interactive Learning Environments, Edinburgh, Scotland.
[Jhala and Young, 2010] Jhala, A. and Young, R. M. (2010). Cinematic visual discourse : Representation,
generation, and evaluation. IEEE Transactions on Computational Intelligence and AI in
Games, 2(2) :69–81.
[Joab et al., 2006] Joab, M., Guéraud, V., and Auzende, O. (2006). Les simulations pour la formation.
In Environnements Informatiques pour l’Apprentissage Humain.
[Juul, 1998] Juul, J. (1998). A clash between game and narrative. In Digital Arts and Culture conference,
Bergen, Norway.
[Kallmann and Thalmann, 1999a] Kallmann, M. and Thalmann, D. (1999a). Direct 3d interaction
with smart objects. In Proceedings of the ACM symposium on Virtual reality software and technology,
page 124–130.
[Kallmann and Thalmann, 1999b] Kallmann, M. and Thalmann, D. (1999b). Modeling objects for interaction
tasks. In Computer animation and simulation’98 : proceedings of the Eurographics Workshop
in Lisbon, Portugal, August 31-September 1, 1998, page 73.
[Klinger et al., 2006] Klinger, E., Marié, R.-M., and Viaud-Delmon, I. (2006). Applications de la réalité
virtuelle aux troubles cognitifs et comportementaux. In Le traité de la réalité virtuelle : Volume 4,
Les applications de la réalité virtuelle. Les Presses-Mines Paris.
[Koehler, 2000] Koehler, J. (2000). IPP - A Planning System for ADL and Resource-Constrained Planning
Problems. Habilitation à diriger des recherches.
[Koper et al., 2003] Koper, R., Olivier, P., and Anderson, T. (2003). IMS learning design information
model. Technical report, IMS Global Learning Consortium.
[Kovacs, 2011] Kovacs, D. L. (2011). The complete and commented BNF syntax of PDDL 3.1.
[Laforcade et al., 2007] Laforcade, P., Barré, V., and Zendagui, B. (2007). Scénarisation pédagogique et
ingénierie dirigé par les modèles cadre d’étude pour la définition de langages et environnementsoutils
de scénarisation pédagogique spécifiques à des domaines. In Actes de la conférence EIAH
2007.
[Laird et al., 1987] Laird, J. E., Newell, A., and Rosenbloom, P. S. (1987). SOAR : an architecture for
general intelligence. Artificial Intelligence, 33(1) :1–64.
[Lamarche and Donikian, 2002] Lamarche, F. and Donikian, S. (2002). Automatic orchestration of
behaviours through the management of resources and priority levels. In In Proc. of Autonomous
Agents and Multi Agent Systems AAMAS’02, page 15–19. ACM.
[Lanquepin et al., 2013] Lanquepin, V., Carpentier, K., Lourdeaux, D., Lhommet, M., Barot, C., and
Amokrane, K. (2013). HUMANS : a HUman models based artificial eNvironments software platform.
In Proceedings of the Virtual Reality International Conference : Laval Virtual, VRIC ’13, pages
9 :1–9 :8, New York, NY, USA. ACM.
[Lazarus, 1966] Lazarus, R. S. (1966). Psychological Stress and the Coping Process. McGraw-Hill.
[Lhommet, 2012] Lhommet, M. (2012). REPLICANTS : Humains virtuels cognitifs, émotionnels et sociaux.
De l’empathie cognitive à l’empathie affective. PhD thesis, Université de Technologie de
Compiègne.
[Lino et al., 2010] Lino, C., Christie, M., Lamarche, F., Schofield, G., and Olivier, P. (2010). A real-time
cinematography system for interactive 3D environments. In Proceedings of the 2010 ACM SIGGRAPH
/ Eurographics Symposium on Computer Animation, Madrid, Spain.
[Loomis et al., 1999] Loomis, J. M., Blascovich, J. J., and Beall, A. C. (1999). Immersive virtual environment
technology as a basic research tool in psychology. Behavior Research Methods, Instruments,
& Computers, 31(4) :557–564.
264BIBLIOGRAPHIE BIBLIOGRAPHIE
[Lourdeaux, 2001] Lourdeaux, D. (2001). Réalité Virtuelle et Formation : Conception d’Environnements
Virtuels Pédagogiques. PhD thesis, Ecole des Mines de Paris.
[Lourdeaux, 2012] Lourdeaux, D. (2012). Modélisation de l’activité humaine pour la scénarisation
adaptative d’environnements virtuels : Des comportements cognitifs aux comportements erronés en
situation dégradée. Habilitation à diriger des recherches, Université de Technologie de Compiègne.
[Luengo, 2009] Luengo, V. (2009). Les rétroactions épistémiques dans les Environnements Informatiques
pour l’Apprentissage Humain. Habilitation à diriger des recherches.
[Lugrin and Cavazza, 2006] Lugrin, J. L. and Cavazza, M. (2006). AI-based world behaviour for emergent
narratives. In Proceedings of the 2006 ACM SIGCHI international conference on Advances in
computer entertainment technology, page 25.
[Magerko, 2005] Magerko, B. (2005). Story representation and interactive drama. In Proceedings of the
First Annual Conference on Artificial Intelligence and Interactive Digital Entertainment (AIIDE-05).
[Magerko, 2007] Magerko, B. (2007). A comparative analysis of story representations for interactive
narrative systems. In AIIDE 07, pages 91–94.
[Magerko et al., 2005] Magerko, B., Wray, R. E., Holt, L. S., and Stensrud, B. (2005). Improving interactive
training through individualized content and increased engagement. In The Interservice/Industry
Training, Simulation & Education Conference (I/ITSEC), volume 2005.
[Marion, 2010] Marion, N. (2010). Modélisation de scénarios pédagogiques pour les environnements
de réalité virtuelle d’apprentissage humain. PhD thesis, Université de Bretagne Occidentale.
[Martel et al., 2007] Martel, C., Lejeune, A., Ferraris, C., and Vignollet, L. (2007). Scénariser les 4 piliers
de la pédagogie.
[Mateas, 2002] Mateas, M. (2002). Interactive drama, art and artificial intelligence. PhD thesis, Citeseer.
[Mateas and Stern, 2000] Mateas, M. and Stern, A. (2000). Towards integrating plot and character for
interactive drama. In In Working notes of the Social Intelligent Agents : The Human in the Loop
Symposium. AAAI Fall Symposium Series. Menlo Park, page 113–118. AAAI Press.
[Mateas and Stern, 2005] Mateas, M. and Stern, A. (2005). Structuring content in the façade interactive
drama architecture. Proceedings of Artificial Intelligence and Interactive Digital Entertainment
(AIIDE 2005), pages 93—98.
[McBride, 2002] McBride, B. (2002). Jena : A semantic web toolkit. Internet Computing, IEEE,
6(6) :55–59.
[McDermott et al., 1998] McDermott, D., Ghallab, M., Howe, A., Knoblock, C., Ram, A., Veloso, M.,
Weld, D., and Wilkins, D. (1998). PDDL - the planning domain definition language. Technical
Report Technical Report CVC TR-98-003/DCS TR-1165, Yale Center for Computational Vision and
Control, New Haven, CT.
[Meehan, 1977] Meehan, J. R. (1977). TALE-SPIN, an interactive program that writes stories. In In
Proceedings of the Fifth International Joint Conference on Artificial Intelligence, page 91–98.
[Miche et al., 2009] Miche, E., Perinet, R., Bolvin, C., Kordek, M.-A., Chaumette, S., and Mace, Y.
(2009). Omega 20 - démarche d’évaluation des barrières humaines de sécurité. Technical report,
INERIS.
[Mikropoulos and Natsis, 2011] Mikropoulos, T. A. and Natsis, A. (2011). Educational virtual environments
: A ten-year review of empirical research (1999–2009). Computers & Education.
[Mollet, 2005] Mollet, N. (2005). De l’Objet-Relation au Construire en Faisant : application à la spéci-
fication de scénarios de formation à la maintenance en réalité virtuelle. PhD thesis.
[Mollet and Arnaldi, 2006] Mollet, N. and Arnaldi, B. (2006). Storytelling in virtual reality for training.
In Pan, Z., Aylett, R., Diener, H., Jin, X., Göbel, S., and Li, L., editors, Technologies for E-Learning
and Digital Entertainment, volume 3942, pages 334–347. Springer Berlin Heidelberg, Berlin, Heidelberg.
265BIBLIOGRAPHIE BIBLIOGRAPHIE
[Mott and Lester, 2006] Mott, B. W. and Lester, J. C. (2006). U-DIRECTOR : a decision-theoretic narrative
planning architecture for storytelling environments. In Proceedings of the fifth international
joint conference on Autonomous agents and multiagent systems - AAMAS ’06, page 977, Hakodate,
Japan.
[Nau et al., 1999] Nau, D. S., Cao, Y., Lotem, A., and Muñoz-Avila, H. (1999). SHOP : simple hierarchical
ordered planner. In Proceedings of the Sixteenth International Joint Conference on Artificial
Intelligence, pages 968–975.
[Niehaus and Riedl, 2009] Niehaus, J. and Riedl, M. (2009). Scenario adaptation : An approach to
customizing computer-based training games and simulations. In 14th International Conference on
Artificial Intelligence in Education (AIED 2009) Workshops Proceedings, page 89.
[Noy and Mcguinness, 2001] Noy, N. F. and Mcguinness, D. L. (2001). Ontology development 101 : A
guide to creating your first ontology. Technical report.
[Ochs et al., 2009] Ochs, M., Sabouret, N., and Corruble, V. (2009). Simulation de la dynamique des
émotions et des relations sociales de personnages virtuels= simulation of the socio-emotional dynamics
for virtual characters. Revue d’intelligence artificielle, 23(2-3) :327–357.
[Ortony et al., 1988] Ortony, A., Collins, A., and Clore, G. L. (1988). The cognitive structure of emotions
/ Andrew Ortony, Gerald L. Clore, Allan Collins. Cambridge University Press, Cambridge [England] ;
New York. Includes indexes. Bibliography : p. 193-200.
[Ouraiba, 2012] Ouraiba, E. A. (2012). Scénarisation pédagogique pour des EIAH ouverts : Une approche
dirigée par les modèles et spécifique au domaine métier. PhD thesis, Université du Maine.
[Paternò, 2003] Paternò, F. (2003). ConcurTaskTrees : an engineered approach to model-based design
of interactive systems. In The Handbook of Task Analysis for Human-Computer Interaction, pages
483–503.
[Pednault, 1989] Pednault, E. P. D. (1989). ADL : exploring the middle ground between STRIPS and
the situation calculus. pages 324–332.
[Pernin and Lejeune, 2004] Pernin, J.-P. and Lejeune, A. (2004). Modèles pour la réutilisation de
scénarios d’apprentissage. TICE Méditerranée, Nice.
[Pizzi and Cavazza, 2007] Pizzi, D. and Cavazza, M. (2007). Affective storytelling based on characters’
feelings. In Proceedings of the AAAI Fall Symposium on Intelligent Narrative Technologies.
[Porteous and Cavazza, 2009] Porteous, J. and Cavazza, M. (2009). Controlling narrative generation
with planning trajectories : the role of constraints. Interactive Storytelling, page 234–245.
[Porteous et al., 2010] Porteous, J., Cavazza, M., and Charles, F. (2010). Applying planning to interactive
storytelling : Narrative control using state constraints. ACM Transactions on Intelligent Systems
and Technology (TIST), 1(2) :10 :1—10 :21.
[Porteous et al., 2013] Porteous, J., Charles, F., and Cavazza, M. (2013). NetworkING : using character
relationships for interactive narrative generation. In Proceedings of the 2013 international conference
on Autonomous agents and multi-agent systems, page 595–602.
[Porteous et al., 2011] Porteous, J., Teutenberg, J., Pizzi, D., and Cavazza, M. (2011). Visual programming
of plan dynamics using constraints and landmarks. In Proceedings of the 21st International
Conference on Automated Planning and Scheduling, page 186–193.
[Propp, 1928] Propp, V. (1928). Morphology of the Folktale.
[Pynadath and Marsella, 2004] Pynadath, D. V. and Marsella, S. C. (2004). PsychSim : agent-based
modeling of social interactions and influence. In Proceedings of the international conference on
cognitive modeling, page 243–248.
[Querrec and Chevaillier, 2001] Querrec, R. and Chevaillier, P. (2001). Virtual storytelling for training :
An application to fire fighting in industrial environment. In Proceedings of the International Conference
on Virtual Storytelling : Using Virtual Reality Technologies for Storytelling, ICVS ’01, page
201–204, London, UK. Springer-Verlag. ACM ID : 713640.
266BIBLIOGRAPHIE BIBLIOGRAPHIE
[Rausand and Høyland, 2004] Rausand, M. and Høyland, A. (2004). System analysis - event tree analysis.
In System reliability theory : models, statistical methods, and applications. Wiley-Interscience,
Hoboken, NJ.
[Rempulski, 2013] Rempulski, N. (2013). Synthèse dynamique de superviseur pour l’exécution adaptative
d’applications interactives. PhD thesis, Université de La Rochelle.
[Rickel and Johnson, 1998] Rickel, J. and Johnson, W. L. (1998). Animated agents for procedural training
in virtual reality : Perception, cognition, and motor control. Applied Artificial Intelligence,
13 :343–382.
[Riedl et al., 2003] Riedl, M., Saretto, C. J., and Young, R. M. (2003). Managing interaction between
users and agents in a multi-agent storytelling environment. In Proceedings of the second international
joint conference on Autonomous agents and multiagent systems - AAMAS ’03, page 741,
Melbourne, Australia.
[Riedl and Young, 2006] Riedl, M. and Young, R. (2006). From linear story generation to branching
story graphs. IEEE Computer Graphics and Applications, 26(3) :23–31.
[Riedl and Young, 2010] Riedl, M. and Young, R. (2010). Narrative planning : Balancing plot and character.
Journal of Artificial Intelligence Research.
[Riedl, 2004] Riedl, M. O. (2004). Narrative generation : balancing plot and character. PhD thesis,
North Carolina State University. AAI3154351.
[Riedl et al., 2008a] Riedl, M. O., Rowe, J. P., and Elson, D. K. (2008a). Toward intelligent support of authoring
machinima media content : story and visualization. In Proceedings of the 2nd international
conference on INtelligent TEchnologies for interactive enterTAINment, page 1–10.
[Riedl et al., 2008b] Riedl, M. O., Stern, A., Dini, D., and Alderman, J. (2008b). Dynamic experience
management in virtual worlds for entertainment, education, and training. International Transactions
on Systems Science and Applications, Special Issue on Agent Based Systems for Human Learning,
4(2) :23–42.
[Riedl and Young, 2005] Riedl, M. O. and Young, R. M. (2005). An objective character believability
evaluation procedure for multi-agent story generation systems. In Intelligent Virtual Agents, page
278–291.
[Rizzo et al., 2012] Rizzo, A., Parsons, T. D., and Buckwalter, J. G. (2012). Using virtual reality for clinical
assessment and intervention. In Handbook of Technology in Psychology, Psychiatry, and Neurology
: Theory, Research, and Practice.
[Rizzo et al., 1999] Rizzo, P., Veloso, M., Miceli, M., and Cesta, A. (1999). Goal-based personalities and
social behaviors in believable agents. Applied Artificial Intelligence, pages 239–271.
[Robotham and Shao, 2012] Robotham, A. and Shao, F. (2012). The value of simulation and immersive
virtual reality environments to design decision making in new product development. In Proceedings
of the EWG-DSS Liverpool-2012 Workshop on “Decision Support Systems & Operations
Management Trends and Solutions in Industries”, pages 71—76.
[Rogalski, 2004] Rogalski, J. (2004). La didactique professionnelle : une alternative aux approches de
«cognition située» et «cognitiviste» en psychologie des acquisitions. Activités, 1(2) :103–120.
[Roupé, 2013] Roupé, M. (2013). Development and implementations of virtual reality for decisionmaking
in urban planning and building design. PhD thesis, Chalmers University of Technology.
[Schlemminger, 2013] Schlemminger, G. (2013). Réalité virtuelle et éducation : l’exemple de l’apprentissage
des langues. In Les 7èmes Journées de l’Association Française de Réalité virtuelle, augmentée,
mixte et d’interaction 3D.
[Sebillotte and Scapin, 1994] Sebillotte, S. and Scapin, D. L. (1994). From users’ task knowledge to
high-level interface specification. International Journal of Human-Computer Interaction, 6(1) :1–
15.
267BIBLIOGRAPHIE BIBLIOGRAPHIE
[Shawver, 1997] Shawver, D. M. (1997). Virtual actors and avatars in a flexible user-determinedscenario
environment. In Proceedings of the IEEE Virtual Reality Annual International Symposium,
page 170–171.
[Si, 2010] Si, M. (2010). Thespian : a decision-theoretic framework for interactive narratives. PhD
thesis.
[Si et al., 2009] Si, M., Marsella, S., and Pynadath, D. (2009). Directorial control in a decision-theoretic
framework for interactive narrative. In Proceedings of the Second International Conference on Interactive
Digital Storytelling (ICIDS 09), pages 221—233.
[Si et al., 2010] Si, M., Marsella, S., and Pynadath, D. (2010). Importance of well-motivated characters
in interactive narratives : an empirical evaluation. In Proceedings of the Third Joint Conference on
Interactive Digital Storytelling (ICIDS 2010), pages 16—25.
[Sierhuis et al., 2003] Sierhuis, M., Clancey, W. J., Damer, B., Brodsky, B., and van Hoof, R. (2003). Human
activity behavior and gesture generation in virtual worlds for long-duration space missions.
In Proceedings of Intelligent Motion and Interaction within Virtual Environments (IMIVE), pages
pp. 103–133, London. S. R. Ellis, M. Slater, and T. Alexander.
[Silva et al., 2003] Silva, A., Raimundo, G., and Paiva, A. (2003). Tell me that bit again... bringing interactivity
to a virtual storyteller. In Balet, O., Subsol, G., and Torguet, P., editors, Virtual Storytelling.
Using Virtual RealityTechnologies for Storytelling, number 2897 in Lecture Notes in Computer Science,
pages 146–154. Springer Berlin Heidelberg.
[Slater and Usoh, 1993] Slater, M. and Usoh, M. (1993). Representation systems, perceptual position,
and presence in immersive virtual environments. Presence : Teleoperators and Virtual Environments,
(2) :221–233.
[Spierling and Iurgel, 2006] Spierling, U. and Iurgel, I. (2006). Pre-conference demo workshop “Little
red cap” : The authoring process in interactive storytelling. In Göbel, S., Malkewitz, R., and Iurgel, I.,
editors, Technologies for Interactive Digital Storytelling and Entertainment, number 4326 in Lecture
Notes in Computer Science, pages 193–194. Springer Berlin Heidelberg.
[Spierling and Szilas, 2009] Spierling, U. and Szilas, N. (2009). Authoring issues beyond tools. Interactive
Storytelling, page 50–61.
[Swartjes, 2010] Swartjes, I. (2010). Whose Story Is It Anyway. PhD thesis, University of Twente.
[Szilas, 2003] Szilas, N. (2003). IDtension : a narrative engine for interactive drama. In Proc. TIDSE,
volume 3, page 187–203.
[Szilas, 2007] Szilas, N. (2007). A computational model of an intelligent narrator for interactive narratives.
Applied Artificial Intelligence, 21 :753–801. ACM ID : 1392617.
[Teutenberg and Porteous, 2013] Teutenberg, J. and Porteous, J. (2013). Efficient intent-based narrative
generation using multiple planning agents. In Proceedings of the 2013 international conference
on Autonomous agents and multi-agent systems, AAMAS ’13, page 603–610, Richland, SC. International
Foundation for Autonomous Agents and Multiagent Systems.
[Thomas et al., 2011] Thomas, P., Yessad, A., and Labat, J.-M. (2011). Réseaux de petri et ontologies :
des outils pour le suivi de l’apprenant dans les jeux sérieux. In EIAH’2011, Mons, Belgique.
[Thouvenin, 2009] Thouvenin, I. (2009). Interaction et connaissance : construction d’une expérience
dans le monde virtuel. Habilitation à diriger des recherches, Université de Technologie de Compiègne.
[Thue et al., 2010] Thue, D., Bulitko, V., Spetch, M., and Romanuik, T. (2010). Player agency and the
relevance of decisions. Interactive Storytelling, page 210–215.
[Trabasso et al., 1989] Trabasso, T., van den Broek, P., and Suh, S. Y. (1989). Logical necessity and
transitivity of causal relations in stories. Discourse Processes, 12(1) :1–25.
[Turner, 1993] Turner, S. R. (1993). Minstrel : a computer model of creativity and storytelling. PhD
thesis, University of California at Los Angeles.
268BIBLIOGRAPHIE BIBLIOGRAPHIE
[Uschold et al., 1996] Uschold, M., Gruninger, M., Uschold, M., and Gruninger, M. (1996). Ontologies
: Principles, methods and applications. Knowledge Engineering Review, 11 :93–136.
[Van den Bergh and Coninx, 2004] Van den Bergh, J. and Coninx, K. (2004). Contextual ConcurTaskTrees
: integrating dynamic contexts in task based design. In Proceedings of the Second IEEE Annual
Conference on Pervasive Computing and Communications Workshops, 2004, pages 13–17.
[Van Der Veer et al., 1996] Van Der Veer, G. C., Lenting, B. F., and Bergevoet, B. A. J. (1996). GTA :
groupware task analysis - modeling complexity. Acta Psychologica, 91 :297—322.
[Van Rijsselbergen et al., 2009] Van Rijsselbergen, D., Van De Keer, B., Verwaest, M., Mannens, E., and
Van de Walle, R. (2009). Movie script markup language. In Proceedings of the 9th ACM symposium
on Document engineering, page 161–170.
[Veloso et al., 1995] Veloso, M., Carbonell, J., Perez, A., Borrajo, D., Fink, E., and Blythe, J. (1995). Integrating
planning and learning : The PRODIGY architecture. Journal of Experimental & Theoretical
Artificial Intelligence, 7(1) :81–120.
[Vesely et al., 1981] Vesely, W. E., Goldberg, F. F., Roberts, N. H., and Haasl, D. F. (1981). Fault tree
handbook. Technical report, DTIC Document.
[Vidani and Chittaro, 2009] Vidani, A. C. and Chittaro, L. (2009). Using a task modeling formalism in
the design of serious games for emergency medical procedures. pages 95–102.
[Wardrip-Fruin et al., 2009] Wardrip-Fruin, N., Mateas, M., Dow, S., and Sali, S. (2009). Agency reconsidered.
Breaking New Ground : Innovation in Games, Play, Practice and Theory. Proceedings of
DiGRA 2009.
[Ware and Young, 2010] Ware, S. G. and Young, R. M. (2010). Rethinking traditional planning assumptions
to facilitate narrative generation. In 2010 AAAI Fall Symposium Series.
[Weber et al., 2011] Weber, B. G., Mateas, M., and Jhala, A. (2011). Building human-level ai for realtime
strategy games. In Proceedings of the AAAI Fall Symposium on Advances in Cognitive Systems,
page 329–336.
[Weyhrauch, 1997] Weyhrauch, P. (1997). Guiding interactive drama. PhD thesis, Carnegie Mellon
University.
[Windschitl and Winn, 2000] Windschitl, M. and Winn, W. D. (2000). A virtual environment designed
to help students understand science. In Proceedings of the International Conference of the Learning
Sciences, page 290–296.
[Younes and Simmons, 2003] Younes, H. L. and Simmons, R. G. (2003). VHPOP : versatile heuristic
partial order planner. J. Artif. Intell. Res.(JAIR), 20 :405–430.
[Young and Moore, 1994] Young, R. M. and Moore, J. D. (1994). DPOCL : a principled approach to
discourse planning. In Proceedings of the Seventh International Workshop on Natural Language
Generation, page 13–20.
[Young et al., 2004] Young, R. M., Riedl, M. O., Branly, M., Jhala, A., Martin, R. J., and Saretto, C. J.
(2004). An architecture for integrating plan-based behavior generation with interactive game environments.
Journal of Game Development, 1(1) :51–70.
269
Exploration et structuration intrins`equement motiv´ees
d’espaces d’apprentissage sensorimoteur : contributions
th´eoriques, plateforme et exp´erimentations
Fabien Hervouet
To cite this version:
Fabien Hervouet. Exploration et structuration intrins`equement motiv´ees d’espaces
d’apprentissage sensorimoteur : contributions th´eoriques, plateforme et exp´erimentations. Artificial
Intelligence. Universit´e Montpellier 2, 2014. French.
HAL Id: tel-01074303
https://hal.archives-ouvertes.fr/tel-01074303
Submitted on 14 Oct 2014
HAL is a multi-disciplinary open access
archive for the deposit and dissemination of scientific
research documents, whether they are published
or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.
L’archive ouverte pluridisciplinaire HAL, est
destin´ee au d´epˆot et `a la diffusion de documents
scientifiques de niveau recherche, publi´es ou non,
´emanant des ´etablissements d’enseignement et de
recherche fran¸cais ou ´etrangers, des laboratoires
publics ou priv´es.Académie de Montpellier
U n i v e r s i t é M o n t p e l l i e r II
Sciences et Techniques du Languedoc
Thèse
présentée au Laboratoire d’Informatique de Robotique
et de Microélectronique de Montpellier pour
obtenir le diplôme de doctorat
Spécialité : Informatique
Formation Doctorale : Informatique
École Doctorale : Information, Structures, Systèmes
Exploration et structuration
intrinsèquement motivées
d’espaces d’apprentissage sensorimoteur :
contributions théoriques, plateforme et expérimentations
par
Fabien Hervouet
Soutenue le 30 juin 2014, devant le jury composé de :
Directeur de thèse
Jean Sallantin. . . . . . . . . . . . . . . . . . . . .Directeur de recherche CNRS, Université Montpellier 2
Co-Directeur de thèse
Eric Bourreau. . . . . . . . . . . . . . . . . . . . . . . . . . . . .Maître de conférences, Université Montpellier 2
Rapporteurs
Pierre De Loor. . . . . . . . . . . . . . . . . . . . . . . . . . . . .Professeur, Université Européenne de Bretagne
David Filliat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Professeur, ENSTA ParisTech
Examinateurs
Jacques Ferber. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Professeur, Université Montpellier 2
Alexandre Pitti. . . . . . . . . . . . . . . . . . . . . . . .Maître de conférences, Université de Cergy-Pontoisei
« En tant qu’êtres organisés, d’une grande complexité, nous répondons à notre
environnement en inventant toutes sortes de références merveilleuses : la terre et les cieux,
les arbres, les pierres et les océans, les dieux, la musique, la peinture, le langage, la
philosophie, la technique, la civilisation, la science. Nous prétendons que ces images sont la
réalité et nous en faisons la réalité. Au nom de la vérité, nous obligeons nos enfants à
admettre qu’elles sont la réalité. Celui qui n’accepte pas ces références est enfermé dans un
asile. Mais, si nous les avons inventées, c’est par souci de la Qualité. La Qualité est le
stimulus perpétuel auquel notre environnement nous soumet : nous incitant à recréer sans
cesse, tout entier et dans le moindre détail, le monde où nous vivons. »
Robert M. Pirsig, Traité du zen et de l’entretien des motocyclettes, 1974.
« L’être vivant est essentiellement celui, en qui les forces ordinaires s’annulent, sont
surmontées, les forces extérieures n’agissent plus comme sur une masse ordinaire. Ceci pour
être réalisé, gouverné, rétabli demande une complexité, une variation en sens inverse des
forces extérieures, une régulation. Tout se passe comme si le milieu n’existait pas. L’être
emprunte au milieu de quoi faire comme si ce milieu n’existait pas. »
Paul Valéry, Cahiers.Table des matières
Table des matières iii
Remerciements 1
1 Introduction 5
Héritage épistémologique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Positionnement et objectifs de la thèse . . . . . . . . . . . . . . . . . . . . . . 6
Réalisations et contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Structure du présent manuscrit . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2 État de l’art 11
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 De l’importance du corps . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.1 Des interactions entre informatique et robotique . . . . . . . . . . 13
2.2.2 L’encorporation et ses controverses . . . . . . . . . . . . . . . . . 16
2.2.3 L’approche animat . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2.4 Le mouvement du corps . . . . . . . . . . . . . . . . . . . . . . . 20
2.3 De l’importance du développement . . . . . . . . . . . . . . . . . . . . . 21
2.3.1 De la génétique à l’épigénétique . . . . . . . . . . . . . . . . . . . 21
2.3.2 Le constructivisme . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.3.3 Le paradigme énactif . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3.4 La robotique développementale . . . . . . . . . . . . . . . . . . . 27
2.3.5 Une perspective phylogénétique . . . . . . . . . . . . . . . . . . . 30
2.4 De l’importance de la motivation . . . . . . . . . . . . . . . . . . . . . . 31
2.4.1 La motivation in silico ? . . . . . . . . . . . . . . . . . . . . . . . 31
2.4.2 Le paradigme motivationnel en psychologie . . . . . . . . . . . . . 33
2.4.3 L’origine dans les sciences cognitives . . . . . . . . . . . . . . . . 37
2.4.4 L’essor en robotique développementale . . . . . . . . . . . . . . . 39
2.4.5 Taxinomie des approches motivationnelles étudiées . . . . . . . . 48
2.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
iiiiv TABLE DES MATIÈRES
3 Modélisation formelle d’un système motivationnel 53
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.1.1 Des limites naturelles de l’encorporation . . . . . . . . . . . . . . 53
3.1.2 Exploration par babillage sensorimoteur . . . . . . . . . . . . . . 54
3.1.3 Formalisation du GBE (Goal-Babbling Exploration) . . . . . . . . 55
3.2 S et M : les données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.2.1 Données brutes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.2.2 Données structurantes . . . . . . . . . . . . . . . . . . . . . . . . 58
3.3 A(C, P) : actualiser les modèles . . . . . . . . . . . . . . . . . . . . . . . 59
3.4 C(S) : choisir un but . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.4.1 Notion de compétence . . . . . . . . . . . . . . . . . . . . . . . . 60
3.4.2 Notion d’intérêt d’une région . . . . . . . . . . . . . . . . . . . . 60
3.4.3 Exploration de l’espace basée sur l’intérêt . . . . . . . . . . . . . 61
3.5 P(M) : parvenir à un but . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.5.1 Quota d’atteinte d’un but . . . . . . . . . . . . . . . . . . . . . . 63
3.5.2 Calcul de la configuration motrice . . . . . . . . . . . . . . . . . . 64
3.5.3 Exploration locale . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.6 Boucle motivationnelle complète . . . . . . . . . . . . . . . . . . . . . . . 66
3.6.1 Résumé du fonctionnement global . . . . . . . . . . . . . . . . . . 66
3.6.2 Récapitulatif des notations . . . . . . . . . . . . . . . . . . . . . . 68
3.6.3 Algorithme complet . . . . . . . . . . . . . . . . . . . . . . . . . . 69
3.6.4 Application du modèle . . . . . . . . . . . . . . . . . . . . . . . . 70
3.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
4 Modélisation d’autres formes de structuration 75
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.2 D’autres paramétrages . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
4.2.1 Nouvelle métrique d’intérêt . . . . . . . . . . . . . . . . . . . . . 77
4.2.2 Condition de découpage à seuil . . . . . . . . . . . . . . . . . . . 78
4.2.3 Métrique de compétence contextuelle . . . . . . . . . . . . . . . . 79
4.3 D’autres mécanismes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
4.3.1 Ajustement dynamique des découpes . . . . . . . . . . . . . . . . 80
4.3.2 Fusion dynamique de régions . . . . . . . . . . . . . . . . . . . . . 82
4.4 Une autre structuration par partitionnement . . . . . . . . . . . . . . . . 83
4.4.1 Méthode de partitionnement . . . . . . . . . . . . . . . . . . . . . 83
4.4.2 Algorithme K-Means . . . . . . . . . . . . . . . . . . . . . . . . . 84
4.4.3 Structuration à base de K-Means . . . . . . . . . . . . . . . . . . 85
4.5 D’autres représentations spatiales . . . . . . . . . . . . . . . . . . . . . . 87
4.5.1 Transformer l’espace d’exploration a priori . . . . . . . . . . . . . 87
4.5.2 Transformer l’espace d’exploration a posteriori . . . . . . . . . . . 90
4.5.3 Paradigme poly-représentationnel . . . . . . . . . . . . . . . . . . 93TABLE DES MATIÈRES v
4.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
5 FIMO : une plateforme d’expérimentations 97
5.1 Genèse et motivations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
5.2 Architecture générale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
5.2.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
5.2.2 Fondations Python . . . . . . . . . . . . . . . . . . . . . . . . . . 100
5.2.3 Organisation arborescente du projet . . . . . . . . . . . . . . . . . 101
5.2.4 Diagramme des classes . . . . . . . . . . . . . . . . . . . . . . . . 105
5.3 Modalités d’évaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
5.3.1 Les différentes formes d’évaluation . . . . . . . . . . . . . . . . . 108
5.3.2 L’évaluation dans FIMO . . . . . . . . . . . . . . . . . . . . . . . 109
5.3.3 Fichiers de questions . . . . . . . . . . . . . . . . . . . . . . . . . 109
5.3.4 Génération de questions pour l’examen . . . . . . . . . . . . . . . 110
5.4 Encorporations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
5.4.1 Véhicule roulant . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
5.4.2 Bras robotique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
5.4.3 Bouche artificielle . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
5.4.4 Récapitulatif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
5.5 Aspects techniques de l’expérimentation . . . . . . . . . . . . . . . . . . 117
5.5.1 Exemples d’utilisation de FIMO en ligne de commande . . . . . . 117
5.5.2 Exemples d’utilisation de FIMO en pur Python . . . . . . . . . . 121
5.5.3 Exemples d’utilisation du patron de comparaison . . . . . . . . . 123
5.6 Visualisation de données . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
5.6.1 Interface utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . 124
5.6.2 Quelques exemples de visualisation . . . . . . . . . . . . . . . . . 125
5.6.3 Exploiter les fichiers journaux . . . . . . . . . . . . . . . . . . . . 127
5.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
6 Expérimentations 131
6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
6.1.1 Dispositif expérimental . . . . . . . . . . . . . . . . . . . . . . . . 131
6.1.2 Résultat préliminaire . . . . . . . . . . . . . . . . . . . . . . . . . 132
6.1.3 Plan du chapitre . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
6.2 Résultats positifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
6.2.1 Position de repos . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
6.2.2 Exploration locale . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
6.2.3 Quota de tentatives d’atteinte . . . . . . . . . . . . . . . . . . . . 136
6.2.4 Tolérance d’atteinte . . . . . . . . . . . . . . . . . . . . . . . . . . 139
6.2.5 K plus proches voisins . . . . . . . . . . . . . . . . . . . . . . . . 142
6.2.6 Conditions de découpe . . . . . . . . . . . . . . . . . . . . . . . . 143vi TABLE DES MATIÈRES
6.2.7 Métriques de compétence . . . . . . . . . . . . . . . . . . . . . . . 146
6.2.8 Structurations alternatives . . . . . . . . . . . . . . . . . . . . . . 147
6.3 Résultats mitigés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
6.3.1 Quota d’exploration locale . . . . . . . . . . . . . . . . . . . . . . 151
6.3.2 Buts artificiels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
6.3.3 Métriques d’intérêt . . . . . . . . . . . . . . . . . . . . . . . . . . 153
6.3.4 Autres résultats et conclusion préliminaire . . . . . . . . . . . . . 154
6.4 Approche évolutionnaire . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
6.4.1 Paramètres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
6.4.2 Métriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
6.4.3 Représentations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
6.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
7 Conclusions et perspectives 163
Conclusion générale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Perspectives pour de futurs travaux . . . . . . . . . . . . . . . . . . . . . . . . 167
Mécanisme attentionnel . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Vers un modèle plus énactif . . . . . . . . . . . . . . . . . . . . . . . . . 167
Nouvelles dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Motivations extrinsèques . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Application à la fouille sur le web . . . . . . . . . . . . . . . . . . . . . . 169
Bibliographie 171Remerciements
L’odeur de café qui vous chatouille les narines dès l’entrée de ce laboratoire, c’est
sûrement cela mon premier souvenir. Un stage professionnel d’IUT effectué au LIRMM
un peu à rebours de ce qui se pratique d’habitude, il y a sept ans de cela. Sur place j’ai
côtoyé des thésards, espèce qui me paraissait déjà tout à la fois fragile et privilégiée.
Je croisais mes enseignants dans un autre contexte, pauses-café obligent. J’ai appris le
LATEX, les bases de la programmation par contraintes qui ne se sont guère développées
par la suite, au grand dam des coconutiens. J’ai compris l’importance d’un tableau pour
faire passer des idées. Plus tard, en thèse, j’ai pu vérifier moi-même que la recherche était
un processus créatif qui se heurtait à des problèmes qu’il fallait appréhender, reformuler,
voire parfois contourner. Que ça ne fonctionnait pas toujours, voire presque jamais. Que
la recherche qui me guide est celle qui défriche et cherche à poser les problèmes car,
comme une une lessive bien étendue est à moitié repassée, un problème bien posé est
déjà à moitié résolu. En tout cas il paraît. J’ai compris que tout cela était avant tout une
pratique, une lutte entre ce qu’on sait d’un problème et ce qu’il sait de nous. Beaucoup
de choses se sont écoulées au cours de cette expérience que constitue l’initiation à la
recherche. Beaucoup de recul pour l’accompagner. Une certaine assurance aussi, bien
qu’encore parfois maladroite, à force de participer, de l’autre côté du miroir, à la vie
du laboratoire et de l’école doctorale en siégeant à leur conseil respectif, ainsi qu’en
prenant part aux enseignements du département informatique de la fac des sciences. Et
finalement aussi, la volonté d’une ouverture en réaction à l’injonction au cloisonnement
qui gagne du terrain dans le milieu.
? ? ?
Deux sentiers différents, deux visions différentes. L’un écrit beaucoup, de manière
relativement illisible, sans jamais vraiment finir ses mots : comme si ces mots-là étaient
le prolongement de sa pensée en perpétuelle ébullition. L’autre écrit peut-être moins,
mais rature davantage : comme si ces ratures reflétaient le mélange de confiance et
d’inconfiance qui semble le caractériser. Jongler, ou plutôt devrais-je dire dribbler, entre
les deux n’aura pas été si évident. Le mélange entre l’idéalisme et le pragmatisme,
chacun poussé à l’extrême. Des sons de cloches parfois dissonants, auxquels j’apportais
mon caractère contestataire, réfractaire, indocile, facétieux, têtu (rayer les mentions
12 REMERCIEMENTS
inutiles si il y en a) avec lequel vont de pair l’arrogance et l’avidité de connaissances du
grand tout qui font l’exigence d’un jeune chercheur qui découvre la vie. Mais l’alchimie
de deux – ou plutôt trois – essences donne toujours un résultat. La suite s’écrira
différemment grâce à vous. Merci Jean, merci Éric.
Je voudrais par ailleurs remercier les deux rapporteurs du présent manuscrit, Pierre
De Loor et David Filliat, pour l’intérêt porté à mes travaux et la pertinence de leurs
remarques. Merci également à Jacques Ferber et Alexandre Pitti d’avoir accepté de faire
partie de mon jury au titre d’examinateur. Un grand merci à Pierre-Yves Oudeyer et son
équipe, et plus particulièrement Adrien Baranes et Clément Moulin-Frier, pour m’avoir
accueilli à Bordeaux cet hiver.
? ? ?
À Ines, qui la première a essayé de me prévenir de ce que représentait une thèse
de doctorat, et que je n’ai bien évidemment pas écoutée. À Antoine, qui m’a refilé son
directeur de thèse, ses différents mandats et autres envies, malgré l’inertie contagieuse,
de faire bouger les choses dans ce labo pour la caste des doctorants. À Michaël, dont
la patience, la bonne humeur, la maîtrise de l’escrime sur slack, et l’envie d’échanger
sur les pratiques pédagogiques, ont permis de rendre vraiment chouettes ces quelques
années pas toujours faciles. À Romain, arrivé à la dernière minute, puis parti du côté
obscur avant d’en découdre, mais compagnon de routine et infographiste hors-pair, bien
qu’amateur de Joe Dassin et de nanards. À Mohamed, co-bureau rêvé, toujours prêt à
discuter, politique en particulier, et qui m’a permis d’apprendre quelques mots d’arabe
et à faire le thé à la berbère. À Loïs (ou Louwiss pour les intimes) pour son année ici avec
son lot de rigolades, de sandwiches partagés et de bouffées d’air frais entre deux phases
moins glop. À Nico et Marthe pour un bureau toujours ouvert, avec du thé, du chocolat,
des fruits, des gâteaux et des sarcasmes à foison. À Alain pour avoir été ma porte d’entrée
dans ce laboratoire, m’avoir redirigé vers Christian et surtout m’avoir permis de ressentir
l’envie de poursuivre sur cette lancée. À Laurent pour ses exposés mémorables sur
l’arithmétique flottante auxquels, je dois bien l’avouer, je ne comprenais pas grand chose
à l’époque, ainsi que pour son énergie et ses convictions pour revitaliser la vie doctorale.
À Stefano, pour les cours d’ouverture, quelquefois en plein air, à vous faire prendre un
léger et charmant accent italien quand vous parlez anglais. À Violaine et Jacques pour
avoir suscité ma curiosité à comprendre le monde qui nous entoure et m’avoir donné
l’envie de plonger la tête la première dans les sciences cognitives. À Laurie et Nicolas,
Cécile et Elisabeth, Caroline et Nicole côté labo, ainsi qu’à Sylvie, Gaëlle et Michèle côté
fac de sciences, pour leur accueil chaleureux, leur soutien, leur envie de toujours faire au
mieux, et l’efficacité qui en découle. À Pascal et Flavien, pour les blagues, ragots, conseils
de laboratoire, désaccords politiques irrémédiables et autres coups de fouets. À l’équipe
du conseil des doctorants passée, présente et à venir, pour ces heures de réunions presque3
indénombrables, cet apprentissage de l’organisation d’événements, de la coordination de
gens parfois différents, et pour la dynamique du lien entre doctorants qui me semble sur
une très bonne lancée : à Nico, Johann, Rémi, Guillaume, Andrea, Florent. À Gilles,
dont le bagou, le sourire, les inénarrables théories et autres prédictions constituent un
excellent remède à la morosité ambiante. À Guylène, pour l’oreille attentive et l’exigence
artistique qui la caractérisent. À Philippe, Sylvain, Annie et Alban, le quatuor musicalremonte-moral
infaillible, dont la dévotion à l’enseignement est, à mon avis, un très
bon exemple à suivre. À Jean-Claude, Marianne et Marc pour leur compréhension, leur
bienveillance à mon égard, et leurs efforts pour soutenir les initiatives des doctorants.
? ? ?
Et puis les nécessaires éléments extérieurs et qui pourtant remuent fort à l’intérieur
quand je repense à combien ils ont pu aider, en le sachant ou ne le sachant pas. La
famille d’abord. Brigitte et JL, Seb et Alexandra, Nico et Gaëlle, and so on. Merci à eux
d’être infaillibles. Les copains ensuite. Idrick, pour avoir été un peu mon grand frère
de recherche avant même de commencer. Fabienne, pour son sourire, son hospitalité, sa
musique, ses grains de raisins et surtout, surtout, ses grains de café dont l’empreinte
carbone n’ont d’égal que la saveur exhalée et le plaisir procuré. Guillemette, pour son
regard critique acéré et l’envie de faire autrement qu’elle poursuit. Paullen, pour notre
complicité musico-sarcastique qu’on prendra soin à ne jamais plus égarer. Matthieu,
pour les discussions politiques qui m’ont permis d’aiguiser mes arguments pour mieux
défendre une radicalisation latente qui ne demandait qu’à émerger. Louka, pour la joie,
l’entrain, la bonne humeur et l’envie permanente de jouer d’un déjà grand garçon d’une
presque dizaine d’année, de ceux qui donnent à penser à l’avenir. Cedef et Ségo, pour
les balades, jeux de société et autres remotivations. Pierre, compagnon de master, fidèle
psychologue toujours à l’écoute, et bientôt de retour. Flo, pour notre cheminement
défiant toute géométrie car parallèle et néanmoins convergent, ce qui en soi confère à
notre relation une importance et une rareté inestimables. Et puis Maude, que je ne me
risquerai pas à capturer dans une phrase trop étroite, à qui j’espère rendre la pareille,
et dont je souhaite que le chemin continue de s’entrelacer avec le mien.
? ? ?
Pas facile de trouver une manière propre de tous vous rendre hommage. Mais après
tout, c’est sûrement ça le plus simple, de vous retrouver tous ensemble réunis dans ces
quelques mots, chargés d’émotion, témoins de l’importance de votre contribution à mon
cheminement.
Et que ne durent que les moments doux, durent que les moments doux.C h a p i t r e
1
Introduction
« Instead of trying to produce a programme to simulate the adult mind, why
not rather try to produce one which simulates the child’s ? If this were then
subjected to an appropriate course of education one would obtain the adult
brain. [...] Our hope is that there is so little mechanism in the child brain
that something like it can be easily programmed. We have thus divided our
problem into two parts. The child programme and the education process.
These two remain very closely connected. We cannot expect to find a good
child machine at the first attempt. One must experiment with teaching one
such machine and see how well it learns. » [Turing, 1950]
La quête qui anime une partie de la communauté organisée autour de l’étiquette
intelligence artificielle à laquelle nous nous rattachons, est de réussir à doter des systèmes
artificiels de mécanismes cognitifs pour permettre leur développement propre.
Cette quête remonte loin dans l’histoire humaine, mais se matérialise beaucoup plus
concrètement il y a une soixantaine d’années de cela, dans l’émulation transdisciplinaire
et la réalisation à venir d’une machine universelle de calcul. Avec elle, de nombreux
développements scientifiques ont émergé, s’inscrivant en premier lieu dans une tradition
de recherche à la fois en robotique pure, et parallèlement en informatique pure,
pour enfin, beaucoup plus récemment, converger pour partie vers une certaine forme de
réunification du corps et de l’esprit.
56 CHAPITRE 1. INTRODUCTION
Héritage épistémologique
Les travaux que nous avons menés au cours de cette thèse rencontrent des disciplines
connexes à la science informatique. Nous pensons que c’est d’autant plus important
dès lors que le problème dont il s’agit est d’essayer de comprendre et de modéliser le
fonctionnement de la cognition.
Les disciplines qui traitent de cette problématique, apportent des réponses diffé-
rentes dans la mesure où leurs fondements théoriques diffèrent. Un découpage grossier
nous permet de distinguer trois positions notables dans les sciences de la cognition.
La position matérialiste, plutôt issue des neurosciences, qui argumente en faveur de
l’identité forte entre états mentaux et états physiologiques. En opposition, on trouve
la position internaliste et fonctionnaliste, qui défend la thèse d’une identité faible
entre états mentaux et états cérébraux, lui préférant une équivalence fonctionnelle basée
sur la notion de représentation, issue d’une position encore majoritaire en psychologie
et largement relayée par l’informatique. Enfin, au-delà de l’opposition classique entre
ces deux positions, on trouve l’émergence du paradigme énactiviste, qui affirme une
relation dynamique et circulaire entre ces états, se basant notamment sur les notions
de couplage structurel et de clôture opérationnelle, censés guider l’émergence d’un
comportement fondamentalement adapté, en tant que stabilisation résultant d’une
confrontation directe et permanente à l’environnement.
Nos recherches portent sur les connexions entre les deux dernières approches, et
ce, pour deux raisons principales. La première est que l’informatique demeure profondément
basée sur l’hypothèse fonctionnaliste, et la seconde que les théories énactives
ne permettent pas, dans les tentatives de formalisation actuelles, une implémentation
complète.
Positionnement et objectifs de la thèse
Comme nous l’avons déjà annoncé, nous estimons que l’objectif à atteindre est de
tout mettre en œuvre pour doter des systèmes artificiels de mécanismes cognitifs
pour permettre leur développement propre.
Par développement propre, nous entendons le processus individuel épigénétique
permettant à des systèmes artificiels de poursuivre leur évolution sous l’influence perpétuelle
de l’environnement dans lequel ils sont plongés. Nous omettons ici l’influence
des interactions avec l’environnement social sur le développement individuel.7
Par mécanismes cognitifs nous désignons les processus et méthodes qui vont
permettre l’adaptation. Celle-ci caractérise, à notre sens, à la fois l’apprentissage
de l’ajustement interne de l’individu en réponse aux perturbations extérieures, mais
également l’apprentissage du contrôle des conditions extérieures pour tendre intentionnellement
vers certains états, c’est-à-dire poursuivre des buts. Ce faisant, nous écartons
spécifiquement le biais anthropomorphique consistant à considérer comme cognitifs les
seuls comportements humains qui constituent notre référentiel naturel.
Par systèmes artificiels, nous circonscrivons l’application de nos travaux à des
machines fabriquées par l’être humain. Plus précisément, nous nous concentrons sur la
catégorie de machines capables d’effectuer des calculs et regroupées sous l’appellation
de machines de Turing, ou ordinateur. Il va de soi que nous excluons donc l’étude à
proprement parler des organismes vivants.
Par doter nous entendons déterminer, modéliser, implémenter, expérimenter et évaluer
les conditions et techniques nécessaires à l’observation extérieure de phénomènes
considérés comme adaptatifs et développementaux.
Pour tendre vers une telle réalisation, nous convoquons trois notions qu’il nous
semble nécessaire de mettre en relation. La première de ces notions repose sur le corps,
point d’ancrage dans la réalité physique, interface première et essentielle, et condition
sine qua non de l’interaction avec l’extériorité. La notion de développement constitue
le second aspect essentiel pour l’étude et l’implémentation de mécanismes de la
cognition, en ce sens qu’il est à la base de l’apprentissage, et donc de l’adaptation,
elle-même source de la résolution de problèmes, donc de la survie. Enfin nous nous
appuyons sur une troisième notion qui est celle de motivation. Celle-ci est utilisée
comme guide permettant justement, si ce n’est de s’affranchir de l’idée même d’extériorité,
au moins d’implémenter dans un système les moyens d’exploration nécessaires à
l’apprentissage de nouvelles compétences. Ces notions mises bout à bout, nous postulons
l’importance de considérer le corps comme variable essentielle du contact à l’environnement
et de l’émergence de la cognition par le biais de contraintes morphologiques,
ainsi que le développement, nécessaire à l’acquisition, la construction et la mémorisation
de connaissances, guidées par la motivation. En cela, il s’agit d’une avancée non
négligeable, puisque l’on passe de la prescription de résultats à la prescription de moyens.
Cette position nous pousse à rechercher un ensemble minimal de conditions, qui
organisées par un ensemble de techniques génériques d’apprentissage, permettent au
système considéré de tendre vers un comportement qui lui est propre. On parle de
trajectoire développementale pour souligner l’importance de cette notion.8 CHAPITRE 1. INTRODUCTION
Ainsi, pour redéfinir en d’autres termes le but poursuivi, nous pouvons dire que
nous travaillons à l’élaboration d’algorithmes de boucles de contrôle censées
permettre de révéler les potentialités sensorimotrices du corps du robot sur
lequel on les expérimente. Le fait de nous restreindre à une phase purement sensorimotrice
ne constitue qu’une étape préliminaire mais essentielle pour comprendre au
mieux l’impact de la modélisation sur le corps considéré. L’étude précise et exhaustive
du fonctionnement d’un modèle basé sur les trois notions développées plus haut en
constitue la première étape.
Réalisations et contributions
Cette thèse décrit une modélisation formelle générique d’un système motivationnel
dans la continuité des travaux présentés par Baranes [2011]. Nous considérons un
agent doté de capacités sensorimotrices qui lui sont propres : un espace sensoriel et
un espace moteur. Le modèle repose sur une exploration par babillage sensorimoteur
permettant l’apprentissage du contrôle de coordinations sensorimotrices. En théorie, ce
babillage peut s’attacher soit à l’exploration de l’espace moteur, soit à celle de l’espace
sensoriel. En pratique, de récents développements ont montré que la seconde option,
à savoir l’exploration d’un espace des buts, conduit à une expérience d’apprentissage
plus efficace [Rolf et al., 2010; Baranes et Oudeyer, 2013]. Cette supériorité est d’autant
plus vérifiable quand l’agent doit apprendre des coordinations sensorimotrices dans un
espace moteur fortement redondant et de grandes dimensions, pour lequel de multiples
commandes motrices peuvent résulter en une seule conséquence dans l’espace observable.
C’est une approche connue sous la dénomination de Goal-Babbling Exploration
[Baranes et Oudeyer, 2010b; Rolf et al., 2010], dans laquelle nous inscrivons nos travaux
de thèse. Dans ce modèle, la première étape effectuée par l’agent consiste à choisir un
but dans l’espace d’exploration correspondant à l’espace sensoriel. Ensuite il s’agit pour
lui de trouver un moyen de parvenir à ce but en utilisant ses capacités motrices. Enfin
il va pouvoir actualiser les modèles de choix et d’atteinte d’un but.
Les contributions de cette thèse s’attachent à proposer des alternatives sur ces points
précis et d’en comparer l’efficacité en terme d’accélération de l’apprentissage. C’est le
cas par exemple pour la dernière étape, consistant à effectuer une structuration de
l’espace d’exploration. Par structuration, nous entendons une manière particulière
d’utiliser l’information acquise par l’expérience pour essayer de trouver des similitudes
et de repérer des niveaux de difficulté dans les compétences à portée d’apprentissage.
En pratique, cette structuration est basée sur la notion de progrès, et se matérialise par
un découpage de l’espace d’exploration en régions d’intérêt, dans l’optique de guider et
de réguler la complexité de l’apprentissage de nouvelles compétences. Le principal motif
guidant nos contributions à des formes alternatives de structuration est la limitation9
du modèle existant qui repose sur un processus récursif de régionalisation, c’est-à-dire
un développement sans remise en cause. La première idée consiste donc à dire qu’il
devrait exister un ratio à prendre en compte pour balancer au mieux le gain futur
en apprentissage, selon la quantité plus ou moins limitée d’information détenue. La
seconde idée repose sur la nécessaire introduction d’un assouplissement du processus de
structuration comme la remise en cause des découpes effectuées auparavant. La troisième
idée propose de remettre en cause le mécanisme de découpage en considérant un niveau
plus global et en appliquant une méthode de partitionnement. Enfin, au travers de la
quatrième contribution, nous remettons en question l’espace d’exploration tel qu’il est
fourni à l’agent, en proposant d’autres manières de le représenter.
Structure du présent manuscrit
La suite de ce manuscrit s’organise de la manière suivante. Nous débutons dans
le second chapitre par un l’état de l’art synthétique. La distinction opérée permet de
détailler les trois aspects précédemment cités, qu’il nous paraît nécessaire de prendre
en compte : le corps, le développement, et la motivation.
Dans le troisième chapitre, nous nous intéressons particulièrement à décrire une
formalisation théorique et opérationnelle d’un système motivationnel. Il s’agit de doter
la machine d’un mécanisme de base qui lui permet de générer des buts, en l’occurrence
des états de ses capteurs, et d’essayer de les atteindre grâce à des actions motrices. Cela
se réalise au travers d’une exploration de l’espace des buts, qui va être structuré par
l’agent en confrontation avec l’expérience. Cette structuration se fait par un découpage
récursif, et aboutit à la création de régions auxquelles est associée une valeur permettant
d’orienter la génération de buts vers des zones dites d’intérêt.
Le quatrième chapitre met l’accent sur les contributions apportées par nos travaux.
Diverses propositions théoriques sont mises en avant pour compléter et complexifier le
modèle existant présenté au chapitre précédent. Celles-ci concernent la modélisation
d’autres formes de structuration et s’organisent selon trois aspects. Nous formulons tout
d’abord des propositions alternatives pour paramétrer les restructurations locales, sans
toucher au mécanisme de découpe. Ensuite, nous introduisons une nouvelle manière
plus globale de régionaliser l’espace en nous basant sur une méthode de type classification
à base de grappes. Enfin, considérant le processus motivationnel comme essentiel,
nous opérons un remplacement de l’espace d’exploration par des formes alternatives,
à savoir transformer l’espace a priori en donnant une déformation de l’espace initial,
ou a posteriori en se basant sur les expériences vécues afin de mieux en représenter
la variance. Nous développons également l’idée d’une multitude de représentations
parallèles comme autant de formes de l’espace d’origine à explorer. Nous testons la10 CHAPITRE 1. INTRODUCTION
validité de toutes ces contributions théoriques dans le sixième chapitre, ce qui implique
le besoin d’un environnement pour mener des expérimentations.
C’est la raison pour laquelle le chapitre suivant vient mettre en valeur la plateforme
FIMO que nous avons développée dans le cadre de nos travaux. Même si, comme nous
l’avons évoqué, la nécessité première du développement de cette plateforme était de
pouvoir tester nos propres contributions, un soin particulier a été apporté pour faciliter
les expérimentations à une plus grande échelle, notamment celle de la communauté qui
nous concerne. Le fonctionnement et les différents aspects techniques sont présentés
dans cette partie, ainsi que l’utilisation et la visualisation des données expérimentales
recueillies.
Nous fournissons tout au long du sixième chapitre les résultats et les interprétations
des expérimentations menées. Cette partie, en tant que pendant pratique du modèle
motivationnel dans sa forme la plus simple, présenté dans le troisième chapitre, vient
donc avant tout étudier le fonctionnement complexe d’un tel modèle. D’autre part, il
s’agit également de se positionner pour explorer et analyser les contributions théoriques
proposées au chapitre quatre. C’est la raison pour laquelle nous y avons non seulement
testé des alternatives à certaines métriques proposées, mais également mené des
études paramétriques pour déterminer des optimisations de la boucle motivationnelle.
Les résultats présentés sont pour partie positifs avec des améliorations notables d’un
indicateur d’apprentissage, et pour une plus grande partie mitigés, ne montrant pas de
différence notable par rapport aux attentes. De ce dernier constat, nous proposons une
approche évolutionnaire pour optimiser de manière plus globale à la fois les paramètres,
mais également les métriques étudiées, les déformations de l’espace d’exploration ou
encore l’adaptation morphologique.
Enfin, nous concluons ce manuscrit en discutant l’approche motivationnelle, la mé-
thodologie employée, les résultats expérimentaux obtenus, et nous développons les pistes
de recherche à mener pour la suite de ces travaux.C h a p i t r e
2
État de l’art
2.1 Introduction
Mais d’où provient l’association, notons-le au passage quelque peu accrocheuse,
des deux termes de l’expression intelligence artificielle ? Il a fallu le terreau fertile
des nombreuses conférences Macy organisées à partir de 1946 et réunissant des chercheurs
de tous horizons pour que naisse cette expression si familière aujourd’hui. La
pluridisciplinarité intrinsèque de ces conférences n’est plus à rappeler ; la présence de
chercheurs aussi éminents et différents que William Ross Ashby (psychiatre), Gregory
Bateson (anthropologue), Heinz von Foerster (physicien), Kurt Lewin (psychologue),
Warren McCulloch (neurologue), John von Neumann (mathématicien), Walter Pitts
(logicien), Norbert Wiener (mathématicien), ou encore Claude Shannon (physicien),
parle d’elle-même. Ces conférences se sont tenues régulièrement jusqu’en 1953 et avaient
pour objet la mise en œuvre d’une science générale du fonctionnement de l’esprit. Elles
ont au final posé les pierres fondatrices de la cybernétique et des sciences cognitives.
C’est dans ce contexte, quelques années plus tard lors d’une conférence au Darthmouth
College pendant l’été 1956, qu’est officiellement né le domaine de recherche originellement
pluridisciplinaire de l’intelligence artificielle.
Toujours est-il que l’intelligence artificielle des années Darthmouth souhaitait avant
tout confronter les points de vue des chercheurs de tous horizons pour faire avancer ce
que l’on sait des mécanismes de la cognition 1 La cybernétique de Wiener et la seconde
1. Terme scientifique qui sert à désigner l’ensemble des processus qui se rapportent à la fonction de
connaissance.
1112 CHAPITRE 2. ÉTAT DE L’ART
cybernétique de von Foerster en étaient des ardents défenseurs. Ce n’est qu’une fois
l’euphorie dissipée que les chercheurs sont rentrés chacun dans leur laboratoire pour ne
plus se parler pendant quasiment un demi siècle. Le cognitivisme, partant de l’hypothèse
que la pensée est un processus de traitement symbolique de l’information, en détient
une grande part de responsabilité. Les mathématiciens et logiciens se sont quelque peu
imposés par rapport aux autres disciplines. Les psychologues et autres philosophes se
sont eux-mêmes laissé convaincre par la vision purement symbolique largement promue
à l’époque. A fortiori une très large majorité de chercheurs est aujourd’hui tout
à fait convaincue que le cerveau est une machine à traiter de l’information [Kempf, 1998].
En pratique on peut distinguer quatre objets de modélisation différents dans l’étude
des mécanismes cognitifs. Les trois premiers que représentent l’être humain, les animaux
et beaucoup plus récemment les plantes, ont été introduits dans cet ordre chronologique.
Historiquement, en effet, il s’agissait de reproduire les performances de l’être humain
en terme de raisonnement [Newell et Simon, 1963]. Puis ce n’est qu’un quart de siècle
plus tard que la recherche s’est tournée vers les animaux ; l’approche animat était
née [Wilson, 1985, 1991; Meyer, 1998]. Enfin depuis quelques années seulement, grâce
sans doute aux progrès en physiologie végétale, une petite communauté de l’intelligence
artificielle s’intéresse aux mécanismes cognitifs des plantes [Calvo et Keijzer, 2009].
Le quatrième objet d’étude est la cellule, qui se situe encore plus bas dans l’échelle
de la complexité, quoique bien souvent considérée comme déjà suffisamment complexe
par ses adeptes. Les études sur ce dernier objet ont, elles, émergé en parallèle dans les
années 1970, en provenance directe de la biologie, et restent pour grande partie liées
aux tentatives de formalisation de la notion de vivant [Maturana et Varela, 1980]. Cette
succincte distinction en quatre objets d’étude n’a pas pour but d’être exhaustive, elle
tient surtout lieu de présentation de l’évolution des ambitions du domaine de recherche
qui gravite autour de l’appellation d’intelligence artificielle.
Ce chapitre a pour objectif de nous permettre d’exposer les différentes visions liées
à l’intelligence artificielle. Il traite donc de trois points qui nous semblent cruciaux pour
décrire une partie du cheminement parcouru par la discipline et surtout expliquer le bienfondé
de nos travaux. Particulièrement, nous voulons donc absolument souligner
l’importance du corps, l’importance du développement et enfin l’importance
de la motivation pour l’étude et l’implémentation de mécanismes cognitifs
dans un système artificiel. Cela implique bien évidemment de présenter à la fois les
visions classiques, pour la plupart dérivées de l’informatique et ses aïeux, mais également
de présenter les alternatives qui ont permis de diversifier les points de vue sur la question
cognitive tout en travaillant à l’édifice d’une approche réunificatrice et fructueuse pour
les sciences de la cognition. Ces visions proviennent aussi largement de philosophes, de
psychologues et de biologistes que d’informaticiens et de roboticiens. L’un des objec-2.2. DE L’IMPORTANCE DU CORPS 13
tifs de cette première étape argumentative est de montrer que se restreindre à étudier
l’informatique lorsque l’on traite de l’intelligence artificielle n’a que peu de sens.
2.2 De l’importance du corps
Dans l’effervescence du Darthmouth College, les pionniers Minsky, McCarthy et
Shannon, fascinés par le potentiel de l’ordinateur, se concentrent sur le seul cerveau.
Ils se prennent à croire que les systèmes artificiels, par leur puissance de calcul, peuvent
se passer d’organes sensoriels pour être dotés de capacités cognitives aussi élaborées que
celles de l’Homme [Newell et Simon, 1963; Weizenbaum, 1966; Lindsay et al., 1980].
Ainsi au fur et à mesure, ce n’est plus le système nerveux central qui inspire le développement
des architectures de contrôle d’un système artificiel, mais plutôt l’ordinateur qui
impose sa nouvelle façon d’interroger et d’interpréter le cerveau 2
. La métaphore computationnelle
commence à prendre le pas. Nous allons montrer pourquoi et comment la
communauté de robotique développementale (cf. section 2.3.4) a peu à peu redécouvert,
accepté et promu l’importance du corps pour la cognition. Nous avons d’ailleurs pu aborder
l’importance de ce corps dans le contexte élargi de l’identité dans la modélisation
agent 3
[Di Loreto et Hervouet, 2012a,b].
2.2.1 Des interactions entre informatique et robotique
Si l’on cherche à identifier la source des développements d’une partie de l’intelligence
artificielle à l’heure actuelle, il est essentiel de rappeler l’importance du corps. Mais
l’intégration de cette notion, délicate et complexe à prendre en compte, a pris beaucoup
de temps. Ainsi ce n’est que depuis les années 1990 que l’étude des sciences de la cognition
est devenue beaucoup plus sérieusement un point d’articulation aux confluents
de multiples domaines dont deux manifestement essentiels à sa réalisation concrète que
sont l’informatique et la robotique.
Le calcul informatique
Depuis ses débuts, le corps n’a pas été une notion clef du développement de l’informatique.
Cela provient vraisemblablement du fait que, par essence, le calcul tel que
formalisé et abstrait en un système symbolique par les mathématiques et repris par
l’informatique, est désincarné. Cela signifie que même s’il est exécuté par une machine
2. L’analogie entre les mémoires vive – morte d’un ordinateur et les mémoires à court terme – long
terme identifiées dans le cerveau servent parfaitement bien ce propos.
3. Par agent, nous désignons toute entité réelle ou virtuelle, évoluant dans un environnement, capable
de le percevoir et d’agir dessus, qui exhibe un comportement autonome, lequel pouvant être vu comme
la conséquence de ses connaissances, de ses interactions avec d’autres agents et des buts qu’il poursuit
[Ferber, 1995].14 CHAPITRE 2. ÉTAT DE L’ART
physique, il n’a pas d’ancrage physique puisqu’il s’agit de manipuler des symboles à l’aide
de règles. De plus, dès le départ, l’intelligence artificielle a pris en compte un point de
vue omniscient pour effectuer la computation, trouvant opportun pour le programme de
connaître précisément et exhaustivement toutes les données du système. Ainsi, ils ont
appliqué ce principe à l’élaboration de leurs algorithmes. L’algorithme A?
, couramment
utilisé pour calculer le plus court chemin en terme de mouvement menant d’un point à
un autre un agent plongé dans un environnement, en est un exemple. Cet algorithme
ne repose pas sur le corps de l’agent qu’il est censé guider, mais sur une structure de
graphe, donc sur des données formalisées a priori, censées représenter les points de la
carte à parcourir. De plus, le meilleur chemin est calculé sur un graphe représentant
l’ensemble de la carte. Pour ces deux raisons, cet algorithme constitue un bon exemple
de la prédominance de l’esprit omniscient sur le corps ancré localement, même quand
on parle de questions telles que le déplacement impliquant directement le corps.
L’ancrage robotique
L’autre source venant se jeter dans le fleuve de l’intelligence artificielle est donc la
robotique. Les balbutiements de la robotique, telle qu’elle nous intéresse, peuvent trouver
leur naissance à cheval entre la fin du 19ème et le début du 20ème siècles, période charnière
si il en est, où la psychologie initie son détachement de la philosophie. C’est donc à
cette époque qu’apparaît l’intérêt de tester les mécanismes vivants par une modélisation
artefactuelle 4
. Les pionniers de cette approche sont donc des physiologistes (Pavlov,
Loeb) et des psychologues comportementalistes (tels Thorndike, Skinner, Watson). Les
proto-robots conçus présentent une différence majeure qui les distingue des automates
en ce qu’ils sont dotés de la notion de contexte : ils disposent de capteurs 5 qui constitue
l’interface avec l’environnement dans lequel ils sont plongés. Dès le début du 20ème siècle,
des interactions entre la robotique et les théories biologiques ont émergé, historiquement
destinées à des fins militaires [Miessner, 1912]. Dans ce cas précis, il s’agissait d’utiliser
les théories biologiques afin de créer des machines robustes disposant d’un semblant
d’autonomie, donc dans un souci d’efficacité. Il s’agit là des prémisses d’une mouvance
que l’on appellera la bionique 6 à partir des années 1960, et qui a influencé bon nombre
de contributions comme le présentent Guillot et Meyer [2008] et Floreano et Mattiussi
[2008].
4. Le terme artefactuel nous semble ici plus approprié qu’artificiel, notamment pour la raison qu’il
évoque davantage la notion d’artefact, soit d’objet physique construit par l’homme.
5. Des capteurs de trois types sont déjà à cette époque envisagés : enteroceptifs informant de l’état
extérieur, et interoceptifs ou proprioceptifs concernant l’intérieur du système.
6. Par contraction des termes biologie et technique, puis rétrospectivement électronique. Approche
parfois également appelée bio-mimétique ou qualifiée de bio-inspirée.2.2. DE L’IMPORTANCE DU CORPS 15
La réunificatrice cybernétique
Ainsi, si l’on observe attentivement la notion de corps dans ces deux domaines,
on remarque que là où l’intelligence artificielle se désintéresse de l’approche physique
du corps, la robotique, elle, se construit sur cette exacte notion. Là où l’intelligence
artificielle se focalise essentiellement sur les capacités de raisonnement, la robotique a été
fondée sur l’idée même du corps, des interactions physiques, et se base sur les principes
expérimentaux de la physique et de la mécanique d’une manière très grounded 7
.
C’est dans le sillage de la première et de la seconde cybernétique que l’on trouve
les traces de l’interaction des sciences du vivant avec les sciences de l’artificiel [Simon,
1996]. La cybernétique met en avant la poursuite d’un but comme mécanisme nécessaire
à implémenter dans une machine pour lui prêter l’intention du vivant. C’est avec
cette idée que naît également la notion essentielle d’état interne, et avec elle celles
de mémoire, d’apprentissage, donc d’anticipation. Les années 1940 voient l’apparition
des neurones artificiels [McCulloch et Pitts, 1943; Hebb, 1949], résolument tournés
vers une biologie formalisée par les mathématiques. En parallèle, se poursuivent de
multiples inventions : celle d’une machine dédiée à l’expérimentation de la notion
d’homéostasie [Ashby, 1940] ; celle d’une machina speculatrix sous la forme de tortues
illustrant le concept de réflexe conditionné [Walter, 1951] ; celle encore d’un renard électronique
équipé de cinq modalités sensorielles 8
et d’une mémoire à bande magnétique,
en constante construction d’un modèle sommaire de son environnement [Ducrocq, 1954].
Ces interactions se sont peu à peu densifiées pour parvenir à une certaine effervescence
dans les dernières décennies, et la validation de modèles théoriques à l’aide de
la robotique implique désormais une communauté transdisciplinaire conséquente. On
remarquera notamment les travaux mettant en exergue l’influence de la morphologie
sur le développement [Braitenberg, 1986; Pfeifer et Scheier, 1999; Pfeifer et Bongard,
2006; Pfeifer et Pitti, 2012] 9
, ou encore des initiatives s’intéressant à la validation
d’hypothèses sur l’émergence de capacités de plus haut niveau comme le langage écrit
7. N’ayant pas l’intention de dégrader le sens de ce mot anglais, ni l’inventivité nécessaire à la
formation d’une traduction, nous préférons conserver la version originale.
8. Ces cinq modalités sensorielles correspondaient aux cinq sens présents chez les animaux (visuel,
auditif, olfactif, tactile et vestibulaire) et étaient extrêmement impressionnantes pour l’époque.
9. Par ailleurs et remarquablement, Braitenberg [1986] verbalise et expérimente déjà l’idée selon
laquelle on pourrait expérimenter des théories psychologiques, en utilisant la notion de synthetic psychology.
Ce dernier a mis au point des véhicules illustrant la possibilité d’obtenir un robot montrant
un comportement complexe à partir d’un câblage sensorimoteur rudimentaire. En utilisant des capteurs
basiques (proximité, lumière, etc.) reliés à des moteurs sans autre possibilité que par inhibition ou
excitation. Ces véhicules démontrent simplement comment obtenir un comportement mobile cognitif
dès lors qu’un corps est combiné avec un environnement particulier.16 CHAPITRE 2. ÉTAT DE L’ART
[Steels et McIntyre, 1999] voire oral [Oudeyer et Kaplan, 2006].
De plus, la multiplication des interactions entre la robotique et les sciences de l’esprit
et du comportement amène une validation mutuelle des modèles des deux parties, permettant
leur progression conjointe. En effet, la dynamique expérimentale qui consiste
à prendre en considération les théories développées in vivo pour les implémenter in silico
permet de donner une dimension bilatérale à la démarche expérimentale classique.
L’implémentation de modèles théoriques peut permettre, dans le cas idéal, de valider
le modèle en vérifiant qu’il permet bien de reproduire les conditions suffisantes pour
l’observation du phénomène. Quand ce n’est pas le cas, il est possible d’expérimenter de
nouvelles conditions du côté du modèle opérationnel qui, si elles amènent des résultats
concluants, vont permettre d’amender le modèle théorique original.
2.2.2 L’encorporation et ses controverses
Ces différents développements ont permis, dans les années 1990, de mettre au jour la
notion d’encorporation 10. En soi, cette notion théorise l’idée selon laquelle les fonctions
cognitives ne sont pas des réalités distinctes du corps et du monde, mais des éléments de
contrôle d’activités incarnées [Clark, 1997]. Il s’agit de mettre en avant la dépendance
du développement des fonctions cognitives au sein d’un corps physique disposant de
certaines propriétés qui lui sont propres, plongé dans un environnement à la fois social
et culturel.
Ziemke [2001] explique très bien que cela fait seulement une quinzaine d’années
que l’encorporation est réellement considérée comme une caractéristique essentielle et
nécessaire des organismes vivants. De plus en plus de chercheurs ont tenté d’étudier la
nécessité de cette cognition incarnée (par exemple Pfeifer et Scheier [1999]; Varela et al.
[1991]; Clark [1997]). Ziemke montre également que malgré ce consentement généralisé,
la robotique en tant que telle demeure bloquée dans un dualisme matériel / logiciel 11
.
Il convoque comme explication le fameux Chinese Room Argument [Searle, 1980] en
précisant que celui-ci demeure non résolu. L’argument de Searle soutient, en bref, que la
pure manipulation désincarnée de symboles ne saurait être authentiquement considérée
comme une forme supérieure de compréhension intelligente 12. Ziemke [1997] montre
bien que la vision cognitiviste — c’est-à-dire concevoir l’esprit comme un simple outil
10. Nous avons choisi de défendre ce terme pour traduire le concept d’embodiment, même si le terme
d’incarnation est parfois utilisé malgré sa connotation religieuse.
11. Ou pour reprendre ses propres termes, « largely ’stuck’ in the old distinction between hardware
and software ».
12. « Je ne connaissais rien [en 1971] à l’intelligence artificielle. J’ai acheté un manuel au hasard,
dont la démarche argumentative m’a sidéré par sa faiblesse. [...] L’argument était qu’on pouvait raconter
une histoire à un ordinateur et qu’il était capable ensuite de répondre à des questions relatives à
cette histoire bien que les réponses ne soient pas expressément données dans le récit. L’histoire était la2.2. DE L’IMPORTANCE DU CORPS 17
computationnel dont la seule capacité serait de manipuler symboles et règles en dehors
d’un ancrage physique — est encore prégnante dans la communauté.
Par ailleurs, une forme réactualisée de cet argument de la chambre chinoise a été
proposée par la suite par Harnad [1990] sous la dénomination de Symbol Grounding
Problem. Celui-ci avait pour but de questionner la communauté de l’intelligence artifi-
cielle mais d’une façon plus précise : un agent artificiel pourra-t-il un jour être capable
de développer une aptitude autonome à la sémantique qui lui permettrait d’établir son
propre réseau sémiotique connectant ses propres symboles à l’environnement dans lequel
il évolue ? 13. Beaucoup de travaux ont depuis été menés sur ce thème de recherche pour
explorer les capacités d’un système situé et incarné à définir sa propre sémantique, que
ce soit seul ou de manière sociale [Ziemke, 1997; Steels et McIntyre, 1999; Cangelosi et
Parisi, 2002; Cangelosi, 2004; Vogt, 2005; Taddeo et Floridi, 2005; Steels, 2007, 2008].
Cela fait écho au propos de Dreyfus [1984], qui dénonçait déjà quelques années
auparavant la sérieuse limitation des ordinateurs à qui les programmeurs doivent fournir,
en plus des programmes écrits, le sens des symboles à manipuler composant ces
programmes. Cet argument avançant le problème d’associer a priori la sémantique et
l’opérationnel depuis l’extérieur du système symbolise parfaitement l’approche classique
que l’intelligence artificielle n’a pas su ou n’a pas voulu prendre en considération. Plus
tard, les Deep Blue puis Deep Fritz ont su montrer leur capacité à vaincre des champions
du jeu d’échecs, mais en se basant essentiellement sur les fantastiques capacités
de calcul permettant d’énumérer un maximum de coups possibles en un minimum de
temps. Mais plus généralement, il est important de préciser qu’il s’agit des méthodes
mises en œuvre en intelligence artificielle à cette époque que Dreyfus [1984] dénonce
avant tout. En s’inscrivant dans une tradition phénoménologique 14, il considère que
l’approche cognitiviste n’est ni crédible ni viable pour modéliser des phénomènes réellement
qualifiables de cognitifs. Il invoque notamment la contradiction intrinsèque d’une
psychologie cherchant à extraire l’être humain de son contexte dont le mouvement
cognitiviste fait implicitement la promotion en souhaitant objectiver le comportement
humain et à le soumettre à un ensemble de lois scientifiques. Dreyfus dénonce donc
suivante : un homme va au restaurant, commande un hamburger, on lui sert un hamburger carbonisé,
l’homme s’en va sans payer. On demande à l’ordinateur : “A-t-il mangé le hamburger ?”. Il répond par
la négative. Les auteurs étaient très contents de ce résultat, qui était censé prouver que l’ordinateur possédait
les mêmes capacités de compréhension que nous. C’est à ce moment-là que j’ai conçu l’argument
de la chambre chinoise. » [Searle, 2000]
13. « How can the semantic interpretation of a formal symbol system be made intrinsic to the system,
rather than just parasitic on the meanings in our heads ? How can the meanings of the meaningless
symbol tokens, manipulated solely on the basis of their (arbitrary) shapes, be grounded in anything but
other meaningless symbols ? » [Harnad, 1990]
14. La phénoménologie est un courant philosophique qui se concentre sur l’étude des phénomènes et
de l’expérience vécue. Les grands noms du domaine sont Husserl, Heidegger, Ricœur ou Merleau-Ponty.18 CHAPITRE 2. ÉTAT DE L’ART
la tentation de prendre des possibilités de représentation pour des principes absolus.
Toutefois, même si ses critiques sont sévères, Dreyfus n’en demeure pas pour autant
fondamentalement opposé à la possibilité de créer une intelligence artificielle, mais
promeut une vision plus incarnée, arguant qu’il faudrait doter la machine en question
d’une manière d’être humaine, d’une morphologie plus proche de celle de l’être humain,
et d’un mécanisme d’acculturation 15 proche du nôtre. Nous verrons que cette façon de
concevoir l’intelligence artificielle, précurseuse et à contre-courant, qui promeut un mé-
canisme développemental fort, sera reprise par la suite. C’est ce que nous développons
dans la section 2.3.
D’autres controverses sur les possibilités de l’intelligence à se matérialiser dans une
machine ont émergé pendant les soixante années d’existence de cette discipline. Pour en
avoir un aperçu plus complet, on se reportera à d’autres ouvrages comme Bolo [1996] ou
Ganascia [2007] qui se proposent de répondre point par point à bon nombre d’entre elles,
ou encore Ganascia [2010] qui explore une épistémologie de l’intelligence artificielle.
2.2.3 L’approche animat
Ces considérations biologiques et philosophiques ont finalement réussi à pénétrer
les recherches en intelligence artificielle. Cela s’est fait au travers d’un renouveau de
la communauté de recherche, autour notamment de chercheurs comme Rodney Brooks,
sous l’appellation de l’approche animat 16 comme le relatent Meyer [1998] et Guillot
et Meyer [2008]. À la fin des années 1980, Brooks « brave le temple » en développant
une approche qui privilégie des robots adaptatifs à des robots intelligents. L’inspiration
provient directement des connaissances sur les insectes, alors que l’intelligence artifi-
cielle s’inspirait jusqu’ici de l’être humain 17. Cette approche s’oppose au traitement
symbolique promue par la majeure partie des travaux dans la communauté, rebaptisée
ironiquement pour l’occasion en Good Old Fashioned Artificial Intelligence (GOFAI),
y préférant le traitement de données brutes issues directement du corps, et la remise
en question de la notion de représentation [Brooks, 1990, 1991a,b]. Le mot d’ordre devient
de résoudre des problèmes réels en étant réellement situé et incarné dans le monde.
15. Notion sociologique qui renvoie au processus par lequel un individu apprend les modes de comportements,
les modèles et les normes d’un groupe de façon à être accepté dans ce groupe et à y participer
sans conflit (TLFi, site du CNRTL).
16. Employée pour la première fois par Wilson [1985], que l’on trouve également sous l’appellation
nouvelle intelligence artificielle par Brooks [2002]
17. Ceci sous l’influence notable de Dennett [1978] qui proposait de réaliser une créature robotique
complète, en l’occurrence un iguane, qui puisse et doive se confronter avec la complexité de l’interaction
autonome avec un environnement réel, plutôt que des simulations isolées de facultés cognitives individuelles.
Dennett explique qu’il s’agit d’une étape nécessaire pour pouvoir approcher les complexités de
l’intelligence humaine.2.2. DE L’IMPORTANCE DU CORPS 19
Avec cette volonté de renouveler l’héritage d’une approche symbolique trop lourde,
Brooks [1986] développe l’architecture de subsomption. Celle-ci renverse littéralement
le fonctionnement des robots de l’époque en horizontalisant leur comportement, promouvant
ainsi une liaison plus directe entre la composante sensorielle et la composante
motrice, et court-circuitant le traditionnel schéma de raisonnement et de planification
(cf. figure 2.1). En pratique, un comportement parmi tous ceux disponibles prend le
pas, et subsume, c’est-à-dire inhibe les autres. À titre illustratif, le changement de
pensée radical qui s’opère grâce à cette architecture dite de subsomption réside dans
une déclaration de Brooks lui-même expliquant que « le monde est son propre meilleur
modèle » : il signifie par là l’impossibilité pour le modélisateur de prendre en compte
de manière exhaustive l’ensemble des contraintes possibles et d’anticiper de manière
complète et certaine le fonctionnement d’un système artificiel selon son encorporation 18
.
actionneurs
contrôle moteur
exécution
planification
modélisation
perception
capteurs
capteurs
agir
explorer
éviter
bouger
...
actionneurs
Figure 2.1: Schémas d’une architecture robotique traditionnelle (à gauche), et celle
d’un animat (à droite), dite de subsomption, développée à l’origine par Brooks [1986].
Illustration adaptée d’après Meyer [1998].
Trois mots-clefs peuvent permettre de circonscrire et de mieux comprendre l’ambition
de ce courant de recherche animat.
1. Le premier d’entre eux est l’autonomie et prévoit de doter la machine de besoins
et/ou de motivations souvent d’inspiration biologique et parfois psychologique ;
2. d’autre part, s’énonce clairement le besoin pour des machines respectant l’approche
animat, d’être situées et incarnées, ou dit autrement d’avoir la capacité de
s’enraciner dans des boucles sensorimotrices induites par l’interaction avec un
environnement dans lequel elles seraient plongées ;
18. En version originale, cela donne : « [...] the world is its own best model. It is always exactly up
to date. It always has every detail there is to be known. The trick is to sense it appropriately and often
enough. » [Brooks, 1990].20 CHAPITRE 2. ÉTAT DE L’ART
3. enfin, ces machines doivent également être adaptatives, c’est-à-dire dotées de
capacités d’apprentissage et d’évolution au sens large pour pouvoir survivre dans
cet environnement.
Pour résumer, cette approche s’est remise à marcher sur les traces de l’approche
proto-robotique développée plus de vingt-cinq années auparavant. Surtout, c’est grâce
à cette approche que s’effectuera la redécouverte des inspirations biologiques qui avait
déjà animée et fait la force de ce courant à cette époque, notamment grâce au concept
de niche écologique étroitement liée à l’encorporation, donc au corps.
2.2.4 Le mouvement du corps
Si l’on prend du recul, on trouve des recherches menées dans d’autres disciplines,
plus proches de l’étude des êtres humains, qui tendent elles aussi à donner du crédit à
l’importance du corps. Les travaux de Nikolai Bernstein par exemple, constituent un réel
tournant dans l’importance donnée au mouvement. Constatant la complexité du corps
humain, constitué de centaines d’articulations, d’os et de muscles, il s’est interrogé sur la
cohérence et coordination qui semblent accompagner chaque mouvement, se demandant
comment le cerveau pouvait gérer cette extraordinaire complexité. La réponse est, selon
lui, qu’il ne le fait pas à un si bas niveau, mais qu’il traite de patrons ou synergies,
c’est-à-dire des liaisons d’ensemble de muscles fonctionnant de concert [Bernstein, 1967].
De plus, une fois le système moteur assemblé pour une tâche, ce sont les propriétés
mécaniques des membres et du corps en général qui sont exploitées. Comme le ressort
oscille naturellement sur des trajectoires régulières, le patron du mouvement du corps
ne nécessite pas d’être explicitement configuré puisque pour grande part il émerge de
ses propriétés naturelles. La marche en constitue un exemple frappant puisque le fait de
ramener l’une des deux jambes à l’avant pour initier le prochain pas se fait de manière
quasi passive. En ce sens, Bernstein disait que ce n’est pas tant le système nerveux
qui donne des ordres aux muscles, que la dynamique du mouvement qui
donne des ordres au système nerveux.
Ainsi, les enfants doivent apprendre la dynamique de leur corps, les forces de changement
qui produisent et accompagnent chaque mouvement dans chaque situation. Pour
apprendre à marcher, les enfants doivent apprendre à gérer les interactions complexes
entre les mouvements des jambes, le centre de gravité du corps et la surface foulée. Ces
modalités ne peuvent pas être comprises à l’avance, mais doivent être assemblées grâce
à l’expérience. Sachant qu’un guide possible de l’exploration et de l’apprentissage est
la recherche du mouvement efficace, énergétiquement parlant. C’est d’ailleurs ce qu’ont
cherché à montrer les recherches menées dans les années 1990 sur la marche dynamique2.3. DE L’IMPORTANCE DU DÉVELOPPEMENT 21
passive. McGeer [1990] présente par exemple un robot ne disposant d’aucun moteur ni
d’aucun système de contrôle. C’est essentiellement la gravité et le couplage des jambes
qui forment un ensemble de contraintes permettant de stabiliser le processus de la
marche en s’appuyant sur des mécanismes purement passifs. Des exemples plus récents
viennent appuyer l’importance du facteur morphologique comme permettant de donner
à l’interaction homme-robot une dimension à la fois intuitive et émergente [Oudeyer
et al., 2011].
D’autre part, pour illustrer l’importance du rôle de la mémoire du corps, on peut
citer l’erreur A-pas-B, expérimentation menée sur des enfants par Smith et al. [2003].
Quand les enfants doivent atteindre plusieurs fois une cible en particulier parmi deux, ils
construisent une mémoire de repérage de cette cible, qui inclut également la sensation
des bras et de la posture générale, qui influence la prise de décision future. En effet, les
processus traditionnellement considérés comme purement cognitifs se révèlent altérés par
le mouvement et la mémoire de ce mouvement. Ce phénomène, appelé persévération,
constitue un mécanisme développemental important en tant que mémoire de l’action,
permettant au bébé d’être capable d’utiliser à nouveau un mouvement découvert.
2.3 De l’importance du développement
De la même manière que nous avons montré l’importance du corps dans la section
précédente, nous voulons montrer l’importance du développement dans la mise en œuvre
et l’implémentation des mécanismes cognitifs. Nous proposons donc un tour d’horizon
des différentes approches qui en circonscrivent les contours.
2.3.1 De la génétique à l’épigénétique
D’un point de vue biologique, le développement représente réellement un aspect
important des êtres vivants. Nous allons nous attacher ici à la description des principaux
mécanismes du développement cognitif du jeune enfant, en nous basant sur les travaux
présentés par Houdé et Leroux [2013].
Tout d’abord il est essentiel de bien dissocier les trois niveaux de développements
envisagés quant à l’étude de l’enfant : le niveau épigénétique, le niveau phylogénétique
et le niveau microgénétique. Le premier décrit le développement de l’individu à partir
de sa naissance. Le second décrit le développement au niveau de l’espèce, c’est-à-dire
l’ensemble des individus appartenant à une même famille et partageant la quasi-totalité
de leur génome. La troisième enfin concerne directement l’apprentissage ou la résolution
d’une tâche particulière.22 CHAPITRE 2. ÉTAT DE L’ART
Le niveau qui nous intéresse ici est le premier, à savoir le développement de l’individu.
On retrace couramment le début des études sur la psychologie du développement de l’enfant
avec les travaux de Piaget [1936]. Celui-ci, récusant tout autant l’empirisme, selon
lequel tout proviendrait de l’expérience par association et habitude, que l’innéisme qui
explique tout par des structures innées, propose une théorie intermédiaire. En opérant
un rapprochement avec l’épistémologie, c’est-à-dire la construction des connaissances
qui produit une science, cette théorie postule que les structures intellectuelles ont
une genèse qui leur est propre et se construisent progressivement dans le cadre d’une
interaction individu–environnement. L’action y est essentielle sur les objets, mettant
en avant les mécanismes de manipulation, d’exploration et d’expérimentation, rendant
l’individu acteur de son propre développement.
Un exemple assez frappant de l’importance du développement épigénétique est l’existence
de jumeaux monozygotes. En effet, dans ce cas particulier, deux embryons se développent
à partir d’un unique œuf fécondé, disposant donc du même génome. Néanmoins
cela n’a pas pour incidence directe de développer deux êtres strictement semblables,
que ce soit au niveau phénotypique ou psychologique, même si des similarités non né-
gligeables peuvent apparaître.
2.3.2 Le constructivisme
Le constructivisme constitue une théorie prépondérante pour étudier et tenter d’expliquer
le développement de l’individu. Elle s’élabore dès le 18ème siècle, sur les bases
philosophiques posées par les travaux de Giambattista Vico, puis d’Emmanuel Kant. Ces
premiers travaux jettent les bases en postulant que la réalité objective est une limite
impossible à atteindre ; Vico considérant de plus que pour connaître vraiment une chose
il faut l’avoir faite. Cette théorie est ensuite reprise dans les années 1960 par Jean Piaget
pour expliquer la psychologie du développement de l’enfant en réaction aux théories
comportementalistes dominantes à l’époque (cf. section 2.4.2), considérées comme trop
simplificatrices. Pour Piaget, un individu dispose d’une capacité à maintenir sa propre
reconstruction de la réalité qu’il vit.
Stades de l’adaptation individuelle
Les théories de Piaget ont constitué une réelle avancée pour accéder à un certain
niveau de compréhension de la psychologie du développement cognitif de l’enfant,
encore essentielles aujourd’hui. Son héritage le plus important demeure son approche
épistémologique de l’enfance [Piaget, 1967]. Piaget a été le premier à considérer l’enfant
comme un savant en devenir, dont le développement cognitif serait une histoire des
sciences en raccourci.2.3. DE L’IMPORTANCE DU DÉVELOPPEMENT 23
Dans le modèle piagétien, l’émergence d’un comportement nouveau chez l’enfant
dépend de trois facteurs complémentaires, que sont la maturation d’une région, la
spécialisation interactive de plusieurs régions (ou connectivité), et l’apprentissage de
l’habileté. De plus, selon Piaget, le développement cognitif de l’enfant se fait par une
succession linéaire de stades. Pour les résumer, de 0 à 2 ans, ces stades visent à décrire la
construction progressive d’une « intelligence avant le langage essentiellement pratique,
c’est-à-dire tendant à des réussites et non pas à énoncer des vérités », en se basant sur
les réactions circulaires, c’est-à-dire la notion de répétition nécessaire à l’apprentissage.
Plus précisément, Piaget parle également d’un stade dit sensorimoteur développé pendant
la première année de la vie, qu’il subdivise en trois sous-stades, empruntant au
passage la notion de réaction circulaire à James Baldwin [Piaget, 1937].
1. Le premier représente l’exploration du corps par des actions hasardeuses répétitives,
dans la mesure où elles apportent un résultat intéressant.
2. Le second correspond à l’exploration de l’environnement extérieur et notamment
des objets toujours par des actions hasardeuses répétitives (acquisition de nouveaux
schèmes comme la préhension, et consolidation de schèmes antérieurement
acquis comme la succion). Ce second stade est également celui qui va pousser
l’enfant à essayer d’obtenir des résultats intéressants.
3. Le troisième stade va pousser l’enfant à introduire des variations dans la réité-
ration de ses expériences : le but n’est plus de retrouver un résultat intéressant,
mais bien de comprendre les différences en essayant de faire varier les paramètres
d’une expérience, à la manière d’un scientifique.
Le terme d’adaptation demeure en tous les cas extrêmement important dans le
processus de développement. De manière plus opérationnelle, Piaget explique que l’on
peut distinguer deux mécanismes que l’enfant emploie pour construire sa représentation
du monde. Tous deux se basent sur la notion de schème en tant qu’unité élémentaire de
l’activité intellectuelle, au centre du développement sensorimoteur et intellectuel, que
le bébé peut créer et manipuler au cours de son apprentissage. Le premier mécanisme
est l’accommodation qui va permettre la modification d’un schème déjà existant pour y
intégrer un nouvel objet. Cela correspond au fait que l’individu va se modifier lui-même
pour conserver sa cohérence à l’intérieur du milieu dans lequel il évolue. Le second
mécanisme est l’assimilation, qui permet d’intégrer un objet dans un schème déjà
constitué en le consolidant. Cela consiste pour l’individu à transformer le milieu pour
l’adapter à ses connaissances, en agissant sur ce milieu.24 CHAPITRE 2. ÉTAT DE L’ART
Toutefois, on a pu constater l’émergence de théories plus complètes et/ou complexes,
ainsi que des explications plus plausibles de certains mécanismes constatés par Piaget
lui-même, apparues par la suite. L’on y fait référence en parlant des théories néopiagétiennes.
On peut citer des chercheurs influents comme Renée Baillargeon (pour ses
travaux sur la faculté précoce d’apprentissage par la perception [Baillargeon, 2002]),
Robert Siegler (pour la remise en cause du modèle de développement en escalier lui
substituant un modèle de stratégies se chevauchant comme des vagues [Siegler, 1996]),
ou encore Olivier Houdé (pour la mise en évidence de l’importance du processus d’inhibition
de stratégies dans l’apprentissage [Houdé, 1995]).
Radicalisation
Par la suite, la vision constructiviste a été radicalisée par von Glasersfeld, qui réfute
la notion d’une représentation ontologique de la réalité, c’est-à-dire externe et indé-
pendante. Il propose alors le concept de viabilité, qui est une relation plus proche de
l’expérience située entre la connaissance et la réalité 19. Puis dans la fin des années
1980, Varela, Rosch et Thompson explorent le paradigme de l’énaction pour qualifier
le constructivisme intrinsèque dont font preuve les êtres vivants [Varela et al., 1991].
Cette théorie replace la notion de l’expérience unique d’un sujet au centre du problème
de la compréhension de l’intelligence du vivant, en postulant la co-émergence de la
cognition et du monde perçu au travers de la performativité du corps en action dans
l’environnement, comme nous le développons dans la section 2.3.3.
Apprentissage social
Par ailleurs, il est essentiel de rappeler l’existence d’un autre courant emblématique
et intimement lié au constructivisme : le socio-constructivisme. Développé entre
autres autour des recherches menées par Lev Vygotski. Ce dernier envisage le fait que
l’apprenant doit découvrir de lui-même le monde qui l’entoure, et ce par un processus
dans lequel l’apprenant et l’appreneur sont tous deux impliqués à parts égales. Il
soulignait l’importance de la collaboration, notamment autour de ses travaux sur la
zone proximale de dévéloppement. Cette zone, qui représente la distance entre ce que
l’enfant peut effectuer ou apprendre seul et ce qu’il peut apprendre uniquement avec
l’aide d’une personne plus experte, matérialise une forme de motivation extrinsèque
ou comment un congénère plus expérimenté, typiquement un adulte, peut stimuler
l’apprentissage d’un enfant en lui faisant découvrir de nouvelles façons de faire et de
nouveaux problèmes, prenant en compte la marge de progression de l’apprenant. Vygotsky
insiste également beaucoup sur le rôle du langage pour le développement cognitif.
19. Il considère comme viable toute action, toute structure conceptuelle, toute théorie, du moment
que celle-ci se révèle utile pour effectuer une certaine tâche, pour accomplir un but.2.3. DE L’IMPORTANCE DU DÉVELOPPEMENT 25
Du point de vue modélisation informatique, on trouve dans la communauté des
tentatives d’implémentation de mécanismes assimilables aux théories d’apprentissage
constructiviste social soulevées par Vygotsky, comme par exemple Mirolli et Parisi [2011],
ou bien Lindblom et Ziemke [2002] pour ce qui concerne l’importance du langage dans
l’acquisition de fonctions cognitives de plus haut niveau, ou encore Nguyen et Oudeyer
[2013] pour l’aspect sélection par l’agent de la meilleure stratégie d’apprentissage (individuel
ou social).
2.3.3 Le paradigme énactif
Les diverses réussites ainsi que les multiples échecs des réalisations en intelligence
artificielle ont permis au fil du temps de faire émerger une plus grande diversité de
points de vue. Après s’être laissée enfermer dans une conception descendante des fonctions
cognitives dont l’ordinateur constitue la métaphore emblématique — celle du
traitement centralisé d’un cerveau qui programme et d’un corps qui exécute — d’autres
propositions ont été développées.
A contrario, celles-ci tendent à unifier plutôt qu’à séparer, dans une approche plus
complète d’un organisme placé dans un environnement. Car si finalement, comme nous
l’avons montré plus tôt, le corps a son importance, et qu’il s’agit d’une théorie de plus
en plus largement acceptée en tant que prérequis à toute forme de développement de
la cognition, nous n’avons rien dit sur la forme que cela pouvait prendre. Le corps
importe beaucoup, mais dans quelle articulation est-il imbriqué avec ce qui l’entoure ?
Dans une perspective systémique, une conception répandue considère ainsi le cerveau
comme un « système ouvert qui se construit dans et par ses interactions avec le monde
physique et social par l’intermédiaire de ses organes de perception et de production »
[Rochet-Capellan, 2007].
L’analogie du sous-marin
Reprenons l’analogie du sous-marin développée par Tabary [2005] pour introduire
la proposition énactive. Dans cette expérience de l’esprit, deux membres d’un équipage
— un officier navigateur et un capitaine — ont toujours été et évoluent encore dans
un sous-marin qui n’a jamais fait surface. Tous deux ignorent initialement tout de
l’environnement marin. Le premier en revanche dispose de très nombreux appareils
(gyroscope, sonars, etc.) dont des données bien structurées mais n’ayant initialement
aucune signification pour lui s’affichent sur des écrans de contrôle. Au fur et à mesure
que le sous-marin évolue dans l’océan, le navigateur apprend qu’une modification des
images sur certains écrans précède des évènements qu’il ne sait qualifier, mais qu’en tant
qu’observateur extérieur nous pourrions constater comme étant des heurts contre des
rochers. Toujours est-il qu’il apprend à informer le capitaine, qui à son tour, en testant26 CHAPITRE 2. ÉTAT DE L’ART
les divers leviers de commande qui s’offrent à lui, essaye d’adapter la vitesse du vaisseau.
Parallèlement, durant les périodes calmes, le capitaine appuie au hasard sur certains
leviers pour travailler de concert avec le navigateur à comprendre leur influence sur les
écrans de contrôle. Ils apprennent à distinguer deux cas : dans un cas, les images d’écran
se sont modifiées immédiatement après une action du capitaine ; dans un autre cas, les
images d’écran se sont modifiées sans que le capitaine n’ait rien fait. C’est précisément
l’avènement de cette distinction qui amène le capitaine et le navigateur à convenir d’un
nous pour qualifier les modifications du premier cas et d’un pas nous les modifications
du second cas. La foultitude des exemples dissipe les éventuelles confusions survenant
trop peu souvent pour faire coïncider une action du capitaine à un effet extérieur non
directement conséquent. S’en suit un apprentissage de plus en plus poussé, précis et
complexe. Le navigateur constate assez vite que tous les signaux ne se modifient pas
toutes nécessairement en même temps ni de la même façon. Peu à peu, le nous va
s’enrichir d’une connaissance de l’action de chaque bouton ou levier. Leur action est
innée, mais leur signification est apprise. L’équipage peut très vite affirmer l’existence
probable d’une réalité en soi, mais toutes les qualités attribuées à cette réalité sont
le fait d’une construction au contact de l’environnement d’expériences sensorimotrices
antérieures. Au mieux, l’équipage peut être conscient d’un système de relations bijectives
et/ou prédictives entre une modification des images sur les écrans, et
l’état immédiatement ultérieur du sous-marin, l’authenticité d’une réalité étant
purement contingente [Tabary, 2005].
L’inscription corporelle de l’esprit
Varela et al. [1991] proposent donc de concevoir la cognition comme phénomène de
co-construction de l’organisme et de son environnement. Ils positionnent leur proposition
comme une voie alternative aux deux visions antagonistes dominantes, leur reprochant
notamment d’être toutes deux basées sur la notion de représentation : la position dite
de la poule qui utilise la représentation pour reconstituer ce qui est extérieur (position
entièrement basée sur l’existence d’une réalité ontologique), et la position dite de l’œuf
qui l’utilise pour projeter ce qui est intérieur (position entièrement dépendante du système).
Face à ce constat, l’alternative proposée par les auteurs représente la notion
d’énaction qui se caractérise par une co-construction du sujet et de son environnement,
par une spécification mutuelle. La cognition n’est plus vue comme
une logique de lutte entre l’intérieur et l’extérieur, mais plutôt comme une action incarnée.
Cela signifie d’une part que la cognition est fondamentalement basée sur la notion
d’expérience du corps sensorimoteur plongé dans un contexte à la fois biologique, psychologique
et culturel. Toute connaissance est donc avant tout inscrite dans un contexte2.3. DE L’IMPORTANCE DU DÉVELOPPEMENT 27
sensorimoteur 20. Le corps est une composante essentielle de la cognition, il permet l’interaction
tactile, visuelle, sonore. L’énaction promeut une indissociabilité et une
co-évolution entre perception et action dans la construction permanente de
la cognition vécue On dit que le monde qui émerge avec les actions de l’individu est
énacté. Les deux points par lesquels les auteurs résument une formulation préliminaire
de l’énaction sont :
1. La perception consiste en une action guidée par la perception ;
2. Les structures cognitives émergent des schèmes sensorimoteurs récurrents qui
permettent à l’action d’être guidée par la perception.
D’autre part, la théorie de l’énaction suppose un changement de paradigme par rapport
à ce que les chercheurs en intelligence artificielle ont l’habitude de traiter. Les
auteurs de cette théorie expliquent que le développement de l’organisme par un couplage
structurel avec l’environnement s’apparente à une dérive structurale [Maturana
et Varela, 1994] 21, sans objectif particulier. Cela oblige donc à changer de paradigme
entre une vision entretenue en intelligence artificielle d’un programme orienté vers la
résolution d’une tâche explicite, à un programme non orienté, ou orienté vers son propre
développement. C’est précisément l’objet de l’étude menée dans la section 2.4 pour
montrer l’importance de la motivation dans le processus développemental.
2.3.4 La robotique développementale
L’une des mouvances se rattachant à l’importance du développement — prenant
le parti de l’intégrer explicitement dans son intitulé — qui s’est développé dans les
quinze dernières années et à laquelle nous nous rattachons clairement est la robotique
développementale. Nous en présentons les particularités ci-après.
L’analogie avec l’enfant
La robotique développementale est une discipline à mi-chemin entre la robotique et
l’intelligence artificielle, et qui cherche à appliquer des mécanismes issus de la psychologie
du développement de l’enfant (cf. 2.3.1) dans des machines. À ce titre, elle prend
volontairement à contre-pied le but principal de l’intelligence artificielle traditionnelle,
qui était au contraire de produire un robot adulte capable de parfaitement réaliser un
petit nombre d’actions. Il s’agit, pour cette mouvance, de reprendre à son compte la
20. Ou encore, comme le présente Olivier [2012] « Toute connaissance suppose la répétition mentale
d’un geste ».
21. Le concept de dérive est utilisé par Maturana et Varela [1994] en tant que dérive structurale en
l’appliquant à l’ontogénie — c’est-à-dire le développement individuel — et en tant que dérive naturelle
appliquée à la phylogénie — c’est-à-dire le développement au niveau de l’espèce.28 CHAPITRE 2. ÉTAT DE L’ART
citation d’Alan Turing présentée en introduction de ce manuscrit : « Instead of trying
to produce a programme to simulate the adult mind, why not rather try to produce one
which simulates the child’s ? » [Turing, 1950]. Mais la construction de cette robotique
développementale à contre-courant ne s’est pas faite toute seule. Elle est issue d’une
mouvance plus large développée à la fin des années 1980 et dont nous avons parlé précé-
demment. Mais la nouveauté apportée par la robotique développementale est d’insister
précisément sur la recherche d’une modélisation la plus simple possible pour promouvoir
une autonomie accrue. Elle propose de partir de la métaphore de l’enfant, pour qu’un
robot se développe de manière plus complète, grâce à des mécanismes d’apprentissage
génériques, à commencer par l’apprentissage sensorimoteur. Le temps n’est plus une
composante contre laquelle les chercheurs se battent, mais devient plutôt la composante
majeure du développement basé sur l’interaction du robot avec son environnement.
Ainsi, aux modus ponens et modus tollens du cognitivisme, s’oppose le modus vivendi
du post-cognitivisme sous les traits de l’approche développementale et constructiviste.
Le biais anthropomorphique et le paradoxe de Moravec
Les enjeux majeurs de la robotique développementale sont la limitation des biais de
modélisation que les chercheurs en intelligence artificielle ont tendance à imprimer dans
les agents qu’ils réalisent. Comme le soulignent à juste titre Blank et al. [2005], ce biais
anthropomorphique est inhérent à la modélisation. Les robots sont souvent programmés
pour effectuer une tâche particulière, qui s’avère être en général une tâche proprement
humaine, de la manière dont la ferait un humain. Mais rien ne dit que la modélisation
symbolique du comportement d’un robot peut et/ou doit se baser sur les capacités du
corps et de concepts strictement humains, qui sont peut-être inappropriées au corps et
à l’expérience du robot.
Dans le même esprit, on peut penser au paradoxe de Moravec, qui a joué son rôle
dans le développement de cette approche alternative. Une formulation de ce paradoxe
repose sur le constat de la focalisation sur le caractère rationnel des capacités humaines
liées à la logique, aux mathématiques considérés comme cognitivement difficiles, et sur
leur inefficacité quant à la réalisation de tâches plus quotidiennes, notamment sensorimotrices,
auxquelles est constamment confronté un être humain 22. Ce point de vue
est d’ailleurs approuvé et renforcé par Brooks dans différents articles. Brooks [2002]
22. « Encoded in the large, highly evolved sensory and motor portions of the human brain is a billion
years of experience about the nature of the world and how to survive in it. The deliberate process we
call reasoning is, I believe, the thinnest veneer of human thought, effective only because it is supported
by this much older and much powerful, though usually unconscious, sensor motor knowledge. We are
all prodigious Olympians in perceptual and motor areas, so good that we make the difficult look easy.
Abstract thought, though, is a new trick, perhaps less than 100 thousand years old. We have not yet
mastered it. It is not all that intrinsically difficult ; it just seems so when we do it. » [Moravec, 1988]2.3. DE L’IMPORTANCE DU DÉVELOPPEMENT 29
remarque lui aussi que la nature des tâches implémentées dans des machines dépend
directement de la nature des chercheurs qui les implémentent, c’est-à-dire spécifiquement
stimulantes à leurs yeux. Brooks [1990] constate également que l’aptitude à se
mouvoir dans un environnement dynamique, utilisant les capteurs fonctionnels à un
degré suffisant à la nécessaire réalisation de la vie était bien plus délicate et difficile
que les capacités de développement centrées sur le raisonnement symbolique, aussi impressionnantes
soient-elles. Brooks y conçoit une certaine forme de continuité dans le
développement sensorimoteur et le développement mental, qui sera très influençante
pour l’essor de la robotique développementale 23
.
Un double objectif
L’approche proposée par la robotique développementale émerge ainsi lentement tout
au long des années 1990, grâce aux travaux d’une petite communauté de chercheurs
comme Luc Steels ou encore Rolf Pfeifer. Elle prend ses racines dans le changement de
paradigme en robotique surtout survenu pendant les deux dernières décennies et l’avènement
d’une communauté de recherche centrée sur les même objectifs et partageant une
partie suffisante des méthodes. La robotique développementale était née. Comme nous
l’avons déjà expliqué, ce champ de recherche se situe à la confluence d’un certain nombre
de disciplines scientifiques à la fois théoriques et ingénieuriales : de la psychologie du
développement, des sciences cognitives, de l’intelligence artificielle, de la robotique, ou de
la philosophie. Un des fondements de la discipline repose dans la notion d’encorporation
qui considère que le corps est un élément constitutif essentiel dans la réalisation de la
cognition. La robotique développementale explique que le corps joue le rôle de spécifier
les contraintes de l’interaction entre l’agent et son environnement. De plus, la recherche
dans ce domaine est axée :
1. sur l’apprentissage sensorimoteur dans les tout premiers stades du développement,
2. et sur l’étape suivante, à savoir celle du développement social.
Elle vise à trouver des passerelles entre ces deux phases du développement de
l’humain. À la suite de Lungarella et al. [2003], Asada et al. [2009] propose un récent
tour d’horizon de ce jeune mais prometteur domaine de recherche.
Du point de vue qui nous intéresse tout particulièrement, et comme nous le montrerons
à la section 2.4, la robotique développementale travaille à l’élaboration d’algorithmes
de boucles de contrôle qui doivent permettre de révéler l’affordance
du corps du robot sur lequel on les expérimente dans l’environnement où ils
23. Florilège de citations : « [research was oriented towards whatever] highly educated male scientists
found challenging », « the things that children of four or five years could do effortlessly, such as visually
distinguishing between a coffee cup and a chair, or walking around on two legs, or finding their way
from the bedroom to the living room were not thought of as activities requiring intelligence ».30 CHAPITRE 2. ÉTAT DE L’ART
évoluent. Ce processus se doit d’être non supervisé. Nous pensons de plus que le défi
clef de la robotique développementale est d’identifier et d’implémenter des
mécanismes très bas niveau qui permettent un développement sur le long
terme. Moins ces mécanismes sont nombreux et moins ils se fondent sur des hypothèses
sur la nature des données qu’ils vont récolter par l’expérimentation, plus le système qui
se développe en les utilisant peut être considéré comme pertinent. Dans le cas de la robotique
développementale, nous nous intéressons tout particulièrement à l’apprentissage
sensorimoteur chez l’enfant, par l’exploration d’un corps anthropomorphe complexe. La
thèse à l’origine de cette vision et de cette discipline énonce que cette exploration ne
peut se faire qu’à travers un processus continu contrôlé par l’agent lui-même,
venant implicitement introduire l’importance de la notion de motivation.
2.3.5 Une perspective phylogénétique
Le dernier aspect qu’il nous semble fondamental à poser dans cette section dédiée
à la notion de développement réside dans la perspective phylogénétique. Par complé-
mentarité avec le développement individuel et social, le développement phylogénétique
est représenté par la manière dont les individus, appartenant à une même famille ou
espèce par certains critères d’observations externes — proximité du code génétique
ou des traits morphologiques par exemple — vont pouvoir présenter des variations de
certains traits ou caractéristiques. L’étude de l’héritage génétique par un processus de
sélection naturelle prend ses sources dans les travaux de Darwin [1859], et se prolonge,
en grand écart, par de beaucoup plus récentes théories sur la notion de dérive naturelle
[Maturana et Mpodozis, 1999], ou encore la remise en question de celle d’individu [Kupiec,
2008]. Mais dans ce large spectre, il est important de noter que la reproduction,
phénomène nécessaire à la perpétuation de la vie, est un mécanisme de transmission
fondamentalement indéterministe. Cela signifie que les caractères transmis de génération
en génération peuvent évoluer — on parle alors de variation — et ainsi altérer
profondément le rapport de co-construction des nouveaux individus engendrés avec leur
environnement au sens large.
Pour mieux appréhender le phénomène adaptatif engendré par effet de bord du
mécanisme de sélection naturelle, prenons quelques exemples. Il existe dans la nature
des animaux disposant de caractères anatomiques extrêmement variés, qui étant donné
qu’on peut les observer, ont nécessairement dû, au mieux leur conférer une meilleure
adaptation ou au pire ne pas les disqualifier. Il suffit par exemple d’observer les capacités
sensorimotrices de différents animaux pour constater tout à la fois leur diversité
et leur performance en tant que pur produit de l’évolution : la mouche et la fourmi du
désert disposent d’une vue extrêmement efficace ; le grillon est doté d’une ouïe toute
particulière grâce à des tympans placés sur les tibias ; le homard peut « sentir » par
chemotropotaxie, c’est-à-dire forme d’analyse chimique assez fine ; le rat dispose d’un2.4. DE L’IMPORTANCE DE LA MOTIVATION 31
sens du toucher extrêmement précis avec ses vibrisses au moins tout aussi utiles que ses
yeux [Guillot et Meyer, 2008].
Ces capacités sensorimotrices, parfois très éloignées de celles des êtres humains, pré-
sentent des avantages non discutables dans les environnements dans lesquels elles sont
instanciées. C’est précisément ce en quoi cet aspect du développement nous intéresse,
d’autant plus que depuis quelques années, des travaux ne cessent de mettre en évidence
l’importance de la morphologie dans le développement et l’apprentissage sensorimoteur,
trouvant un appui dans l’instanciation robotique de modèles computationnels [Pfeifer
et Iida, 2005; Pfeifer et al., 2005; Pfeifer et Bongard, 2006; Lapeyre et al., 2013]. Toutes
ces raisons nous ont nous aussi poussé à proposer, à la fin du chapitre 4 de contributions
théoriques, une perspective d’approche évolutionnaire pour notre cadre de travail sur
l’apprentissage motivationnel (cf. section 6.4).
2.4 De l’importance de la motivation
Après avoir présenté l’importance du corps et celle du développement pour l’étude et
l’implémentation de mécanismes de la cognition, nous nous attachons dans cette partie
à exhiber l’importance des mécanismes motivationnels pour le développement et l’apprentissage
sur le long terme 24. La question qui nous anime, et à laquelle la citation
ci-dessus fait écho, est la suivante : de quelle(s) manière(s) la notion de motivation
telle qu’étudiée en psychologie peut-elle être appliquée à un système
artificiel afin d’adapter continuellement son comportement en fonction de
son expérience, c’est-à-dire pour favoriser son apprentissage ? Cette question
est extrêmement vaste, et ne serait-ce que la formuler revient à constater l’ampleur de la
tâche. C’est pourquoi nous étudions ici le sujet de la motivation, d’où est tiré le modèle
motivationnel que nous adoptons à partir du chapitre 3.
2.4.1 La motivation in silico ?
À la lecture de l’ouvrage de synthèse en psychologie sur la compétence et la motivation,
coordonné par Elliot et Dweck [2005], il nous semble nécessaire d’opérer une
distinction importante. En effet, les théories liées à la notion de motivation ne sont clairement
pas toutes destinées à pouvoir être expérimentées in silico. Deux notions nous
semblent importantes pour mieux les appréhender et les caractériser :
24. « On se fait une grande affaire de chercher les meilleures méthodes d’apprendre à lire ; on invente
des bureaux, des cartes ; on fait de la chambre d’un enfant un atelier d’imprimerie. Locke veut qu’il
apprenne à lire avec des dés. Ne voilà-t-il pas une invention bien trouvée ? Quelle pitié ! Un moyen plus
sûr que tout cela, et celui qu’on oublie toujours, est le désir d’apprendre. Donnez à l’enfant ce désir,
puis laissez là vos bureaux et vos dés, toute méthode lui sera bonne. » [Rousseau, 1762]32 CHAPITRE 2. ÉTAT DE L’ART
1. niveau d’observation : à quel niveau l’observateur se situe-t-il ? C’est-à-dire quelle
est la part de construit que l’observateur suppose ou constate comme déja ancré
dans le sujet observé ?
2. formalisation : quelle place est faite à (ou pour) une formalisation de cette observation
? C’est-à-dire est-ce que le mode opératoire de la construction de l’état
observé est donné par la théorie ?
D’une manière générale, tout ce qui relève des besoins naturels, notamment au
sens biologique et physiologique du terme a pu donner naissance à des applications en
robotique, par régulation d’indicateurs prédonnés. En revanche les théories relevant
davantage du construit psychique et social ont été exclues car bien trop éloignées des
préoccupations des roboticiens. Dès que les analyses montent en complexité par une
analyse, notamment qualitative, il devient beaucoup plus difficile de les reproduire. La
part explicative dans les théories psychologiques constitue le cœur de la recherche, mais
l’explication s’arrête parfois trop loin de nos considérations bien plus bas-niveau en
termes de traitement de l’information. Car en réalité, pour nous qui nous intéressons
à l’exploration et l’acquisition de compétences sensorimotrices, l’unification du niveau
sensorimoteur avec les niveaux psychique puis social demeure une question complètement
ouverte.
D’ailleurs, si le niveau explicatif est un niveau extrêmement important, cela se traduit
avant tout dans notre discipline par le besoin de définir :
1. soit les opérations successives qui amènent à l’état expliqué ;
2. soit d’identifier les conditions nécessaires pour tendre vers cet état.
De notre propre avis, pour réussir à arriver à un état donné grâce au premier point,
il faudrait exhaustivement connaître une liste d’opérations successives à faire effectuer
par l’agent pour atteindre l’état désiré. La seconde en revanche consiste à doter l’agent
d’un nombre fini et potentiellement restreint de capacités, pour qu’apparaissent certaines
propriétés. Cette solution laisse davantage de place à l’émergence de phénomènes
imprévus, puisqu’il s’agit de contraindre l’espace à explorer et non d’imposer le chemin
à suivre.
Pour faire une analogie informatico-informatique, s’intéresser à la totalité des opérations
successives revient à promouvoir un langage purement impératif, quand s’intéresser
aux conditions nécessaires revient à promouvoir un langage plutôt déclaratif. Dans le
premier cas il s’agit d’arriver à un but précis en étant sûr et certain que la méthode employée
mène systématiquement à cet état. Dans le second il s’agit de donner un ensemble
de règles de développement permettant d’exhiber certaines propriétés. On comprend très
facilement que le second cas est potentiellement adaptable à n’importe quel type de faits.
Cela va clairement dans le sens de notre opinion, puisque comme nous le montrerons2.4. DE L’IMPORTANCE DE LA MOTIVATION 33
dans les chapitres à venir, une boucle motivationnelle instanciée dans un agent
incarné et situé doit permettre son développement propre en se basant pré-
cisément sur ses propres capacités sensorimotrices dans son environnement.
Pour ces raisons, nous ne retenons pour présentation dans cette section que les théories
qui nous semblent être en cohérence avec l’objectif d’expérimentation qui est le nôtre.
2.4.2 Le paradigme motivationnel en psychologie
Pourquoi l’individu agit-il ? Cette question a été posée en tout premier lieu par
les philosophes. Platon plaçait l’homme au sein d’une triade raison–coeur–appétit ;
Aristote préférait parler des passions qui animaient le comportement humain. Puis c’est
clairement la naissance de la psychologie en tant que discipline propre qui permet de
faire évoluer l’étude du comportement. C’est en effet au début du 20ème siècle qu’il faut
voir les premières bases de l’étude de la motivation en psychologie. Celle-ci se construit
sur l’étude de la notion d’instinct menée peu de temps avant par William McDougall
et William James. Il a été proposé depuis lors énormément de théories de la motivation
par les différentes générations de psychologues.
« La motivation désigne une hypothétique force intra-individuelle protéiforme,
qui peut avoir des déterminants internes et/ou externes multiples,
et qui permet d’expliquer la direction, le déclenchement, la persistance et
l’intensité du comportement ou de l’action. » [Fenouillet, 2012]
De cette proposition de définition générale, il faut surtout bien faire la distinction
entre la motivation qui reste un phénomène profondément interne, comparativement
à ses déterminants qui peuvent être à la fois internes mais aussi externes. De plus, le
terme de motivation en lui-même regroupe un ensemble de termes (but, besoin, envie,
désir, etc.), et existe surtout pour rendre compte de l’étude d’un même phénomène, bien
souvent multifactoriel, qui produit un comportement. De plus les effets et la motivation
appartiennent à l’une des quatre catégories suivante :
1. direction : la motivation oriente l’individu vers une certaine finalité ;
2. déclenchement : la motivation a pour effet visible de déclencher une modification
du comportement ;
3. intensité : la production d’un effort s’explique nécessairement par la présence du
force motivationnelle quelle qu’elle soit ;
4. persistance : l’adoption d’un comportement sur la durée peut tout à fait être34 CHAPITRE 2. ÉTAT DE L’ART
d’origine motivationnelle si et seulement si son maintien fait appel à l’exercice
volontaire 25
.
Ce qui nous intéresse tout particulièrement, c’est la relation qui lie la notion de motivation
à celle d’apprentissage. Pour le dire autrement, il s’agit d’expérimenter la notion
d’exploration dans le processus du développement, sous la forme du comportement. Nous
proposons d’étudier quatre théories à la fois compte-tenu de leur importance, mais également
de leur implémentabilité comme expliqué juste avant : les drives, l’équilibre par
optimalité, l’efficacité, et enfin l’autodétermination.
Notion de drive
Considérant que tout comportement est appris et non inné, deux grands principes
d’apprentissage par conditionnement ont été proposés par la psychologie comportementaliste
:
1. Le conditionnement classique qu’on trouve dans les travaux de Ivan Pavlov chez
le chien. Il consiste à associer par répétition un stimulus neutre et un stimulus
inconditionnel, jusqu’à atteindre le statut de stimulus conditionnel.
2. Le conditionnement opérant mis au point par Edward Thorndike puis Burrhus
Skinner à la même époque que le premier. Ici c’est la découverte par l’individu
lui-même d’une action amenant une récompense qui va le pousser à réitérer cette
action.
Dans les deux cas, les travaux mettent en évidence l’importance de la présence de
facteur motivationnel, comme par exemple la faim, mais décident de ne pas en tenir
compte puisque celui-ci entre en contradiction avec la vision boîte noire qu’ils revendiquent
comme nécessaire et préalable à l’étude des phénomènes comportementaux.
C’est à Clark Hull que l’on doit l’introduction du concept de motif (ou drive) dans
le champ de la psychologie, permettant ainsi de combler l’espace entre les deux théories
précédentes. Hull [1943] définit le drive comme une fonction énergétique, comme
un mobile, mais n’ayant pas de fonction directionnelle. C’est le besoin, c’est-à-dire formellement
l’insatisfaction d’une variable au sens large, qui va permettre l’activation
d’associations stimulus–réponse préalablement apprises. Cette théorie s’appuie sur une
vision homéostatique du fonctionnement comportemental, qui postule que la sensation
de déficit chez un individu déclenche des mécanismes dont l’objectif est le retour à
l’équilibre [Cannon, 1932]. Comme nous l’avons vu au chapitre précédent (cf. section
2.2.1), la notion de drive a été très largement reprise par les tenants de la cybernétique,
et constitue en tant que telle, la première forme de motivation jamais expérimentée in
25. On parle alors de volition comme une forme de motivation censée expliquer pourquoi l’individu
maintient dans la durée son action pour atteindre un ou plusieurs objectifs.2.4. DE L’IMPORTANCE DE LA MOTIVATION 35
silico. Cela a été rendu possible pour la simple et bonne raison que les drives étudiés sont
toujours de très bas niveau directement lié à la régulation de la valeur d’un capteur 26
.
Notion d’équilibre par optimalité
Hebb [1955] propose, en parallèle de la théorie du drive dominante à l’époque, la
théorie de l’optimum d’activation. Reprenant des travaux réalisés près de cinquante
ans plus tôt, son modèle postule que les individus sont à la recherche d’un optimum
d’activation plutôt qu’à une réduction des tensions. Cela passe par une régulation
permanente de l’excitation du niveau d’activité générale. Dans les deux cas de sur- et
sous-activation, les stimulations sont soit insuffisantes, soit interfèrent entres elles, ré-
duisant significativement les capacités d’apprentissage. C’est pourquoi l’individu serait
plongé dans une recherche d’un équilibre caractérisé par une activation optimale de
stimulations, comme un juste milieu idéal de son couplage à l’environnement.
Berlyne [1966] s’est particulièrement intéressé aux rapports qu’entretient la curiosité
avec l’attention et l’exploration. Dans le modèle qu’il met en place, il considère qu’un
individu cherche à conserver un état d’activation / stimulation / excitation optimal.
Pour ce faire, il va augmenter ou diminuer l’exploration d’une plus grande variété de
stimuli, ce qui est assimilé à de la curiosité. Quand elle est qualifiée d’épistémique, elle
est définie par un comportement d’exploration de connaissance censé réduire une lacune
ou un conflit entre des connaissances déjà assimilées.
Par ailleurs, il nous faut également étudier la notion d’autotélisme. Celle-ci prend
corps notamment à travers le flow, et représente une profonde absorption dans une
activité quelle qu’elle soit, que l’individu considère comme intéressante au plus haut
point. Comme le montre Csikszentmihalyi et al. [2005], l’implication dans l’activité est
telle que l’individu ressent une perte de repères temporels et de fatigue. La théorie
du flow est basée sur une symbiose entre le niveau de défi que représente l’activité
et les compétences que l’individu doit mettre en œuvre pour la relever. L’intérêt de la
personne autotélique n’est pas purement passif ni contemplatif mais implique un désir de
comprendre, une volonté de résoudre un problème. L’impression de sérénité et de clarté,
de savoir que l’activité est faisable, ou le fait d’être captivé dans le moment présent
sont autant d’aspects générés à l’intérieur de l’individu lui-même et qui caractérisent
le flow. Ce dernier est d’ailleurs souvent dénommé expérience optimale puisqu’il s’agit
de progresser dans un cadran où s’interfèrent les compétences acquises et requises pour
pratiquer l’activité. En ce sens, il s’agit bel et bien d’une forme particulière d’activation
optimale.
26. Néanmoins on peut tout à fait citer d’autres types de drive beaucoup moins expérimentables mais
tout autant intéressants, comme par exemple la réduction de la dissonance cognitive [Festinger, 1957].36 CHAPITRE 2. ÉTAT DE L’ART
Notion d’efficacité
White [1959] définit le concept de compétence comme la capacité d’un organisme à
interagir efficacement avec son environnement. C’est ce qu’il nomme la motivation d’effectance.
Dans ce modèle, la recherche perpétuelle du développement de compétences
constitue pour l’individu une activité intrinsèque. Celle-ci va le pousser à explorer son
environnement sans forcément qu’il y ait gain de compétence, uniquement pour le
plaisir que lui procure le simple fait de maintenir cette efficacité. C’est aussi ce que l’on
peut qualifier de besoin d’autonomie, dans le sens où l’individu va résister aux forces
externes pour tenter de subordonner les événements extérieurs à son influence propre.
Cette activité s’inscrivant dans la durée, elle fait partie de la catégorie des besoins
psychologiques de base, même si elle se différencie du drive par le fait qu’il ne s’agisse
pas de réduire un déficit mais plutôt de maintenir une efficacité.
Dans la même mouvance, Bandura [2003] décrit l’efficacité personnelle ou autoefficacité,
qui concerne la croyance que l’individu détient sur sa capacité à organiser
son comportement pour atteindre ses buts. Il ne s’agit pas directement des aptitudes
de l’individu perçues par un observateur extérieur, mais des évaluations par l’individu
lui-même de ce qu’il peut faire dans différentes situations. Il existe quatre sources d’informations
permettant la construction du sentiment d’efficacité personnelle : les expériences
actives de maîtrise (mesure individuelle de capacité), les expériences vicariantes (transmission
sociale de compétences par observation et imitation), la persuasion verbale et
enfin les états psychologiques qui servent à l’évaluation (vulnérabilité au dysfonctionnement).
La motivation est cognitive car l’individu cherche à déterminer les causes de ses
réussites et de ses échecs. Elle est également anticipatoire car elle repose sur l’expectation
de performances tout en étant guidée par des objectifs qui permettent à l’individu
d’ajuster comportements et stratégies. L’opération qui affecte le comportement en créant
des expectations qui anticipent les gains futurs est considérée comme un renforcement.
L’individu va systématiquement s’évaluer vis-à-vis de certains standards internes qu’il se
créé, processus qui va générer une auto-récompense quand il s’en rapproche. C’est la perception
d’une différence entre la performance et le standard qui créé une insatisfaction
motivant la correction du comportement. Dès qu’un standard est atteint, l’individu tend
à augmenter l’exigence de celui-ci, ce qui a pour conséquence de relancer le processus
motivationnel.
Notion d’autodétermination
Les premières mises en évidence d’une autodétermination ont été postulées par
Harlow et al. [1950]. Leurs études consistaient à observer la manipulation et la ré-
solution de puzzles par des singes rhésus, sans aucune récompense. Il s’agit là des
premières remises en questions des théories comportementalistes. Le fait que ces singes2.4. DE L’IMPORTANCE DE LA MOTIVATION 37
puissent, sans aucune forme de récompense, pratiquer cette activité ayant pour effet
un apprentissage et donc une diminution de l’erreur l’accompagnant, semble exhiber
une certaine motivation interne, désignée comme motivation intrinsèque. Cet aspect
a d’ailleurs également été souligné par des études postérieures, où par exemple Deci
[1971] reproduit l’expérience chez l’humain et montre que la récompense dans ce type
d’activité, à savoir toujours la résolution de puzzles, a pour impact de diminuer le
temps consacré à l’activité lors d’une phase de libre choix. Cela semble signifier que
la récompense n’est pas systématiquement un facteur motivant, et qu’elle peut même
avoir un impact négatif sur l’intérêt de l’individu.
Le terme d’autodétermination sera inventé par Deci et Ryan [1985]. Se basant à
la fois sur les notions de motivation intrinsèque et de régulation intégrée, cette théorie
postule l’existence d’un continuum d’autodétermination, allant de l’amotivation jusqu’à
la motivation intrinsèque à proprement parler. On définit généralement la motivation
intrinsèque comme le fait de s’adonner à une activité pour sa satisfaction inhérente
plus que pour une conséquence séparable identifiée ; c’est typiquement visible chez
les bébés, même si cela peut rester vrai chez les adultes. Dans ce cas, il s’agit d’une
activité effectuée simplement pour le plaisir de l’activité elle-même. Par opposition,
la motivation extrinsèque est le fait de s’adonner à une activité en vue d’atteindre
certains résultats, c’est-à-dire pour sa valeur instrumentale. Par contre, là où le couple
intrinsèque/extrinsèque différencie le type de récompense, le couple interne / externe
différencie l’origine de la récompense.
Plus récemment, pour Deci et Ryan [2002], une certaine optimalité à la fois dé-
veloppementale, comportementale et expérientielle est atteignable par trois besoins
psychologiques que sont le besoin de compétence, intimement lié à la notion d’efficacité
et donc à la motivation d’effectance présentée précédemment ; le besoin de relations
sociales, lié au partage avec autrui ; et enfin le besoin d’autodétermination, à savoir
être à l’origine de son propre comportement. De plus pour ces auteurs, l’autonomie
est directement liée au fait soit par intérêt pour l’activité, soit en vertu des valeurs
auxquelles l’individu adhère.
L’autodétermination recoupe pour beaucoup les trois premières théories motivationnelles
présentées. Son apport est intéressant en ce qu’elle propose de compléter et de
complexifier le modèle de la motivation chez l’être humain, mais elle est par la même
occasion plus délicate à implémenter.
2.4.3 L’origine dans les sciences cognitives
Comme le souligne Ganascia [2010], pour la partie qui nous concerne, l’intelligence
artificielle est une discipline qui étudie comment l’intelligence peut être décomposée et38 CHAPITRE 2. ÉTAT DE L’ART
réimplementée sur des ordinateurs. C’est d’ailleurs la définition donnée par McCarthy
et al. [1955] lors du colloque de lancement de la discipline. En d’autres termes il s’agit
d’examiner l’intelligence à l’aide des sciences dites de l’artificiel [Simon, 1996].
Comme déjà expliqué, cette période a été riche de discussions entre différents domaines
de recherche, réunis autour d’un questionnement commun : comment fonctionne
la cognition ? Déjà à cette époque, au delà de la belle image de cette pluridisciplinarité,
s’est néanmoins creusé un fossé conceptuel qui peut se concevoir comme une
justification du bien-fondé de l’approche motivationnelle. Menées respectivement par
les remarquables chercheurs John von Neumann et Norbert Wiener, deux conceptions
bien distinctes ont vu le jour pour tenter de répondre à la question qui les animait
[Varela, 1989]. Il est extrêmement important à nos yeux d’expliquer ces deux visions de
l’intelligence artificielle car elles ont cimenté l’avenir de la discipline [Dupuy, 1999].
Ainsi d’un côté von Neumann considérait la cognition comme fondamentalement
orientée vers la résolution de problème. De nos jours, on constate aisément que cette
vision s’est très largement répandue jusqu’à devenir dominante, participant à la création
tout en se servant de l’informatique. C’est d’ailleurs ce qui a contribué à ce que l’ordinateur
devienne la métaphore principale utilisée pour expliquer la cognition, modèle basé
sur l’idée d’un traitement de l’information de données en entrée produisant d’autres
données en sortie.
De l’autre côté, Wiener revendiquait une conception de la cognition davantage
comme étant une activité autonome et créative, qu’il trouvait plus crédible pour décrire
les systèmes vivants. Cette idée-ci a été très fortement négligée, aussi bien par les
informaticiens que par une grande partie des psychologues happés par la métaphore
représentationniste convaincante et bien pratique.
Varela [1989] explique parfaitement bien la différence entre la conception hété-
ronome de von Neumann par opposition à la conception autonome de Wiener. En
effet, les systèmes hétéronomes sont envisagés en termes d’entrées–sorties, alors que
les systèmes autonomes le sont en termes de clôture opérationnelle. Cette distinction
implique deux conceptions, deux logiques pour caractériser l’intelligence : un rapport
de correspondance pour les systèmes hétéronomes, et un rapport de consistance pour
les systèmes autonomes. Pour le dire autrement, là où les systèmes hétéronomes sont
dans une relation de représentation avec l’environnement, les systèmes autonomes sont
dans une relation d’émergence sémantique avec l’environnement.
Une fois cette distinction posée, cela apporte clairement du crédit quant à l’importance
de la motivation dans la conception de Wiener. La motivation peut et doit y jouer
un rôle essentiel de régulation vis-à-vis du processus qui conduit l’agent à se concentrer2.4. DE L’IMPORTANCE DE LA MOTIVATION 39
sur son propre développement. Cela correspond précisément à ce que les approches en
robotique développementale ont pu élaborer en terme de motivation.
2.4.4 L’essor du paradigme motivationnel en robotique
développementale
Le paradigme motivationnel en robotique développemental trouve donc son essence
dans l’observation des êtres humains. Comme nous venons de le voir, ceux-ci sont très
souvent enclins à entamer une activité pour leur simple plaisir, par ce que l’on appelle
plus communément, pure curiosité. Il est donc assez naturel qu’un mécanisme comme
la curiosité en soit venu à être implémenté dans des machines pour devenir la curiosité
artificielle, dans le but de favoriser l’apprentissage automatique déjà bien ancré dans
les mœurs et bien implémenté dans les machines.
De plus, le principe même de la curiosité artificielle permet de recentrer l’étude de
l’intérêt sur le sujet, et non sur l’objet. En effet, la plupart des techniques de curiosité artificielle,
et tout particulièrement celles adoptant la vision des motivations intrinsèques,
refusent la vision objective de l’intérêt que pourrait susciter un objet particulier. Elles
lui substituent la vision subjective d’un intérêt construit par l’agent et son expérience, ce
qui en soit constitue un grand pas dans la mesure où, comme nous l’avons montré dans
les sections précédentes, une bonne partie de l’intelligence artificielle et de l’ingénierie
informatique et robotique impose une approche anthropocentrée et objective dans les
systèmes artificiels qu’ils conçoivent.
Nous avons choisi de présenter dans cette section les différentes approches prenant
pour base les motivations intrinsèques comme moteur pour favoriser l’apprentissage
d’agents cognitifs. D’un côté, ces approches partagent de nombreuses considérations.
La première, et probablement la plus importante, repose sur le but de proposer un
ensemble de méthodes directement liées à un continuum de progression se développant
chez l’agent. En effet, ces modèles partagent l’ambition de concevoir un agent doué
d’un mécanisme cumulatif d’acquisition perpétuelle de connaissances dans
le but d’apprendre des compétences de plus en plus complexes. Ces approches
sont toutes nées d’un désir commun de concevoir un agent autonome dans son rapport
à un monde qu’il doit apprendre à appréhender et à maîtriser, notamment pour en
limiter les effets néfastes à son égard.
Mais de cette volonté commune émergent en réalité des cadres théoriques et des mé-
thodes algorithmiques formelles qui, de facto, sont substantiellement différentes. Nous
avons pris le parti de décrire les plus importantes une par une ci-après. Ce choix provient
du fait que toutes ces approches sont trop différentes pour réussir à les regrouper40 CHAPITRE 2. ÉTAT DE L’ART
clairement dans une typologie propre. En revanche, nous proposons un tableau récapitulatif
en fin de section (cf. tableau 2.1). Celui-ci se propose de mettre en relief les
points communs entre les approches étudiées précédemment 27, pour nous permettre de
cerner au mieux les contours dessinés dans les deux dernières décennies, d’en souligner
les limites et de mettre au jour les futurs développements.
Compression Driven Progress (Schmidhuber et al.)
Les premières recherches sur la curiosité artificielle ont été effectuées au tout début
des années 1990, notamment grâce à Juergen Schmidhuber. D’une manière générale,
ses travaux se basent sur l’idée que ce qui guide un agent optimalement motivé et
adapté réside dans une simple motivation d’amélioration de compression du monde
[Schmidhuber, 1991a,b]. Il explique qu’un modèle se basant sur un module de pré-
diction qui permet de compresser des données 28 permet une amélioration optimale.
En effet, un module de compression sans perte permet de synthétiser des données de
manière algorithmique tout en étant capable de reconstruire l’ensemble des données de
base sans aucune altération (cf. figure 2.2 pour un aperçu de l’architecture globale).
Récompenses
intrinsèques
Renforcement
Détection
de patrons
Prédicteur /
Compresseur
Figure 2.2: Architecture reconstruite à partir de Schmidhuber [2008]. Les différentes
parties sont le prédicteur/compresseur de l’histoire de l’agent (le modèle du monde),
le module de détection de patrons (qui essaye d’améliorer le modèle en détectant des
patrons intéressants), un module de Récompenses intrinsèques (qui mesurent les amé-
liorations du modèle) et un Renforcement (qui transforme les récompenses en actions
pour optimiser la récompense future).
Selon lui, ce qui intéresse l’être humain réside dans l’étroit couloir entre ce qui est
trop simplement compressible et donc inintéressant et ennuyeux, et ce qui n’est pas du
tout compressible car n’apportant pas suffisament de régularité donc trop compliqué à
27. Nous étendons plusieurs aspects traités dans des typologies déjà proposées par le passé [Oudeyer
et Kaplan, 2007; Schmidhuber, 2010; Baldassarre et Mirolli, 2013].
28. Nous entendons ici le terme compression au sens le plus simple et courant en informatique,
qui consiste à trouver des régularités pour réussir à réduire sans perte la taille des données, comme
typiquement remplacer 000002 par 5012, c’est-à-dire 5 × 0 et 1 × 2.2.4. DE L’IMPORTANCE DE LA MOTIVATION 41
apprendre. D’ailleurs selon lui, sa théorie des agents dirigés par la compression explique
tout ce qui est autour de la créativité, l’humour ou les arts [Schmidhuber, 2008, 2010].
Dans la même mouvance, on peut citer les travaux initiés par Marcus Hutter autour
d’une théorie universelle de l’intelligence. Celle-ci défend AIXI, un modèle d’agent le
plus intelligent et le moins biaisé possible [Hutter, 2007]. Ce modèle est avant tout
théorique, puisqu’il est incalculable, et se base sur la théorie de l’information ainsi que
sur les travaux d’induction universelle de distributions a priori inconnues mis au point
par Ray Solomonoff. De ce fait, AIXI constitue une théorie universelle non-paramétrée,
qui ne fait aucune hypothèse sur son environnement, si ce n’est qu’il soit calculable,
généralisant ainsi l’induction universelle passive au cas d’un agent actif.
Intrinsically Motivated Reinforcement Learning (Barto et al.)
Au début des années 2000, l’idée d’un apprentissage actif par les motivations
intrinsèques s’est fait sentir dans la communauté d’apprentissage automatique. Sous
l’impulsion d’Andrew Barto et de Satinder Singh, les motivations intrinsèques font une
incursion dans le domaine de l’apprentissage par renforcement. Dans la vision promue
par ce dernier, l’agent, procédant par essai–erreur au contact de son environnement,
doit essayer d’agir de manière à maximiser l’accumulation d’une récompense (positive
ou négative) [Sutton et Barto, 1998]. La principale nouveauté introduite pour
la réalisation du cadre théorique de l’apprentissage par renforcement intrinsèquement
motivé réside dans l’intériorisation de la notion de critique au sein de l’organisme,
comme le montre la figure 2.3. C’est pour cela que l’on fait souvent référence à cette architecture
sous le nom d’acteur–critique, car l’agent devient acteur de sa propre critique.
Formellement, cette approche se base sur le cadre théorique des options, c’est-à-dire
des routines pouvant être invoquées comme des actions élémentaires [Singh et al., 2004;
Barto et al., 2004; Stout et al., 2005]. Elles doivent obligatoirement disposer :
1. d’un ensemble d’états d’initialisation autorisant leur instanciation,
2. d’un ensemble de probabilités entre les états et la terminaison d’une option,
3. d’un ensemble de probabilités entre les états et les actions.
Intelligent Adaptive Curiosity (Oudeyer et al.)
À la même période dans la jeune communauté de robotique développementale, Oudeyer
et Kaplan [2004] proposent leur algorithme IAC (Intelligent Adaptive Curiosity).
Dans ce modèle, un agent vierge de tout vécu va donc avoir pour seul but d’effectuer
des actions, en étant guidé par
1. les interactions passées entretenues avec l’environnement ;
2. une métrique d’intérêt.42 CHAPITRE 2. ÉTAT DE L’ART
Environnement
Agent
Actions Récompenses États
Environnement
Externe
Environnement
Interne
Agent
Décisions
Actions Sensations
Récompenses États
Figure 2.3: Nouvelle perspective (à droite) sur l’architecture traditionnelle d’apprentissage
par renforcement (à gauche). La nouvelle perspective intègre la critique à l’intérieur
de l’organisme, symbolisé par le rectangle pointillé. Adapté de Barto et al. [2004].
Dans ce modèle, la mémoire de l’agent est considérée comme un espace appelé à se
structurer au fur et à mesure de l’interaction avec l’environnement, par l’accumulation
d’expériences sensorimotrices. Au départ, cette mémoire est représentée comme une
seule région vide. Puis, le seul et unique mécanisme de l’agent va être de choisir des actions
à effectuer pour pouvoir améliorer la qualité de ses prédiction concernant l’impact
des mouvements qu’il peut effectuer. Par un mécanisme de spécialisation progressive
qui va permettre la création d’experts par zone, l’agent va améliorer la vue grossière et
imprécise de son environnement sensorimoteur à force d’effectuer des expériences, qui
vont l’aider à découper cet espace afin de nuancer l’impact de certains facteurs/paramètres
dans l’exécution des actions.
L’architecture RIAC, proposée par Baranes et Oudeyer [2009] comme une évolution
de IAC (cf. figure 2.4), apporte une plus grande robustesse en conservant les régions
mères à chaque découpe, ou encore en améliorant la découpe pour maximiser les diffé-
rences de progrès entre les deux régions.
L’intérêt premier de ces deux modèles réside dans l’utilisation de la dérivée de l’erreur
de prédiction, c’est-à-dire le robot va avoir une tendance à choisir les actions qui
dans le temps maximisent son progrès en apprentissage. En revanche, par rapport à
Schmidhuber [2010], dans ce modèle-ci la mesure de l’amélioration ne se fait que sur
les nouveaux exemples et pas sur tout l’historique, ce qui peut avoir pour limitation2.4. DE L’IMPORTANCE DE LA MOTIVATION 43
Environnement
Modèle de
prédiction Structuration Régions Sélection
de l’action
sensations action
Figure 2.4: Adaptation de l’architecture proposée par Baranes et Oudeyer [2009]. À
partir d’un état d’entrée, et d’une action sélectionnée, une prédiction de l’état de sortie
du système est faite et confrontée avec la réalité de l’environnement. Après chaque
confrontation, l’espace sensorimoteur va potentiellement être structuré afin de spécialiser
des régions en isolant des paramètres saillants.
de ne pas réussir à capturer les phénomènes de motivation intrinsèque à retardement,
c’est-à-dire le fait que certaines actions impliquent des conséquences à plus ou moins
long terme.
Category-Based Intrinsic Motivation (Lee et al.)
Lee et al. [2009] propose une évolution de IAC [Oudeyer et Kaplan, 2004] et RIAC
[Baranes et Oudeyer, 2009], basée sur un mécanisme de catégorisation (Category-Based
Intrinsic Motivation, ou CBIM). Dans le modèle IAC, le mécanisme de découpe récursif
de l’espace ne construit pas à proprement parler des abstractions. De plus, l’approche est
considérée comme descendante et peut mettre longtemps avant de créer des catégories
— les régions regroupant des expériences similaires — censées refléter la structure de
l’espace sensorimoteur. Ils reprochent également au modèle le fait que la formation de
nouvelles catégories soient uniquement liée au nombre d’expériences vécues et non leur
unicité. Cette particularité a pour travers de créer un nombre excessif de catégories
similaires, faisant finalement grossir inutilement la mémoire de l’agent et limitant son
passage à l’échelle en terme de complexité. L’approche proposée est ascendante et utilise
un algorithme de gaz neuronal croissant, dont la particularité est de ne créer de nouvelles
catégories que si besoin.
Abstraction, Anticipation and Motivation (Blank et al.)
Blank et al. [2005] sont les premiers à avoir proposé un modèle théorique se basant
sur trois composantes nécessaires essentielles au processus développemental d’un agent
plongé dans un monde qui le submerge d’un flot constant d’informations perceptuelles :44 CHAPITRE 2. ÉTAT DE L’ART
1. l’abstraction pour permettre de faire le tri dans ces informations et concentrer son
attention sur les plus pertinentes, pour déterminer les actions à exécuter ;
2. l’anticipation pour permettre de prédire la manière dont l’environnement va évoluer
dans le temps et déterminer un comportement en fonction ;
3. des motivations pour guider le processus et pousser le système vers une meilleure
abstraction et de plus en plus de complexité.
L’architecture proposée repose sur la construction hiérarchique de différents niveaux
reposant chacun sur l’abstraction et l’anticipation. Cette hiérarchie est construite à
la manière de l’architecture de subsomption [Brooks, 1986]. Chaque niveau, au-delà du
premier qui se base directement sur les entrées sensorimotrices, prend en entrée le niveau
inférieur, et s’avère prioritaire à tous ceux lui étant inférieurs au sein de la hiérarchie.
Interactivist Representations (Stojanov et al.)
L’idée développée sur plusieurs années par Stojanov et al. [1997]; Stojanov [2001];
Kulakov et Stojanov [2002]; Stojanov et Kulakov [2003] est d’intérioriser la motivation
sur la construction cognitive. Les auteurs reprochent aux approches existantes de ne
proposer que des types de motivations qui animeraient des agents inertes. Ils prennent
appui sur la théorie interactiviste, qui explique que la motivation n’est pas tant quelque
chose qui fait faire quelque chose plutôt que ne rien faire, mais plutôt qui joue un rôle
de régulation et choisit quoi faire [Bickhard, 2000]. Les auteurs rejettent à la fois les
approches de trop haut niveau en terme de représentation, mais ils refusent également
de tomber dans l’extrême inverse qui refuse de s’intéresser à la notion de représentation.
Pour eux, toute motivation qui ne prendrait pas en compte la représentation
demeurerait bornée car ils considèrent que la curiosité ne doit pas uniquement impacter
les actions, mais également l’introspection, c’est-à-dire diriger pour évoluer dans cette
mémoire sans que ça ne soit nécessairement lié à un comportement.
Le pilier de cette approche est la notion de schème piagétien comme déjà expliqué
en section 2.3.2. Les schèmes tels que conçus dans ce modèle résultent de l’évolution
de comportements innés de préservation. Dans ce modèle, ils émergent de la détection
de patrons permettant de construire des proto-catégories et des proto-concepts, dans
le but de prédire le flux sensoriel futur. Les proto-concepts qui vont se créer par la
répétition et grâce au système de valeur inné vont contraindre la réalité. Même si
les auteurs ne le disent pas, on peut y discerner les mécanismes d’assimiliation et
d’accommodation propres au développement des schèmes. La mémoire de l’agent est
structurée sous forme de graphe dont les nœuds sont des états perceptuels reliés par
des arêtes représentant les actions concrètes qui y ont mené. Ce graphe est décliné en
plusieurs niveaux symbolisant une capacité d’abstraction de la part de l’agent.2.4. DE L’IMPORTANCE DE LA MOTIVATION 45
Plus précisément en terme de motivation, Stojanov et Kulakov [2006] explorent un
mécanisme directement liée au sentiment de compréhension. L’effet eurêka comme il est
parfois appelé, produit une sensation de clairvoyance ex abrupto à propos d’un phé-
nomène en particulier. Ici cela se fait à partir d’une valeur de fiabilité (ou confiance),
d’une part locale à chaque nœud et d’autre part globale sur l’ensemble du graphe des
connaissances. Plus un nœud sera connecté, plus sa fiabilité sera forte.
Self-Adaptive Goals Generation (Baranes et al.)
SAGG-RIAC se base sur l’acquisition de compétences dans Baranes et Oudeyer
[2010a, 2013]. Il s’agissait de passer l’échelle entre le simple stimulus–réponse de IAC et
RIAC, et la possibilité de combiner des actions pour pouvoir résoudre des tâches plus
complexes. L’idée principale réside dans le fait de chosisir des états-buts — c’est-à-dire
des configurations particulières des capteurs — à atteindre plutôt qu’une simple action
à effectuer. Le modèle proposé se base sur un apprentisage guidé par l’objectif généré,
qui consiste à mixer :
1. une approche d’exploration : tester des actions pour en comprendre les consé-
quences ;
2. une approche d’exploitation : atteindre un certain objectif, défini comme possédant
une condition terminale et des contraintes à respecter pour l’atteindre.
Étant donné que ce modèle constitue le point de départ de nos travaux, nous ne le
développons pas davantage dans cette partie, car il sera étudié plus en profondeur dans
le chapitre 3.
Motivation-Based Affordances (Hart, Cos et al.)
Hart et al. [2008] et Hart et Grupen [2011] s’intéressent explicitement aux affordances
[Gibson, 1979]. Leur approche est centrée sur le robot plutôt que centrée sur
une tâche. Elle se base sur la construction hiérarchique de programmes assimilables
aux schèmes piagétiens. Ce qui fait que le modèle prend en compte directement la notion
de comportement plutôt que celle de contrôle sensorimoteur bas-niveau. L’aspect
motivationnel réside dans le fait de récompenser les actions qui réduisent l’incertitude
des modèles liant un contexte et un ensemble d’interactions potentielles, l’incertitude y
étant définie par rapport à l’évolution de la variance des modèles appris.
Cos-Aguilera et al. [2010] parlent explicitement de Motivation-Based Affordances.
Ils reprennent la notion d’affordance définie comme la potentialité d’apparition ou
de disparition d’une action au gré de la perception d’éléments liés. L’apprentissage
consiste ici à mettre en relation une entrée sensorielle avec la potentialité d’agir.
C’est-à-dire comme la formalisation d’une adaptation par association entre des effets46 CHAPITRE 2. ÉTAT DE L’ART
physiologiques résultant d’une interaction avec les éléments de l’environnement d’une
part, et la perception de ces éléments d’autre part. La perception est considérée comme
processus résultant d’une adaptation développementale et génétique et à ce titre est
donc intimement lié au couplage entre l’individu en tant qu’héritier d’une espèce et un
environnement de vie. Leurs expérimentations montrent une adaptabilité de la perception
via une généralisation par l’expérience, qui se base sur une métrique de similarité
entre des ressources différentes. Les auteurs se concentrent sur la restitution au bon
moment du bon comportement, ce dernier étant pioché dans un répertoire fini, plutôt
qu’à la création de nouveaux comportements. Trois aspects principaux sont à décrire
dans l’architecture de l’agent. Le premier est un ensemble de variables homéostatiques,
c’est-à-dire des abstractions représentant le niveau de ressources internes nécessaires
à la survie de l’agent. Le second est un ensemble de drives internes, c’est-à-dire des
abstractions qui forcent l’agent à corriger les déficits de ces variables homéostatiques.
Enfin le troisième est un système inné de valence censé favoriser l’apprentissage sous
la forme d’une réponse hormonale déclenchée lors des variations brusques des variables
homéostatiques. Concrètement, ce signal interne renforce les synapses dont le comportement
associé génère une compensation physiologique. L’intérêt de cette approche réside
précisément dans le fait que l’affordance y est vue comme apportant une compensation
physiologique à l’agent. Le fait que l’espace physiologique soit découpé en une zone
optimale plus ou moins restreinte, incluse dans une zone viable plus large, elle-même
enclose par une frontière létale, vient soutenir cette approche.
Il est à noter que nous employons nous-mêmes le terme d’affordances dans les chapitres
à venir pour caractériser l’approche motivationnelle basée sur le progrès en compétences,
avec notre propre redéfinition.
Homeokinesis (Der et al.)
Der et Liebscher [2002] proposent une approche appelée homéokinésie. Il s’agit
d’un principe général qui permet d’induire, par auto-organisation, des spécificités selon
l’encorporation considérée et la complexité de son environnement. Elle se base sur
le principe de l’homéostasie, c’est-à-dire le fait de maintenir un état d’équilibre interne,
mais appliquée ici au comportement. Elle doit être considérée comme le pendant dynamique
de l’homéostasie. À ce titre elle engendre un comportement depuis une perspective
purement interne, par satisfaction de ce besoin. Pour un agent équipé d’un modèle adaptif
du monde, un signal d’apprentissage possible est le décalage entre le prédiction et
comportement réel de l’agent. Plus le contrôle de l’agent est régulier, plus ce décalage
tend à être nul. Ainsi, l’homéokinésie implémentée dans un agent, c’est apprendre à
maintenir un état kinétique, c’est-à-dire un comportement compris par le modèle.2.4. DE L’IMPORTANCE DE LA MOTIVATION 47
Radical Interactionism (Georgeon et al.)
La très récente théorie de l’interactionnisme radical que proposent Georgeon et al.
[2012] et Georgeon et al. [2013] se base sur la notion de motivation interactionnelle.
Elle se base sur l’autotélisme [Steels, 2004], c’est-à-dire la motivation intrinsèque qui
est de contrôler son activité. Ici, un agent radicalement interactionniste va essayer de
prédire des séquences de comportements possibles dans certains contextes, un contexte
étant représenté par les comportements qu’il offre. De plus, un tel agent possède un
ensemble prédéfini de primitives d’interaction, qui sont définies comme possédant une
valence positive ou négative. À partir de là, ce sont les régularités dans les séquences
d’interaction offertes par l’environnement qui vont guider le développement de l’agent
par la hiérarchisation en mémoire de compositions d’interactions.
En pratique, le modèle prend pour point de départ un POMDP (Partially Observable
Markov Decision Process), mais propose l’idée de ne plus passer par une récompense
liée à l’état du monde, qui est forcément définie a priori. Plutôt, l’agent découvre, engramme
et exploite des régularités dans ses expérimentations sans observer l’état de
l’environnement. À la vision absolue traditionnelle s’oppose une vision plus relative et
donc fondamentalement plus constructiviste. En effet, il n’y a pas de théorie supportant
l’hypothèse que le système sensoriel puisse refléter un état de réalité, puisque cela
voudrait dire qu’il existe une réalité à part entière pré-existante, une réalité ontologique.
Empowerment (Klyubin et al.)
Un autre courant de recherche s’est approprié les motivations intrinsèques, le renommant
empowerment [Klyubin et al., 2005a,b, 2008; Salge et al., 2014]. L’idée
générale demeure la même, à savoir que l’agent ne doit pas être guidé par une forme de
récompense spécifiée depuis l’extérieur du système, mais plutôt par l’optimisation de
critères et mesures internes permettant une interaction riche et complexe avec le monde
extérieur. De manière formelle, l’empowerment se définit comme la capacité du canal
entre les actionneurs et ses capteurs, au sens de la théorie de l’information. Il s’agit
de mesurer la potentielle cause d’une variable sur une autre au travers d’une boucle
action–perception. En d’autres termes, cela revient à quantifier la capacité de contrôle
ou d’influence qu’un agent détient et perçoit sur le monde qui l’entoure, en s’inspirant
du concept d’affordances [Gibson, 1979]. Sa particularité est d’être pleinement spécifiée
par la dynamique du couplage agent–environnement, c’est-à-dire les probabilités de
transition. Cela signifie que la récompense n’a pas besoin d’être définie a priori. Pour
résumer, plus un agent détient une forte probabilité d’influencer le monde, meilleur sera
son coefficient d’empowerment.
Dans le même état d’esprit les travaux de Ay et al. [2008] proposent un cadre théo-48 CHAPITRE 2. ÉTAT DE L’ART
rique basé sur l’Information Prédictive, ou encore du côté de Porr et Di Prodi [2014]
et de leur métrique d’Utilisation Prédictive (même si dans ce cas, il s’agit d’un système
multi-agents). Les idées développées se basent elles-aussi sur la théorie de l’information
et sur la mesure de la complexité et sur l’information mutuelle que l’agent peut découvrir
puis prédire quant au couplage entre les observations faites par le passé et celles qui
seront faites à l’avenir.
2.4.5 Taxinomie des approches motivationnelles étudiées
Face à la pluralité des approches que nous venons d’étudier, la question de les classer
vient nécessairement se poser. Réaliser une taxinomie sert à abstraire différentes
manières de penser, pour réussir à exhiber les points communs et hiérarchiser les différences.
Nous étendons plusieurs typologies déjà proposées par le passé [Oudeyer et
Kaplan, 2007; Schmidhuber, 2010; Baldassarre et Mirolli, 2013]. Dans la continuité,
voici les points particuliers qui nous intéressent, regroupés en catégories. :
Apprentissage
Cette première catégorie rassemble certaines particularités identifiées dans les approches
étudiées, souvent partagées, autour des concepts liés à la manière dont l’agent
va apprendre au sein de son environnement. La première chose est de savoir si le processus
d’apprentissage se base sur l’acquisition de connaissance (ou modèle direct, c’est-à-
dire le fonctionnement de son environnement), ou bien sur l’acquisition de compétences
(ou modèle inverse, c’est-à-dire maîtriser son environnement). Ensuite il s’agit d’identifier
quelles sont les approches qui se basent explicitement sur la notion de but (se
fixer un objectif et tout mettre œuvre pour l’atteindre), de renforcement, de progrès en
apprentissage (prendre en compte la notion de temps, par opposition à l’utilisation de
l’erreur à un instant précis). Certaines incluent même un système de prédiction (non
nécessairement uniquement consacré à l’apprentissage du modèle direct).
Techniques
Sous cette appellation sont regroupés les différents aspects plus techniques de l’apprentissage
opéré par les différents agents des modèles étudiés. Certains se basent par
exemple sur la théorie de l’information, sur la compression, ou sur la recherche de ré-
gularités. Certains sont modélisés en utilisant des probabilités pour une plus grande
flexibilité.
Interaction
Comment l’interaction entre l’agent et son environnement se déroule-t-elle ? Nous
avons identifié trois points à distinguer. L’agent utilise-t-il des primitives d’interaction2.4. DE L’IMPORTANCE DE LA MOTIVATION 49
ou bien apprend-t-il ex nihilo à partir du flot sensorimoteur ? D’autre part, certaines
approches s’appuient explicitement sur la notion d’affordances. Enfin quid de l’adéquation
entre l’approche et le fait qu’elle soit avant tout basée sur l’interaction plus que sur
autre chose.
Héritage
En terme d’héritage, nous entendons distinguer les caractéristiques de certaines approches
qui prennent pour appui des éléments biologiques ou psychologiques. Ici nous
avons identifié la notion de valence, d’homéostasie et enfin de viabilité.
Échelle
Au sein du discours développemental, la notion de passage à l’échelle est récurrente.
Mais toutes les approches ne la traitent de la même manière, voire ne l’implémentent pas
réellement. Parmi les mécanismes liés au passage à l’échelle, c’est-à-dire à la construction
et l’élaboration de connaissances de plus en plus complexes, nous avons identifié la
spécialisation, la catégorisation / abstraction. Nous avons également cherché à classer les
approches pour déterminer si ces deux mécanismes tels qu’implémentés faisaient explicitement
appel à la notion de hiérarchie, à la notion de schèmes. Enfin nous proposons
de préciser leur rapport à la notion de représentation.
Constructivisme
Le dernier point que nous abordons dans cette taxinomie est le rapport qu’entretiennent
les approches avec la notion de constructivisme. Nous attribuons à chacune
des approches étudiées une intensité censée refléter combien elles semblent respecter la
vision constructiviste telles qu’exposées dans la section 2.3.2.
Tableau récapitulatif
Le tableau 2.1, présenté en page 50, récapitule de manière synthétique les différentes
façons d’aborder l’aspect motivationnel pour favoriser l’apprentissage de systèmes artificiels.
La classification se base directement sur les approches précises en essayant de
les comparer. Le symbole X indique que l’approche utilise ou se base sur cette notion.
Pour certaines notions plus complexes, nous indiquons l’intensité de leur adéquation
en terme d’implémentation à l’aide du symbole •. La correspondance avec les théories
motivationnelles psychologiques y est également représentée.CDP IMRL IAC CBIM AAM IR SAGG MBA HK RI EMP
Drive Équilibre optimal Efficacité
Apprentissage
connaissance X X X ? ?
maîtrise X X X X X X
but X
renforcement X ? ? ? ?
progrès X X X X X
prédiction X X X X ? X X
Techniques
théorie information X X
régularités X X
probabilités X X X
Interaction
primitives d’interaction X X X
affordances X X
interaction-based •• • •• •• • • •
Héritage
valence X X
homéostasie X X
viabilité X
Échelle
spécialisation X X X
catégorisation / abstraction X X X
hiérarchique X X X X
schèmes X X
représentation ∅ • ∅ •• • • • • • • • •• ∅ •• ∅
Constructivisme ∅ ∅ ∅ • • • • • •• •• • • • • •
Tableau 2.1: Typologie des différentes approches utilisant les motivations intrinsèques en robotique développementale étudiées tout au long de ce
chapitre, soit dans l’ordre : Compression Driven Progress [Schmidhuber, 2010], Intrinsically Motivated Reinforcement Learning [Singh et al., 2004], Intelligent
Adaptive Curiosity [Oudeyer et Kaplan, 2004], Category-Based Intrinsic Motivation [Lee et al., 2009], Abstraction, Anticipation and Motivation [Blank et al.,
[Cos-Aguilera
2005], Interactivist Representations [Stojanov et Kulakov, 2006], Self-Adaptive Goal Generation [Baranes et Oudeyer, 2013], Motivation-Based Affordances
et al., 2010], Homeokinesis [Der et Liebscher, 2002], Radical Interactionism [Georgeon et al., 2013], Empowerment [Klyubin et al., 2005a].2.5. CONCLUSION 51
2.5 Conclusion
L’objectif de ce chapitre était de fournir un aperçu relativement large de l’héritage
épistémologique dans lequel nous nous situons. Nous avons organisé cet état de l’art en
mettant en avant les trois notions qui nous semblent supporter l’étude et l’implémentation
de mécanismes de la cognition : le corps, le développement, et la motivation.
Ainsi nous avons commencé par étudier l’importance de la notion de corps. Nous
avons vu qu’historiquement il y avait eu des interactions plus ou moins denses selon
les époques entre l’informatique et la robotique, et que l’association des deux pouvait
permettre de mieux mettre en relief et de comprendre comment certaines propriétés
peuvent permettre l’émergence de mécanismes plus ou moins qualifiables de cognitifs.
Nous avons vu que le corps était un objet d’étude que d’autres disciplines avait examiné
— comme la physiologie, la psychologie, voire la philosophie — quand l’informatique,
elle, s’est fondée sur l’espoir de la supériorité de l’intellect rationnel sur le corps physique.
Nous avons constaté l’émergence de nouveaux courants de pensée venant placer
l’encorporation au centre du problème.
Par la suite nous avons tenté de montrer l’importance de la notion de développement.
Pour ce faire nous avons commencé par expliquer la nécessaire prise en compte
de l’épigénétique, phase du développement qui se base sur l’héritage génétique en le
confrontant aux réalités de l’encorporation, ainsi que la notion de développement phylogénétique.
Nous avons étudié le mouvement constructiviste ainsi que le changement de
paradigme qu’implique la proposition énactive. Nous aussi avons décrit la communauté
de recherche de la robotique développementale, communauté au sein de laquelle nous
inscrivons nos travaux, réunie, entre autre, autour de la psychologie du développement
de l’enfant.
Enfin, nous avons terminé notre état de l’art en passant en revue les différentes
facettes mettant en relief l’importance de la notion de motivation pour la réalisation d’un
agent enrôlé dans un processus à long terme d’apprentissage ouvert et non supervisé.
Cette approche donne à concevoir un système artificiel en perpétuelle recherche de la
satisfaction d’un but générique. De multiples modèles ont émergé implémentant cette
notion selon leurs propres règles et nous les avons décrits, en prenant soin de les lier à
l’étude des théories motivationnelles en psychologie, en perçant au jour les prémisses de
cette mouvance aux origines mêmes des sciences cognitives, ainsi qu’en essayant d’en
exhiber une taxinomie.C h a p i t r e
3
Modélisation formelle d’un
système motivationnel
3.1 Introduction
Après avoir présenté l’état de l’art reposant sur l’importance du corps, du développement
et de la motivation, ce chapitre propose une modélisation formelle générique
d’un système motivationnel dans la continuité des travaux présentés par Baranes [2011].
La formalisation, permettant de décrire de manière à la fois théorique et opérationnelle
ce qui se cache derrière le vocabulaire de système motivationnel, constitue un gage
nécessaire de clarification et de désambiguïsation pour tout discours destiné à être
expérimenté in silico.
Dans cette introduction nous présentons l’angle d’étude et le vocabulaire utilisé pour
décrire ce que doit permettre le modèle, nous nous positionnons par rapport à l’existant,
puis nous donnons une première description en trois points de ce modèle et de son cadre.
Le reste du chapitre nous permet de détailler chacun de ces trois aspects pour clarifier
le fonctionnement et en arriver à la forme algorithmique complète du modèle, présentée
en fin de chapitre.
3.1.1 Des limites naturelles de l’encorporation
L’objectif de ce chapitre est de présenter un modèle d’agent impliqué dans un
processus de recherche et d’apprentissage de coordinations sensorimotrices,
5354
CHAPITRE 3. MODÉLISATION FORMELLE D’UN SYSTÈME
MOTIVATIONNEL
guidé par un mécanisme motivationnel. Le but d’une boucle de contrôle motivationnelle
est d’explorer un espace afin d’y apprendre des coordinations sensorimotrices
viables, et ce de la manière la plus efficace qui soit. La viabilité se définit ici en termes
de potentiel de maîtrise, sous-entendant qu’il sera plus facile de développer certaines
compétences plutôt que d’autres.
Notre principal argument est que cette exploration de l’espace d’apprentissage est
avant tout directement borné par les limites naturelles de l’encorporation de
l’agent. Comme nous l’expliquions dans la section 2.3.4, nous cherchons à désengager le
modélisateur du processus d’apprentissage. Traditionnellement, l’intelligence artificielle
travaille à contraindre les modèles d’agent en leur injectant des biais au niveau de leurs
capacités cognitives, afin de résoudre des sous-cas bien précis. Le modèle étudié ici, s’il
n’exclut pas, par essence en tant que modèle, tous les biais de modélisation, replace le
corps au centre du processus d’apprentissage. L’encorporation y est considérée comme la
clef de voûte du processus développemental. Le modélisateur se soustrait au maximum
pour laisser la place aux contraintes corporelles physiques que représentent les capacités
sensorimotrices d’un agent encorporé. Il s’agit de transférer et de se reposer directement
sur le biais qu’implique l’encorporation, quelle qu’elle soit.
L’enjeu est de proposer un modèle d’apprentissage de coordinations sensorimotrices
tout à fait générique pour ce qui concerne son fonctionnement
général, et qui permette d’exhiber des comportements différents propres à
chaque encorporation considérée. Nous prenons donc soin de dissocier la notion de
boucle motivationnelle générique, constituant la coquille vide, et la notion de paramé-
trage, pouvant modifier grandement le fonctionnement de la boucle et surtout être plus
ou moins adapté à une encorporation précise.
3.1.2 Exploration par babillage sensorimoteur
Une manière d’utiliser les limites naturelles du corps pour apprendre à le contrôler est
d’effectuer une exploration par babillage sensorimoteur [Baranes, 2011]. Deux approches
peuvent être exhibées concernant l’exploration par babillage :
1. La première consiste à générer des commandes motrices pour engranger de l’information
sur les effets de celles-ci sur l’observation des capteurs de l’agent ; elle est
usuellement dénommée Motor-Babbling Exploration (MBE) [Oudeyer et Kaplan,
2004].
2. La seconde consiste à générer plutôt des buts sous forme de configurations sensorielles,
puis de lancer un processus d’atteinte de ce but, en explorant l’espace
d’apprentissage ; elle est appelée Goal-Babbling Exploration (ou GBE) [Baranes3.1. INTRODUCTION 55
et Oudeyer, 2010b; Rolf et al., 2010].
Mais dans la perspective où l’on souhaite réussir à retourner dans certains états,
c’est-à-dire des configurations sensorielles particulières, il faut pouvoir réussir à en
déduire un modèle inverse du contrôle du corps. L’exploration de l’espace moteur pour
faciliter l’apprentissage de coordinations inverses est long et fastidieux pour la courte
vie d’un agent. En pratique, il a été montré qu’au lieu d’explorer l’espace moteur
M, l’exploration de l’espace des buts S conduit à une expérience d’apprentissage plus
efficace [Rolf et al., 2010; Baranes et Oudeyer, 2013]. La raison majeure de son attrait
autant théorique que pratique réside dans le fait que l’agent doit souvent apprendre
des coordinations sensorimotrices dans un espace moteur fortement redondant et de
grandes dimensions pour lequel de multiples commandes motrices peuvent résulter en
une seule conséquence dans l’espace observable. C’est précisément ce qu’illustre la figure
3.1, dans laquelle on peut également observer l’éventuelle dissemblance de volume entre
des sous-espaces moteurs et leur correspondance observable, ainsi qu’une zone hachurée
car inatteignable dans l’espace sensoriel.
M
B
A
S
B
A
Figure 3.1: Illustration de la redondance existant dans la relation surjective entre
l’espace moteur M et l’espace des buts S.
De plus, des évidences sur l’importance du processus d’atteinte dans le développement
et l’apprentissage ont également été démontrées en psychologie développementale
Thelen et al. [1996]; Berthier et Keen [2006]. C’est pourquoi notre choix s’est orienté sur
l’étude des possibilités d’évolution liées au modèle GBE. C’est ce que nous présentons
dès la section suivante.
3.1.3 Formalisation du GBE
Maintenant que nous avons expliqué les éléments nécessaires à sa compréhension
intuitive, nous pouvons fournir une forme la plus simple possible pour formaliser la56
CHAPITRE 3. MODÉLISATION FORMELLE D’UN SYSTÈME
MOTIVATIONNEL
boucle motivationnelle dans le cadre du GBE. C’est l’objet de la figure 3.2 que nous
allons expliquer dans la paragraphe suivant.
C(S) P(M)
A(C, P)
Figure 3.2: Boucle typique du processus de Goal-Babbling Exploration pour l’apprentissage
du contrôle sensorimoteur, c’est-à-dire du modèle inverse liant un espace moteur
M et un espace des buts S. Choisir un but dans l’espace sensoriel S, Parvenir à l’atteindre
en exécutant des actions de l’espace moteur M puis Actualiser les modèles C et
P pour favoriser l’apprentissage futur.
Dans un espace sensori (S) – moteur (M), la première étape consiste à choisir grâce
au modèle C un but dans l’espace d’exploration S. Ensuite il s’agit de trouver un moyen
pour parvenir à ce but grâce à P en utilisant les capacités motrices M de l’agent. Enfin
l’agent va actualiser avec A les modèles de choix et d’atteinte d’un but, respectivement
C et P.
Dans la suite de ce chapitre, nous expliquons la distinction entre les deux types de
données sur lesquelles repose le système : les données brutes et les données structurantes.
Puis nous présentons un à un les trois mécanismes constitutifs du noyau de la boucle
motivationnelle dédiée au GBE : la manière d’apprendre par l’actualisation des connaissances
A(C, P), le choix d’un but C(S), et la façon d’y parvenir P(M). Étant donné
que le modèle est une boucle, il est très délicat de commencer par expliquer un bloc
plutôt que l’autre. Même si nous y avons apporté une attention particulière en mettant
des références vers les sections concernées, par souci de clarification nous proposons
également, dans le tableau 3.1 en page 68, un récapitulatif des notations utilisées.
3.2 S et M : les données
Nous considérons un agent doté de capacités sensorimotrices qui lui sont propres :
un espace sensoriel S et un espace moteur M. Soit s
t un vecteur constitué de l’ensemble
des valeurs des capteurs de l’agent, représentant l’état de cet agent à l’instant t. Soit
mt un vecteur constitué de l’ensemble des valeurs des actionneurs de ce même agent,
représentant la configuration motrice choisie pour être exécutée à l’instant t. À chaque3.2. S ET M : LES DONNÉES 57
instant t correspondent donc à la fois une configuration sensorielle et motrice. C’est
ce que montre la figure 3.3 pour une encorporation simple avec un seul capteur et un
seul actionneur. Étant donné cela, nous présentons dans la suite de cette section les
deux types de données sur lesquelles repose le modèle : les données brutes et les données
structurantes.
m
s
t
0 10 20 30 40 50 -16
-11
-6
-1
4
9
14
s
0 t
15
30
45
0 20 40 60 80 100
m
-15 t
0
15
0 20 40 60 80 100
Figure 3.3: Exemple d’historique expérimental d’un agent. À gauche en représentant
la dimension sensorielle et la dimension motrice avec la dimension temporelle ; à droite
les mêmes mais représentées séparément.
3.2.1 Données brutes
Les données brutes sont très bas-niveau, et concernent le modèle direct du contrôle
sensorimoteur. Cela revient à acquérir de nouveaux exemples de transition dans l’espace
S × M → S. Ces données rassemblent donc l’état courant dans l’espace s
t
, l’action
à effectuer mt
, ainsi que l’état résultant une fois l’action exécutée s
t+1
(cf. figure 3.4).
Une telle transition est notée β
t
, et est définie comme suit :
β
t ≡ s
t m
t
−→ s
t+1 ≡ (s
t
, mt
, st+1
) (3.1)
Par ailleurs, il est important de noter que les actions telles que nous les considérons
tout au long de ce manuscrit, sont toujours des impulsions motrices. Elles représentent
des valeurs relatives à appliquer aux moteurs, et seront notées formellement ∆.58
CHAPITRE 3. MODÉLISATION FORMELLE D’UN SYSTÈME
MOTIVATIONNEL
s
t
s
t+1
mt
Figure 3.4: Explication graphique de la notion de donnée brute : il s’agit simplement
d’une transition atomique dans l’espace d’exploration entre un état s
t
et un autre s
t+1
,
consécutivement à l’exécution d’une action mt
.
3.2.2 Données structurantes
À chaque fin de tour de la boucle présentée en figure 3.2 page 56, l’agent va mémoriser
une nouvelle donnée structurante. Celle-ci rassemble l’état de départ s
t
, le but à atteindre
γ
t
(cf. section 3.4), la liste des actions motrices m?
effectuées à chacune des q tentatives
d’atteinte (cf. section 3.5.1), l’état final dans l’espace s
t+q
, ainsi que κ
t
la compétence
d’atteinte du but considéré (cf. section 3.4.1). La figure 3.5 schématise ce que représente
une donnée structurante, dont la définition formelle est la suivante :
ξ
t = (s
t
, γt
, m?
, st+q
, κt
) | γ
t ∈ R^, m? =
mt
, . . . , mt+q−1
(3.2)
s
t
s
t+q
γ
t
m?
Figure 3.5: Explication graphique de la notion de donnée structurante.
D’autre part, il est à noter que pour des raisons de meilleure structuration, et par
souci d’utilisation de l’ensemble du vécu, après chaque tentative d’atteinte d’un but,
l’agent peut artificiellement ajouter un but dans l’espace d’exploration correspondant
à l’endroit qu’il a réellement atteint, en lui associant une compétence maximale. Cela
permet de délimiter plus aisément les limites d’atteignabilité pour l’encorporation considérée
tout en demeurant crédible, puisque dans tous les cas, l’erreur ou le décalage dans
l’atteinte d’un but relève bel et bien d’une information intrinsèquement vécue.3.3. A(C, P) : ACTUALISER LES MODÈLES 59
3.3 A(C, P) : actualiser les modèles
À tout moment de la vie d’un agent, l’exploration de son espace sensoriel l’amène à
disposer d’une certaine vision du monde déterminée par l’historique de son couplage à
l’environnement. D’un point de vue formel, nous considérons qu’à l’instant 0 de sa vie,
l’agent dispose d’un espace S
0 = {R0}, c’est-à-dire composé d’une et une seule région
représentant l’ensemble de l’espace d’exploration. À un instant t ≥ 1 en revanche, une
structuration potentielle de S
t peut être représentée par un ensemble de sous-régions,
comme illustré en figure 3.6.
S
t = {R0, R1, . . . , Rn} |
[
Ri = S, Ri ∩ Rj = ∅ (3.3)
Cela revient à considérer l’ensemble des sous-régions Ri comme un pavage de l’espace
S original. Par la suite, nous noterons |Ri
| la cardinalité de la région Ri
, c’est-à-dire le
nombre de buts générés dans cet espace topologique.
S
0 R0
s1
s2
S
500 R0
R1
R2
R3
R4 R5
s1
s2
...
Figure 3.6: Illustration de l’état d’un espace d’exploration à deux dimensions pour
t = 0 (à gauche) et t = 500 (à droite), considérant t comme le nombre d’expériences
effectuées (points bleus). Ici S
0 = {R0} et S
500 = {R0, R1, R2, R3, R4, R5}, l’ensemble des
régions couvrant entièrement l’espace d’exploration.
L’agent va considérer comme susceptible d’être découpée la région R^ dans laquelle
il vient d’ajouter une nouvelle donnée structurante. Vont alors être passées en revue
toutes les dimensions de l’espace d’exploration dans les bornes de la région considérée,
comme autant de découpes potentielles.
Pour des raisons de complexité, les découpes considérées sont toujours orthogonales
aux dimensions de l’espace. La finesse de prise en compte des potentielles valeurs de
découpe dans chacune des dimensions est laissée à l’appréciation de l’expérimentateur 1
.
Au final une seule valeur dans une seule dimension sera déterminée comme étant la
1. En effet une variable permet de déterminer la puissance de 2 qui permet de borner le nombre
maximum de découpes à tester dans une région.60
CHAPITRE 3. MODÉLISATION FORMELLE D’UN SYSTÈME
MOTIVATIONNEL
découpe la plus adaptée. Une fois la meilleure découpe déterminée, si la valeur de cette
découpe dépasse un certain seuil, on remplace la région R^ par les deux sous-régions de
part et d’autre de la découpe. Nous ne développons pas ici plus en détails le processus
de restructuration à proprement parler, qui sera l’objet des contributions développées
dans le chapitre 4. Nous y faisons néanmoins référence à la ligne 25 de l’algorithme 1
proposée en fin du présent chapitre.
3.4 C(S) : choisir un but
Nous présentons ici notre instanciation du mécanisme de choix du but C, qui repose
sur une manière particulière d’explorer l’espace en se basant directement sur la notion
de compétence.
3.4.1 Notion de compétence
La notion de compétence associée à une donnée structurante (cf. section 3.2.2) est
essentielle pour que le modèle puisse permettre un développement à long terme du
système. C’est cette compétence qui va permettre de calculer l’intérêt d’une région (cf.
section 3.4.3). Concrètement, le calcul de la compétence prend en compte trois éléments
que sont s
t
, γ
t
et s
t+q
, représentant respectivement l’état de départ, l’état but et l’état
final dans l’espace d’exploration. Elle est définie comme suit :
κ
t = 1 − min
s
t+q − γ
t
s
t − γt
, 1
(3.4)
avec s
t+q−γ
t
l’écart observé entre l’état final et le but à atteindre, et s
t−γ
t
la distance
séparant l’état initial du but. Cette mesure d’incompétence vaut 0 si le but est atteint
et prend des valeurs de plus en plus grandes plus l’on s’éloigne du but recherché. Afin
de transformer cette incompétence en compétence, on borne la valeur d’incompétence
maximale à 1 grâce au min, puis on renverse la valeur en la soustrayant à 1. Cela permet
de pouvoir aisément exprimer une mauvaise compétence par une valeur proche de 0, et
une bonne compétence par une valeur proche de 1.
3.4.2 Notion d’intérêt d’une région
La structuration de l’espace expliquée en section 3.3 est conjointement liée à l’exploration
de celui-ci, c’est-à-dire le processus de génération de buts. Générer un γ
t
signifie sélectionner un point particulier de S en tant que but à atteindre. Pour pouvoir
générer un but, dans un premier temps l’agent doit mettre à jour la valeur d’intérêt de
chacune des régions Ri qui pavent à l’instant t l’espace exploré. L’intérêt ρ(Ri) reflète3.4. C(S) : CHOISIR UN BUT 61
le progrès en apprentissage pour atteindre des buts dans cette région. En pratique le
calcul de l’intérêt prend en considération l’évolution des compétences dans le temps
pour les expériences appartenant à une région (cf. figure 3.7).
c
t
e
Figure 3.7: Illustration du processus de calcul de l’intérêt propre à chaque région.
Cette façon de mesurer l’intérêt peut être vue comme le calcul de la dérivée numérique
des compétences sur ces expériences. L’existence d’un ordre total sur ces expériences,
correspondant à l’instant t de leur expérimentation, rend ce calcul possible.
À partir des e dernières expériences dans la région courante, classées par ordre d’expérimentation,
on calcule ainsi la différence absolue entre la moyenne des compétences
obtenues dans la première moitié (les plus anciennes) ainsi que la moyenne de la seconde
moitié (les plus récentes) :
ρ(Ri) =
Pe/2
j=0
κ(j) − Pe
j=e/2 κ(j)
e
(3.5)
avec κ(j) la valeur de la compétence pour la jème expérience vécue à un moment t et
localisée dans la région Ri
.
3.4.3 Exploration de l’espace basée sur l’intérêt
Dans un second temps, grâce à cette valeur d’intérêt, l’agent peut donc choisir la
région la plus intéressante, selon la métrique choisie, pour y générer un but selon une
loi de probabilité uniforme Pr.
R^ = arg max
Ri ∈ S
(ρ(Ri)) (3.6)
γ
t = Pr(R^), (3.7)62
CHAPITRE 3. MODÉLISATION FORMELLE D’UN SYSTÈME
MOTIVATIONNEL
En pratique, quatre cas sont à distinguer quand on se base sur la dérivée numérique
des compétences pour les expériences d’une région particulière. La figure 3.8 vient
illustrer ces différentes possibilités. Ainsi, dans la région R0, la compétence est élevée
mais stable dans le temps. Dans R1 la compétence est en cours de progression. Dans
la région R2 la compétence est faible mais stabilisée. Enfin R3 a d’abord montré une
progression, puis s’est stabilisée, pour finalement se dégrader.
R0
R1
R2
R3
c
t
c
t
c
t
c
t
Figure 3.8: Illustration de la notion d’intérêt propre à chaque région, calculée comme
la dérivée numérique de la compétence des expériences propres à la région considérée.
En terme d’interprétation, cela nous indique que les régions R0 et R2 sont similaires
car les compétences dans ces deux régions sont toutes deux stables (l’une à des valeurs
élevées, l’autre à de faibles valeurs) ce qui leur confère toutes deux une valeur d’intérêt
peu élevée. La région R3 présente un cas particulier où l’on constate qu’un apprentissage
a eu lieu, puisque cet apprentissage s’est stabilisé, et que les valeurs de compétences
se dégradent dans les dernières expériences effectuées. C’est un gage d’intérêt, pris en
compte par l’utilisation de la valeur absolue pour le calcul de l’intérêt, et peut signifier
qu’il est nécessaire d’aller vérifier si l’on maîtrise toujours une compétence acquise
par le passé. Ce cas de figure peut se présenter typiquement en cas d’environnement
changeant, ou de défaillance motrice de l’agent. Enfin, la région R1 présente un cas3.5. P(M) : PARVENIR À UN BUT 63
typique d’apprentissage en cours de progression, qui démontre un intérêt maximal dans
l’exemple présenté. Dans cet exemple, on a donc ρ(R0) = ρ(R2) ≤ ρ(R3) ≤ ρ(R1).
Il est intéressant de noter que le fait d’avoir choisi de borner la compétence nous
permet d’aider la création de plateaux. En effet, dans les zones inaccessibles où la compétence
restera stable à 0 à terme, cela permet d’exprimer clairement le désintérêt pour
cette région. Si nous n’avions pas fait ce choix, cela engendrerait un continuum de mauvaises
valeurs de compétences qui ne permettent pas d’identification claire de la zone
physiquement atteignable. Il s’agit donc d’un accélérateur pour détecter l’accessibilité
des différentes zones de l’espace exploré.
3.5 P(M) : parvenir à un but
Pour parvenir à atteindre un but généré, l’agent va pouvoir essayer plusieurs actions
motrices pour s’en rapprocher au maximum. Nous expliquons ici la collecte de données
brutes et la manière dont ces données sont utilisées pour apprendre à atteindre un but.
3.5.1 Quota d’atteinte d’un but
Les tentatives pour atteindre γ
t
sont effectuées en exécutant une action particulière
calculée comme la meilleure par rapport aux données dont dispose l’agent à l’instant t.
En pratique, l’agent dispose d’au plus q actions successives pour améliorer sa compé-
tence, comme l’illustre la figure 3.9.
s
t
s
t+3
γ
t
mt
mt+1
mt+2
Figure 3.9: Explication graphique du quota d’atteinte d’un but : l’état de départ est
s
t
, le nombre de tentatives d’atteinte du but q = 3, pour finalement arriver à l’état s
t+3
.
Il existe une seconde possibilité pour terminer la boucle et passer au but suivant.
Nous introduisons comp, qui constitue une valeur d’ajustement de la notion de compétence,
permettant de considérer un but comme étant atteint si la κ
t ≥ 1 − comp. Il
s’agit de pouvoir s’arrêter après une tentative d’atteinte d’un but, sans que celui-ci ne
soit parfaitement atteint.64
CHAPITRE 3. MODÉLISATION FORMELLE D’UN SYSTÈME
MOTIVATIONNEL
3.5.2 Calcul de la configuration motrice
Étudions maintenant la manière dont l’agent calcule la meilleure action à chaque
tentative d’atteinte d’un but. La simplicité technique est ici de mise. Le terme de
meilleure action signifie qu’il faut maximiser les chances d’atteindre au plus près le but
généré γ
t
en partant de la position courante s
t dans S. La stratégie retenue consiste
à générer une action moyenne à partir des données brutes récoltées auparavant. Les
données brutes mémorisées étant, comme déjà expliqué, des transitions entre un état
courant et un état suivant grâce à une action, cela nous permet de fabriquer une
nouvelle action en filtrant les meilleures parmi toutes les transitions dispositions. Ce
filtrage se fait de façon à privilégier les transitions minimisant un critère double, à
savoir que l’état initial et l’état final doivent être respectivement aussi proches que possible
de l’état courant et de l’état but. D’un point de vue formel, voici ce que cela donne :
mt =
mu, ∀ β
u = (s
u
, mu
, su+1
) ∈ kNN(s
t
, γt
)
(3.8)
kNN(s
t
, γt
) = {β
u
}u∈{1..k}
| ∀i, j tel que i < j,
dist(β
i
, st
, γt
) ≤ dist(β
j
, st
, γt
)
(3.9)
dist(β
i
, st
, γt
) =
s
t − s
i
+
γ
t − s
i+1
(3.10)
D’un point de vue plus intuitif, et comme l’illustre la figure 3.10, il s’agit de déterminer
k transitions (piochées dans les données brutes) dont le s
t
est le plus proche possible du
point de départ actuel et dont le s
t+1
est le plus proche possible du but à atteindre. À
partir de ces transitions, on crée une action moyenne à exécuter.
s
t
γ
t
Figure 3.10: Explication graphique du calcul de la meilleure action. Les k plus proches
transitions sont de couleur magenta, avec k = 5. L’action moyenne calculée est repré-
sentée en bleu.3.5. P(M) : PARVENIR À UN BUT 65
3.5.3 Exploration locale
Dans le cas où après les q tentatives réglementaires pour atteindre un but la compé-
tence calculée est mauvaise, une phase d’exploration locale est conduite par l’agent. Par
mauvaise, nous entendons les cas où κ
t ≤ incomp, qui représente une valeur d’incompé-
tence. Par défaut cette valeur vaut 0, mais on peut très bien imaginer être plus exigeant
que cela, et vouloir, par exemple, déclencher l’exploration locale si moins d’un tiers de
la distance au but a été parcourue. L’objectif de cette phase est d’acquérir de nouvelles
données brutes, c’est-à-dire des transitions du type S × M → S (cf. section 3.2.1). Sont
ajoutées à la mémoire p transitions issues d’un tirage uniforme dans l’espace moteur M
et partant toutes du point où l’agent est arrivé en voulant atteindre γ
t
, comme l’illustre
la figure 3.11. La définition formelle de l’exploration locale est la suivante :
∀i ∈ {1..p} (s
t+1 × Pr(M) → s
t+1+i
) (3.11)
s
t
γ
t
s
t+1
mt
Figure 3.11: Explication graphique de la phase d’exploration locale, déclenchée lorsque
la compétence d’atteinte vaut κ
t ≤ incomp. Dans cet exemple, les p = 7 flèches partant
de s
t+1
représentent les nouvelles transitions dans l’espace exploré apprises.66
CHAPITRE 3. MODÉLISATION FORMELLE D’UN SYSTÈME
MOTIVATIONNEL
3.6 Boucle motivationnelle complète
Cette section reprend de manière plus concise, le modèle motivationnel expliqué tout
au long de ce chapitre 3, présente un tableau récapitulatif des notations utilisées et donne
l’algorithme complet du processus développemental d’apprentissage sensorimoteur.
3.6.1 Résumé du fonctionnement global
Le fonctionnement général du modèle d’un agent impliqué dans une boucle de
développement à long terme guidé par une heuristique de motivation du progrès en
apprentissage est illustré par la figure 3.12 présentée page 67. D’un point de vue algorithmique,
ce modèle repose sur deux types de données qui sont indépendantes : d’un
côté les données brutes, de l’autre les données structurantes.
Les données brutes représentent tout ce qui est physiquement expérimenté par
l’agent, et de ce fait sont ancrées au niveau sensorimoteur. Tous ces tuples, qui sont des
exemples de transition d’un état s
t à un autre s
t+1 via une action mt
, nous permettent
de raisonner pour calculer une action à faire quand nous voulons atteindre un certain
état. Ces expériences sont stockées toutes ensemble dans une seule structure de données
de type collection, sans distinction particulière.
Les données structurantes représentent des expériences vécues à un plus haut
niveau, au sens où elles vont guider l’exploration future de l’espace grâce à la notion de
compétence. En effet, ce type d’expérience est un tuple composé d’un état but γ
t
, et
d’une valeur de compétence pour l’atteindre κ
t
. De telles expériences appartiennent à
une unique région Ri qui les englobent, puisqu’un but est un ensemble de coordonnées
dans l’espace sensoriel. Elles sont de plus toutes datées au sens où elles sont porteuses
d’un identifiant unique. Enfin et surtout, elles permettent de calculer une valeur d’intérêt
associée à cette région.
Le système décrit est une boucle générale, composée elle-même de deux sousboucles.
L’acquisition des données se fait de la manière suivante. À un premier niveau
se trouve la génération des buts. À un second niveau commence une boucle pour atteindre
ledit but. À chaque commande motrice choisie puis exécutée, le système enrichit
sa collection de données brutes par la nouvelle transition qu’il vient d’accomplir dans
l’espace. Quand le quota de tentatives est atteint ou que le but a été considéré comme
atteint, le processus reprend au premier niveau. Lorsqu’une tentative d’atteinte d’un but
est considérée comme trop mauvaise, une troisième boucle appelée phase d’exploration
locale est effectuée dans le voisinage de l’endroit où l’on est arrivé dans l’espace, qui
vient enrichir la collection des données brutes et améliorer l’apprentissage.3.6. BOUCLE MOTIVATIONNELLE COMPLÈTE 67
Environnement
Calcul de la
compétence
κ
t
Décision motrice
mt
Exploration
p
Génération
du but
γ
t
Restructuration
de la mémoire
Sélection
de la région
R^
Capteurs Moteurs
κ
t ≥ 1 − comp ou q actions
κ
t ≤ incomp
sinon
Début du cycle
Figure 3.12: Architecture algorithmique générale du modèle motivationnel présenté
dans ce chapitre, avec ses trois boucles imbriquées de génération de buts, d’atteinte de
but et d’exploration locale.68
CHAPITRE 3. MODÉLISATION FORMELLE D’UN SYSTÈME
MOTIVATIONNEL
3.6.2 Récapitulatif des notations
Il nous semble nécessaire, à la fin de ce premier chapitre de rappeler sous forme de
tableau les différentes notations introduites. Ces notations sont d’autant plus importantes
qu’elles continueront à être utilisées dans la suite de ce manuscrit. C’est l’objet
du tableau 3.1.
Notation formelle Correspondance informelle
S Espace sensoriel
M Espace moteur
C Mécanisme permettant de choisir un but dans S
P Mécanisme permettant de parvenir à un but choisi grâce à M
A Mécanisme d’actualisation de C et P
s
t Valeurs des capteurs (senseurs) du système à l’instant t
mt Action motrice effectuée à l’instant t
β
t = (s
t
, mt
, st+1
) Transition atomique dans l’espace exploré (donnée brute)
si
i-ème dimension composant S
mi
i-ème dimensions composant M
S
t Structuration de l’espace d’exploration à l’instant t
|St
| Nombre de régions dans S
t
(cardinalité)
Ri Région pavant l’espace d’exploration
|Ri
| Nombre d’expériences dans la région Ri (cardinalité)
ρ(Ri) Métrique d’intérêt d’une région Ri
e Nombre d’expériences utilisées pour le calcul de l’intérêt
R^ Région maximisant la valeur de la métrique d’intérêt
γ
t But généré dans R^ à l’instant t
κ
t Compétence d’atteinte d’un but à l’instant t
m? =
mt
, . . . , mt+q−1
Ensemble des actions effectuées pour atteindre un but
ξ
t = (s
t
, γt
, m?
, st+q
, κt
) Expérience d’atteinte d’un but (donnée structurante)
κ(j) Compétence de la jème expérience dans une région donnée
q Quota de tentatives d’atteinte d’un but
p Quota d’acquisition de nouvelles transitions locales
comp Valeur d’ajustement pour considérer un but comme atteint
incomp Valeur d’ajustement pour déclencher une exploration locale
k Nombre de plus proches voisins pour le calcul de l’action motrice
Tableau 3.1: Récapitulatif des notations introduites tout au long du chapitre 3.3.6. BOUCLE MOTIVATIONNELLE COMPLÈTE 69
3.6.3 Algorithme complet
À l’issue de cette section, nous pouvons maintenant présenter de manière opérationnelle
le fonctionnement d’un agent motivé (cf. algorithme 1). Pour en faciliter la
lecture, nous avons commenté les lignes importantes, et mis en avant les trois boucles
constitutives.
Algorithme 1: Boucles d’un agent intrinsèquement motivé pour l’apprentissage
de coordinations sensorimotrices.
// Boucle générale
1 répéter
2 s
t ← s
0 // Initialisation de l’état à la position de repos
3 R^ ← arg maxRi ∈ S
(ρ(Ri)) // Sélection de la région la plus intéressante
4 γ
t ← Pr(R^) // Tirage uniforme d’un but dans la région sélectionnée
5 m? ← ∅ // Initialisation des actions effectuées
// Boucle des tentatives d’atteintes
6 répéter
7 mi ← mu, ∀ β
u = (s
u, mu, su+1
) ∈ kNN(s
t
, γt
) // Calcul de l’action
8 m? ← m? ∪ mi
9 t ← t + 1
10 s
t ← exécuter(mi
) // Mise en œuvre de l’action choisie
11 κ
t ← κ(s
0
, γt
, st
) // Calcul de la compétence
12 β ← β ∪ (s
t−1
, mi
, st
) // Mise en mémoire de la transition
13 si κ
t ≤ incomp alors // Si la compétence est trop mauvaise
14 ξRst ← ξRst ∪ (s
t−1
, st
,
mi
, st
, 1) // Mise en mémoire du but artificiel
// Boucle d’exploration locale
15 répéter
16 mj ← Pr(M) // Tirage uniforme dans l’espace moteur
17 t ← t + 1
18 s
t ← exécuter(mj
) // Mise en œuvre de l’action choisie
19 β ← β ∪ (s
t−1
, mj
, st
) // Mise en mémoire de la nouvelle transition
20 s
t ← s
t−1 // On revient à la position précédente
21 jusqu’à p essais effectués
22 fin
23 jusqu’à κ
t ≥ 1 − comp ou |m?
| > q
24 ξR^ ← ξR^ ∪ (s
0
, γt
, m?
, st
, κt
) // Mise en mémoire de la donnée structurante
25 S
t = restructuration(S
t−1
, R^)
26 jusqu’à ad vitam aeternam70
CHAPITRE 3. MODÉLISATION FORMELLE D’UN SYSTÈME
MOTIVATIONNEL
3.6.4 Application du modèle
Dans les sections précédentes, nous avons présenté le modèle théorique motivationnel.
Nous pensons nécessaire d’instancier précisément les différentes notations qui permettent
de décrire ce modèle au travers d’un exemple d’encorporation simple.
Robot mobile mono-directionnel
Nous avons choisi de présenter ici un agent mobile le plus simple possible afin de
bien comprendre l’application du modèle dans un cadre expérimental maîtrisé. Le robot
considéré ici dispose donc d’une dimension sensorielle appelée telem et d’une dimension
motrice appelée move. Il évolue sur un axe mono-directionnel bordé par des murs devant
et derrière lui.
0 60
Figure 3.13: Schéma du dispositif de robot mobile mono-directionnel. La ligne en pointillée
représente ce que perçoit le capteur telem. Les blocs hachurés représentent des
zones qui empêchent la progression du robot.
Les valeurs données par telem correspondent à la distance au mur devant l’agent
et sont bornées entre [0; 60]. Les valeurs relatives aux impulsions motrices que l’agent
peut envoyer à move vont le faire avancer ou reculer selon une valeur dans l’intervalle
[−10; 10]. L’agent doit idéalement apprendre la relation qui lie les variables telem et
move, définie comme telle :
telemt+1 = telemt + movet
(3.12)
L’agent va donc pouvoir générer des buts comme étant une distance particulière du
mur donnée par la valeur de telem, donc dans l’intervalle [0; 60]. Mais comme le montre
la figure 3.13, à cause des murs bas, l’agent ne pourra pas accéder à toute les valeurs
de telem. La zone réellement expérimentable pour lui sera dans l’intervalle [10; 50]. Au
départ, en ce qui concerne l’espace d’exploration, on a donc :
S
0 = {R0} , où R0 = [0; 60] pour le telem
Illustrations après 1000 actions
Pour comprendre ce qu’il se passe pendant le déroulement de 1000 pas de temps,
c’est-à-dire 1000 actions motrices exécutées par l’agent, nous proposons quelques illustrations.
Celles-ci sont directement issues des visualisations proposées par la plateforme3.6. BOUCLE MOTIVATIONNELLE COMPLÈTE 71
FIMO que nous détaillons dans le chapitre 5, et que par conséquent nous n’expliquons
pas dans cette section. Le paramétrage utilisé ici pour les principales variables est le
suivant : q = 6, p = 5, k = 3, telem0 = 15.
Tout d’abord pour reprendre l’ordre de présentation du modèle, la figure 3.14 montre
l’évolution des valeurs prises par le capteur telem qui mesure la distance au mur, ainsi
que les valeurs envoyées au moteur move qui vont faire bouger l’agent sur son axe. On
observe bien comme prévu, que les valeurs prises par telem sont bornées dans l’intervalle
[10; 50]. On observe par ailleurs une densification de points à la valeur 15 dans le temps,
qui montre que l’agent progresse puisqu’il utilise moins de tentatives pour atteindre
ses buts et revient plus rapidement dans la position de repos telem0 = 15. Certaines
séquences montrent qu’il se heurte aux murs en 10 et en 50. Les valeurs envoyées au
moteur move sont elles uniformément réparties dans l’espace, ce qui signifie qu’il utilise
bien toutes les possibilités pour atteindre au mieux les objectifs qu’il se fixe.
Figure 3.14: Évolution des valeurs prises par le capteur telem et celles envoyées au
moteur move au cours de la vie de l’agent pour 1000 pas de temps.
Comme le montre la figure 3.15, à la fin de cette première étape, on voit que l’espace
a été structuré en plusieurs régions par l’agent :
S
1000 = {R0, R1, R2, R3, R4}
avec R0 = [0; 27.5], R1 = [28; 28.5], R2 = [29; 29], R3 = [29.5; 40.5]etR4 = [41; 60.0
dont les valeurs d’intérêt associées sont 0.0, 0.02, 0.08, 0.02, et 0.01.72
CHAPITRE 3. MODÉLISATION FORMELLE D’UN SYSTÈME
MOTIVATIONNEL
Figure 3.15: Structuration de l’espace d’exploration en 5 sous-régions sur la seule
dimension sensorielle telem. Les croix représentent les buts générés par l’agent. Plus la
couleur est sombre plus la région a été créée récemment.
Pour compléter l’illustration de l’application du modèle théorique sur ce robot très
simple, nous souhaitons montrer comment les buts sont générés par l’agent lui-même au
cours du temps. La figure 3.16 présente la manière dont les buts ont été générés. On peut
observer un découpage temporel permettant d’isoler quatre temps afin de visualiser où
ont été générés les 80 buts de la simulation. On constate que l’agent cherche au départ à
atteindre uniformément l’espace complet mais qu’au fil du temps, et grâce au découpage
et à l’intérêt, il génère bien des buts dans la zone atteignable.
Figure 3.16: Évolution de la localisation des 80 buts générés au cours du temps, dé-
coupage en quatre fenêtres de temps de longueur équivalentes.
Enfin, la figure 3.17 montre la courbe d’évolution de compétence en fonction du
temps, et montre que l’agent apprend correctement à maîtriser ses capacités motrices.3.7. CONCLUSION 73
Figure 3.17: Évolution de la compétence dans le temps.
3.7 Conclusion
Nous avons dans ce chapitre défini formellement notre instanciation d’un système
motivationnel de base. Pour cela nous avons commencé par donner une intuition du
fonctionnement global de l’architecture dont nous avons détaillé chaque bloc C(S), P(M)
et A(C, P). Le premier regroupe la sélection d’une région pour générer un nouveau but.
Le second englobe tout ce qui concerne le processus d’atteinte de ce but généré. Enfin
le troisième consiste à mettre à jour les modèles d’apprentissage et de structuration de
l’espace exploré pour guider l’agent au mieux.
Nous avons également pris soin d’expliquer les métriques et autres paramètres du
modèle pour finalement arriver à présenter une forme algorithmique complète formelle
et commentée. Pour clarifier ces explications théoriques, nous avons appliqué ce modèle
théorique sur un exemple d’encorporation très simple équipé d’une seule dimension
sensorielle et d’une seule dimension motrice.
D’autre part, nous devons conclure de ce chapitre que le modèle présenté est extrê-
mement paramétré. C’est-à-dire que par rapport à l’architecture globale présentée au
tout début du chapitre, nous avons au fur et à mesure fait des choix bien particuliers
de métrique, de valeurs de paramètres, voire à un niveau plus haut de méthodes pour
structurer l’espace. L’objectif de cette thèse est de proposer des alternatives sur ces
points précis et d’en permettre la comparaison sur un indicateur comme l’accélération
de l’apprentissage. C’est précisément ce à quoi nous nous attelons dans le chapitre suivant
en proposant d’autres formes de structuration et d’exploration de l’espace pour le
développement de l’apprentissage sensorimoteur.C h a p i t r e
4
Modélisation d’autres formes
de structuration
4.1 Introduction
Dans le chapitre précédent nous avons posé les bases formelles d’un système motivationnel
comme point de départ à nos travaux. Dans ce chapitre-ci nous défendons
l’hypothèse que certaines parties de ce modèle sont des choix qui doivent être étudiés.
En particulier, nous nous intéressons ici à la notion de structuration de l’espace, et donc
implicitement à la manière dont vont être générés les buts.
D’un point de vue conceptuel, nous ne remettons pas en cause le découpage en
sous-régions en ce qu’il permet de classifier les différentes zones de l’espace en leur attribuant
une valeur d’intérêt. En revanche, il est important de souligner le fait qu’à cet
instant t où la décision est prise de découper récursivement une région, la connaissance
est limitée à ce qui a été vécu jusque-là. Il y a donc un ratio à prendre en compte pour
optimiser au mieux le gain futur en apprentissage.
Ainsi dans ce chapitre, nous nous attachons à mettre en relief le fait qu’un point
d’articulation essentiel pour un système motivationnel se matérialise dans la notion de
(re)structuration. Il s’agit d’étudier plus en détail d’autres formes que peut prendre
ce mécanisme. Nous présentons dans cette partie ces limitations qui nous ont amené
à étudier puis introduire la nécessité d’un assouplissement dans l’accomplissement du
processus de structuration. Nous explicitons différentes techniques qui nous ont semblé
7576 CHAPITRE 4. MODÉLISATION D’AUTRES FORMES DE STRUCTURATION
progressivement apporter davantage de pertinence à l’amélioration du modèle de base.
Certaines d’entre elles agissent au niveau du paramétrage de la boucle motivationnelle
pour remettre en cause des découpes effectuées auparavant sans toucher au mécanisme
de découpe en lui-même (cf. section 4.2), quand d’autres s’appliquent à introduire de
nouveaux mécanismes pour donner davantage de souplesse à la structuration par régions
(cf. section 4.3). Nous proposons ensuite de remettre en cause ce mécanisme lui-même, en
considérant un niveau décisionnel plus global (cf. section 4.4). Enfin, nous remettons en
question l’espace tel qu’il est fourni à l’agent, en proposant de trouver d’autres manières
de représenter l’espace d’exploration le considérant comme crucial (cf. section 4.5).
4.2 D’autres paramétrages
Dans le modèle de base présenté au chapitre précédent, après avoir expérimenté un
nouveau but, l’agent va chercher une nouvelle découpe si et seulement si un nombre
suffisants de buts ont déjà été expérimentés dans la région considérée. Néanmoins cette
condition n’est pas complètement en accord avec une vision développementale de réorganisation
de la mémoire que nous pourrions envisager puisqu’elle revient finalement à
faire deux hypothèses :
1. La première est qu’au-delà d’un certain nombre d’expériences effectuées dans une
région, la cohérence ne peut plus être maintenue de manière efficace ;
2. La seconde est que découper ne pourra qu’améliorer cette cohérence sans l’altérer
si elle est déjà optimale.
Si une région est nécessairement découpée dès qu’elle contient un certain nombre
d’expériences, cela signifie explicitement de ne pas prendre en compte l’intérêt ou non
de découper. C’est problématique dans le cas où une région est suffisamment petite
pour maximiser la cohérence des buts qui y sont contenus. L’exemple fourni dans le
chapitre précédent sur l’image 3.15, page 72, en est un exemple parfait puisque la région
r2 regroupe les valeurs de telem dans l’intervalle [29; 29].
Puisque ce mécanisme implique régulièrement et automatiquement d’effectuer un
découpage, il ne consiste pas à trouver la meilleure découpe possible mais plutôt la
moins mauvaise puisqu’on y est obligé. Une telle condition statique de découpage semble
limitée, puisque peu importent l’expérience et la connaissance accumulée au cours du
temps, l’agent est explicitement doté d’une tendance au découpage récursif, potentiellement
inutile, qui ne peut qu’augmenter corrélativement au nombre d’expériences
vécues. Pour notre part, nous faisons l’hypothèse qu’il peut être intéressant de prendre
en considération l’évolution globale des connaissances pour améliorer globalement la4.2. D’AUTRES PARAMÉTRAGES 77
structuration de l’espace exploré.
Dans cette vision, le problème principal devient de savoir comment faire afin d’éviter
ce que nous pourrions appeler un phénomène de sur-découpage. Trois possibilités ont
ainsi été étudiées et sont présentées dans la suite de cette section. La première propose
une nouvelle définition de la métrique d’intérêt d’une région. La seconde définit une
condition dynamique afin d’y décharger la responsabilité de la décision de découpage.
La troisième explique une métrique de compétence contextuelle. Ces propositions ont
fait l’objet d’une publication [Hervouet et Bourreau, 2012].
4.2.1 Nouvelle métrique d’intérêt
La métrique ρi présentée au chapitre précédent qualifie l’intérêt dynamiquement calculé
pour une certaine région R. Une première évolution du modèle initial s’applique
à lier cette métrique davantage au processus développemental. Elle apporte deux diffé-
rences majeures en subdivisant la métrique ρ en deux : le progrès en compétence et la
diversification.
ρ(Ri) = progrès(Ri) + c × diversification(Ri) (4.1)
avec c une constante permettant d’ajuster le poids entre ces deux composantes.
Progrès
Premièrement nous proposons d’utiliser une version temporelle de la dérivée. Nous
proposons d’inclure cette notion de temps directement dans le calcul de l’intérêt, en
prenant en compte le moment particulier où l’expérience a eu lieu. Cela permet de
réduire assez fortement la valeur calculée en lissant la courbe d’intérêt dès lors que les
expériences sont trop peu fréquentes.
progrès(Ri) =
P|Ri|/2
j=0
κ(j) − Pe
j=|Ri|/2 κ(j)
P|Ri|/2
j=0
t(j) − Pe
j=|Ri|/2 t(j)
(4.2)
avec κ(j) et t(j) respectivement la compétence et l’estampille de la jième expérience dans
une région donnée.
Diversification
D’autre part, nous avons également choisi d’incorporer une métrique de diversification
basée UCT (Upper Confidence Tree) [Kocsis et Szepesvári, 2006]. La diversification
vient empêcher le système de sur-intensifier uniquement quelques zones. Elle permet78 CHAPITRE 4. MODÉLISATION D’AUTRES FORMES DE STRUCTURATION
également de revenir tester les compétences dans des zones déjà considérées comme
acquises 1
.
Pour ce faire, notre mécanisme de diversification prend en compte, de manière incrémentale,
le nombre d’expériences conduites dans la région courante relativement au
nombre total d’expériences. Il prend en compte un ratio entre l’expérience locale à une
région comparativement à l’expérience globale au niveau du système tout entier. Cela
signifie que le mécanisme permet de réveiller l’intérêt d’une région.
diversification(Ri) =
vuut
ln P|S|
j=1
|Rj
|
|Ri
|
(4.3)
avec |Ri
| la cardinalité de la région Ri
, c’est-à-dire le nombre d’expériences appartenant
à la région.
4.2.2 Condition de découpage à seuil
Nous présentons ici une nouvelle manière de décider quand faire une découpe. La
figure 4.1 rappelle que découper revient à étudier tous les couples (r1, r2) dans chacune
des dimensions de l’espace d’exploration. Comme déjà expliqué, le nombre de couples
à étudier dépend directement de la finesse du découpage choisi, correspondant à un
nombre maximum de découpes par dimension.
r1 r2
r1 r2
r1 r2
r1
r2
r1
r2
r1
r2
Figure 4.1: Ensemble des 6 couples de sous-régions dans les deux dimensions de l’espace
d’exploration.
1. Ce cas de figure, comme déjà expliqué plus tôt, est particulièrement intéressant dans le cas d’un
environnement réellement changeant et/ou non déterministe.4.2. D’AUTRES PARAMÉTRAGES 79
La solution que nous détaillons ici vient pallier l’aspect statique de la condition du
modèle de base. Mais pour la rendre dynamique, cela nécessite de se poser une question
essentielle : quels sont les paramètres sur lesquels cette décision dynamique pourrait se
baser ? La notion de compétence étant au cœur du processus de structuration, il est
certain que le progrès en compétence des expériences au sein d’une région se doit d’être
pris en compte. Formellement, nous définissons une métrique de découpage µ telle que :
µ(r1, r2, Ri) = |progrès(r1) − progrès(r2)| (4.4)
Cela revient à maximiser la valeur absolue de la différence entre le progrès en apprentissage
dans les deux potentielles sous-régions considérées r1 et r2. De plus, nous
introduisons deux nouveaux seuils. Le premier, η, porte sur le nombre d’expériences
dans la région considérée. Le second, σ, sert à déterminer si la valeur calculée par µ est
suffisant pour valider la découpe. Ce qui nous permet d’exprimer S
t+1
en fonction de S
t
comme suit :
S
t+1 =
S
t\{R} ^ ∪ {r1, r2} si |R| ^ ≥ η et µ(r1, r2, R^) ≥ σ
S
t
sinon
(4.5)
r1, r2 = arg max
ri,rj ∈ R^
(µ(ri
, rj
, R^)) (4.6)
Il y a donc trois niveaux proposés pour le nouveau mécanisme de découpe : une nouvelle
métrique µ qui permet de calculer un ratio, un seuil σ que ce ratio doit dépasser pour
que la découpe soit valide, et la condition de base sur le nombre minimal d’expériences
η présentes dans la région.
4.2.3 Métrique de compétence contextuelle
Nous proposons également une nouvelle métrique de calcul de la compétence κ. Jusqu’à
présent, celle-ci était calculée de manière statique, tout au long de l’apprentissage,
comme le ratio entre la distance à parcourir et la distance parcourue. La métrique que
nous proposons ici se veut contextuelle, afin que la métrique devienne, de manière progressive
avec l’expérience, de plus en plus sévère sur ce que l’on attend en terme de
proximité d’atteinte de l’objectif.
κ
t = 1 − min
s
t+q − γ
t
δ
, 1
(4.7)80 CHAPITRE 4. MODÉLISATION D’AUTRES FORMES DE STRUCTURATION
δ =
X
γ
t − s
t+q
|R| ^
∀ ξ
t = (s
t
, γt
, m?
, st+q
, κt
) ∈ R^ (4.8)
avec κ
t
la compétence vue comme le même ratio que précédemment, mais dont le dénominateur
n’est plus la distance parcourue dans cette expérimentation, mais δ, la distance
moyenne à l’objectif pour toutes les expériences de la région. Dans un objectif développemental
il s’agit d’une solution élégante pour signifier que, meilleure est la compétence
moyenne dans une région, plus la valeur de la compétence va être diminuée.
4.3 D’autres mécanismes
Après avoir présenté des alternatives en terme de paramétrage, nous présentons dans
cette section deux nouveaux mécanismes venant remettre en question le processus de
découpe en régions. Il s’agit de rendre ce processus plus flexible. Le premier mécanisme
consiste à ajuster dynamiquement des découpes, dans le but d’arranger au mieux une
découpe effectuée précédemment. Le second mécanisme permet quant à lui de fusionner
des régions qui ne présentent plus un intérêt suffisant à demeurer divisées, dans le
but de pouvoir se recentrer sur d’autres zones plus importantes à intensifier en terme
d’apprentissage à ce stade du développement.
4.3.1 Ajustement dynamique des découpes
Proposer d’autres formes de structurations locales passe également par remettre
en question les découpes effectuées tout au long de l’acquisition de nouvelles expé-
riences par l’agent. C’est pourquoi nous proposons dans cette section une méthode
permettant de pouvoir revenir sur des décisions prises par le passé en ce qui concerne
les découpes. Comme nous l’avons déjà expliqué, l’agent peut prendre la décision de
découper une région de manière judicieuse par rapport aux données collectées jusquelà,
mais qui par la suite, s’avère moins optimisée au regard des données collectées depuis.
La figure 4.2 donne l’exemple d’une région au sein de laquelle les données accumulées
sont déséquilibrées par rapport à la zone réellement accessible qu’il nous intéresse
de cerner. Dans ce cas, une découpe à un instant précoce du processus risque d’être
sous-optimale, quand une découpe effectuée plus tard, et prenant en compte davantage
d’informations, ne l’aurait pas placée au même endroit.
Néanmoins, il ne faut pas cacher le fait que l’exemple présenté en figure 4.2 reste un
exemple très simple. Il est très facile d’exhiber des exemples algorithmiquement bien
plus compliqués à traiter. Comme le montre la figure 4.3, certains cas engendreraient4.3. D’AUTRES MÉCANISMES 81
t = 20 t = 200
...
Figure 4.2: Illustration de l’intérêt du mécanisme d’ajustement local des découpes.
À gauche la découpe effectuée sur un échantillon trop faible menant à une première
découpe ; à droite la découpe qui rééquilibre les régions et permet de mieux délimiter
la zone accessible. Les points bleus et rouges représentent des buts atteignables et non
atteignables.
trop de lourdeurs au niveau de la gestion des régions, ce qui nous a poussé à limiter
les possibilités à seulement certains types d’ajustements. Concrètement la principale
interdiction de restructuration par ajustement local réside au niveau de deux régions
qui ne partagent pas la totalité du domaine de leur frontière commune. La figure 4.3
illustre les possibilités d’ajustement pour un exemple de découpage en cinq régions à
un instant particulier. Les découpes bleues représentent les potentiels ajustements.
Figure 4.3: Illustration d’un découpage en cinq régions avec en rouge les frontières
non-ajustables et en bleues les frontières ajustables.
Ainsi l’état de l’espace S
t+1 peut être déterminé en fonction de l’état de l’espace S
t
, par
ajustement local de la région R^ où l’on vient d’ajouter une nouvelle expérience, de la
manière suivante :
S
t+1 = S
t
\{R^, Rj} ∪ {r1, r2} (4.9)
r1, r2 =
µ( ^r1, r^2, R^ ∪ Rj)
µ(R^, Rj
, R^ ∪ Rj)
≥ α (4.10)82 CHAPITRE 4. MODÉLISATION D’AUTRES FORMES DE STRUCTURATION
r^1, r^2 = arg max
ri,rj ∈ R^∪Rj
(µ(ri
, rj
, R^ ∪ Rj)) ∀Rj ∈ adj(Rj) (4.11)
où α un seuil à dépasser pour le ratio entre la valeur de µ pour la découpe courante et
la meilleure découpe trouvée afin d’entériner l’ajustement, et adj(Rj) la liste des régions
adjacentes à la région Rj
.
Cette liste d’adjacence est maintenue incrémentalement au fur et à mesure des
découpes. Elle a nécessité l’élaboration d’une nouvelle façon de représenter les régions.
Plutôt que de connaître uniquement une valeur de découpe, les régions sont définies par
trois aspects : des bornes pour chacune de ses dimensions, une collection d’expériences
associées appartenant topologiquement à cette zone, et enfin d’une liste de régions
sœurs. Les régions sœurs d’une région donnée représentent l’ensemble des régions avec
lesquelles elle partage un sous-ensemble de valeurs pour au moins une dimension. La
figure 4.4 illustre concrètement la nouvelle représentation des régions sous forme de
graphe. Il est important de noter que, comme on peut l’observer sur la figure, l’adjacence
est une notion plus forte que le graphes des régions sœurs, dont il constitue
un sous-graphe partiel, c’est-à-dire contenant le même ensemble de sommets, mais un
sous-ensemble des arêtes le caractérisant.
C1
B2
D1 D2
C1
D1 B2
D2
C1
D1 B2
D2
Figure 4.4: Illustrations, pour un même découpage d’un espace d’exploration à deux
dimensions, de la structuration en quatre sous-régions (à gauche), du graphe sororal (au
centre) et du graphe d’adjacence (à droite).
4.3.2 Fusion dynamique de régions
La fusion de régions est une autre proposition pour organiser une restructuration
plus complète et plus complexe. L’idée est la même que pour l’ajustement de la frontière
entre deux régions, sauf qu’elle prend en considération l’intérêt de supprimer la découpe
plutôt que de l’ajuster. Combiner un mécanisme de découpe avec un mécanisme de
fusion représente d’un point de vue conceptuel une flexibilité beaucoup plus grande
que ce qui a pu être proposé jusqu’à présent. Cela fait écho à une certaine forme de4.4. UNE AUTRE STRUCTURATION PAR PARTITIONNEMENT 83
plasticité structurale, où des régions vont se créer, dont certaines vont fusionner par
manque d’intérêt. Il s’agit d’un phénomène sans stabilisation a priori.
D’un point de vue pratique, la solution proposée repose sur une vision symétrique de
la notion de découpe définie plus tôt (cf. section 4.2.2). Une fois encore, nous pouvons
définir la structuration de S
t+1
en fonction de S
t
:
S
t+1 =
S
t\{R^, Rj} ∪ {R^ ∪ Rj} si µ(R^, Rj
, R^ ∪ Rj) ≥ λ
S
t
sinon
(4.12)
Rj = arg max
Rj∈adj(R^)
(µ
0
(R^, Ri)) (4.13)
Concrètement, la solution présentée cherche à fusionner la dernière région expérimentée
R^ avec une de ses régions adjacentes Rj en une seule nouvelle région. Cette fusion est
soumise à l’estimation du progrès 2 dans la région fusionnée, qui doit être plus élevé
que la différence de la mesure du progrès dans les deux régions existantes considérées.
De plus cette valeur calculée à partir de la métrique µ doit dépasser un certain seuil
λ pour effectivement valider la fusion. Ce seuil constitue en quelque sorte le miroir du
seuil σ introduit pour les découpes, puisqu’il se base sur la même métrique µ, mais cette
fois-ci dans le but de supprimer une découpe en fusionnant deux régions qui séparées ne
montreraient plus autant d’intérêt qu’au moment de leur dissociation.
4.4 Une autre structuration par partitionnement
Dans les deux premières alternatives de structuration précédemment envisagées
(ajustement et fusion), il s’agit essentiellement de remettre en cause une précédente
découpe ayant permis d’isoler une région intéressante d’une région moins intéressante.
Cela consiste surtout à adapter ou corriger d’un point de vue purement local. Remettre
en cause ces découpes constitue une étape, mais conséquemment à notre étude d’autres
formes de structurations envisageables, nous considérons ici un mécanisme plus global.
Pour ce faire, nous avons choisi d’appliquer une technique de partitionnement de
données.
4.4.1 Méthode de partitionnement
Le partitionnement (on parle aussi de clustering analysis) désigne généralement
une tâche particulière consistant à regrouper un ensemble d’objets de telle manière
2. Ici nous considérons uniquement le progrès dans le temps associé à une région et non la totalité
de la métrique d’intérêt. Cela provient du fait que la seule chose qui nous intéresse dans le cas de la
fusion est de baser le besoin en fonction de l’accélération de la dynamique d’apprentissage en cours.84 CHAPITRE 4. MODÉLISATION D’AUTRES FORMES DE STRUCTURATION
que les objets appartenant à une même grappe soient davantage similaires entre eux
par rapport à ceux appartenant à d’autres grappes. En d’autres termes, il s’agit d’une
méthode statistique d’analyse des données qui vise à diviser un ensemble de données
en différents paquets homogènes, en ce sens que les données de chaque sous-ensemble
partagent des caractéristiques communes selon des critères à définir. Cette tâche peut
en pratique être menée à bien grâce à de nombreux algorithmes proposant chacun une
vision particulière de la notion de similarité, de celle de grappe (ou cluster), ou encore
de la manière permettant de les trouver.
Selon cette description, une méthode de partitionnement semble tout à fait correspondre
à ce que l’on cherche à faire du point de vue d’un système motivationnel tel que
peut l’être notre agent : isoler des expériences cohérentes. Comme nous le précisions
au chapitre 3, la cohérence (ou homogénéité) de ces expériences réside dans l’approche
proposée sur le progrès en maîtrise d’atteinte d’un objectif. Cela constitue une possibilité
tout à fait redéfinissable pour une utilisation dans un algorithme de partitionnement.
4.4.2 Algorithme K-Means
Nous avons réutilisé la méthode des K-Means, que nous décrivons ci-après pour implémenter
ce mécanisme. Étant donné un ensemble d’observations X = {x1, x2, ..., xn},
où chaque observation est un vecteur de dimension d, l’algorithme k-means de partitionnement
vise à partitionner les n observations dans g ensembles E = {E1, E2, ..., Ek}
(k ≤ n) afin de minimiser la distance entre les points à l’intérieur de chaque partition :
arg min
E
X
k
i=1
X
xj∈Ei
xj − µi
2
(4.14)
où µi est la moyenne des points dans Ei
.
De nombreux travaux ont été effectués pour étendre la version originale de Steinhaus
[1956] comme autant d’adaptations proposées au fil des années. Par exemple chez
MacQueen [1967] les barycentres sont recalculés à chaque ajout d’individus, ce qui rend
l’algorithme plus efficace mais également plus sensible à l’ordre de présentation des
exemples ; Diday [1971] propose d’étendre le concept de barycentre non plus à un unique
point, mais à un noyau de points représentatifs de la classe dans le but de se protéger
de l’influence des valeurs extrêmes dans le calcul du barycentre d’une classe. L’algorithme
standard utilisé aujourd’hui provient de Lloyd [1982]. Globalement, on peut
synthétiser le fonctionnement des K-Means comme nous l’avons fait dans l’algorithme 2.
En pratique, d’autres algorithmes de type partitionnement auraient pu être utilisés.
Nous pensons notamment à DBSCAN [Ester et al., 1996] ou encore les cartes auto-4.4. UNE AUTRE STRUCTURATION PAR PARTITIONNEMENT 85
Algorithme 2: Fonctionnement de l’algorithme de partitionnement K-Means.
Entrées : X vecteurs de n données à d dimensions ;
g nombre de grappes ;
1 Choisir g points {p1, ..., pk} dans l’espace à d dimensions ;
2 répéter
3 Assigner chaque xj à l’ensemble Ei
le plus proche (diagramme de Voronoï)
4 E
(t)
i =
xj
:
xj − p
(t)
i
≤
xj − p
(t)
i
∗
∀i
∗ = 1, . . . , k
5 Mettre à jour la moyenne de chaque grappe
6 p
(t+1)
i =
1
|E
(t)
i
|
P
xj∈E
(t)
i
xj
7 jusqu’à convergence
8 Retourner E
adaptatives [Kohonen, 2001] et ses multiples dérivées. Le choix de se restreindre à l’étude
de K-Means a été fait pour des raisons topologiques. En effet, dans notre modélisation,
une région consiste, a minima, en un ensemble d’expériences, mais il nous fallait garder
une vision topologique puisque nous avons besoin de générer de nouveaux buts dans cet
espace. Pour cette raison, il est nécessaire de conserver une correspondance forte avec
l’espace.
4.4.3 Structuration à base de K-Means
À partir de cet algorithme, nous pouvons appliquer son fonctionnement afin d’obtenir
un processus de structuration globale de l’espace d’exploration à partir des expériences
vécues. Dans cette manière de faire, les régions seront calquées sur une partition de
l’espace d’exploration basée sur la notion de diagrammes de Voronoï. Ces derniers sont
une façon élégante de diviser l’espace en un certain nombre de régions. Celles-ci ne
sont plus définies par des bornes dans chaque dimension, mais par un point de l’espace
appelé graine, qui en détermine le centre de masse. Une région contient tous les points /
expériences qui sont plus proches de la graine la représentant que de toute autre graine
(cf. figure 4.5).
L’idée consiste à remplacer entièrement le processus de structuration par découpage
dimensionnel orthogonal aux axes au niveau global. Cela signifie qu’au lieu de
découper localement et récursivement une région, la réflexion va se faire
à chaque fois à un niveau plus élevé pour prendre en compte l’état global
de l’espace d’exploration. Cela permet de reconsidérer en permanence la totalité
de l’expérience acquise et de s’affranchir ainsi des contraintes directement liées aux86 CHAPITRE 4. MODÉLISATION D’AUTRES FORMES DE STRUCTURATION
Figure 4.5: Illustration de l’utilisation de la méthode de partitionnement K-Means
comme mécanisme de calcul de sous-régions. Les frontières des régions tracées en pointillés
représentent la tesselation de Voronoï associée aux graines de chacune des régions.
découpages précoces intempestifs.
Il est à noter que l’on conserve tout de même ici la notion de région comme étant
avant tout une partie de l’espace d’exploration contenant des expériences, et non pas
uniquement ces dernières. Cela provient du fait que nous devons pouvoir générer de
nouveaux buts à atteindre dans une région attractive, et si une région était uniquement
constituées d’expériences, nous ne pourrions de toutes façons pas en générer de nouvelles
sans qu’elles ne soient localisées. Nous avons fait le choix de générer de nouveaux buts
en utilisant une loi de probabilité normale centrée sur la graine.
Par ailleurs, pour éviter d’effectuer trop souvent le calcul des grappes associées aux
régions, nous mettons en place un seuil du nombre d’expériences nécessaires à produire
avant de pouvoir tenter une restructuration globale. Par ailleurs, nous introduisons un
mécanisme permettant de faire varier le nombre de régions. En effet, puisque l’algorithme
K-Means prend explicitement en paramètre le nombre de graines, et donc pour nous de
régions, une version simple serait trop statique. C’est pourquoi l’algorithme propose de
comparer trois partitionnements possibles parallèlement à chaque fois :
1. celui à g = |S| grappes,
2. celui à g = |S| + 1 grappes,
3. celui à g = |S| − 1.
avec |S| le nombre de régions dans l’espace d’exploration S. Cela veut simplement
dire que l’on cherche à restructurer (1) soit avec le même nombre de grappes qu’à l’état
courant, (2) soit en ajoutant ou (3) en retirant une grappe. Il s’agit de permettre une
certaine flexibilité dans le nombre de régions pavant l’espace, tout comme le permettaient
les mécanismes de découpage et fusion présentés précédemment. Ainsi, il s’agit au final
d’implémenter une certaine forme de plasticité structurelle globale de manière native.
On peut donc définir S
t+1
comme suit :4.5. D’AUTRES REPRÉSENTATIONS SPATIALES 87
S
t+1 = arg max
E
X
k
i=1
progrès(Ei) ∀ Ei ∈ K-Means(ξ, k0
)
∀ k
0 ∈ {|S|, |S| + 1, |S − 1|}
(4.15)
D’un point de vue pratique, il nous semble important de préciser que nous appliquons la
méthode de partitionnement sur les données structurantes ξ placées dans les n dimensions
de l’espace d’exploration, auxquelles nous rajoutons une dimension représentant
la compétence atteinte pour chaque point. Cela dans le but de permettre un partitionnement
qui puisse prendre en compte la notion de compétence, qui est fondamentale
dans le calcul de l’intérêt des régions.
4.5 D’autres représentations spatiales
Les propositions faites dans les sections précédentes s’inscrivent dans un seul et
même cadre, celui d’un espace à explorer tel qu’il est fourni à l’agent. Mais le choix
de cet espace, c’est-à-dire de ses dimensions, est extrêmement dépendant
de l’encorporation de l’agent. Pourquoi la façon dont nous est fourni cet espace
constituerait nécessairement la meilleure manière de représenter les données dont on ne
sait rien a priori ?
L’une des motivations d’un paradigme alter-représentationnel comme nous pourrions
l’appeler, est clairement de dépasser les limitations d’un mécanisme de découpe purement
orthogonal aux dimensions sensorielles de l’agent. Ces dimensions sont déterminées
une première fois par les capteurs électroniques qui permettent de récupérer des valeurs,
et une seconde fois par l’ingénieur qui implémente, discrétise, et peut parfois s’arranger
avec ce flot de données. Cette couche supplémentaire de médiation entre les expériences
de l’agent et ce que ce dernier peut en apprendre nous semble superflue autant que peu
défendable dans une perspective purement développementale.
4.5.1 Transformer l’espace d’exploration a priori
La première proposition que nous faisons concerne directement une transformation
de l’espace d’exploration a priori. Il s’agit ici, pour le modélisateur, de déterminer
une nouvelle façon de représenter les données, qui ne se base pas purement et simplement
sur les dimensions sensorielles recueillies par l’agent incarné.
En pratique, il s’agit d’associer une fonction de distorsion φ dans l’optique de
représenter les mêmes données vécues, mais d’une manière plus adaptée. D’un point de88 CHAPITRE 4. MODÉLISATION D’AUTRES FORMES DE STRUCTURATION
vue formel, on peut définir φ comme une application particulière de tous les points de
l’espace S d’origine et de dimensions |S|, vers un nouvel espace S
0
. L’application φ doit
prendre en compte les différentes dimensions existantes de l’espace d’origine pour créer
de nouvelles dimensions, et se définit comme suit :
S → S
0
: φ(s1, s2, ..., s|S|) (4.16)
Comme le montre, de manière plus intuitive la figure 4.6, toute configuration motrice
de M trouve une correspondance à la fois dans l’espace d’exploration initial S et dans
l’espace transformé S
0
.
M
S
S
0
Figure 4.6: Illustration de la différence de résultat dans deux espaces d’exploration
pour deux configurations motrices données.
Dans ce contexte, supposons un système disposant de deux capteurs, ce qui implique
un espace d’exploration d’origine S à deux dimensions, s1 et s2. Nous pouvons à partir
de là examiner n’importe quelle fonction de distorsion de l’espace original en une seule
nouvelle dimension qui, potentiellement, synthétisera mieux la dispersion des données
de manière à donner une représentation, sans perte, qui soit porteuse de plus de sens.
Considérant que nous disposons de deux dimensions dans l’espace de base, la nouvelle
dimension à créer peut prendre en compte uniquement s1, uniquement s2, ou bien les
deux. Par exemple :
S
0
: φ(s1, s2) = 2 × s1
S
0
: φ(s1, s2) = (s2)
3
S
0
: φ(s1, s2) = (s1 − 15)
2 + (s2)
3
. . .
S
0
: φ(s1, s2) = ...
Un exemple un peu plus parlant et reposant sur une encorporation expérimentée par la4.5. D’AUTRES REPRÉSENTATIONS SPATIALES 89
suite est nécessaire. Considérons, comme l’illustre la figure 4.7, un espace d’exploration
à deux dimensions x et y dont la zone atteignable est représentée par la zone ronde
en pointillés circonscrivant l’ensemble des points bleus et centrée sur le point (0; 0).
Le reste de l’espace est donc non atteignable pour l’encorporation considérée. Afin
de réussir à découper au mieux cet espace en utilisant le processus de structuration
orthogonal, une manière pertinente de déformer l’espace serait d’appliquer une fonction
φ qui permette de transformer l’espace des coordonnées cartésiennes en coordonnées
polaires, définie comme telle φ(x, y) = x
2 + y
2
. Cette technique permet de représenter
linéairement la séparation entre les zones atteignable et non atteignable contrairement
à l’espace d’origine, et de surcroît de contenir la redondance par la représentation en
cercles concentriques qui ne prend en compte que la distance à l’origine.
x
y
(0; 0)
φ
x
2 + y
2
Figure 4.7: Illustration de la projection des données positionnées dans l’espace d’exploration
d’origine (à gauche) vers un nouvel espace défini par l’application φ (à droite),
qui permet de mieux isoler la zone atteignable.
Il est important de souligner le fait que cette vision des nouvelles représentations du
monde qui seraient, en quelque sorte, des déformations de l’espace initial, est pleinement
compatible avec le modèle de base. Cela signifie que le reste du processus se déroule
de la même manière avec les mêmes méthodes et métriques linéaires, mais appliquées à
un espace différent, potentiellement non linéaire. Cela vaut autant pour le mécanisme
de découpe que pour le mécanisme de choix de la région la plus intéressante. Il s’agit
simplement de raisonner de la même manière, mais dans un espace S
0 = φ(S).
Pour autant, l’intention de mieux représenter les données est louable, mais des limitations
existent pour ce modèle, en premier lieu le fait qu’une distorsion ne puisse90 CHAPITRE 4. MODÉLISATION D’AUTRES FORMES DE STRUCTURATION
φ1 : x
2 + y
2
φ2 : (x − 2O)
2 + y
2
(674; 725)
φ1 : x
2 + y
2
674
φ2 : (x − 20)
2 + y
2
725
x
y
(7; 25)
(45; 10)
Figure 4.8: Illustration de l’indépendance des distorsions φi menant à l’impossibilité
de l’exploration d’un espace conjoint.
prendre en considération qu’une seule dimension. Cela provient du mécanisme qui permet
de choisir un but est basé sur un tirage selon une distribution uniforme dans chacune
des dimensions de la région considérée. Ainsi dès lors que les dimensions sont potentiellement
indépendantes, un point déterminé au hasard dans l’espace conjoint de deux
distorsions peut donner deux points distincts dans l’espace d’origine. La figure 4.8 donne
pour exemple le choix du point de coordonnées (674; 725) dans l’espace défini par les
deux distorsions [x
2 + y
2
; (x − 20)
2 + y
2
]. Ce point reporté dans chacune des dimensions
se retrouve projeté en deux points différents dans l’espace d’origine [x; y] aux coordonnées
(7; 25) dans [x
2 + y
2
] (puisque 7
2 + 252 = 674) et (45; 10) dans [(x − 20)
2 + y
2
]
(puisque (45 − 20)
2 + 102 = 725). Les coordonnées d’arrivée dans l’espace d’origine ne
constituent évidemment qu’une possibilité parmi d’autres, puisqu’une coordonnée dans
l’espace déformé peut potentiellement représenter de multiples coordonnées dans l’espace
d’origine. Par exemple pour x
2 + y
2 = 674 on trouve au moins les coordonnées
(7; 25) et (25; 7). Toujours est-il que l’indépendance de ces distorsions ne permet pas
de créer un espace unifié d’exploration. Néanmoins, une réponse à cette limitation est
exposée par la suite dans la section 4.5.3.
4.5.2 Transformer l’espace d’exploration a posteriori
Nativement, l’agent explore un espace S qui reflète la vision du concepteur. Au
final, la définition de cet espace d’exploration dépend soit directement des capteurs
physiques qui équipent le robot, soit d’un espace opérationnel précis. Ce qui lie ces4.5. D’AUTRES REPRÉSENTATIONS SPATIALES 91
deux cas, c’est le fait que cet espace demeure fourni a priori, et puisse ne pas être en
adéquation avec les spécificités de l’encorporation de l’agent. Ce point, que nous considérons
comme un biais car appliqué depuis l’extérieur du système, semble crucial dans
une perspective développementale telle que nous essayons de la mettre en œuvre. C’est
pourquoi, dans le but de limiter ce biais, nous souhaiterions permettre à l’agent de
fréquemment ré-adapter la définition de l’espace d’exploration en se basant
sur son expérience. Nous nous inscrivons dans une démarche qui cherche à adapter
l’espace d’exploration aux données plutôt que l’inverse 3
.
Pour mettre en œuvre cette idée, nous nous appuyons sur une méthode statistique
éprouvée : l’Analyse en Composantes Principales (ACP) Pearson [1901]. Elle dispose
de plusieurs avantages pratiques. Le premier avantage réside incontestablement dans
la réduction du nombre de dimensions de l’espace considéré. C’est particulièrement
vrai puisqu’elle permet de réduire les dimensions de l’espace d’origine en déterminant
les d premières dimensions qui maximisent la représentativité des données. Ce mé-
canisme permet donc d’obtenir une représentation des données exprimant au mieux
leur variance, c’est-à-dire la dispersion des données le long des axes. Par ailleurs, en
disposant d’une vue plus représentative des données, nous pouvons visualiser, maintenir
et prendre en compte la possible existence de corrélations entre de multiples dimensions
pour créer une région exhibant un réel intérêt. Cette méthode permet également de se
concentrer sur des découpes orthogonales à un espace plus complexe que celui fourni à
l’origine. En effet, l’ACP permet de décrire, à partir de données, un espace comme une
combinaison linéaire des dimensions de l’espace d’origine. Ce point précis nous paraît
très prometteur dès lors qu’il s’agit d’observer des comportements de coordinations
sensorimotrices multi-dimensionnelles. La figure 4.9 présente un exemple où une ACP
permet de déformer l’espace d’exploration pour mieux représenter la variance et être à
même de réaliser de meilleures découpes.
De manière plus formelle, cette méthode s’applique sur des données à v descripteurs
et permet l’analyse de la structure de la matrice de variance-covariance, c’est-à-dire de
la variabilité, ou dispersion, de ces données. Elle permet de décrire à l’aide de d ≤ v
composantes un maximum de cette variabilité et ainsi :
1. de réduire les données à d nouveaux descripteurs ;
3. Si l’on se réfère aux théories piagétiennes déjà présentée dans l’état de l’art, on peut distinguer
deux mécanismes que l’enfant emploie pour construire sa représentation du monde. Le premier mécanisme
est l’accommodation et correspond au fait que l’individu va se modifier lui-même pour conserver
sa cohérence à l’intérieur du milieu dans lequel il évolue. Le second mécanisme est l’assimilation, qui
consiste pour l’individu à transformer le milieu pour l’adapter à ses connaissances, en agissant sur ce
milieu. C’est pourquoi il s’agit d’adapter a posteriori, qui littéralement signifie par une raison qui vient
après, et pose ainsi la condition nécessaire de l’expérience.92 CHAPITRE 4. MODÉLISATION D’AUTRES FORMES DE STRUCTURATION
2. d’interpréter les données en fonction de potentielles liaisons inter-variables.
Soit C un ensemble de composantes telles que :
C = {C1, C2, ..., Cd} (4.17)
Ck = a1,kX1 + a2,kX2 + ... + av,kXv (4.18)
avec Ck une nouvelle variable qui soit une combinaison linéaire des variables d’origine
Ω = {X1, ..., Xv}, avec aj,k les composantes des vecteurs propres et tel que les Ck soient
deux à deux corrélées, de variance maximale, d’importance décroissante.
s1
s2
C2 C1
s
0
1
s
0
2
Figure 4.9: Illustration de l’utilisation de la méthode ACP pour pouvoir déterminer de
meilleures découpes dans un espace d’exploration représentant au mieux la variabilité
des données : l’espace d’origine (à gauche) et les composantes principales (au milieu)
permettant de redéfinir l’espace d’exploration (à droite).
L’exemple en figure 4.9 présente à gauche les deux dimensions s1 et s2 de l’espace
d’origine ; au milieu les composantes principales trouvées ; à droite les mêmes données
dispersées selon ces 2 composantes principales. Y figurent également les découpes potentielles
en pointillés, ainsi que des points bleus et rouges, représentant respectivement
des buts atteignables et non atteignables par l’encorporation considérée.
Pour conclure, l’ACP détermine les axes exprimant au mieux la variance des points
de l’espace d’exploration que l’encorporation permet d’atteindre. C’est pourquoi elle
est calculée sur un sous-ensemble des données acquises par l’agent : seules les données
structurantes dont la compétence associée dépasse un certain seuil rentrent dans le calcul
des composantes principales. Il est à noter que l’exemple présenté en figure 4.9 est bien
évidemment un exemple qui est à notre avantage, ce qui n’est pas nécessairement le cas4.5. D’AUTRES REPRÉSENTATIONS SPATIALES 93
pour d’autres types de données. Néanmoins il peut permettre de mettre en évidence
des corrélations multi-dimensionnelles. La prochaine section présente une manière de
faciliter cette mise en évidence.
4.5.3 Paradigme poly-représentationnel
Nous venons d’exhiber des aspects permettant de doter l’agent de représentations
du monde qui soient différentes et potentiellement plus adaptées aux données à collecter
afin d’y trouver une structure qui facilite l’apprentissage. Mais ces représentations
alternatives sont mono-dimensionnelles. Nous nous intéressons dans cette partie à combiner
les avantages de ces diverses représentations possibles. Une manière de
mettre cela œuvre est de considérer de multiples représentations possibles. Pour ce faire,
considérons dorénavant un ensemble S d’espaces d’exploration disposant chacun de leurs
spécificités.
S = {S1, ..., Sn} (4.19)
Si = {R1, ..., Rm} (4.20)
R^ = arg max
Ri ∈
S
{Rj∈Sk} ∀ Sk ∈ S
(ρ(Ri)) (4.21)
L’espace d’exploration choisi sera potentiellement différent à chaque pas de temps. Le
mécanisme qui conduit à générer un but de son côté ne change pas, puisqu’il s’agit
ici simplement de sélectionner la région la plus intéressante parmi toutes les régions
de tous les espaces disponibles. Il s’agit toujours d’effectuer un arg max mais sur un
ensemble représentant l’union des régions de chacun des Si
.
Ce paradigme poly-représentationnel peut permettre d’ailleurs de fournir un ensemble
par défaut d’espaces d’exploration en se basant sur les dimensions d’origine. Cela
peut se révéler utile par exemple dans le but de pouvoir isoler de potentielles corrélations
entre certaines dimensions particulières. Cela peut se réaliser en déclinant toutes les possibilités
de combinaisons réalisables à partir des dimensions de base. Concrètement, si
l’agent est équipé d’un ensemble de dimensions sensorielles hs1, s2, s3i, il pourra automatiquement
générer 7 espaces d’exploration par défaut, tel que l’ensemble des espaces
d’exploration à l’instant 0 soit défini par S
0 = {S0, ..., S6}, avec :94 CHAPITRE 4. MODÉLISATION D’AUTRES FORMES DE STRUCTURATION
S0 : hs1, s2, s3i
S1 : hs1i
S2 : hs2i
S3 : hs3i
S4 : hs1, s2i
S5 : hs1, s3i
S6 : hs2, s3i
Le fait de pouvoir proposer des représentations différentes dans des sous-espaces de
l’espace d’exploration d’origine, permet d’essayer d’atteindre des objectifs qui soient
adaptés à ce sous-espace et qui par conséquent, peuvent ne prendre en compte que
certaines dimensions plutôt que d’autres. Cette technique peut permettre de faire en
sorte que l’agent sélectionne prioritairement certaines représentations en cas de nonutilité,
de mauvaise compréhension, ou encore de déficience d’un capteur spécifique. De
plus, comme il s’agit des combinaisons des dimensions de l’espace de base, cela ne pose
pas de problème quant à la non-consistance entre des distorsions qui ne couvriraient
pas la même sous-partie de l’espace. On peut d’ailleurs très bien imaginer la génération
de nouveaux espaces d’exploration basés sur les transformations a priori proposées en
section 4.5.1, ou bien basés sur les transformations a posteriori comme nous l’avons
proposé en section 4.5.2.
4.6 Conclusion
L’objet de ce chapitre était d’apporter des contributions théoriques sur la boucle
motivationnelle générique présentée au chapitre précédent. Nous avons plus particuliè-
rement étudié et présenté des alternatives pour le processus de structuration de l’espace
d’exploration, point crucial à notre sens pour améliorer l’apprentissage. Les contributions
développées dans ce chapitre se regroupent sous trois aspects distincts que nous
résumons ci-après. Afin de faciliter la compréhension, les notations introduites dans le
présent chapitre sont, comme nous l’avions fait au chapitre précédent, regroupées dans
le tableau 4.1.
Tout d’abord, nous avons présenté un ensemble de possibilités alternatives pour
effectuer des restructurations locales. Nous avons introduit une nouvelle métrique d’intérêt
prenant directement en compte une forme de diversification. Ensuite nous avons
proposé une nouvelle condition de découpage basée sur une métrique et un seuil pour4.6. CONCLUSION 95
Notation formelle Correspondance informelle
progrès(Ri) Métrique du progrès en apprentissage dans la région Ri
t(j) Estampille de la jème expérience dans une région donnée
diversification(Ri) Métrique de diversification propre à chaque Ri
c Constante permettant d’ajuster le résultat de la diversification
r1, r2 Sous-régions de part et d’autre d’une découpe dans une dimension
µ Métrique calculant le ratio pour décider d’une découpe
σ Seuil minimum de µ pour valider la découpe
η Nombre minimum d’expériences dans une région pour découper
δ Distance moyenne à l’objectif pour les expériences d’une région
α Seuil minimum de µ pour l’ajustement d’une découpe
λ Seuil minimum de µ pour la fusion de deux régions existantes
g Nombre de grappes pour la structuration par partitionnement
n Nombre de dimensions de l’espace d’exploration
S
0 = φ(S) Nouvel espace défini par la projection φ de l’espace d’origine S
d Nombre de dimensions des données pour l’ACP
C Ensemble des composantes principales de l’ACP
S = {S0, . . . , Sn} Ensemble des espaces explorés en concurrence
Tableau 4.1: Extension du tableau récapitulatif 3.1 du chapitre précédent avec les
nouvelles notations introduites tout au long du présent chapitre.
prendre en compte plus de paramètres sur les régions considérées. Puis nous avons introduit
un mécanisme d’ajustement des découpes que nous avons poussé jusqu’à prendre
en compte la possibilité de refusionner deux régions. Enfin nous avons proposé une
métrique de compétence contextuelle prenant en compte l’évolution de l’apprentissage
pour calculer la compétence actuelle.
D’autre part, nous avons étudié une structuration plastique agissant à un niveau
plus global. Pour cela nous nous sommes basés sur une méthode de partitionnement.
Nous avons remplacé la structuration dimensionnelle orthogonale aux axes par une
restructuration à une certaine fréquence s’appuyant sur l’algorithme K-Means. Dans
cette optique nous avons redéfini la notion de région, ne faisant plus appel à des dimensions
et des bornes, mais se basant sur un centroïde, c’est-à-dire le centre de masse de
l’espace qu’elles recouvrent.
Enfin le troisième aspect développé dans ce chapitre propose de s’intéresser à re-96 CHAPITRE 4. MODÉLISATION D’AUTRES FORMES DE STRUCTURATION
présenter l’espace de manière différente. Considérant que l’espace d’exploration a une
influence sur son exploration et donc sur l’apprentissage, nous étudions la possibilité de
définir a priori une projection de cet espace. De cette limitation à qualifier et connaître
ce que serait une bonne représentation, nous tirons une seconde solution qui propose
d’adapter a posteriori l’espace en fonction des expériences effectuées à l’aide de la
méthode ACP, dans le but de toujours explorer l’espace selon la meilleure variance.
Enfin pour lier ces deux propositions et permettre une complexification du processus
dans une vision à long terme, nous introduisons le paradigme poly-représentationnel.
L’intérêt de celui-ci réside dans le fait de maintenir parallèlement un ensemble d’espaces
d’exploration chacun récursivement découpables en combinant leurs propres avantages.
Ces contributions théoriques nécessitent d’être évaluées de manière expérimentale.
C’est pourquoi les deux chapitres qui suivent dans ce manuscrit exposent respectivement
la plateforme que nous avons développée pour mener des expérimentations dans
les meilleures conditions possibles (chapitre 5 intitulé FIMO : une plateforme d’expérimentations),
ainsi que leurs résultats et les interprétations que nous en tirons (chapitre
6 intitulé Expérimentations).C h a p i t r e
5
FIMO : une plateforme
d’expérimentations
Les chapitres précédents nous ont permis de développer les parties théoriques de nos
travaux. Ceux-ci se doivent d’être expérimentés in silico pour permettre d’évaluer leur
intérêt. Pour ce faire, nous avons développé une plateforme, d’une part pour notre besoin
propre, mais également avec l’intention de pouvoir la partager avec la communauté. Le
présent chapitre introduit plus en détail cette plateforme nommée FIMO, acronyme
anglophone pour Framework for Intrinsic Motivations. Cette plateforme a fait l’objet
d’une publication [Hervouet et Bourreau, 2013], et ses sources sont disponibles en ligne 1
.
5.1 Genèse et motivations
Comme nous l’avons montré au travers du chapitre 2, de nombreuses approches
gravitent autour de la notion de motivation artificielle. Celles-ci partagent un certain
nombre de points communs, mais se distinguent néanmoins par certains aspects qui leur
sont singuliers. De ce constat, émanent deux points importants qu’il nous faut souligner.
Tout d’abord le fait qu’il soit à la fois une grande opportunité et une grande ambition
de proposer une plateforme de ce type. La part d’opportunité provient directement de
la discipline informatique, puisqu’elle permet de proposer des protocoles, des façons de
1. Un dépôt Mercurial permettant de cloner le code source en Python de la plateforme est disponible
https://info-depot.lirmm.fr/republic/fimo. Cette plateforme est distribuée selon les termes de la
licence GNU GPLv3 (pour plus d’informations, se reporter au fichier COPYING).
9798 CHAPITRE 5. FIMO : UNE PLATEFORME D’EXPÉRIMENTATIONS
faire, qui par essence devraient être les plus génériques possible. La part d’ambition
quant à elle provient doublement du fait qu’il soit généralement très complexe d’essayer
d’unifier autant d’approches, et encore davantage que le cadre proposé pour le faire soit
accepté et réellement utilisé par la communauté.
Deuxièmement la multiplicité des approches dénote avant tout un intérêt certain
pour cette thématique de recherche. Et même si l’ébullition propre à l’émergence d’un
sous-domaine est extrêmement importante, la convergence de ses méthodes devient
inévitablement un atout à plus long terme. Quand nous parlons de méthodes, nous
parlons avant tout des moyens mis en place pour évaluer l’impact d’une nouvelle idée.
En effet, tout au long de nos travaux de thèse, nous avons ressenti le besoin, tout
d’abord individuel, de réimplémenter des mécanismes existants pour mieux les comprendre.
Puis dans un second temps, pour également en proposer de nouveaux, comme
l’ont déjà montré les précédents chapitres. Mais en réalité, le besoin de passer à l’échelle
collective, c’est-à-dire de généraliser aux autres approches existantes s’est fait sentir.
Des articles très techniques comme par exemple Santucci et al. [2013] montrent bien,
sans pour autant en arriver à ce même constat, que l’étude de différents mécanismes
requiert une phase nécessaire d’unification des approche étudiées. Cela passe surtout
par la mise en place de phases expérimentales et de modes d’évaluation qui soient
comparables, sans quoi une étude comparative ne voudrait rien dire.
Voici les principales motivations qui ont donné naissance à cette plateforme nommée
FIMO, pour Framework for Intrinsic Motivations. Dans la suite de ce chapitre,
nous présentons l’architecture générale de la plateforme, nous expliquons les modalités
d’évaluation choisies, les encorporations disponibles et leurs caractéristiques. Nous terminons
par donner des détails techniques pour faciliter et mieux comprendre le processus
d’expérimentation ainsi que celui de visualisation des données recueillies.
5.2 Architecture générale
FIMO est une plateforme destinée à la recherche en robotique développementale,
et s’intéressant plus particulièrement aux systèmes motivationnels. Ce que nous proposons
avec cette architecture c’est la possibilité d’expérimenter de manière fiable,
complète et efficace de nouvelles idées sur les agents motivés. Cette section est
dédiée à la présentation de FIMO, que ce soit sur la façon dont il a été pensé, conçu et
architecturé, des explications sur ses fondations dans le langage Python, ainsi que son
workflow. Nous présentons également les différentes encorporations fournies à l’heure
actuelle.5.2. ARCHITECTURE GÉNÉRALE 99
5.2.1 Principe
Le schéma de fonctionnement global de notre plateforme FIMO est relativement
commun et intuitif. Typiquement, comme le montre la figure 5.1, la plateforme s’articule
autour de différents éléments que sont l’encorporation, le paramétrage, la collecte
de données, et la visualisation des résultats. Pour pouvoir lancer une expérimentation, il
faut fournir à l’algorithme motivationnel une encorporation ainsi qu’un calibrage complet
(valeurs de certains paramètres pi et métriques mi). Les résultats expérimentaux
sont collectés et sauvegardés dans des fichiers journaux. Ces résultats peuvent par la
suite être attentivement et sérieusement étudiés grâce aux visualisations qu’offre le module
du même nom. Ces aspects sont décrits un à un ci-après.
Encorporation
Boucle motivationnelle
algorithme
Collecte
expérimentations
Visualisation
résultats expérimentaux
p1 p2 ... pn
m1 m2 ... mn
Figure 5.1: Architecture logique du processus global de notre plateforme FIMO.
Encorporation
La première étape consiste à choisir une encorporation (embodiment en anglais et
dans le code) à expérimenter. Celle-ci décrit formellement l’espace d’exploration sensorimoteur
ainsi que les effets quant à l’exécution de primitives motrices. Ces deux points
sont essentiels et obligatoires pour lancer une boucle motivationnelle d’un agent. Des
explications plus complètes quant à la caractérisation d’une encorporation sont fournies
en section 5.4.
Paramétrage de la boucle motivationnelle
Une fois l’encorporation choisie, il faut alors spécifier les métriques et les paramètres
à fournir à l’agent permettant de calibrer la coquille vide que constitue la boucle motivationnelle.
Ce paramétrage peut avoir, comme nous l’avons déjà expliqué, une influence
plus que significative sur la trajectoire développementale de l’agent au cours de l’expérimentation.
Comme expliqué précédemment en section 5.1, c’est en grande partie de ce100 CHAPITRE 5. FIMO : UNE PLATEFORME D’EXPÉRIMENTATIONS
constat que provient l’idée fondamentale de fournir une plateforme paramétrable pour
étudier le comportement et l’influence des choix de modélisation a priori. Les valeurs des
paramètres sont bien évidemment modifiables à chaque instanciation du programme, le
tout étant reproductible pour une plus grande significativité statistique.
Collecte
Ensuite, à la fin d’une expérimentation concernant une encorporation particulière,
c’est-à-dire quand l’agent a effectué un certain nombre de commandes motrices (ou bien
a essayé d’atteindre un certain nombre de buts), de nombreux résultats collectés tout
au long de l’expérimentation sont enregistrés dans des fichiers journaux. Cela inclut par
exemple :
— l’état final du partitionnement de l’espace d’exploration en sous-régions ;
— l’intérêt de ces régions où les buts ont été générés, leur date de création, ainsi que
tous leurs autres attributs ;
— les données sensorimotrices brutes et structurantes expérimentées ;
— et surtout les résultats aux examens (cf. partie 5.3 pour plus de détails sur les
modalités de l’examen).
Visualisation
Enfin un autre avantage de la plateforme FIMO réside dans le module de visualisation
qui se base sur les données collectées et sauvegardées. Cette fonctionnalité permet
d’étudier les résultats de n’importe quelle instance expérimentale. En cela, elle rend
beaucoup plus simple et efficace la compréhension et la validation d’hypothèses quant
au paramétrage ou aux nouvelles idées appliquées à une encorporation considérée. Nous
illustrerons le reste de ce chapitre grâce à ce module de visualisation proposé dans
FIMO.
5.2.2 Fondations Python
Après avoir présenté l’architecture générale du projet et avant d’expliquer son organisation
pratique, il nous paraît important d’expliquer les fondations Python de notre
plateforme. Par fondations, nous voulons surtout ici donner les fondements informatiques
de ce choix. Le point principal est que le développement de FIMO a été basé
sur des bibliothèques très pratiques, puissantes, bien pensées et documentées, et surtout
supportées par des communautés de scientifiques et d’ingénieurs. Les trois principales
bibliothèques que nous utilisons sont SciPy, NumPy, matplotlib qui sont dédiées au
traitement scientifique de données.5.2. ARCHITECTURE GÉNÉRALE 101
SciPy [Jones et al., 2001] est une bibliothèque open-source pour les mathématiques,
mais plus largement pour la science et l’ingénierie. Elle est basée sur Numpy [Oliphant,
2007], qui fournit une interface de manipulation de tableaux à n dimensions
très pratique et très rapide, associée à des routines de traitements numériques très
efficaces. Enfin le module de visualisation de résultats expérimentaux proposé dans
la plateforme s’appuie sur matplotlib [Hunter, 2007]. Ces trois fondations principales
utilisées dans FIMO sont considérées comme stables et sûres de par le fait qu’elles aient
été développées et testées à très grande échelle par beaucoup d’utilisateurs différents,
et qu’elles aient ainsi prouvé leur efficacité et leur fiabilité.
Il nous faut également citer une dernière bibliothèque très importante utilisée dans
FIMO : SciKit-Learn. Celle-ci est développée par l’INRIA et se base elle aussi sur
les trois bibliothèques présentées ci-dessus. Elle représente un effort commun pour
regrouper bon nombre de méthodes de fouille de données, d’apprentissage automatique
et de traitement statistiques de données en général [Pedregosa et al., 2011].
Enfin, pour ce qui concerne la partie évolutionnaire de la plateforme, il nous faut
aussi mentionner la bibliothèque pyevolve, qui regroupe un ensemble d’outils simples à
mettre en œuvre pour gérer des populations et les faire évoluer en suivant une certaine
fonction d’évaluation [Perone, 2009].
5.2.3 Organisation arborescente du projet
Le dernier point technique qu’il nous semble important de détailler est celui de
l’organisation arborescente du projet FIMO. Il nous faut rappeler que le but de ce
dernier est double :
1. réimplémenter un cadre logiciel expérimental à titre de recherche individuelle pour
les travaux de thèses menés ;
2. faire en sorte de proposer quelque chose de propre potentiellement réutilisable par
d’autres chercheurs.
Dans cette optique, il nous semblait primordial d’accorder une importance particulière
à la réflexion concernant la clarté du projet, qu’il s’agisse à la fois du code source en
lui-même, de sa lisibilité, des commentaires l’accompagnant, mais également l’organisation
globale des fichiers contenant ce code source. En tant que telle, l’arborescence est
un point d’autant plus important qu’il constitue le premier contact de l’utilisateur avec
le projet. Ainsi, cette arborescence vous est présentée sans mise en forme particulière
en figure 5.2. Nous allons maintenant en détailler quelques points pour en faciliter la
lecture et la compréhension.102 CHAPITRE 5. FIMO : UNE PLATEFORME D’EXPÉRIMENTATIONS
fimo
|-- compare.py
|-- config.py
|-- COPYING
|-- core
| |-- agent.py
| |-- examination.py
| |-- experiment.py
| |-- living.py
| !-- representation.py
|-- embodiments
| |-- arms.py
| |-- artificial_mouth.py
| |-- embodiment.py
| |-- toys.py
| !-- tribots.py
|-- evo
| |-- fimo.py
| |-- metrics_gp_operators.py
| |-- metrics.py
| |-- morphologies.py
| |-- parameters.py
| |-- spaces_gp_operators.py
| !-- spaces.py
|-- evofimo.py
|-- example.py
|-- fimo.py
|-- logs
| |-- exams.txt
| |-- goals.txt
| |-- raw.txt
| !-- regions.txt
|-- questions
| !-- questions_*Env
|-- questions.py
|-- structuring
| |-- centroidal.py
| |-- dimensional.py
| |-- dimension.py
| |-- distorted.py
| |-- memory.py
| |-- pca.py
| !-- region.py
|-- test
| |-- compare_*.py
|-- visualization
| |-- exams.py
| |-- goals.py
| |-- interests.py
| |-- log.py
| |-- misc.py
| |-- raw.py
| |-- regions.py
| !-- visualization.py
!-- visu.py
Figure 5.2: Arborescence du projet FIMO sans mise en forme. Les éléments de premier
niveau constituent les fichiers les plus importants ainsi que les modules principaux,
contenant eux-mêmes les fichiers sources nécessaires au bon fonctionnement de la plateforme.
Les principaux modules
Cette arborescence est donc composée de fichiers à la racine, ainsi que de sousrépertoires
contenant d’autres fichiers. Ce sont ces sous-répertoires que nous appelons
modules. Ils permettent d’organiser au mieux le code du projet FIMO.5.2. ARCHITECTURE GÉNÉRALE 103
core Ce module contient les classes essentielles pour l’instanciation et l’expérimentation
sur l’apprentissage sensorimoteur : la classe définissant le fonctionnement
général d’un Agent, ainsi que la classe Examination permettant de l’évaluer pour
constater le progrès accompli.
structuring Ce module contient toutes les classes nécessaires au processus de structuration
de l’espace exploré par l’agent : la mémoire de l’agent, ce que sont les
représentations, les régions ainsi que les expériences qu’il va pouvoir effectuer.
embodiments Ce module-ci permet d’isoler les encorporations qu’il va être possible
d’expérimenter : quelques fichiers déjà présents regroupent par type les encorporations
disponibles, dont un aperçu plus complet est présenté en section 5.4.
evo Ce module correspond à la perspective évolutionnaire que nous développons à la fin
du chapitre 6 (section 6.4). Différents éléments sont proposés pour être optimisés
par évolution : les paramètres, métriques, les distorsions d’espaces ainsi que les
morphologies.
test Ce module a été pensé pour les expérimentations, notamment pour permettre
et faciliter la comparaison d’implémentations de différentes approches, que nous
développons en section 5.5.3.
visualization Enfin ce dernier module est destiné à regrouper tous les aspects gravitant
autour de la visualisation des résultats générés par la plateforme.
Les principaux fichiers à la racine
Au-delà des principaux modules, la plateforme met à disposition des fichiers à la
racine qui permettent d’expérimenter aisément divers aspects de l’apprentissage sensorimoteur
offerts par FIMO. Tous ces fichiers disposent d’une aide pour leur utilisation
pratique en ligne de commande (-h), présentés ici dans un souci de clarification.
fimo.py Le fichier le plus important pour lancer une expérimentation ; il permet de
choisir une encorporation à tester et de fixer des limites en terme de nombre
d’itérations, et bien sûr de spécifier certains paramètres précis (cf. section 5.5.1
pour davantage de précisions sur son utilisation).
compare.py Le fichier important pour comparer aisément différents paramétrages ; il
faut lui préciser le nombre d’itérations désirées, le nombre d’instances d’agents104 CHAPITRE 5. FIMO: UNE PLATEFORME D’EXPÉRIMENTATIONS
pour obtenir une moyenne, ainsi que le nom du template de comparaison à expé-
rimenter (cf. section 5.5.3).
usage : compare . py [- h ] [ -a ACTIONS ] [- t TIMES ] [ - v] comparison
positional arguments :
comparison Specific test comparison you want to run
optional arguments :
-h , -- help show this help message and exit
-a ACTIONS Number of actions each agent must perform ( default 1000)
-t TIMES Number of times to run for average evaluation ( default 3)
-v Generating visualization of results
evofimo.py Le point d’entrée vers la partie évolutionnaire de la plateforme ; il faut
impérativement lui préciser l’encorporation à tester ainsi que le mode que l’on
souhaite tester ; d’autres options sont disponibles pour préciser par exemple le
nombre d’itérations, le nombre de générations, ou la population par génération.
usage : evofimo . py [- h ] [ -a ACTIONS ] [- g GENERATIONS ] [ - p POPULATION ]
[ - t TIMES ] [ - s STATS ] [- m METRIC ]
emb mode
positional arguments :
emb Embodiment you want to experiment
mode Evolutionary process mode ( parameters , metrics , space ,
morphology )
optional arguments :
-h , -- help show this help message and exit
-a ACTIONS Number of actions each agent must perform ( default 1000)
-g GENERATIONS Number of generations to run ( default 100)
-p POPULATION Number of agents by generation ( default 10)
-t TIMES Number of run by agent for average ( default 5)
-s STATS Statistics every # generations ( default 1/10 generation )
-m METRIC Metric to evolve ( interest , split )
visu.py Le script qui permet de visualiser les résultats des différentes instances d’agents
expérimentés ; par défaut il va chercher dans les fichiers journaux de base (raw,
region, exam, goals) dans le répertoire logs/, mais il est possible de lui spécifier
un chemin en préfixe pour analyser d’autres résultats.5.2. ARCHITECTURE GÉNÉRALE 105
usage : visu . py [ - h ] [- p PREFIX ] [ -s SUFFIX ] [ -e ] [ - c]
optional arguments :
-h , -- help show this help message and exit
-p PREFIX Prefix for log files
-s SUFFIX Suffix for log files
-e Use this option to parse only exams ( speed up parsing time !)
-c Count the number of available experiments
Pour plus de détails techniques concernant les expérimentations, se reporter à la
section 5.5.
Autres fichiers
config.py Ce fichier regroupe tous les paramètres utilisés par la plateforme et potentiellement
intéressants à modifier pour l’utilisateur ; ces paramètres concernent à
la fois la boucle à proprement parler mais également les techniques de structuration.
example.py Ce fichier représente des exemples d’utilisation de FIMO directement à
manipuler à partir du langage Python ; la section 5.5.2 présente la version par
défaut de ce fichier pour en commenter les différentes façons d’instancier un agent.
questions.py Ce script permet de générer un ensemble de questions pour une encorporation
donnée ; davantage de détails sont donnés dans la section 5.3 pour une
meilleure cohérence.
logs/*.txt Fichiers par défaut dans lesquels sont sauvegardés les résultats des expé-
rimentations ; quatre fichiers principaux (exams|goals|raw|regions).txt selon
le type d’information sauvegardée.
test/compare_*.py Ensemble de fichiers permettant facilement de créer une nouvelle
comparaison entre des paramétrages différents ; pour voir des exemples précis qui
illustrent cet aspect fondamental de la plateforme, se reporter en section 5.5.3.
5.2.4 Diagramme des classes
La figure 5.3 présente le diagramme des classes à titre informatif. Comme nous avons
déjà commencé à l’expliquer en section 5.2.3, ce diagramme est une représentation du106 CHAPITRE 5. FIMO : UNE PLATEFORME D’EXPÉRIMENTATIONS
fonctionnement de la plateforme FIMO. Nous en retraçons les grandes lignes ci-après.
Embodiment Agent Memory
Living Examination Representation
Experiment Region
PredictionExp ReachingExp DimensionalReg CentroidalReg
Dimension PcaRegion DistortedRegion
performs
1
launched
1
passes
1
holds
1
composed of
1..*
composed of
1..*
composed of
*
delimited by
1..*
Figure 5.3: Diagramme des classes simplifié de la plateforme FIMO.
Agent est une classe qui va gérer l’ensemble des interactions possibles d’une instance
expérimentale ; en pratique il s’agit de générer des buts, de calculer les actions
pour atteindre ces buts, tout au long d’un processus d’apprentissage générique.
Embodiment L’agent ne serait rien sans son encorporation ; celle-ci constitue l’interface
avec l’environnement et surtout la loi commande de coordination sensorimotrice ;
en pratique elle est essentiellement dotée d’une méthode qui étant donné un état5.2. ARCHITECTURE GÉNÉRALE 107
courant et une commande motrice, donne les valeurs des capteurs résultants.
Experiment représente classiquement une expérience sensorimotrice que l’agent va
engranger au fil de l’apprentissage ; cela comprend, comme déjà expliqué dans le
modèle en section 3.2.1, l’état de départ, la commande motrice et l’état final pour
les données brutes, auxquelles sont ajoutées l’état but et la compétence pour les
données structurantes.
Examination L’examen est le moyen qui nous permet de mettre en valeur les progrès
de l’agent dans son apprentissage sensorimoteur ; il s’agit d’un ensemble de questions,
c’est-à-dire des points dans l’espace d’exploration original, que l’agent va
devoir périodiquement atteindre, ce qui va nous permettre de lui attribuer une
note d’atteinte moyenne de ces buts.
Region est une classe qui représente la volonté de structurer les données accumulées
dans le but d’améliorer l’apprentissage par différentes heuristiques ; une
région peut se définir de différentes façons (par des dimensions originales
DimensionalRegion, par un centroïde CentroidalRegion, par une distorsion
DistortedRegion, etc.) mais contient toujours un ensemble d’expériences sensorimotrices
qui la caractérisent qui permettent, par exemple, de calculer son intérêt.
Representation est une classe composée essentiellement d’un ensemble de régions qui
la caractérisent et qui peuvent être explorées, c’est-à-dire dans lesquelles on peut
générer et/ou ajouter de nouveaux buts.
Memory La mémoire représente l’essence même du processus d’apprentissage ; dans cette
implémentation, un agent en possède une, dans laquelle on peut trouver un ensemble
de représentations, c’est-à-dire différentes visions du monde maintenues
parallèlement par l’agent.108 CHAPITRE 5. FIMO : UNE PLATEFORME D’EXPÉRIMENTATIONS
5.3 Modalités d’évaluation
L’agent, doté d’une métrique d’intérêt, calculée par rapport au progrès en apprentissage
pour l’acquisition de nouvelles compétences sensorimotrices, va avoir tendance
à intensifier ses essais dans des zones pour lesquelles il constate du progrès, et à se
diversifier aussitôt qu’il ne progresse pas ou plus dans une certaine région.
Ce modèle de fonctionnement s’avère profondément constructiviste, avec toute la
portée de subjectivité que cela peut soulever. C’est pourquoi, comme nous l’avons déjà
fait dans ce manuscrit, nous parlons de trajectoires développementales pour qualifier les
diverses instances de boucles motivationnelles. En effet, nos expérimentations proposent
d’incarner successivement plusieurs agents logiciels — c’est-à-dire une même boucle
motivationnelle — dans l’exact même corps et dans un environnement similaire.
Mais malgré ces prérogatives et ces conditions initiales sensiblement similaires, les
trajectoires développementales sont différentes entre deux instanciations de vies. Par
ailleurs, une même mesure n’a pas les mêmes effets sur deux encorporations similaires
plongées dans un environnement similaire. C’est pourquoi la question de la comparaison
et de l’évaluation vient donc nécessairement se poser devant nos yeux. Nous avons
d’ailleurs mené une réflexion autour de la notion de preuve en intelligence artificielle
dans une publication [Hervouet, 2013].
5.3.1 Les différentes formes d’évaluation
On distingue généralement deux formes d’évaluation, nommément l’évaluation formative
et l’évaluation sommative. Avant de présenter ces deux approches, voici une
citation attribuée à Robert Stakes, qui permet de donner l’intuition de la différence
entre les deux :
« When the cook tastes the soup, that’s formative ; when the guests taste the
soup, that’s summative ». [Scriven, 1991]
L’évaluation sommative s’effectue systématiquement de l’extérieur du système
d’apprentissage et définit arbitrairement des barrières. Elle sert à certifier l’acquisition
de compétences.
L’évaluation formative, de par sa fonction régulatrice, sert à organiser et à ré-
ajuster l’apprentissage, mais cette fois de l’intérieur même du système. Elle définit à la
fois quantitativement et qualitativement le travail à effectuer pour atteindre les objectifs
fixés. L’apprenant doit pouvoir mesurer le chemin parcouru et celui restant à parcourir.
De plus, l’erreur y est positive et fait partie intégrante de l’acte d’apprendre. L’ap-5.3. MODALITÉS D’ÉVALUATION 109
prenant doit prendre du recul sur les stratégies qu’il utilise, il doit avoir une réflexion
critique sur son activité.
5.3.2 L’évaluation dans FIMO
En pratique, dans FIMO, les examens que l’agent doit effectuer pour constater
son progrès relèvent typiquement de l’évaluation sommative. Cela revient à évaluer
l’évolution de la compétence d’atteinte d’un certain nombre de buts uniformément
répartis dans l’espace d’apprentissage que le système est en train d’explorer (cf. section
5.3.4 pour plus de détails). Mais en soit, une courbe est un indicateur surtout qualitatif.
Pour obtenir un indicateur plus quantitatif sans pour autant perdre l’importante appré-
ciation qualitative, nous utilisons une intégration numérique pour déterminer un score.
À partir des points de la courbe et de leur espacement dans le temps, nous calculons
une approximation de l’aire sous la courbe. Ce score ainsi calculé donne une assez
bonne représentation de la performance de la trajectoire développementale d’un agent.
En effet, un point fort constitutif de cet indicateur est qu’il permet de distinguer deux
expérimentations qui terminent avec une même valeur de distance moyenne aux buts
de l’examen, puisqu’il est directement lié à l’incurvation du progrès en apprentissage.
Mais en réalité, le processus de l’évaluation formative tel que décrit plus haut
constitue l’essence du fonctionnement de la boucle motivationnelle que nous décrivons.
En effet, celle-ci implique bien l’agent dans une perpétuelle remise en question de son
apprentissage et l’oblige à faire des choix quant à ce qu’il va chercher à apprendre par la
suite. De par sa nature plus complexe, cette seconde forme d’évaluation est hautement
plus adaptée à la vision constructiviste qui caractérise nos travaux.
Par ailleurs, d’autres questions importantes se posent en terme d’évaluation de l’apprentissage.
Par exemple, quid de la spécificité des différentes encorporations à tester ?
Est-il judicieux de faire le choix arbitraire et objectif d’évaluer de la même manière l’apprentissage
de la loi de commande d’un bras robotique et celle d’un robot sous-marin ?
Même si le poids de ce genre de questions est discutable du fait de la trop faible diffé-
rence entre les encorporations testées pour le moment, il semble tout de même nécessaire
de les poser.
5.3.3 Fichiers de questions
Le comportement par défaut de la plateforme est de vérifier la présence d’un fichier
portant un nom de la forme questions_*Env pour y lire un ensemble de questions
à proposer à l’agent pour l’évaluation. Le format de ces fichiers suit un schéma très
simple qui, sur chaque ligne, associe une valeur à chaque dimension de l’espace des buts,
chacune d’elle étant séparée par un point-virgule :110 CHAPITRE 5. FIMO : UNE PLATEFORME D’EXPÉRIMENTATIONS
dim_1@val_1;dim_2@val_2;...;dim_n@val_n
À titre d’illustration, ici pour l’encorporation Arm15LargeEnv, le tableau 5.1 permet
de visualiser quelques lignes et les points associés dans l’espace.
Format brut d’une ligne Hx Hy
Hx@-8.33 ;Hy@37.63 -8.33 37.63
Hx@28.10 ;Hy@29.01 28.10 29.01
Hx@-28.55 ;Hy@18.20 -28.55 18.20
Hx@39.67 ;Hy@10.99 39.67 10.99
Hx@-3.74 ;Hy@11.95 -3.74 11.95
Tableau 5.1: Exemples de correspondance entre des lignes d’un fichier de questions et
leur interprétation dans l’espace des buts ici à deux dimensions Hx et Hy.
Cette manière de se baser sur un fichier texte pour les questions de l’examen dispose
d’un avantage certain en terme de simplicité et d’équité, puisque toutes les instances
sont évaluées sur un même ensemble de questions. En revanche cela implique d’avoir
une certaine confiance quant à la façon de générer ces questions.
5.3.4 Génération de questions pour l’examen
C’est le script questions.py, présent à la racine du projet, qui permet de générer
un ensemble de questions afin d’évaluer la progression des agents au cours du temps.
Son fonctionnement est relativement simple et repose sur quatre étapes successives :
1. Choisir une encorporation pour laquelle générer des questions ;
2. Exécuter un nombre donné de commandes motrices uniformément sélectionnées
dans l’espace moteur ;
3. Appliquer une méthode de partitionnement basée sur l’algorithme K-Means (déjà
présenté en section 4.4.2) sur l’ensemble des données d’observations permettant
de paver au mieux l’espace réellement atteignable par le robot ;5.3. MODALITÉS D’ÉVALUATION 111
Figure 5.4: Visualisation de la densité des points atteignables dans l’espace d’exploration
à partir de 20000 configurations uniformément réparties dans l’espace moteur.
4. Convertir les centroïdes trouvés en autant de questions, c’est-à-dire de points dans
l’espace des buts à n dimensions, que l’agent devra tenter d’atteindre.
Ce procédé a le mérite de générer des questions exclusivement dans la zone atteignable
par l’encorporation considérée. Il est d’ailleurs important de noter que les
questions générés par cet outil sont particulièrement pertinentes dans la mesure où la
zone atteignable est convexe, du fait de l’utilisation de l’algorithme K-Means.
Une visualisation pour la génération de questions pour un bras robotique à 15
jointures est présentée en figure 5.4. On voit assez clairement, comme la densité colorimétrique
l’indique, qu’il est nettement plus facile d’atteindre les positions devant,
c’est-à-dire autour du point (45; 0). Les points verts dans la figure de gauche repré-
sentent les questions déterminées par l’algorithme K-Means.112 CHAPITRE 5. FIMO : UNE PLATEFORME D’EXPÉRIMENTATIONS
Voici l’aide en ligne de commande décrivant l’utilisation du script.
usage : questions . py [ - h] [ - s SAMPLES ] [ - q QUESTIONS ] [ - v ] emb
positional arguments :
emb Embodiment you want to generate questions for
optional arguments :
-h , -- help show this help message and exit
-s SAMPLES Number of samples to generate (10000)
-q QUESTIONS Number of questions to derive (100)
-v Show plotting result
5.4 Encorporations
Une encorporation telle que nous la définissons formellement dans FIMO, circonscrit
tout ce qui touche aux capacités sensorimotrices de l’agent. Une encorporation doit
donc être considérée comme l’interface complexe entre l’espace d’exploration
sensoriel ou opérationnel, l’espace moteur lui permettant d’effectuer cette
exploration, et le résultat de la combinaison des deux. Ainsi, une encorporation
se doit de fournir avant tout :
1. les dimensions sensorielles ou opérationnelles de l’agent (définies par un nom et
un ensemble de valeurs pouvant être prises) ;
2. ses dimensions motrices (définies elles aussi par un nom nom ainsi qu’un ensemble
de valeurs pouvant être prises) ;
3. un état initial ou position de repos (définie comme un point de référence dans
l’espace des buts à partir duquel sont apprises les effets des commandes motrices).
D’autre part, l’encorporation doit également permettre de rendre compte des consé-
quences d’une action motrice. Elle doit donc également spécifier :
4. une fonction qui permette de calculer le nouvel état sensoriel à partir d’un état
sensoriel courant et d’une action à exécuter ;
D’autres possibilités sont offertes par la plateforme concernant l’encorporation. Par
exemple il est possible de prédéfinir un partitionnement en régions pour l’agent. Cela
peut par exemple permettre de l’aider dans son exploration très tôt.
Un autre point important réside dans le fait que la manière dont est implémentée la
connexion entre une encorporation et la boucle principale de l’algorithme motivationnel
permet de facilement relier FIMO avec n’importe quel moteur de simulation ou bien5.4. ENCORPORATIONS 113
n’importe quel robot physique à partir du moment où il suit les recommandations et
les conventions. Concrètement, ce genre de techniques a déjà été appliqué par d’autres
à différentes encorporations (simulée et physique), comme par exemple apprendre à
déplacer un bras robotique dans un plan pour atteindre un point particulier de l’espace à
deux dimensions Rolf et al. [2010]; Baranes et Oudeyer [2010b]; Moulin-Frier et Oudeyer
[2013], ou encore dans l’apprentissage de la maîtrise de la reproduction de vocalisations
en utilisant un conduit vocal et un système auditif Moulin-Frier et al. [2013].
5.4.1 Véhicule roulant
Le premier type d’encorporation proposé dans FIMO est une version simplifiée d’un
véhicule roulant dans une arène. La version la plus simple est constituée d’une seule roue
et évolue sur un axe avec un capteur de distance au mur devant lui (1 seule dimension
motrice et 1 seule dimension sensorielle), comme présentée à la fin du chapitre 3 (cf.
figure 5.5). Dans cette version les buts à atteindre sont donc des points à des distances
particulières du mur.
Figure 5.5: Schéma du dispositif de robot mobile mono-directionnel. La ligne en pointillée
représente ce que perçoit le capteur telem. Les blocs hachurés représentent des
zones qui empêchent la progression du robot.
La seconde version est constituée de 2 roues et permet à l’agent un déplacement dans
une arène bidimensionnelle. Ici les valeurs motrices envoyées aux roues sont considérées
comme des vecteurs qui font avancer le véhicule de manière euclidienne dans l’espace.
Cette version avec un espace d’exploration généralement carré se décline avec différents
obstacles gênant le déplacement de l’agent (piliers au milieu, ou zones inaccessibles sur
les bords en triangle) comme le montre la figure 5.6.
Figure 5.6: Schéma du dispositif de robot mobile bi-directionnel. Les blocs hachurés
représentent des zones qui empêchent la progression du robot.114 CHAPITRE 5. FIMO : UNE PLATEFORME D’EXPÉRIMENTATIONS
Dans les deux types d’encorporation véhicule, les déplacements envoyés en commande
motrice sont respectivement de la forme ∆m et (∆x, ∆y), c’est-à-dire des commandes
motrices relatives et non absolues.
5.4.2 Bras robotique
Le second type d’encorporation implémenté dans FIMO est très largement utilisé
dans la communauté [Baranes et Oudeyer, 2010a, 2013; Santucci et al., 2013] pour
évaluer l’importance de l’heuristique de motivation intrinsèque pour l’apprentissage de
coordinations sensorimotrices : un bras robotique. La figure 5.7 présente cette encorporation.
Dans cet exemple, chaque segment du bras est de même taille et chaque θi
représente les valeurs relatives des angles de chaque jointure par rapport au plan que
constitue le segment précédent du bras.
La transition de l’organe terminal d’un point à un autre par une action donnée
est calculée en utilisant des méthodes standards de cinématique directe [Craig, 1989].
Une action est un vecteur de valeurs ∆i positives ou négatives, chacune associée à
une articulation particulière (∆θ1
, ..., ∆θn
). Cela signifie que l’agent peut seulement
effectuer des mouvements relatifs depuis une certaine position (Hx,t, Hy,t) vers une
autre (Hx,t+1, Hy,t+1). Ainsi dans l’exemple donné, l’action exécutée qui meut l’organe
terminal du point s
t au point s
t+1 dans l’espace d’exploration en essayant d’atteindre
le point γ
t+1 a été α = (∆θ1 = +115, ∆θ2 = −140, ∆θ3 = +40).
De plus, il est important de noter que l’encorporation fournie est générique dans le
sens où il est tout à fait possible d’en instancier de nouvelles en précisément simplement
le nombre de jointures et la taille des segments désirés.
5.4.3 Bouche artificielle
Au fil des rencontres au hasard des communications scientifiques de nos travaux,
nous avons eu la chance de pouvoir entrer en contact avec des chercheurs à l’Institut
de Recherche en Acoustique et Musique (IRCAM). Leurs recherches s’intéressent à
modéliser la façon dont une bouche artificielle pourrait être utilisée pour jouer d’un
instrument à vent comme la trompette ou le trombone. Cette bouche artificielle est
en réalité un projet initié à la fin des années 1990, autour duquel d’autres projets se
sont organisés et succédés. C’est notamment le cas des projets l’Consonnes, puis de
l’CAGIMA financés par l’ANR.
Le but des recherche concernant ce dispositif suggèrent la « mise en correspondance
automatique du son produit avec les paramètres de contrôle d’une bouche artificielle
asservie », ou « techniques de commande et d’asservissement afin de reproduire des sons5.4. ENCORPORATIONS 115
θ1
θ2
θ3
s
t
s
t+1
γ
t+1
∆θ1
∆θ2
...
θ1
θ2
θ3
θ4
θ5
θ6
θ7
θ8
θ9
θ10
θ11
θ12 θ13
θ14
θ15
s
t
Figure 5.7: Schémas illustrant : les positions successives d’un organe terminal au bout de l’encorporation
d’un bras robotique à 3 articulations (à gauche) ; un bras robotique à 15 articulations dont la
longueur des segments est décroissante dans le sens proximo-distal (à droite).
cibles »
2
. Tout comme nos travaux essayent de le mettre en avant, leur but réside dans
l’exploration et la structuration d’un espace sensorimoteur.
D’un point de vue matériel, le dispositif robotique est sophistiqué et assez complexe
comme le décrit Lopes et al. [2013] (5 actionneurs, 6 capteurs), mais demeure en parfaite
adéquation avec notre définition de l’encorporation. Pour calculer l’erreur entre
le but généré à atteindre et le point de l’espace réellement atteint, nous nous basons
sur la comparaison de la fréquence du son telle qu’elle est mesurée avant d’entrer dans
l’instrument, ce qui donne une meilleure précision sans pour autant altérer la mesure.
2. Citations extraite d’un sujet de stage de Master 2, encore disponible en octobre 2013 à l’adresse
http://www-master.ufr-info-p6.jussieu.fr/2011/Modelisation-commande-et116 CHAPITRE 5. FIMO : UNE PLATEFORME D’EXPÉRIMENTATIONS
Figure 5.8: Photographie du dispositif de bouche artificielle utilisable par la plateforme
FIMO pour mener à bien des expérimentations sur un robot physique.
5.4.4 Récapitulatif
Le tableau 5.2 expose un résumé des différentes encorporations proposées dans
FIMO et présente leurs points communs et leurs différences.
Encorporation obst. % att. |s| |m|
Simulation
Véhicule Mono-Roue (VMR) ∅ 100 1 1
VMR ∅ 90 1 1
VMR bump 100 1 1
Véhicule Deux Roues (VDR) ∅ 100 2 2
VDR multiples obstacles carrés 80 2 2
VDR triangles inaccessibles 80 2 2
Bras robotique (BR) à 1 articulation ∅ 10 2 1
BR à 2 articulations ∅ 10 2 2
BR à 3 articulations ∅ 10 2 3
BR à 15 articulations ∅ 10 2 15
Physique
Bouche Artificielle ∅ 10 2 2
Tableau 5.2: Résumé des principales encorporations proposées dans FIMO et de leurs
caractéristiques propres (obst. désigne les obstacles présents, % att le pourcentage de
la zone atteignable, |s| et |m| respectivement le nombre de dimensions sensorielles et
motrices).5.5. ASPECTS TECHNIQUES DE L’EXPÉRIMENTATION 117
5.5 Aspects techniques de l’expérimentation
Il existe de multiples manières d’utiliser FIMO. La première est de l’utiliser depuis
l’extérieur en employant la ligne de commande. La seconde est d’accéder à l’interface de
programmation directement en utilisant le langage Python. Nous présentons dans cette
section des exemples d’utilisation de FIMO dans ces deux catégories à la fois en ce qui
concerne le fichier fimo.py ainsi que le système de comparaisons offert par le fichier
compare.py.
5.5.1 Exemples d’utilisation de FIMO en ligne de commande
Pouvoir manipuler FIMO à l’aide de la ligne de commande était une volonté ancrée
dès le départ. Cela dans le but de permettre une utilisation extérieure massive suffisamment
simple et puissante sans avoir à programmer quoi que ce soit. Nous présentons
ci-dessous les options disponibles pour l’exécution du programme, telles qu’elles sont
présentées dans l’aide en ligne de commande. Comme déjà expliqué, le programme est
très configurable, et c’est même l’objet de la plateforme que de permettre l’exploration
de l’influence de ces paramètres.
En pratique, le programme dispose d’une vingtaine de paramètres configurables
concernant directement la boucle motivationnelle, de cinq métriques pouvant être pré-
cisées, et d’un paramètre permettant de spécifier une déformation de l’espace d’exploration.
Comme déjà expliqué plus tôt, le paramétrage par défaut est défini dans le fichier
config.py. Un paramétrage précis peut bien évidemment être effectué, soit en modifiant
ce même fichier, soit directement à l’aide d’arguments passés à la ligne de commande
du fichier fimo.py. Voici quelques exemples.
# arrêt après 2000 commandes motrices sur un bras robotique à 15 jointures
python fimo.py -a=2000 Arm15LargeEnv
# idem en précisant l’étiquette pour repérer l’expérimentation en visualisation
python fimo.py -a=2000 --label="mon_expe" Arm15LargeEnv
# idem en précisant une distorsion de l’espace d’exploration
python fimo.py -q -a=2000 --label="ma_distortion" --distortion="Hx**2+Hy**2" Arm15LargeEnv
Les deux premiers exemples vont en réalité lancer l’interface interactive de FIMO.
Il faudra alors suivre les instructions à l’écran pour pouvoir interagir correctement avec
l’agent. Par exemple pour lancer l’expérimentation avec la touche l, lancer une phase
d’examen avec la touche e. La figure 5.9 présente une copie d’écran de FIMO en mode
interactif. Le troisième exemple quant à lui permet de lancer, grâce à l’option -q, une
expérimentation de manière silencieuse, sans rien afficher à part le score d’évaluation.
Par souci d’exhaustivité, ci-dessous vous est présentée l’aide du programme en ligne de118 CHAPITRE 5. FIMO: UNE PLATEFORME D’EXPÉRIMENTATIONS
Figure 5.9: Copie d’écran de FIMO en mode interactif.
commande dans le but d’illustrer toutes les possibilités de manipulation de FIMO.
usage : fimo . py [ - h ] [- t TIMES ] [ - a STOP_AT_ACTIONS ] [- g STOP_AT_GOALS ] [- l ]
[ - q] [ - e EXAM_FILE ]
[ - - split_ratio_threshold SPLIT_RATIO_THRESHOLD ]
[ - - structuring STRUCTURING ] [ -- max_subregions MAX_SUBREGIONS ]
[ - - k_for_knn K_FOR_KNN ] [ -- exam_freq EXAM_FREQ ]
[ - - merge_ratio_threshold MERGE_RATIO_THRESHOLD ]
[ - - lp_type LP_TYPE ] [ -- label LABEL ]
[ - - interest_type INTEREST_TYPE ]
[ - - exploration_trials EXPLORATION_TRIALS ]
[ - - adjust_ratio_threshold ADJUST_RATIO_THRESHOLD ]
[ - - incompetent INCOMPETENT ] [ -- auto_multi_rep AUTO_MULTI_REP ]
[ - - exam_reaching_trials EXAM_REACHING_TRIALS ]
[ - - experimented EXPERIMENTED ] [ - - enrich_goals ENRICH_GOALS ]
[ - - selection_type SELECTION_TYPE ]
[ - - max_reaching_trials MAX_REACHING_TRIALS ]
[ - - interest_window INTEREST_WINDOW ] [- - precision PRECISION ]
[ - - generate_action GENERATE_ACTION ]
[ - - split_exp_threshold SPLIT_EXP_THRESHOLD ]
[ - - competence_type COMPETENCE_TYPE ] [- - competent COMPETENT ]
[ - - full_random_values FULL_RANDOM_VALUES ] [ - - score SCORE ]5.5. ASPECTS TECHNIQUES DE L’EXPÉRIMENTATION 119
[ - - split_type SPLIT_TYPE ] [ - - reset RESET ]
[ - - merge_type MERGE_TYPE ] [ - - accomplishment ACCOMPLISHMENT ]
[ - - min_exp_in_region MIN_EXP_IN_REGION ]
[ - - small_random_values SMALL_RANDOM_VALUES ] [- - mode MODE ]
[ - - context CONTEXT ] [ -- normalize_interest NORMALIZE_INTEREST ]
[ - - interest INTEREST ] [ - - split SPLIT ] [ - - merge MERGE ]
[ - - competence COMPETENCE ] [ - - distance DISTANCE ]
[ - - distortion DISTORTION ]
emb
positional arguments :
emb Embodiment you want to experiment
optional arguments :
-h , -- help show this help message and exit
>> Main options :
-t TIMES Number of times you want to experiment it
-a STOP_AT_ACTIONS stop , exit and dump experiment after STOP_AT actions
reaching
-g STOP_AT_GOALS stop , exit and dump experiment after STOP_AT goals
reaching
-l launch experiment right away
-q launch experiment right away in quiet mode
-e EXAM_FILE file specifying examination goals to reach ( each line
representing a goal respecting the form
dim_1@val_1 ;...; dim_n@val_n )
>> Global configuration :
-- split_ratio_threshold SPLIT_RATIO_THRESHOLD
number / string
-- structuring STRUCTURING
number / string
-- max_subregions MAX_SUBREGIONS
number / string
-- k_for_knn K_FOR_KNN
number / string
-- exam_freq EXAM_FREQ
number / string
-- merge_ratio_threshold MERGE_RATIO_THRESHOLD
number / string
-- lp_type LP_TYPE number / string
-- label LABEL number / string
-- interest_type INTEREST_TYPE
number / string
-- exploration_trials EXPLORATION_TRIALS
number / string
-- adjust_ratio_threshold ADJUST_RATIO_THRESHOLD
number / string120 CHAPITRE 5. FIMO: UNE PLATEFORME D’EXPÉRIMENTATIONS
-- incompetent INCOMPETENT
number / string
-- auto_multi_rep AUTO_MULTI_REP
boolean
-- exam_reaching_trials EXAM_REACHING_TRIALS
number / string
-- experimented EXPERIMENTED
number / string
-- enrich_goals ENRICH_GOALS
boolean
-- selection_type SELECTION_TYPE
number / string
-- max_reaching_trials MAX_REACHING_TRIALS
number / string
-- interest_window INTEREST_WINDOW
number / string
-- precision PRECISION
number / string
-- generate_action GENERATE_ACTION
number / string
-- split_exp_threshold SPLIT_EXP_THRESHOLD
number / string
-- competence_type COMPETENCE_TYPE
number / string
-- competent COMPETENT
number / string
-- full_random_values FULL_RANDOM_VALUES
boolean
-- score SCORE number / string
-- split_type SPLIT_TYPE
number / string
-- reset RESET boolean
-- merge_type MERGE_TYPE
number / string
-- accomplishment ACCOMPLISHMENT
number / string
-- min_exp_in_region MIN_EXP_IN_REGION
number / string
-- small_random_values SMALL_RANDOM_VALUES
number / string
-- mode MODE number / string
-- context CONTEXT boolean
-- normalize_interest NORMALIZE_INTEREST
boolean
>> Metrics :
-- interest INTEREST Computes the learning progress for a given region
( lambda expression )
-- split SPLIT Returns the measure of splitting computed from r1 and5.5. ASPECTS TECHNIQUES DE L’EXPÉRIMENTATION 121
r2 ( lambda expression )
-- merge MERGE None ( lambda expression )
-- competence COMPETENCE
Computes a competence for given start , goal and final
states ( lambda expression )
-- distance DISTANCE Computes the distance between two given states ( lambda
expression )
>> Exploration space :
-- distortion DISTORTION
distortion lambda applied to explored space
5.5.2 Exemples d’utilisation de FIMO en pur Python
De manière plus pure, il est également tout à fait possible de manipuler FIMO directement
dans le langage dans lequel il a été programmé, à savoir Python. Le morceau
de code source ci-dessous présente différents exemples d’instanciation d’un objet de la
classe Agent.
1 # !/ usr / bin / python
# -* - coding : utf -8 -* -
3 # Licensed under the GNU General Public License , see COPYING
5 import embodiments
from core . agent import Agent
7
’’’
9 Differents exemples d ’ instanciations possibles d ’ un agent . L ’ idee
generale ici est d ’ ajouter tous les agents dans un tableau pour
11 pouvoir lancer les experimentations en une seule passe .
’’’
13
agents = []
15
# bras robotique avec structuration standard
17 agents += [ Agent ( embodiments . Arm15LargeEnv () ]
19 # bras robotique avec structuration de type grappe
agents += [ Agent ( embodiments . Arm15LargeEnv () , label =’ clust ’,
structuring =’ clustering ’) ]
21
# bras robotique avec distorsion de l ’ espace d ’ exploration et
structuration standard
23 agents += [ Agent ( embodiments . Arm15LargeEnv ( distortion =’ Hx **2+ Hy **2 ’) ,
label =’ squared_dim ’) ]122 CHAPITRE 5. FIMO : UNE PLATEFORME D’EXPÉRIMENTATIONS
25 # bras robotique avec segments de taille decroissante
agents += [ Agent ( embodiments . Arm15LargeEnv ( limbs =[6.5 , 6.0 , 5.5 , 5.0 ,
4.5 , 4.0 , 3.5 , 3.0 , 2.5 , 2.0 , 1.5 , 1.0 , 0.5]) , label =’ decreasing ’) ]
27
# parcours du tableau pour lancer les experimentations !
29 for i in xrange (len( agents ) ) :
# chaque agent 10 fois
31 for t in xrange (10) :
print agents [i ]. go ( actions =3000)
Listing 5.1: Différents exemples de manipulation de fimo directement à l’aide du
langage python
Comme vous pouvez le constater, pour lancer une première expérimentation il faut
très peu de lignes de code. Il suffit d’importer les paquets embodiments et core.agent ;
puis il faut instancier un encorporation ainsi qu’un Agent. Enfin il suffit d’appeler la
méthode go() de l’agent en précisant le nombre d’actions qu’il doit effectuer avant de
s’arrêter.
Pour rentrer un peu plus dans les détails, il est possible de passer différents paramètres
à l’instanciation d’une encorporation ou d’un agent. On peut par exemple fournir
à l’encorporation une distorsion de son espace sensoriel afin d’explorer un nouvel espace
peut-être plus adéquat (cf. la section 4.5.1 où nous introduisons cette idées). En ce qui
concerne l’agent, il est possible de lui fournir trois choses : une étiquette pour mieux
identifier cette expérimentation a posteriori (label), la méthode de structuration de
l’espace si besoin (structuring prenant les valeurs none, dimensional, centroidal,
cf. section 4.4.3, ou encore pca, cf. section 4.5.2) et une configuration particulière désirée
(par rapport aux variables définies dans le fichier config.py).
Par ailleurs, afin de donner la possibilité de faire des expérimentations en
plusieurs fois, nous avons implémenté un mécanismes de sauvegarde d’une expérimentation
en l’état. C’est notamment extrêmement utile dans le cas où
l’on travaille avec des robots physiques, puisque cela permet de continuer à
différents moments une expérimentation. Cela se fait à l’aide des instructions
cPickle.dump(agent, open(’fichier_sauvegarde’, ’w’)) pour sauvegarder un
agent, et Agent.load(’fichier_sauvegarde’) pour le charger. Une fois chargé,
l’agent est manipulable comme déjà présenté dans le listing ci-dessus.5.5. ASPECTS TECHNIQUES DE L’EXPÉRIMENTATION 123
5.5.3 Exemples d’utilisation du patron de comparaison
Il s’agit de créer un nouveau fichier contenant une classe qui propose des méthodes
dont le nom commence par compare_ pour que celles-ci soient automatiquement identifiées
et lancées par le script compare.py à la racine.
# !/ usr / bin / python
2 # -* - coding : utf -8 -* -
# Copyright 2014 Fabien Hervouet
4 # Licensed under the GNU General Public License , see COPYING
6 import embodiments
from compare import Compare
8 from core . agent import Agent
10 # #######################################################
12 class CompareMode ( Compare ) :
14 def __init__ ( self , actions , times ) :
Compare . __init__ ( self , actions )
16 # number of times to run for average
self . times = times
18
’’’
20 arm15 with mode = ’ mbe ’
’’’
22 def compare_mbe ( self ) :
scores = []
24 for _ in range ( self . times ) :
emb = embodiments . Arm15LargeEnv ()
26 agent = Agent ( emb , label =’ mbe ’, configuration ={ ’ mode ’: " ’ mbe ’"})
scores += [ self . go ( agent )]
28 return scores
30 ’’’
arm15 with mode = ’ gbe ’
32 ’’’
def compare_gbe ( self ) :
34 scores = []
for _ in range ( self . times ) :
36 emb = embodiments . Arm15LargeEnv ()
agent = Agent ( emb , label =’ gbe ’, configuration ={ ’ mode ’: " ’ gbe ’"})
38 scores += [ self . go ( agent )]
return scores
Listing 5.2: Squelette pour automatiser des tests comparatifs.124 CHAPITRE 5. FIMO : UNE PLATEFORME D’EXPÉRIMENTATIONS
5.6 Visualisation de données
Cette section présente différents aspects du module de visualisation. Certains ont
déjà pu être dévoilés dans les chapitres précédents. D’autres sont moins essentiels mais
nécessitent tout de même qu’on s’y attarde quelque peu pour montrer les possibilités
offertes par FIMO.
5.6.1 Interface utilisateur
L’interface d’utilisation du module de visualisation est extrêmement simple. Elle
propose une interface en mode texte qui s’appuie, comme tous les modules interactifs
disponibles dans FIMO, sur la bibliothèque d’affichage ncurses. Une fois lancé avec
la commande minimale python visu.py, le module de visualisation affiche les expérimentations
existantes sous forme de tableau, similairement à ce que présente la figure
5.10. Chaque ligne représente une expérimentation, les colonnes affichées permettant de
donner quelques informations sur celles-ci.
Figure 5.10: Copie d’écran du module interactif de visualisation disponible dans FIMO.
À partir de cette interface, il est possible d’étudier le comportement des agents
durant les expérimentations. Quelques raccourcis clavier sont donnés directement pour5.6. VISUALISATION DE DONNÉES 125
faciliter l’utilisation. Pour connaître les autres il faut consulter l’aide grâce à la touche
h. Le tableau 5.3 présente les raccourcis disponibles.
Touche Action déclenchée
a Sélectionner (ou déselectionner) toutes les expérimentations
d Supprimer l’expérimentation courante définitivement
e Tracer la courbe d’examen pour l’expérimentation courante
E Sélectionner toutes les expérimentations pour l’encorporation courante
f Tracer l’évolution sensorimotrice pour l’expérimentation courante
g Afficher les buts générés pendant l’expérimentation courante
gg Remonter à la première expérimentation de la liste
G Descendre à la dernière expérimentation de la liste
I Afficher tous les paramètres pour l’expérimentation courante
k Tracer la courbe des examens pour chaque question-but
L Sélectionner toutes les expérimentations pour l’étiquette courante
m Tracer la courbe moyenne des examens des expérimentations sélectionnées
n Relancer une expérimentation suivant les paramètres de celle courante
q Quitter le programme de visualisation
r Dessiner les régions pour l’expérimentation courante
s Tracer la courbe lissée des examens pour l’expérimentation courante
u Rafraîchir la liste des expérimentations disponibles
v Équivalent à r+g+e pour l’expérimentation courante
/ Sélectionner les expérimentations correspondant à un patron
Tableau 5.3: Différents raccourcis clavier disponibles lors de l’utilisation du module de
visualisation.
5.6.2 Quelques exemples de visualisation
Cette section présente un panel des visualisations offertes par FIMO. Ainsi la figure
5.11 présente quatre types d’informations sur les buts générés par l’agent : les buts
générés dans l’espace (en haut à gauche), le découpage en sous-régions (en haut à
droite), l’évolution de buts générés dans des fenêtres de temps bien précises (en bas à
gauche), et les buts et leur compétence (en bas à droite). Les points bleus représentent
les questions posées lors de l’examen.
La figure 5.12 représente les points réellement expérimentés dans l’espace, c’est-à-
dire les données brutes acquises par l’agent au cours de l’expérimentation. On peut
d’ailleurs remarquer que l’agent se retrouve visiblement plus souvent sur les bords de
la zone atteignable.126 CHAPITRE 5. FIMO : UNE PLATEFORME D’EXPÉRIMENTATIONS
Figure 5.11: Différentes manières de visualiser les buts générés par l’agent au cours
d’une expérimentation.
Figure 5.12: Visualisation des données brutes après une expérimentation.
Un autre type d’information qu’il nous importe de présenter est l’évolution des
valeurs sensorimotrices au cours de l’expérimentation. Cela montre comment l’agent
utilise ses capacités sensorimotrices. C’est l’objet de la figure 5.13.
Enfin, il est possible d’activer un mode verbose pendant une expérimentation pour
obtenir davantage d’informations, notamment pour visualiser le spectre des valeurs des5.6. VISUALISATION DE DONNÉES 127
Figure 5.13: Visualisation de l’évolution des valeurs pour les capteurs et les moteurs
après expérimentation.
découpes pour chacune des dimensions de la région considérée. C’est ce que montre la
figure 5.14. À gauche, chaque courbe indique les valeurs de la métrique pour chacune des
dimensions de l’espace exploré (en l’occurrence Hx et Hy), en échantillonnant dans les
bornes de la région considérée. Le trait noir horizontal représente le seuil pour valider
une découpe. À droite, ce sont les buts générés dans la région qui sont affichés pour
mieux comprendre la correspondance avec les valeurs de la métrique.
5.6.3 Exploiter les fichiers journaux
Les visualisations que nous proposons par défaut se basent sur une analyse des
fichiers journaux qui représentent toutes les informations collectées par l’agent au cours
de l’expérimentation. Il est important de préciser que ces fichiers ont été pensés pour
être exploitables en dehors de l’outil de visualisation que nous proposons. Le format de
ces fichiers est du type CSV, mis à part qu’un fichier contient plusieurs expérimentations.
Nous présentons ci-après des extraits de certains fichiers journaux pour montrer qu’il
est facile de les réutiliser dans n’importe quel tableur par exemple. Tout d’abord l’entête
pour une même expérimentation est la même dans tous les fichiers journaux. Il
contient la date d’expérimentation, ainsi que différentes informations comme l’encorporation
utilisée, le temps d’expérimentation, et tous les autres paramètres issu du fichier
config.py.
====================================================================== 11_Feb_00h21
embodiment;_experimental_time;competence_type;label;max_reaching_trials;...128 CHAPITRE 5. FIMO: UNE PLATEFORME D’EXPÉRIMENTATIONS
Figure 5.14: Spectre des valeurs de la métrique utilisée pour déterminer si il est judicieux
de découper la région considérée.
Arm15LargeEnv;0:00:27.395092;1;0.5-competent;5;...
Les examens sont formatés de manière à avoir sur chaque ligne l’information du
point dans l’espace (comme pour le fichier de questions), puis après le symbole € les
différentes notes (compétence / distance) d’atteinte de cet objectif.
Hx@-8.33;Hy@37.63€0.509575666682/32.5001684807;0.664949296548/22.2036378948;...
Hx@28.1;Hy@29.01€0.551405551024/15.5095483105;0.597626955631/13.9115055586;...
Hx@-28.55;Hy@18.2€0.700766713296/22.971644971;0.918442149049/6.26106145241;...
Hx@39.67;Hy@10.99€0.571555295612/5.66159467381;0.736186870974/3.48610448647;...
Hx@30.43;Hy@18.37€0.679463400538/7.83602147741;0.660279942142/8.30499129944;...
Les données brutes regroupent directement les transitions dans l’espace exploré depuis
un point de départ i_*, jusqu’à un point f_* par une configuration motrice, c’est-à-
dire un ensemble de valeurs pour chacune des dimensions motrices a_*. De plus l’action
peut être explorative ou bien être utilisé explicitement pendant une tentative d’atteinte
d’un but.
explorative;i_Hx;i_Hy;a_m0;...;a_m14;f_Hx;f_Hy
False;45.0;0.0;-11.0;...;11.5;26.0;4.5;4.5;6.0;32.13882;-29.66266
False;32.13882;-29.66266;-4.0;...;4.0;-4.76442;-39.790785.7. CONCLUSION 129
False;-4.76442;-39.79078;0.0;...;8.0;44.03175;-2.15399
False;44.03175;-2.15399;-5.0;...;6.0;43.29367;-2.85007
False;43.29367;-2.85007;-6.7;...;5.3;34.45868;-24.96753
Pour les buts générés, on trouve tout d’abord un entête spécifique qui sert à donner
une significations aux valeurs en dessous. Les colonnes du type i_* représentent l’état
de départ, g_* le point à atteindre, a[i]_* les valeurs des actionneurs compte-tenu du
nombre d’actions maximal attribué pour l’atteinte du but, et f_* l’état d’arrivée une
fois les actions effectuées. On peut noter l’attribut artificial qui indique si le but était
un but généré ou bien réattribué parce que non atteint, ainsi que l’attribut competence
qui donne la valeur finale de compétence pour l’atteinte de ce but.
timestamp;i_Hx;i_Hy;g_Hx;g_Hy;a1_m11;a1_m10;...;f_Hx;f_Hy;artificial;comp
1;45.0;0.0;-43.0;-109.5;29.0;-16.0;...;-4.1761;9.92018;False;0.11242727804
2;45.0;0.0;81.5;-121.5;-4.6;-2.0;...;-4.97067;-4.36353;False;0
3;45.0;0.0;78.5;66.0;-2.8;-10.7;...;43.37854;10.42;False;0.518634674029
4;45.0;0.0;-4.0;-130.5;-1.9;-2.0;...;-6.50638;-31.91255;False;0.129612707032
Enfin les informations à propos des régions sont sauvegardées avec les attributs birth
pour la date de naissance de la région (au bout de combien d’actions), len(exp) pour le
nombre de buts appartenant à la région, last_interest la valeur d’intérêt, ainsi que les
*_up et *_low pour expliciter les bornes des régions pour chaque dimension de l’espace
exploré.
birth;len(exp);last_interest;Hx_low_0;Hx_up_0;Hy_low_0;Hy_up_0
42;46;7.70341529704e-05;-135.0;135.0;-135.0;-35.0
149;15;0.00658664682288;-135.0;135.0;-34.49999;-24.5
149;8;0.00325845401703;-135.0;135.0;-23.99999;-22.5
142;17;0.0030769959908;-135.0;135.0;-21.99999;0.0
187;7;0.0390185640459;-135.0;20.0;0.50001;2.0
5.7 Conclusion
Nous avons présenté dans ce chapitre la plateforme FIMO que nous avons développée
pour les besoins de nos travaux. Cette plateforme réunit finalement notre propre
besoin individuel d’expérimentation à celui, plus collectif, de proposer un réel cadre
logiciel permettant d’introduire de nouvelles idées, de les implémenter et surtout de
les tester selon un protocole commun. En cela, elle formule tout à la fois une ambition
et une volonté de faire progresser la communauté de robotique développementale dans
laquelle nous nous inscrivons.
Au-delà, les avantages de FIMO résident dans les nombreuses options configurables ;
dans les différentes encorporations proposées et la facilité d’intégration de nouvelles130 CHAPITRE 5. FIMO : UNE PLATEFORME D’EXPÉRIMENTATIONS
qu’elles soient physiques ou simulées ; dans les multiples façons de lancer des instances
de boucles motivationnelles (ligne de commande, pur Python) ; dans les facilitations
pour l’expérimentation comparative avec un module dédié. Le module de visualisation
permet également de mieux étudier les différences expérimentales. Le prochain chapitre
est dédié à l’étude expérimentale du modèle motivationnel décrit au chapitre 3 et des
contributions proposées au chapitre 4, en utilisant à cet effet la plateforme FIMO.C h a p i t r e
6
Expérimentations
6.1 Introduction
Ce chapitre propose d’explorer le fonctionnement du modèle présenté au chapitre
3 d’un point de vue pratique. Cela afin d’en montrer les avantages et les limites, pour
tout simplement comprendre au mieux les enjeux de la motivation dans les systèmes
artificiels. Par ailleurs nous y validons ou invalidons les idées et contributions théoriques
présentées dans le chapitre 4 concernant les formes alternatives de structuration de l’espace
exploré. Les expérimentations ont été réalisées sur la plateforme FIMO que nous
avons développée à cet égard et que nous avons présentée dans le chapitre 5. Certaines
de ces expérimentations concernent directement de nouvelles métriques (intérêt, compétence),
d’autres concernent de nouveaux mécanismes (ajustement, fusion). D’autres
enfin sont plus orientées sur une étude paramétrique (seuils) permettant d’étudier l’optimisation
des mécanismes.
6.1.1 Dispositif expérimental
Pour évaluer l’impact de nos contributions, nous avons mené nos expérimentations
sur un bras robotique implémenté dans FIMO (cf. section 5.4.2) et utilisé pour des recherches
connexes [Baranes et Oudeyer, 2010a, 2013; Santucci et al., 2013] pour évaluer
les heuristiques de motivation intrinsèque. Les expérimentations montrent une moyenne
faites à partir de 5 exécutions pour 1000 actions motrices. Empiriquement, la stabilité
des courbes commence au bout de 500 actions, c’est pourquoi nous limitons les exécutions
au double de ce nombre. La zone atteignable est centrée sur (0; 0) et s’étale de
131132 CHAPITRE 6. EXPÉRIMENTATIONS
manière circulaire dans un rayon de 45 unités. Cette zone est plongée dans un espace
représenté par les dimensions Hx et Hy, variant toutes deux dans l’intervalle [−135; 135].
Cela signifie que la zone atteignable représente environ 10% de l’espace total. L’examen
est constitué de 100 questions qui sont réparties uniformément dans l’espace atteignable
par le bras robotique. Le schéma de la figure 6.1 synthétise tout cela.
(0; 0) Hx
Hy
Figure 6.1: Schéma de l’espace d’exploration du bras robotique à 15 jointures.
6.1.2 Résultat préliminaire
Dès la section 3.1.2 du chapitre 3, nous avions présenté les deux approches concurrentes
pour l’exploration par babillage sensorimoteur. La première proposait d’explorer
l’espace moteur (Motor-Babbling Exploration), quand la seconde s’intéressait à l’exploration
de l’espace sensoriel (Goal-Babbling Exploration). Nous avions écarté la première
pour travailler à l’amélioration de la seconde, puisque de précédentes recherches avaient
mis en avant son efficacité en terme d’apprentissage. C’est pourquoi, pour calibrer et
valider l’implémentation de notre plateforme, nous avons mené des expérimentations
concernant ces deux approches.
La figure 6.2 montre les résultats de la comparaison entre l’approche GBE et l’approche
MBE, donnant un très net avantage à la première. Chaque courbe expérimentale
est constituée d’un ensemble de points qui répercutent le note obtenue lors d’un examen
de 100 questions, réparties uniformément dans l’espace atteignable. Nous affichons la
moyenne sur les 5 exécutions, avec l’écart type obtenu. Ainsi, un premier examen a été
effectué dès le départ, puis toutes les 100 actions réalisées. Nous pouvons observer une
valeur de 12 pour le GBE après 100 actions (écart type de 3) et de 25 pour le MBE (écart
type 4). On peut ensuite noter une décroissance respective des deux courbes jusqu’à,
respectivement, des valeurs de 7 et 17 au dernier examen, c’est-à-dire après 1000 actions.6.1. INTRODUCTION 133
Figure 6.2: Comparaison entre l’approche MBE et l’approche GBE.
La légende de la figure donne notre indicateur d’aire sous la courbe (AUC pour Area
Under Curve) : 87 pour GBE et 205 pour MBE. Comme précédemment annoncé, on
note que dès 500 actions réalisées, le seuil de compétence du bras robotique est atteint
et sa performance reste stable. La distinction claire entre ces deux courbes constitue un
premier élément qui nous permet de valider en partie notre approche.
6.1.3 Plan du chapitre
Ce chapitre s’organise en trois points reflétant les résultats obtenus par rapport aux
contributions proposées dans le manuscrit. Nous commençons par présenter en détail
les résultats positifs en les illustrant. Nous regroupons ensuite dans une seconde partie
les résultats mitigés représentant les éléments contributifs que le processus expérimental
n’a pas permis de valider. Enfin, nous en déduisons une solution permettant de délé-
guer l’optimisation de paramètres et la recherche de nouvelles métriques à un processus
évolutionnaire.134 CHAPITRE 6. EXPÉRIMENTATIONS
6.2 Résultats positifs
Cette section est dédiée à la présentation des résultats expérimentaux positifs obtenus
venant confirmer l’intérêt d’un certain nombre de nos contributions. Nous exposons
ces résultats de manière à aborder en premier lieu les éléments essentiels validant le
modèle général. Puis nous passons en revue les paramétrages et métriques importants
pour une bonne mise en œuvre de ce modèle.
6.2.1 Position de repos
Commençons par l’étude de la position de repos (ligne 2 de l’algorithme 1 page 69).
Il ne s’agit pas à proprement parler d’une contribution, mais de la mise en évidence de
l’importance d’éléments de haut niveau du processus développemental. Comme l’indique
la figure 6.3, nous observons une très nette différence entre le fait de donner la possibilité
à l’agent d’évoluer librement de manière continue dans son environnement, et le fait de
repositionner le bras après chaque tentative d’atteinte à la position (x = 45; y = 0).
Cela correspond aux valeurs absolues θi = 0 pour chacune des jointures du bras. Dans
le cas de non-repositionnement, le bras essaye d’atteindre un nouveau but à partir de
la position où il est arrivé en essayant d’atteindre le but précédent.
Figure 6.3: Résultats d’expérimentations pour l’activation/désactivation de la position
de repos.
Les résultats donnent un très net avantage au fait de permettre au bras de se re-6.2. RÉSULTATS POSITIFS 135
positionner au même endroit après chaque tentative. En effet, les transitions apprises à
partir d’un point unique donnent très rapidement (une centaine d’actions motrices) une
avance forte en réussite à l’examen (10 points). Cela s’explique par le fait que revenir à
une position de repos permet de mieux réutiliser l’apprentissage, notamment grâce à la
boucle d’exploration locale que nous étudions ci-après en section 6.2.2.
6.2.2 Exploration locale
Le modèle motivationnel présenté dans le chapitre 3 est basé sur trois boucles
imbriquées. Une boucle générale qui génère des buts, une boucle qui permet d’atteindre
ceux-ci, ainsi qu’une boucle d’exploration locale.
Figure 6.4: Résultats expérimentaux pour l’activation/désactivation de la boucle d’exploration
locale.
La figure 6.4 teste l’importance de cette troisième boucle (lignes 14 à 19 de l’algorithme
1). Elle montre clairement une différence de qualité d’apprentissage entre des
instances sans exploration locale par rapport à des instances avec un quota d’exploration
locale fixé à 5 (20 points d’écart). On peut expliquer ce phénomène en rappelant
que l’acquisition de données permettant l’apprentissage se fait à la fois pendant les
tentatives d’atteintes et pendant les phases d’exploration locale lancées en cas de trop
mauvaise compétence.136 CHAPITRE 6. EXPÉRIMENTATIONS
Quota d’exploration p 0 1 2 3 4 5 6 7 8 9 10 15 20
Nombre d’AA 1000 690 532 397 331 286 277 204 217 177 178 121 92
Nombre d’AE 0 310 468 603 669 714 723 796 783 823 822 879 908
Nombre de BG 172 122 93 69 57 50 49 35 39 31 32 22 16
Tableau 6.1: Tableau regroupant le nombre total d’actions effectuées. AA pour actions
d’atteinte et AE pour actions d’exploration, BG pour buts générés. Les colonnes en gras
représentent les deux courbes de la figure 6.4.
Étant donné que nous rapportons les courbes de la figure 6.4 en terme de nombre
d’actions effectuées, cela explique la différence entre les deux cas : les transitions apprises
grâce à l’exploration locale apportent de la qualité et de la diversité qui permettent à
l’agent une meilleure compétence générale sur tout l’espace apprenable. De plus étant
donné que cette expérimentation utilise la position de repos présentée dans la section
précédente, ces transitions apprises au cours de phases d’exploration lui permettent de
mieux rebondir pour affiner son chemin.
À titre explicatif, le tableau 6.1 présente les valeurs moyennes pour les indicateurs
tels que le nombre d’actions d’exploration (AE) issues directement de l’exploration locale
par rapport au nombre d’actions d’atteinte (AA). Les valeurs reportées sont pour 13
valeurs de p expérimentalement testées. On y constate une corrélation linéaire entre le
quota d’exploration p et le pourcentage d’actions d’exploration (facile à calculer puisque
le nombre total d’actions vaut 1000), et a fortiori avec le nombre de buts générés. Le
pourcentage des actions d’exploration locale augmente avec p, quand au contraire le
nombre de buts générés diminue. Notre interprétation est que les transitions apprises
grâce à l’exploration locale sont extrêmement importantes pour la bonne raison qu’elles
sont aléatoires à partir d’un point fixe. Elles offrent donc la possibilité d’apprendre au
mieux à sortir d’un point pour aller dans la bonne direction. Sans ce mécanisme, l’accumulation
de transitions est uniquement guidé par l’atteinte, dont la diversité des actions
générées est amoindrie par la technique de calcul de moyenne utilisée. L’exploration apporte
une diversité qui n’est pas compensable uniquement par l’atteinte.
6.2.3 Quota de tentatives d’atteinte
Pour atteindre un point particulier de l’espace d’exploration, c’est-à-dire réussir à
effectuer les bonnes actions pour se retrouver dans un état particulier, l’agent dispose
d’un quota maximum de q actions consécutives. Nous avons étudié l’impact de la valeur
de q sur la performance d’apprentissage du système. Pour rappel, le fonctionnement
de l’atteinte d’un but est illustré conjointement par les tableaux 6.2 et 6.3 et la figure
6.5. Dans l’exemple présenté, tiré d’une véritable expérimentation, 192 actions motrices
ont déjà été exécutées. La position de départ s
192 = (45; 0), le but est γ
192 = (10; 34.5).6.2. RÉSULTATS POSITIFS 137
Celui-ci est atteint en quatre actions motrices (pour un maximum de q = 6), puisque
la compétence κ
192 = 0.95 ≥ 0.9, c’est-à-dire avec une tolérance d’atteinte comp = 0.1
(cf. section 6.2.4).
t Hx Hy
192 45 0
193 40.54 11.56
194 28.70 19.45
195 9.21 34.51
Tableau 6.2: Trajectoire effectuée en quatre actions en partant d’un point (45; 0) pour
tenter d’atteindre le point (10; 34.5), pour finalement arriver au point (9.21; 34.51). Les
coordonnées Hx et Hy de chaque ligne correspondent au point d’arrivée par exécution
de l’action relative sur la ligne précédente.
t m0 m1 m2 m3 m4 m5 m6 m7 m8 m9 m10 m11 m12 m13 m14
192 16.2 10.5 18 11 -0.2 1.8 6 7.2 5 13.7 16.2 -6.6 15.6 -4.8 -14.7
193 -18.8 -11.1 20.9 8.5 7.9 -15.3 -0.3 13.9 -0.8 -15.5 1.3 12.6 9.5 -16.5 -19.8
194 -7 -5.2 9.5 3.5 1.4 -9.8 -4.2 9.6 6 -9.2 -0.7 5.4 9.4 -3 -13.3
Tableau 6.3: Vecteurs des valeurs ∆ appliquées aux pas de temps 192, 193 et 194, pour
chacun des moteurs du bras robotique.
Les résultats de l’étude de l’influence de ce paramètre sont donnés par la figure 6.6.
L’inflexion des courbes de performance est sensiblement différente selon les valeurs employées.
On peut constater un étalement dans les performances en fonction des valeurs.
Plus particulièrement, entre les deux extrêmes, à savoir la courbe pour q = 10 et celle
de q = 3, l’aire sous la courbe affiche une différence de plus de 30 points (AUC= 78 pour
k = 3 et AUC= 110 pour k = 10. Pour autant, les résultats à la dernière évaluation au
bout de 1000 actions sont sensiblement similaires (6 pour k = 3 et 7.5 pour k = 10).
Il s’agit donc ici d’un paramètre permettant de contrôler visiblement l’accélération de
l’apprentissage.
Essayons d’analyser l’aspect quelque peu contre-intuitif du résultat exposé tendant
à montrer que disposer d’un quota plus petit semble plus efficace. La raison qui
nous semble la plus explicative est que cet aspect est extrêmement lié à la boucle
d’exploration locale, ainsi qu’à la représentation temporelle basée sur le nombre d’actions.
En effet au départ, un agent qui n’a aucune expérience va utiliser la totalité
de son quota de tentatives q. De plus il va lancer des explorations locales après chacune
d’elle étant donné son inexpérience. Donc on peut en déduire que moins l’agent
dispose de connaissances, plus il va effectuer d’actions. Cela va en quelque sorte lui138 CHAPITRE 6. EXPÉRIMENTATIONS
Hx
Hy
(0; 0)
s
192
s
193
s
194
s
γ 195
192
Figure 6.5: Trajectoire effectuée en trois actions en partant d’un point s
192 en (45; 0)
pour tenter d’atteindre le point γ
192 en (10; 34.5), pour finalement arriver au point s
195
en (9.21; 34.51), suffisamment proche du but pour s’arrêter.
faire prendre du retard à l’échelle du nombre d’actions par rapport à son développement.
Le tableau 6.4 donne les valeurs moyennes pour le nombre d’actions d’atteinte
(AA), le nombre d’actions d’exploration (AE) et le nombre de buts générés pour le
total des 1000 actions pour chaque valeur de q testées. On constate que le ratio entre
le nombre d’actions d’exploration et le nombre d’actions d’atteinte reste stable (70%,
30%). En revanche la diminution du nombre de buts générés devient directement liée à
l’augmentation du quota d’atteinte q, ce qui a un impact non négligeable sur la qualité
de l’apprentissage du fait d’une moins bonne structuration.
Quota d’actions q 1 2 3 5 10
Nombre d’AA 299 303 282 313 294
Nombre d’AE 701 697 718 687 706
Pourcentage d’AE 70 70 72 69 71
Nombre de buts générés 300 156 96 65 31
Nombre de buts ÷ nombre d’AA 0.99 0.51 0.34 0.21 0.11
Tableau 6.4: Tableau regroupant le nombre total d’actions effectuées. Il s’agit de valeurs
moyennes pour les 5 exécutions issues des expérimentations sur le quota d’atteinte
q présentées en figure 6.6. AA pour actions d’atteinte et AE pour actions d’exploration.6.2. RÉSULTATS POSITIFS 139
Figure 6.6: Résultats expérimentaux selon différentes valeurs de quota d’atteinte de
buts.
Ainsi, le fait de brider le quota de tentatives semble donc être vraiment positif
puisque cela semble pousser l’agent à apprendre à un rythme plus adapté. En d’autres
termes, essayer de trop apprendre d’un coup ne semble pas être une stratégie gagnante.
6.2.4 Tolérance d’atteinte
Nous avons introduit l’aspect de la tolérance d’atteinte dans la figure 3.12 (page
67) ainsi qu’à la ligne 21 de l’algorithme 1 (page 69) présentant l’architecture et le
fonctionnement global du modèle motivationnel. Par défaut, on pourrait considérer un
but comme atteint si et seulement si la valeur de compétence κ
t = 1, c’est-à-dire quand
s
t+q = γ. La notion de tolérance d’atteinte vient donner de la flexibilité à ce mécanisme
en donnant une borne inférieure à respecter tel que κ
t ≥ 1 − comp. La figure 6.7 illustre
ce mécanisme. Les trois points importants sont le point de départ s
t
, le point à atteindre
γ
t
et le point d’arrivée s
t+q
, atteint après q actions. Autour de γ
t
sont dessinés les
cercles concentriques qui représentent les différentes valeurs potentielles de comp. Ainsi,
atteindre parfaitement γ
t permet d’obtenir une compétence de 1, être dans le premier
cercle signifie avoir obtenu une compétence 0.9 ≤ κ
t ≤ 1 (comp = 0.1), le second cercle
0.8 ≤ κ
t ≤ 1 (comp = 0.2), et ainsi de suite.
Comme le montre la figure 6.8, il existe une véritable différence entre les multiples
valeurs testées pour servir de borne inférieure à la validation d’une tentative140 CHAPITRE 6. EXPÉRIMENTATIONS
s
t
γ
t
s
t+q
. . .
Figure 6.7: Illustration de la boule de compétence permettant de considérer un but
comme atteint avec une certaine tolérance comp.
Figure 6.8: Résultats expérimentaux pour l’étude du paramètre de valeur de compé-
tence minimale pour considérer un but comme atteint.
d’atteinte. Entre les courbes extrêmes, 0.5-competent en bleu (AUC= 114 et dernier
examen à 9.5) et 0.9-competent en jaune (AUC= 91 et valeur du dernier examen
à 6.8), les valeurs de dernier examen varient de presque 3 points, et les aires sous
la courbe montrent une différence de plus de 20 points. Il semblerait donc, qu’une
valeur légèrement inférieure à 1 confère un certain avantage favorisant l’accélération de
l’apprentissage : les courbes pour les valeurs 0.8 et 0.9 sont assez proches en terme de
trajectoire et d’aire sous la courbe. Nous donnons une illustration des résultats obtenus
dans la figure 6.9. Au dessus d’un certain seuil (1.0) le système est trop strict, quand
au dessous d’un autre seuil (0.7) le système peut être considéré comme trop lâche. La
forme de la courbe montre bien qu’il existe un seuil optimum (0.8 ≤ comp ^ ≤ 0.9) pour
lequel la performance (c’est-à-dire la valeur d’AUC et valeur au dernier examen) est la
meilleure, et que celle-ci diminue de part et d’autre de cette valeur d’comp.6.2. RÉSULTATS POSITIFS 141
0.5 0.6 0.7 0.8 0.9 1
7
8
9
1 − comp
Valeur finale
lâche
strict
0.5 0.6 0.7 0.8 0.9 1
90
100
110
1 − comp
AUC
lâche strict
Figure 6.9: Représentation de la performance en fonction de la valeur de tolérance
d’atteinte comp. En haut pour la valeur au dernier examen ; en bas pour la valeur
d’AUC.
Comme l’indique le tableau 6.5, le ratio du nombre de buts est proportionnel à ce
seuil de tolérance d’atteinte. Il est intéressant de remarquer que le ratio entre le nombre
de buts et le nombre d’actions d’atteinte devient supérieur à 1 si le seuil de tolérance vaut
0.5. Nous expliquons ce résultat par le fait que cette valeur de tolérance est trop faible, ce
qui implique que certains buts générés sont automatiquement considérés comme atteints
sans même avoir à effectuer d’action.
Tolérance d’atteinte 1 − comp 0.5 0.6 0.7 0.8 0.9 1.0
Nombre d’AA 254 274 286 283 279 291
Nombre d’AE 746 726 714 717 721 709
Nombre de buts générés 275 273 280 264 240 248
Nombre de buts ÷ nombre d’AA 1.07 0.98 0.97 0.92 0.86 0.83
Tableau 6.5: Tableau regroupant le nombre total d’actions effectuées. Il s’agit de valeurs
moyennes pour les 5 exécutions issues des expérimentations sur les différentes valeurs
de tolérance d’atteint 1−comp présentées en figure 6.8. AA pour actions d’atteinte
et AE pour actions d’exploration.142 CHAPITRE 6. EXPÉRIMENTATIONS
6.2.5 K plus proches voisins
Le modèle prend pour base d’apprentissage un mécanisme très simpliste qui se base
sur la fabrication d’une nouvelle action en tenant compte des transitions dans l’espace
apprises jusque-là. Ce mécanisme, déjà décrit en section 3.5.2, sélectionne parmi toutes
les transitions déjà effectuées celles qui maximisent la ressemblance avec la distance à
parcourir, et en construit une action moyenne à exécuter pour atteindre le but désiré.
Hx
t Hy
t Hx
t+1 Hy
t+1 dist
45. 0. → 41.66 -12.34 18.63
41.66 -12.34 → 39.21 -15.79 7.32
39.21 -15.79 → 35.10 -19.62 2.57
35.10 -19.62 → 28.58 -23.08 9.98
28.58 -23.08 → 23.11 -24.33 19.10
23.11 -24.33 → 17.63 -24.34 26.56
17.63 -24.34 → -13.00 -32.09 54.97
17.63 -24.34 → -7.53 -36.30 51.37
17.63 -24.34 → 17.59 -28.86 31.24
17.63 -24.34 → 15.58 -31.54 33.13
17.63 -24.34 → 7.91 -23.13 36.69
...
Tableau 6.6: Tableau des données brutes issues d’une expérimentation donnant en gras
les k = 3 meilleures transitions qui vont permettre de déterminer l’action à exécuter en
partant du point (40.41; −14.16) pour atteindre le but (34.74, −21.16).
Un exemple expérimental est présenté dans le tableau 6.6. Celui-ci représente une
partie de la mémoire de l’agent en une quarantaine de transitions. Les lignes en gras
représentent les k = 3 meilleures transitions déterminées par l’indicateur de la colonne
score, calculé comme la somme des différences entre les Ht
et le point de départ
(40.41; −14.16) d’une part, et entre les Ht+1
et le but à atteindre (34.74; −21.16) d’autre
part. La colonne la plus à droite dans le tableau 6.6 donne les valeurs de la fonction d’évaluation
permettant de sélectionner les meilleures transitions à utiliser, celles-ci ayant été
mises en gras. Pour rappel, on a :
dist(β
i
, st
, γt
) =
s
t − si
+
γ
t − si+1
(6.1)
Les comparaisons que nous avons expérimentées et que présente la figure 6.10, font
varier les valeurs du paramètre k. L’évaluation de l’impact de celui-ci peut paraître
contre-intuitive de prime abord. En effet, a priori l’on pourrait penser que plus la valeur
de k est élevée, plus l’action sera précise, puisque basée sur la moyenne statistique. Ce
n’est pas le cas puisque la courbe k = 100 en bleu sur la figure montre des performances
très nettement inférieures aux autres courbes. On constate également une équivalence
assez forte entre les courbes k = 10 et k = 1, même si la seconde montre une pente6.2. RÉSULTATS POSITIFS 143
précoce plus forte. Enfin la meilleure courbe s’instancie quand k = 5. Celle-ci gagne
plus de 100 points d’aire sous la courbe par rapport à k = 100 et plus de 10 points par
rapport aux deux autres courbes.
Figure 6.10: Résultats expérimentaux faisant varier les valeurs du k utilisé pour calculer
l’action à exécuter, c’est-à-dire le nombre de transitions en mémoire permettant de
fabriquer la nouvelle action.
Pour expliquer le fait que les courbes ne se rejoignent pas au bout de 1000 pas de
temps, nous pouvons invoquer le fait que l’on raisonne ici sur trop peu d’exemples pour
que la moyenne sur un grand échantillon soit intéressante. Il faut mieux se contenter
de faire une moyenne sur très peu d’actions afin de limiter le bruit des transitions non
satisfaisantes qui constituent un très fort pourcentage. Celui-ci étant amené à diminuer
au fur et à mesure du processus, on pourrait déterminer précisément ce moment puisqu’il
correspondra au moment où la courbe pour k = 100 rejoindra les autres.
6.2.6 Conditions de découpe
Nous avions introduit une nouvelle métrique de découpe en section 4.2.2. Nous
l’avons donc tout naturellement expérimentée. Mais afin de mener une meilleure étude,
nous en introduisons des variantes ici. Les voici toutes présentées sous l’appellation
unifiée µi
.144 CHAPITRE 6. EXPÉRIMENTATIONS
µ0 = |progrès(r1) − progrès(r2)|
µ1 =
|progrès(r1) − progrès(r2)|
progrès(Ri)
µ2 = max(progrès(r1), progrès(r2))
Dans l’ordre, elles proposent de définir la condition de découpage selon que :
— µ0 : l’intérêt relatif des sous-régions ;
— µ1 : l’interêt relatif des sous-régions considérées par rapport à la région mère ;
— µ2 : le maximum parmi les intérêts des sous-régions.
Figure 6.11: Résultats expérimentaux pour différentes valeurs de seuil pour la métrique
de découpe µ0.
Mais il ne faut pas oublier qu’une condition pour valider une découpe est que le
résultat donné par µ dépasse un certain seuil σ. Les trois figures 6.11, 6.12 et 6.13 pré-
sentent une étude sur les valeurs de seuil pour chacune des métriques de découpage µi
.
En effet, nous avions besoin pour pouvoir les comparer de mener les expérimentations
avec chaque valeur de seuil, sans quoi comparer toutes les métriques avec un même seuil
aurait été un non-sens. Les résultats sont serrés entre les différentes métriques. Néanmoins
si l’on considère la métrique µ1, elle exhibe une différence notable de presque 106.2. RÉSULTATS POSITIFS 145
points au dernier examen entre les valeurs de seuil les plus mauvaises et les meilleures,
ce qui montre l’impact de ce paramètre.
Figure 6.12: Résultats expérimentaux pour différentes valeurs de seuil pour la métrique
de découpe µ1.
Figure 6.13: Résultats expérimentaux pour différentes valeurs de seuil pour la métrique
de découpe µ2.
Si l’on considère toutes les métriques entre elles, avec un certain avantage accordé à
µ0, qui obtient les meilleures valeurs à la fois d’AUC et au dernier examen (5.0-split146 CHAPITRE 6. EXPÉRIMENTATIONS
par exemple qui a une aire sous la courbe de valeur 86.87 et son dernier examen à 5.9).
Le tableau 6.7 résume les résultats obtenus et compare les meilleures valeurs d’AUC, de
valeur au dernier examen et de seuil associé pour chacune des µi
.
µi σ^ AUC VDE
µ0 5.0 86.87 5.9
µ
0
0 2.4 91.62 6.2
µ1 2.2 97.98 7.3
µ2 2.4 90.24 6.5
Tableau 6.7: Tableau comparant les meilleures valeurs d’aire sous la courbe (AUC) et
de dernier examen (VDE), pour chaque métrique (µi) et chaque meilleur seuil associé
(σ^).
6.2.7 Métriques de compétence
Dans la section 4.2.3, nous avions introduit une métrique de compétence que nous
qualifions de contextuelle. L’idée était que la métrique devienne, de manière progressive
avec l’expérience, de plus en plus sévère sur ce que l’on attend en terme de proximité
d’atteinte de l’objectif.
Figure 6.14: Résultats expérimentaux pour la métrique de compétence du modèle de
base (bleu) et la métrique de compétence contextuelle introduite par nos soins (vert).6.2. RÉSULTATS POSITIFS 147
Les résultats exposés dans la figure 6.14 viennent valider l’intérêt de la métrique de
compétence contextuelle en tant que contribution à l’amélioration du modèle de base.
Cela vient appuyer les résultats obtenus et présentés précédemment en section 6.2.4 et
portant sur la tolérance d’atteinte. En effet, la métrique de compétence contextuelle
vient, d’une certaine manière, réguler automatiquement la valeur du seuil fixé une fois
pour toute. Cela se fait automatiquement en prenant en compte de manière les progrès
effectués par l’agent, en adaptant la sévérité de manière développementale.
6.2.8 Structurations alternatives
Nous avons montré en section 6.2.2 comment l’activation ou la désactivation de
l’exploration locale influençait le développement de l’agent. Sur la figure 6.4 (page 135)
des résultats de l’étude, nous pouvons remarquer que la diversité des comportements
est plus élevée dès lors qu’on enlève la phase d’exploration locale (p = 0). On peut
le déduire du fait que l’écart type y est beaucoup plus important pour p = 0 que
pour p = 5. Cet aspect nous a poussé à regarder plus en détail l’influence de cette
boucle d’exploration locale sur le reste du système, et notamment sur l’efficacité de nos
propositions de formes alternatives de structurations.
Figure 6.15: Résultats expérimentaux pour des formes de structuration de l’espace
alternatives en ayant désactivé la boucle d’exploration locale.
La figure 6.15 présente les résultats d’une comparaison menée pour évaluer 6 types
de structuration dans le cas du bras robotique à 15 moteurs. La correspondance est148 CHAPITRE 6. EXPÉRIMENTATIONS
la suivante : dim pour structuration orthogonale dans l’espace standard [Hx; Hy] ; ddim
pour structuration orthogonale dans l’espace [Hx
2 + Hy
2
] ; dnone pour purement
uniforme sans structuration dans l’espace [Hx
2 +Hy
2
] ; none pour aucune structuration
dans l’espace standard ; enfin dclust et clust pour structuration par partitionnement
respectivement dans l’espace déformé [Hx
2 + Hy
2
] et l’espace standard [Hx; Hy].
L’observation d’une réelle différenciation en fonction des structurations rend cette
figure particulièrement intéressante. Certes les résultats sont nettement moins bons en
terme d’inflexion de courbe d’apprentissage, tout semble décalé comme c’était le cas sur
la figure 6.4. Mais les résultats ici sont en moyenne beaucoup plus distincts, permettant
d’isoler trois groupes assez aisément. Notre interprétation est la suivante.
Exploration non structurée
En guise d’analyse préliminaire, il nous faut constater l’inefficacité de la nonstructuration
(turquoise) qui stagne à plus de 40 de distance moyenne aux questions
de l’examen tout au long de son développement. Le premier lot de courbes juste après
se situe à environ 8 points en dessous en valeur de dernier examen, et à environ 60 points
en dessous en valeur d’AUC. Analysons maintenant les différences entre l’exploration
de l’espace tel que fourni à l’origine [x; y] et de l’espace déformé [Hx
2 + Hy
2
].
Exploration de l’espace [x; y]
Dans l’espace [Hx; Hy], les deux techniques expérimentées (courbes bleu et jaune)
semblent équivalentes. En effet, le fait de structurer l’espace d’origine de manière orthogonale
aux dimensions, ou bien de manière plus souple en utilisant du partitionnement
par grappes avec l’algorithme K-Means ne change rien. Les deux valeurs des AUC sont
extrêmement proches (357 et 360) et les valeurs au dernier examen le sont également
(environ 36).
Exploration de l’espace [x
2 + y
2
]
En revanche, explorer l’espace [Hx
2+Hy
2
] donne un net avantage. La représentation
permet un découpage extrêmement efficace poussant l’agent à générer davantage de
buts dans la zone réellement atteignable. Dans cet espace, le fait d’activer la structuration
semble donner un léger avantage d’apprentissage. Cela nous pousse à penser
que la forme que revêt l’espace est plus important que la manière de le structurer.
Introduite au chapitre 4 en section 4.5.1, cette idée consiste à chercher d’autres manières
de représenter l’espace d’exploration qui soient potentiellement plus adaptées
et qui reflètent d’autant mieux la structure des données récoltées par l’agent. Il s’agit
de conserver toutes les techniques de structuration par découpage récursif mais appliquée
à une représentation alternative de l’espace. Comme nous utilisons un bras6.2. RÉSULTATS POSITIFS 149
robotique pour nos expérimentations, les dimensions originales de l’espace sont donc
la position de l’effecteur terminal (Hx; Hy). Mais la particularité de l’encorporation
d’un bras robotique fait que les positions atteignables sont dispersées en rond autour
de son point d’ancrage. Ainsi, il est aisé de penser qu’une transformation de l’espace
de coordonnées cartésiennes en coordonnées polaires comme le permet l’application de
φ(Hx, Hy) = Hx
2 + Hy
2 peut s’avérer extrêmement efficace. Cela permet notamment
d’utiliser le même mécanisme de découpe orthogonal aux dimensions dans un espace
qui permet de représenter linéairement la séparation entre les zones atteignable et non
atteignable contrairement à l’espace d’origine, et de surcroît de contenir la redondance.
Pour illustrer un peu mieux l’intérêt de la technique prenons deux autres visualisations,
pour 5000 actions, afin de mieux comprendre la structuration de cet espace
déformé. Premièrement la figure 6.16, qui présente (à gauche) le découpage effectué par
l’agent à l’état final de son exploration. On constate parfaitement que les découpes se
concentrent entre 0 et moins de 5000. C’est pertinent puisque dans la représentation
Hx
2 + Hy
2
la limite d’atteinte du bras est de 452 × 452 = 4050. Sur cette même
image on constate également que les buts générés sont concentrés dans les régions les
plus proches de 0. De plus, la compétence représentée en ordonnée est nettement plus
élevée dans ces mêmes régions. La représentation de droite de cette image 6.16 vient
illustrer la répartition de ces buts générés, transformés à nouveau pour être projetés
dans l’espace d’origine. On y remarque que les buts sont tous centrés sur le cercle de la
zone atteignable par le bras, à quelques rares exceptions près.
Figure 6.16: Résultat du découpage en région à la fin d’une expérimentation à la fois
pour l’exploration de l’espace transformé [Hx
2 + Hy
2
] (à gauche) et la correspondance
des buts générés dans l’espace d’exploration fourni à l’origine (à droite) après 5000
actions.
La seconde visualisation intéressante pour comprendre l’intérêt théorique de cette
technique est celle de la figure 6.17 (page 150). On y observe la répartition dans l’espace
transformé des buts générés par l’agent au cours du temps, divisé en quatre fenêtres
((0; 99),(99 : 198),(198; 297),(297; 396)). Cela signifie qu’en 5000 actions motrices
effectuées, l’agent a donc eu le temps de générer 396 buts. Ce en quoi la figure 6.17
nous renseigne c’est que dans les 99 premiers buts, l’agent a pu générer de manière150 CHAPITRE 6. EXPÉRIMENTATIONS
uniforme dans l’espace exploré, ce qui explique les croix jusqu’à Hx
2 + Hy
2 = 15000.
Dès la seconde période en revanche, (99; 198), déjà tous les buts sont générés en dessous
de 5000, c’est-à-dire dans la zone atteignable. En effet, le bras mesurant 45 unités,
l’équation du cercle délimitant la zone atteignable est Hx
2 + Hy
2 = 452 + 452 = 4050.
Et il en est de même dans les deux autres fenêtres, (198; 297) et (297; 396), où tous
les buts générés appartiennent à la zone atteignable. Cela montre l’impact réel de
représenter l’espace différemment, qui permet de mieux appréhender son exploration.
Certes les valeurs obtenues de distance aux questions de l’examen sont incomparables
aux résultats présentés jusqu’ici, mais cela provient de la prédominance du mécanisme
d’exploration locale, qui visiblement tend à lisser les différences entre les multiples
techniques de structuration expérimentées.
Figure 6.17: Répartition des buts générés par l’agent en quatre fenêtre de temps de
longueur identique dans l’espace d’exploration [Hx
2 + Hy
2
] après 5000 actions.
Par ailleurs, l’analyse de la courbe représentant les résultats de l’utilisation de la
technique le partitionnement par K-Means dans l’espace [Hx
2 + Hy
2
] (mauve) est dé-
cevante. En effet, elle se situe entre la courbe d’exploration non structurée (turquoise),
et les deux courbes d’exploration de l’espace [Hx; Hy] (bleu et jaune). Ce qui signifie
qu’elle est moins efficace qu’une structuration dans l’espace d’origine. Nous pensons
trouver la raison de son inefficacité dans le fait que la forme de l’espace ainsi déformé ne
se prête précisément pas à l’utilisation d’un partitionnement à la K-Means. Néanmoins,
cela vient appuyer notre hypothèse selon laquelle la représentation constitue un point
essentiel qui empêche de pouvoir trouver des manière de mieux faire.6.3. RÉSULTATS MITIGÉS 151
Au final, enlever la boucle d’exploration permet de voir apparaître des différences
justement parce que celle-ci a tendance à lisser l’apprentissage en donnant moins de
poids aux buts à atteindre puisque de toutes façons plus l’agent se trompe, plus il va
accumuler des données.
6.3 Résultats mitigés
Comme dans toute recherche, les idées de contributions que nous avons eues n’ont
pas toutes permis de conclure sur leur validité. Nous donnons dans cette section un
aperçu de celles-ci. Nous nous attardons sur les détails de trois parmi onze propositions
et paramètres introduits aux chapitres 3 et 4, qui nous paraissent représentatives. Nous
commençons par revenir en détail sur le quota d’exploration locale, puis nous étudions
l’impact des buts artificiels, et les différences entre de multiples métriques d’intérêt pour
le choix des régions.
6.3.1 Quota d’exploration locale
La première illustration parmi les résultats obtenus ne montrant pas de signifi-
cativité concerne le quota d’exploration locale p. Nous avons montré précédemment
qu’entre le fait d’activer (p > 0) ou de désactiver (p = 0) ce mécanisme, nous obtenons
des résultats nettement différents (cf. section 6.2.2).
Figure 6.18: Résultats expérimentaux pour différentes valeurs du quota d’exploration
locale p pour l’acquisition de nouvelles transitions.
Ici nous montrons grâce à la figure 6.18 que la différence entre de multiples valeurs
de p > 0 est relativement faible. On constate une tresse dense et indifférenciable de152 CHAPITRE 6. EXPÉRIMENTATIONS
courbes, dont le résultat final au dernier examen est plus que similaire. En terme d’aires
sous la courbe, les valeurs oscillent entre 88 et 107, mais cette différence provient avant
tout des 200 premières actions motrices, puisqu’après on constate le resserrement des
courbes. D’une manière générale, cette zone avant les 200 ou 300 premières actions
motrices est susceptible d’apporter de la diversité étant donné l’aspect aléatoire plus
fort dû à l’inexpérience de l’agent.
6.3.2 Buts artificiels
Les buts artificiels font partie du vécu de l’agent, puisqu’il s’agit d’ajouter artifi-
ciellement un nouveau but comme parfaitement atteint à partir de l’état courant. Cela
revient à considérer que toute position atteinte en poursuivant un but généré devient
potentiellement un but non voulu mais atteint. Cette information est importante pour le
processus de structuration à venir. Notamment cela permet d’identifier plus clairement
les zones accessibles puisque les buts ayant une compétence maximale à 1 ajoutés à une
région viennent consolider les meilleures valeurs de découpes. L’importance théorique
des buts artificiels est donc assez évidente.
Figure 6.19: Résultats expérimentaux concernant l’activation ou la désactivation du
mécanisme de l’enrichissement grâce aux buts artificiels.
En pratique, l’activation ou non de l’enrichissement grâce aux buts artificiels ne
montre pas grande différence. Les deux courbes présentées en figure 6.19 se croisent, et
les écart-types se chevauchent. Les valeurs au dernier examen sont de plus assez proches.
Ces résultats sont contre-intuitifs étant donné la valeur théorique que nous attribuions
intuitivement à l’enrichissement par buts artificiels.6.3. RÉSULTATS MITIGÉS 153
Figure 6.20: Illustration de la forme de cône de compétence obtenue après 5000 actions
avec l’activation des buts artificiels.
6.3.3 Métriques d’intérêt
Les propositions de métriques d’intérêt d’une région constituent le troisième point
représentatif nous permettant d’illustrer les résultats mitigés obtenus par expérimentation.
Dans le chapitre 4 nous avons introduit une nouvelle manière ρ(Ri) de calculer
l’intérêt propre d’une région. L’idée principale était d’intégrer au calcul du progrès un
mécanisme de diversification qui permette de redonner de l’attention à d’autres régions
dont l’intérêt n’était pas prioritaire, mais dont le nombre d’expériences effectuées au
sein de cette région était faible par rapport aux autres. Il s’agit de réintroduire un peu
d’uniformisation pour compenser l’intérêt pur d’une région.
La figure 6.21 présente quatre formes de métriques définissant l’intérêt d’une région.
Les voici présentées ci-dessous avec entre parenthèses la correspondance avec la légende
de la figure.
ρ(Ri) = progrès(Ri) (lp)
ρ(Ri) = progrès(Ri) + diversification(Ri) (lp+uct)
ρ(Ri) = progrès(Ri) + diversification(Ri) normalisé (lp+uct normalized)
ρ(Ri) = diversification(Ri) (uct)
Le constat à propos des résultats est assez simple, puisque parmi ces résultats sensiblement
similaires, on peut à peine classer la métrique de pure diversification (uniforme)
comme étant légèrement moins performante à la fois en valeur au dernier examen (∼ 7)154 CHAPITRE 6. EXPÉRIMENTATIONS
Figure 6.21: Résultats expérimentaux pour les différentes métriques de calcul de l’intérêt
d’une région.
et en aire sous la courbe (∼ 92). Les trois autres sont très proches, mais donnent une
plutôt bonne valeur de dernier examen (∼ 6) et d’aire sous la courbe (moyenne entre les
trois ∼ 83).
6.3.4 Autres résultats et conclusion préliminaire
Comme expliqué en introduisant cette section, les résultats obtenus pour les autres
expérimentations ne montrent guère de différences significatives pour les valeurs de
paramètres ou techniques testées. Nous avons précédemment présenté trois résultats
non significatifs qui nous paraissaient les plus représentatifs pour leur différence de
type : le quota d’exploration locale pour un seuil assez fin donnant un ensemble très
dense de courbes ; les buts artificiels pour l’activation ou non d’un paramétrage qui
théoriquement porte vraiment du sens ; les métriques d’intérêt et les combinaisons faites
à partir des propositions précédentes. Nous avons donc regroupé dans le tableau 6.8
l’ensemble des paramètres testés grâce à la plateforme FIMO. Nous les avons classés
selon l’issue des résultats. Il est à noter que nous n’avons pas pu tester les résultats pour
la transformation a posteriori de l’espace, ni pour le paradigme poly-représentationnel.
La première partie de ces expérimentations nous a permis de montrer qu’un certain
nombre de nos contributions pouvaient amener à des gains non négligeables en terme
de performance d’apprentissage. La seconde partie nous a permis de montrer qu’un
sous-ensemble de nos contributions ne permettaient pas d’établir expérimentalement6.3. RÉSULTATS MITIGÉS 155
Résultats positifs
2 Activation ou désactivation de la position de repos
15–21 Quota de transitions à explorer localement après chaque tentative d’atteinte d’un but
23 Quota d’actions pour atteindre d’un but
23 Borne inférieure pour considérer un but comme atteint
7 Nombre d’expériences pour fabriquer l’action à exécuter
25 Métriques de découpes
25 Seuil associé à une métrique pour valider une découpe
3 Métrique de compétence contextuelle
25 Substitution par un espace d’exploration déformé
25 Structuration par partitionnement
Résultats mitigés
3 Métriques d’intérêt pour une région
14 Activation ou désactivation de l’ajout de buts artificiels constituant une partie du vécu
3 Métrique de progrès d’origine ou relative au temps
25 Seuil du nombre d’expériences dans la région mère pour valider une découpe
25 Seuil du nombre d’expérience dans les deux régions filles pour valider une découpe
25 Seuil associé à la métrique d’ajustement
25 Seuil associé à la métrique de fusion
25 Nombre des dernières expériences à utiliser pour le calcul du progrès dans une région
∅ Action aléatoire comme une valeur aléatoire pour chaque moteur ou uniquement pour un seul
13 Borne supérieure de compétence en dessous de laquelle déclencher une exploration locale
Non expérimentées
∅ Transformation a posteriori de l’espace d’exploration
∅ Multiples représentations concurrentes d’espaces d’exploration
Tableau 6.8: Récapitulatif des différents éléments soumis à l’expérimentation classifiés
selon l’issue des résultats obtenus. Nous avons opté pour le véritable nom du paramètre
dans FIMO, que nous redécrivons pour plus de clarté. La colonne de gauche indique le
numéro de ligne correspondant à cet attribut dans l’algorithme présenté en page 69.
des différences significatives.
Cette seconde partie nous montre surtout que le modèle proposé repose sur beaucoup
de paramètres dont il devient de plus en plus difficile d’évaluer les conséquences. Cela
provient entre autre des potentielles relations d’interdépendance caractérisant certains
sous-ensembles des paramètres proposés pour instancier la boucle motivationnelle. Ces
paramètres peuvent prendre différentes valeurs et peuvent engendrer des comportements
différents pour une même encorporation. C’est une caractéristique des systèmes156 CHAPITRE 6. EXPÉRIMENTATIONS
complexes 1
.
C’est la raison pour laquelle nous proposons d’amener la phase expérimentale vers
une approche évolutionnaire plus globale, afin de pouvoir étudier de manière plus complète
le paramétrage d’une boucle motivationnelle — sûrement de manière propre à une
seule encorporation — et essayer de dépasser les limitations précédemment rencontrées.
6.4 Approche évolutionnaire
Le point commun de toutes les méthodes présentées et expérimentées précédemment
réside dans l’existence d’un humain modélisateur bienveillant cherchant à optimiser
manuellement tous ces paramètres. Mais d’une part cet a priori demeure relativement
limité et peu crédible par rapport au reste du discours développemental et intrinsèque,
et d’autre part les résultats obtenus ne sont pas ceux espérés. Dans les deux cas,
cela souligne profondément la dépendance de l’émergence de solutions à un contexte,
la plupart du temps inidentifiable. Ainsi l’approche et les solutions trouvées par un
modélisateur en particulier ont une très forte probabilité de lui être propres, et donc de
s’en trouver limitées à sa propre intelligence et à sa créativité.
Ce que nous proposons ici revient à questionner ces évolutions du point de vue
des choix nécessaires qui les structurent, en s’attachant à étudier la problématique
suivante : comment désengager le modélisateur afin de laisser davantage de place à
l’automatisation du processus d’adaptation du système motivationnel ? Nous y répondons
en mettant en avant les limites de l’approche de modélisation externe, en exhibant
la possible spécificité de paramètres du modèle pour une encorporation donnée, et en
proposant une approche phylogénétique pour la résoudre.
Comme nous avons pu le constater précédemment, le modèle motivationnel tel qu’il
est défini dans ce manuscrit repose sur un nombre non négligeable de paramètres. Certains
parmi ceux-ci sont définis en extension (par exemple les différentes stratégies permettant
de découper l’espace, ou bien les différentes méthodes de calcul de la notion de
compétence), quand d’autres peuvent ne représenter que des seuils (comme le nombre
1. « Les notions d’explication et de compréhension devront être modifiées et affaiblies lorsqu’on s’intéresse
aux systèmes complexes. Si, comme cela est possible, le seul moyen de connaître le comportement
d’un système est de le simuler et d’observer l’évolution du modèle, alors, il faudra renoncer à l’espoir de
comprendre au sens actuel du terme, pourquoi le système se comporte comme il le fait. [...] Cela ne veut
bien sûr pas dire que nous ne pourrons pas progresser dans la connaissance de certains des mécanismes
fondamentaux mis en œuvre. Notamment, un programme de recherche pourrait consister à découvrir
les conditions nécessaires et suffisantes pour l’apparition du phénomène. Mais la compréhension fine et
totale de l’ensemble du processus risque de rester inatteignable. », Zwirn [2006]6.4. APPROCHE ÉVOLUTIONNAIRE 157
d’expériences permettant de calculer l’intérêt d’une région, la marge d’erreur pour considérer
une compétence maximale). Dans le premier cas cela limite l’exploration des paramétrages,
dans le second, les seuils sont potentiellement non bornables. Si l’on essaye
tout de même d’évaluer l’ensemble des combinaisons envisageables, en limitant les intervalles
des valeurs de seuil, on peut dénombrer plus de 90000 combinaisons à tester 2
.
Ainsi, compte-tenu du temps de simulation nécessaire à chaque expérimentation, ainsi
que du nombre significatif de fois nécessaire à refaire chacune d’elles pour s’approcher
d’un comportement type, il paraît donc bien évident qu’une étude paramétrique exhaustive
aussi globale ne semble pas triviale à mener.
6.4.1 Paramètres
Pour pouvoir travailler à faire évoluer les valeurs de paramètres du modèle, nous
avons eu recours à un vecteur de paramétrage. Chaque agent dispose d’un ensemble
de valeurs associées à chacun des 13 paramètres que nous avons sélectionnés et pour
lesquels nous avons fixé un intervalle de valeurs pour les faire varier (cf. figure 6.22).
[1; 20] [50; 100] [10; 100] [0; 100] [0; 10] [1; 10] [10; 30] [5; 10] [1; 5] [0; 20] [0; 1] [0; 20] [0; 1]
max_reaching_trials
interest_window
min_exp_in_region
split_exp_threshold
exploration_trials
k_for_knn
split_ratio_threshold
competent
incompetent
merge_ratio_threshold
enrich_goals
adjust_ratio_threshold
lp_type
Figure 6.22: Chromosome utilisé pour l’évolution du paramétrage de la boucle motivationnelle.
Les résultats présentés en figure 6.23 montrent une descente régulière des meilleurs
agents, même si ce n’est pas le cas pour les valeurs de la moyenne. Au bout de 100
générations, le meilleur agent a obtenu une valeur AUC= 65, ce qui constitue un très
bon score, et montre qu’il y a bien des éléments à paramétrer pour améliorer les résultats.
2. Nous considérons pour ce calcul un sous-ensemble de 13 paramètres les plus susceptibles d’in-
fluencer le résultat du système, dont les valeurs ont été toutes données en extensions. Pour cela nous
avons choisi de discrétiser les valeurs de seuils. En pratique donc, le chiffre est obtenu par la multiplication
des possibilités pour chacun de ces paramètres, sachant que 7 d’entre eux ont été ramenés à
deux valeurs possibles, et que les 6 autres à trois valeurs possibles. Cette valeur constitue de facto une
estimation basse, d’une exploration extrêmement limitée de l’espace paramétrique.158 CHAPITRE 6. EXPÉRIMENTATIONS
Figure 6.23: Évolution sur 100 générations en essayant d’optimiser le paramétrage du
système motivationnel pour le bras robotique à 15 jointures.
6.4.2 Métriques
Afin de chercher de nouvelles manières de calculer certains aspects de la boucle motivationnelle,
nous avons également essayé d’automatiser la recherche de métriques. Nous
modélisons une métrique sous forme d’une expression arborescente (cf. figure 6.24). Les
feuilles pour construire cette expression dépendent selon les métriques mais constituent
un ensemble fini déterminé par les éléments introduits dans les calculs des métriques déjà
présentées. Pour la combinaison des ces valeurs terminales, nous donnons un ensemble
de fonctions mathématiques classiques :
f0 = x + y
f1 = x − y
f2 = x × y
f3 = x ÷ y
f4 =
√
x
f5 = x
2
f6 = max(x, y)
f7 = min(x, y)
f8 = if x > y then a else b
Deux métriques ont été testées : celle pour déterminer l’intérêt d’une région (ρ),6.4. APPROCHE ÉVOLUTIONNAIRE 159
/
− |Ri
|
P|Ri|/2
j=0
κj
P|Ri|
j=|Ri|/2 κj
Figure 6.24: Exemple de chromosome pour la recherche de nouvelles métriques.
et celle pour déterminer une découpe (µ) comme l’illustre la figure 6.25. Les résultats
obtenus pour ces deux métriques sont décevants. Le processus évolutionnaire peine à
trouver des métriques adaptées en étant guidé par l’optique de faire baisser la valeur
d’AUC. Les meilleures valeurs d’AUC stagnent autour de 70, trouvées après une dizaine
ou quinzaine de générations, quand la moyenne reste autour de 90 et ne baisse pas.
Ce résultat reste néanmoins cohérent avec les résultats présentés précédemment qui
concluaient que le facteur de découpe semblait moins important que la manière de
représenter l’espace d’exploration.
Figure 6.25: Résultats expérimentaux pour l’optimisation de la métrique du calcul de
l’intérêt µ (à gauche) et de la métrique du calcul de l’intérêt ρ d’une région (à droite).
6.4.3 Représentations
De la même manière, nous avons cherché à déterminer de meilleures manières de
représenter l’espace d’exploration en utilisant l’approche évolutionnaire. La méthode
utilisée ici consiste à donner à chaque agent une transformation de l’espace initial,
puis de regarder ses performances. La modélisation d’une représentation est du même
type que pour la métrique, c’est-à-dire une expression mathématique arborescente. Les160 CHAPITRE 6. EXPÉRIMENTATIONS
feuilles potentielles sont l’ensemble des capteurs si à disposition, liées par des fonctions
mathématiques classiques (un sous-ensemble de celles présentées pour les métriques) :
f0 = x + y
f1 = x − y
f2 = x × y
f3 = x ÷ y
f4 =
√
x
f5 = x
2
Les résultats pour la recherche de meilleures représentations de l’espace par optimisation
évolutionnaire ne sont pas à la hauteur de nos espérances (cf. figure 6.26). On
observe les mêmes limites que pour les métriques. La moyenne ne descend guère et le
meilleur individu reste autour d’une valeur d’AUC= 70.
+
x
2 x
2
s1 −
s2 15
Figure 6.26: Exemple de chromosome arborescent représentant la fonction φ =
s
2
1 + (s2 − 15)
2 de transformation de l’espace d’exploration (à gauche) ; résultats expérimentaux
pour l’optimisation de la fonction φ de transformation de l’espace d’exploration
(à droite).6.5. CONCLUSION 161
6.5 Conclusion
Ce chapitre a permis de présenter les résultats expérimentaux pour les différentes
contributions théoriques introduites précédemment dans le manuscrit. Il s’agissait de
mener une étude exhaustive du fonctionnement du modèle motivationnel considéré,
afin d’en comprendre au mieux les rouages. Pour cela nous nous sommes appuyés sur
la plateforme FIMO présentée au chapitre précédent, ce qui confère à nos travaux la
qualité d’être reproductibles. Le dispositif expérimental considéré est un bras robotique
à 15 jointures, qui a pour objectif d’atteindre des points dans un espace sensoriel à
deux dimensions.
Les études paramétriques menées ont permis de mettre en évidence l’utilité de certains
mécanismes (position de repos, exploration locale). Par ailleurs, nous avons pu
exhiber des paramétrage assez fins pour certains mécanismes (quota de tentatives d’atteintes,
seuil de tolérance d’atteinte, nombre d’expérience pour calculer la meilleure
action). Nous avons également contribué à introduire de nouvelles manière de décider
d’une découpe par la double prise en compte d’un seuil du nombre d’expériences dans
une région et d’un seuil pour un ratio prenant en compte les sous-régions à naître. Nous
avons proposé et validé l’intérêt de notre métrique de compétence contextuelle, qui
permet, dans une perspective développementale, d’améliorer l’apprentissage en étant de
plus en plus sévère. En ce qui concerne les formes alternatives de structuration, les expé-
rimentations menées ont permis de montrer que, à condition de désactiver le mécanisme
d’exploration locale : le partitionnement en grappes était meilleur que ne pas structurer
l’espace et que l’exploration d’un espace déformé adapté à l’encorporation considérée
donne un très net avantage d’apprentissage. En revanche, les résultats pour les autres
contributions sont plus mitigés. Une cause potentielle pourrait en partie résider dans la
faible complexité de l’encorporation considérée.C h a p i t r e
7
Conclusions et perspectives
« We should perhaps briefly comment on the term artificial intelligence here
before continuing. With the introduction of the notion of embodiment about
20 years ago, the field has undergone fundamental changes, so that sometimes
the term embodied artificial intelligence is employed [...]. It somehow
suggests that there is the “real” field of artificial intelligence — the overarching,
encompassing discipline — and then there is this small subarea called
“embodied” artificial intelligence. [...] There are essentially two directions
in artificial intelligence : one concerned with developing useful algorithms
or robots ; and another direction that focuses on understanding intelligence,
biological or otherwise. In order to make progress on the latter, an embodied
perspective is mandatory. In this research branch, artificial intelligence is
embodied. » [Pfeifer et Bongard, 2006]
Dans cette thèse, nous nous sommes intéressés au domaine de l’intelligence artifi-
cielle, et plus particulièrement à sa branche définie sous l’étiquette robotique développementale.
Nous avons mené des recherches sur l’exploration et la structuration
intrinsèquement motivées d’espaces d’apprentissage sensorimoteur. Nous nous
sommes attelés à la description, à l’élaboration d’améliorations, à l’expérimentation et
à l’évaluation d’un modèle motivationnel pour les systèmes artificiels.
Un espace d’apprentissage sensorimoteur est représenté par des dimensions
propres à l’encorporation d’un système donné. Celles-ci sont définies soit par l’ensemble
des valeurs que peuvent prendre les capteurs du système, soit par l’ensemble des valeurs
163164 CHAPITRE 7. CONCLUSIONS ET PERSPECTIVES
qu’il peut envoyer dans ses moteurs. L’objectif, lié à cet espace sensorimoteur, est
d’apprendre un ensemble de coordinations sensorimotrices, c’est-à-dire la relation liant
l’état courant des capteurs du système à l’état des capteurs résultant de l’exécution
d’une action motrice particulière.
L’exploration désigne le mécanisme par lequel le système artificiel va chercher
à sonder un espace d’observation. Étant donné que nous nous sommes positionnés
dans la continuité de l’approche du Goal-Babbling Exploration, cela revient à s’inté-
resser à l’espace sensoriel, c’est-à-dire à l’espace déterminé par les capteurs de l’agent.
Celui-ci est amené, par ce mécanisme d’exploration, à générer des buts, représentant
des points de l’espace sensoriel, et à essayer de les atteindre à l’aide d’un quota d’actions.
La structuration consiste pour l’agent à analyser l’espace d’exploration, et à en
exhiber une structure. Plus précisément, il s’agit d’un processus par lequel le système
va isoler et regrouper des expériences vécues. Cela se réalise par la mise en œuvre de
mécanismes de régionalisation, c’est-à-dire de création de régions. Celles-ci représentent
un ensemble d’expériences localisées dans l’espace d’exploration. Elles vont également
permettre, grâce à la notion de compétence d’atteinte d’un but, de déterminer une
valeur d’intérêt associée, qui va intimement dépendre du système expérimenté et de sa
trajectoire développementale.
Le processus de développement, représenté par les deux mécanismes d’exploration et
de structuration, est complètement guidé par la motivation intrinsèque. La position
développementale défendue dans cette thèse implique une vision à long terme, mise en
œuvre par l’utilisation de la motivation. Il s’agit d’une manière particulière d’aiguiller
l’exploration, soit la génération de buts, et la structuration, soit le découpage en régions
d’intérêt. L’heuristique utilisée dans la modélisation considérée repose sur la notion de
progrès en apprentissage. Dans le cadre de l’apprentissage de coordinations sensorimotrices
qui est le nôtre, le progrès est une notion particulièrement adaptée pour orienter
l’acquisition perpétuelle de nouvelles compétences, en ce qu’il permet d’intensifier l’exercice
de la maîtrise tant que du progrès est constaté, et de changer d’objectif si ce n’est
plus le cas.
Conclusion générale
Tout au long de ce manuscrit, en suivant ce cadre de travail, nous avons décrit un
modèle motivationnel, puis proposé des contributions théoriques d’améliorations de ce
modèle. Nous avons pour cela développé une plateforme dédiée à l’expérimentation
de ce type de systèmes fondamentalement orientés vers leur propre développement.
Nous avons organisé notre manuscrit de manière à étayer notre propos et défendre165
l’argument selon lequel la motivation constitue un facteur d’organisation, de régulation
et d’accélération de l’apprentissage sensorimoteur.
L’étude de l’état de l’art nous a tout d’abord permis d’évaluer et de comprendre
les enjeux du domaine dans lequel nous nous inscrivons. Cette analyse nous a menés
à formuler et à mettre en relief trois notions essentielles à l’objectif que nous venons
de décrire. La première de ces notions convoque le corps. Celui-ci constitue un facteur
essentiel et privilégié pour l’interaction avec l’extérieur. Le développement représente la
seconde notion soulignée par notre étude. Il s’agit de favoriser une approche d’apprentissage
basée sur l’acquisition d’expériences sensorimotrices. Enfin, et comme nous l’avons
déjà exprimé, la motivation, en venant diriger le développement et l’apprentissage du
contrôle du corps, constitue la troisième notion clef mise en avant.
Nous avons présenté un modèle motivationnel générique et sa formalisation mathé-
matique et algorithmique. Une première manière de décrire ce modèle d’un point de vue
abstrait revient à identifier la boucle opérationnelle, générale composée de trois phases
successives nécessaires au processus d’apprentissage intrinsèquement motivé. La première
de ces phases consiste à choisir un but dans l’espace des valeurs des configurations
sensorielles que l’agent peut mesurer. La seconde phase du processus représente une
seconde boucle permettant de mener un certain nombre de tentatives d’atteinte pour
tendre vers ce but. Une troisième boucle, imbriquée dans les précédentes, se déclenche
à chaque fois que la compétence d’atteinte d’un but n’est pas suffisante, et permet
d’effectuer une exploration locale afin d’améliorer le modèle direct du corps en jeu.
En dernier lieu, la troisième et dernière phase repose sur la structuration de l’espace
d’exploration, dans le but de favoriser l’apprentissage à venir. Enfin, comme il s’agit
d’une boucle, ce processus reprend à la première étape.
Dans ce cadre, nous avons développé des propositions venant complexifier ce modèle
motivationnel. Nous avons implémenté, expérimenté et évalué ces contributions au
modèle théorique existant. L’étude expérimentale du modèle et de ses extensions a pu
être mené grâce à la plateforme FIMO, qui constitue la contribution pratique de nos
travaux. Cette plateforme est dédiée, de par sa modularité, à l’implémentation et à l’expérimentation.
Elle est fonctionnelle et prête à l’emploi, au sens où il existe différentes
manières de lancer des expérimentations et où sont fournies une aide pour chacun des
programmes la composant, ainsi que des exemples d’utilisation clairs et diversifiés. De
plus, FIMO offre la possibilité de configurer de nombreuses options relatives au modèle.
Ces multiples configurations peuvent être testées sur les trois types d’encorporation
directement proposées pour l’instant, ou bien sur de nouvelles étant donné la facilité
d’intégration d’autres, qu’elles soient physiques ou simulées. Enfin, notre plateforme
est livrée avec un module de visualisation permettant de mieux étudier les résultats166 CHAPITRE 7. CONCLUSIONS ET PERSPECTIVES
expérimentaux obtenus.
Cette plateforme nous a donc permis d’expérimenter l’ensemble des contributions
théoriques introduites. Celles-ci ont été menées sur un bras robotique dont l’objectif
était d’atteindre des points dans un espace sensoriel à deux dimensions, par l’exécution
d’actions comprises dans un espace moteur à quinze dimensions. Certaines de ces propositions
se sont avérées positives en apportant la preuve expérimentale d’améliorations
substantielles en terme d’accélération de la qualité d’apprentissage de nouvelles coordinations
sensorimotrices. Nous avons tout d’abord pu mettre en évidence la nécessité
d’activer divers paramètres, comme par exemple la position de repos ou le mécanisme
d’exploration locale. L’étude minutieuse du fonctionnement du modèle nous a également
permis d’exhiber des valeurs performantes pour le quota de tentatives d’atteintes, pour
un seuil de tolérance d’atteinte, ou encore pour le nombre d’expériences nécessaire pour
calculer la meilleure action. L’examen des conditions de découpes étudiées confère un
avantage à la métrique que nous avons proposée, qui se base sur le nombre d’expé-
riences minimum dans une région et sur une valeur de l’intérêt dans les sous-régions qui
vont être créées. La métrique de compétence contextuelle introduite montre elle aussi
que l’adaptation développementale de la sévérité sert positivement l’apprentissage de
l’agent. Par ailleurs, l’étude des formes alternatives de structuration a révélé, modulo la
désactivation du mécanisme d’exploration locale, la prévalence de la forme de l’espace
d’exploration. En effet, ces résultats ont mis en avant le fait que la non-structuration de
l’espace d’origine était la stratégie la moins efficace ; que le partitionnement en grappes
dans l’espace déformé était légèrement meilleur ; qu’après venaient les stratégies de
structuration dimensionnelle et par partitionnement en grappes dans l’espace d’origine ;
puis qu’enfin, les deux meilleures stratégies étaient la non-structuration ainsi que la
structuration dimensionnelle dans l’espace déformé.
Les autres propositions théoriques introduites dans ce manuscrit, malgré leur plausibilité,
n’ont malheureusement pas pu être validées expérimentalement. De ce constat,
nous avons élaboré une perspective évolutionnaire, afin d’essayer de trouver, par optimisation,
de meilleurs vecteurs de paramétrage, de meilleures métriques (intérêt et
compétence), et de meilleures déformations de l’espace. Nous avons été jusqu’à étudier
l’impact de la morphologie du bras robotique (longueur de chaque segment) sur les
performances d’apprentissage. Mais pour autant, les processus évolutionnaires implé-
mentés et expérimentés ne montrent au final que peu d’améliorations.
Les conclusions que l’on peut tirer de nos recherches sont multiples. Premièrement,
nous avons réussi à exhiber, par l’étude exhaustive du modèle motivationnel, les mécanismes
essentiels à un bon apprentissage. Nous avons également pu optimiser des valeurs
de paramétrage, manuellement puis automatiquement. Nous avons en outre proposé de
nouvelles et meilleures métriques sur lesquelles le processus de structuration vient s’ap-167
puyer. De manière plus générale, nos travaux réaffirment l’importance de la motivation,
mais sous un jour nouveau. En effet, de la même manière que de précédentes recherches
avaient montré que l’exploration de l’espace sensoriel plutôt que de l’espace moteur
constituait une avancée et conférait un avantage en terme d’apprentissage, nous avons
montré que la façon de représenter l’espace d’exploration constitue un point essentiel et
permet d’infléchir la courbe d’apprentissage. La technique consistant à utiliser une représentation
alternative de l’espace vient englober et restreindre l’influence du processus
de structuration.
Perspectives pour de futurs travaux
Les travaux présentés dans ce manuscrit présentent des limites que nous avons déjà
pour partie évoquées ci-avant. Nous nous attachons dans cette section à définir les
directions qu’il nous semble pertinent d’approfondir dans les recherches à venir.
Mécanisme attentionnel
Une première amélioration serait de doter la machine d’une forme de concentration,
en lui donnant la possibilité d’adapter la finesse du flux d’informations sensorielles
qu’elle est à même de traiter. Cela pourrait permettre de découper les effets d’une action
motrice et ainsi d’analyser de manière plus précise la trajectoire menant d’un point à un
autre dans l’espace sensoriel. Un tel mécanisme est complètement intégrable à la boucle
motivationnelle promue dans cette thèse en le reliant à la notion de progrès. En effet,
plus une région de l’espace d’exploration est maîtrisée, moins la fréquence d’échantillonnage
devient nécessaire. Au contraire, tant qu’un phénomène n’est pas compris, qu’un
mouvement n’est pas acquis, il peut devenir crucial d’accéder à plus d’informations.
Vers un modèle plus énactif
Il est important de noter que le développement ne peut uniquement se résumer à la
poursuite tout au long de la vie de l’atteinte de buts successifs et indépendants. Même
si le processus même de l’expérience doit permettre d’acquérir de manière continue
de nouvelles compétences, on peut imaginer que d’autres contraintes puissent présider
au choix des buts. Nous proposons donc que le processus de boucle de vie de l’agent
puisse permettre l’avènement d’un comportement stable émergeant directement de son
couplage à l’environnement, et non plus uniquement guidé par la motivation. Nous
distinguons deux points quant à la réalisation à long terme d’un modèle plus énactif de
ce type : l’extension de la notion de but permettant un apprentissage plus complexe, et
la cristallisation de buts sous formes de routines perceptuelles.168 CHAPITRE 7. CONCLUSIONS ET PERSPECTIVES
En effet, jusqu’ici, le processus motivationnel présenté postule une unique progression
dans la génération de buts successifs à atteindre sans lien aucun entre eux. La seule
liaison entre ces buts réside dans une unique vision globale guidée par une métrique de
motivation. Mais finalement, l’apprentissage demeure borné. En effet, une fois l’espace
des buts entièrement exploré et l’ensemble des coordinations complètement apprises,
la question de la manière d’apprendre de nouvelles compétences plus complexes vient
inévitablement se poser. Une partie de la réponse réside dans une extension de la notion
de but. Cela pourrait se matérialiser en considérant par exemple non plus un point
unique à atteindre, mais plutôt une trajectoire, c’est-à-dire une suite de points dans
l’espace exploré. De même, il pourrait revenir à l’agent de réguler la complexité de ces
trajectoires, en fixant lui-même leur longueur. La notion de compétence étant tout à
fait compatible avec cette vision, on peut imaginer que l’agent va très vite comprendre
qu’il lui est très difficile d’obtenir une bonne compétence pour une trajectoire trop
longue, et il adaptera ses objectifs d’apprentissage à son expérience.
Les routines perceptuelles représentent le second point permettant d’avancer vers
un modèle plus énactif. Ces routines sont des suites de buts qui prennent sens par
leur proximité topologique au sein de l’espace expérimental. Elles se construisent par
cristallisation des expériences vécues. Elles vont peu à peu se substituer au processus
motivationnel de génération de buts, par un mécanisme d’attraction, incitant l’agent
à tenter d’atteindre un ensemble de buts topologiquement et expérimentalement cohé-
rents. Ces routines peuvent ainsi permettre d’énacter des comportements complexes et
plus coordonnés que ne peut le proposer le système de motivation seul.
Nouvelles dimensions
Une autre possibilité revient à pousser plus loin le questionnement autour de la complexification,
de la montée en abstraction des connaissances et/ou compétences. Dans
la vision de l’espace d’exploration défini par des dimensions directement issues des capteurs,
nous pensons qu’il serait judicieux de rapprocher le phénomène de l’abstraction à
la problématique de la création de nouvelles dimensions, qui viendraient se greffer aux
dimensions sensorimotrices déjà présentes de manière innée. Mais comme nous avons vu
que l’exploration d’un espace déterminé par des dimensions indépendantes était problé-
matique, nous pourrions plutôt concevoir le phénomène d’abstraction comme l’ajout de
nouveaux espaces d’exploration. Cette solution constitue en partie ce que l’on propose
avec le paradigme poly-représentationnel, mais à un niveau moins complexe. Pour monter
en complexité, il faudrait considérer que les dimensions construites sont issues de la
composition de dimensions d’un niveau inférieur, à commencer par les dimensions innées
au niveau initial. Cela reflèterait également une construction abstraite issue des premiers
niveaux sensorimoteurs telle que l’envisageaient les théories constructivistes ancrées au169
niveau sensorimoteur. Ce sont des pistes que nous avons commencé à explorer dans une
publication [Hervouet, 2014].
Motivations extrinsèques
Nous avons étudié dans cette thèse l’impact des motivations intrinsèques sur la
trajectoire développementale d’une encorporation particulière. Nous nous sommes
concentrés sur ce type de motivations pour ce qu’elles permettent de réguler les choix
d’apprentissage de l’intérieur même du système. Néanmoins, nous pourrions envisager
deux aspects pour intégrer des motivations extrinsèques dans ce même modèle, et ainsi
prendre en considération l’environnement de manière plus complète, notamment une
forme rudimentaire de l’entourage social.
Le premier aspect consisterait à identifier, au fur et à mesure d’un processus évolutif,
les points communs dans les structurations d’agents lancés de manière concurrente. Par
points communs, nous entendons un ensemble minimal de découpes qu’une majorité
d’agents, pour une même encorporation, a pu décider d’effectuer. Cet ensemble pourrait
alors être répercuté de manière arbitraire sur les futurs agents, et pourrait être vu
comme la transmission d’un savoir.
Le second aspect est une déclinaison du premier. Il s’agirait de modifier la métrique
d’intérêt ρ afin d’y intégrer explicitement une valeur issue d’un jugement extérieur. Ainsi
cette nouvelle métrique prendrait en compte tout à la fois le progrès en apprentissage,
la diversification, ainsi qu’une valeur provenant d’un oracle externe. Cette dernière valeur,
qu’il faut réfléchir à pondérer par rapport aux deux autres, viendrait moduler,
positivement ou négativement, l’intérêt de la région indiquée.
Application à la fouille sur le web
Une dernière perspective pour les travaux menés au cours de cette thèse serait une
application à un système différent. La fouille de données sur des corpus dynamiques
temps-réel, comme peuvent en fournir le web, représente un domaine d’application prometteur
pour notre cadre formel et la plateforme que nous avons développée. Nous
envisageons assez aisément un agent, déchargé de toute contrainte d’examen comme ici,
lancé à la poursuite d’informations, explorant un espace d’informations, s’intéressant à
celles qu’il réussira à préciser ou confirmer en trouvant d’autres sources la relayant. On
peut également imaginer une influence externe par des internautes venant alimenter, à la
manière des motivations extrinsèques explicitées précédemment, la curiosité du système
avec de nouvelles informations, qui sinon seront glanées au fil du web.Bibliographie
Minoru Asada, Koh Hosoda, Yasuo Kuniyoshi, Hiroshi Ishiguro, Toshio Inui, Yuichiro
Yoshikawa, Masaki Ogino et Chisato Yoshida : Cognitive developmental robotics : a
survey. IEEE Transactions on Autonomous Mental Development, 1:12–34, 2009. Cité
page 29.
William R. Ashby : Adaptiveness and equilibrium. Journal of Mental Science, 86:478–
483, 1940. Cité page 15.
Nihat Ay, Nils Bertschinger, Ralf Der, Frank Güttler et Eckehard Olbrich : Predictive
information and explorative behavior of autonomous robots. The European Physical
Journal B - Condensed Matter and Complex Systems, 63(3):329–339, 2008. Cité page
47.
Renée Baillargeon : The acquisition of physical knowledge in infancy : A summary in
eight lessons. Blackwell handbook of childhood cognitive development, 1:46–83, 2002.
Cité page 24.
Gianluca Baldassarre et Marco Mirolli, éditeurs. Intrinsically Motivated Learning in
Natural and Artificial Systems. Springer Berlin Heidelberg, 2013. ISBN 978-3-642-
32374-4. Cité pages 40 et 48.
Albert Bandura : Auto-efficacité : le sentiment d’efficacité personnelle. Bruxelles, De
Boeck, 2003. Cité page 36.
Adrien Baranes : Motivations Intrinsèques et Contraintes Maturationnelles pour l’Apprentissage
Sensorimoteur. Thèse de doctorat, Inria Bordeaux Sud-Ouest – Université
Bordeaux 1, 2011. Cité pages 8, 53 et 54.
Adrien Baranes et Pierre-Yves Oudeyer : R-iac : Robust intrinsically motivated exploration
and active learning. IEEE Transaction on Autonomous Mental Development
(TAMD), 1(2), 2009. Cité pages 42 et 43.
Adrien Baranes et Pierre-Yves Oudeyer : Intrinsically-motivated goal exploration for
active motor learning in robots : A case study. In Proceedings of the IEEE/RSJ
171172 BIBLIOGRAPHIE
International Conference on Intelligent Robots and Systems (IROS 2010), 2010a. Cité
pages 45, 114 et 131.
Adrien Baranes et Pierre-Yves Oudeyer : Maturationally-constrained competence-based
intrinsically motivated learning. In Proceedings of International Conference on Development
and Learning (ICDL 2010), 2010b. Cité pages 8, 54 et 113.
Adrien Baranes et Pierre-Yves Oudeyer : Active learning of inverse models with intrinsically
motivated goal exploration in robots. Robotics and Autonomous Systems, 61
(1):49–73, 2013. Cité pages 8, 45, 50, 55, 114 et 131.
Andrew G. Barto, Satinder Singh et Nuttapong Chentanez : Intrinsically motivated learning
of hierarchical collections of skills. In Proceedings of 4th International Conference
on Developmental Learning (ICDL 2004). MIT Press, Cambridge, MA, 2004. Cité
pages 41 et 42.
Daniel E. Berlyne : Curiosity and exploration. Science, 153:25–33, 1966. Cité page 35.
Nikolai Bernstein : The co-ordination and regulation of movements. Pergamon Press,
Oxford, England, 1967. Cité page 20.
Neil Berthier et Rachel Keen : Development of reaching in infancy. Experimental Brain
Research, 169:507–518, 2006. Cité page 55.
Mark H. Bickhard : Motivation and emotion : An interactive process model. The caldron
of consciousness : motivation, affect, and self-organization : an an thology, page 161,
2000. Cité page 44.
Douglas S. Blank, Deepak Kumar, Lisa A. Meeden et James B. Marshall : Bringing
up robot : Fundamental mechanisms for creating a self-motivated, self-organizing
architecture. Cybernetics and Systems, 36, 2005. Cité pages 28, 43 et 50.
Jacques Bolo : Philosophie contre intelligence artificielle. Lingua Franca, 1996. Cité
page 18.
Valentino Braitenberg : Vehicles : Experiments in Synthetic Psychology. Bradford
books : Psychology. MIT Press, 1986. ISBN 9780262521123. Cité page 15.
Rodney A. Brooks : A robust layered control system for a mobile robot. IEEE Journal
of Robotics and Automation, 2(1):14–23, 1986. Cité pages 19 et 44.
Rodney A. Brooks : Elephants don’t play chess. Robotics and Autonomous Systems,
6:3–15, 1990. Cité pages 18, 19 et 29.
Rodney A. Brooks : Intelligence without reason. Computers and Thought - IJCAI’91,
pages 569–595, Jun 1991a. Cité page 18.BIBLIOGRAPHIE 173
Rodney A. Brooks : Intelligence without representation. Artificial Intelligence, pages
139–159, Nov 1991b. Cité page 18.
Rodney A. Brooks : Flesh and Machines. Vintage, 2002. ISBN 037572527X. Cité pages
18 et 28.
Paco Calvo et Fred Keijzer : Cognition in plants. Plant-environment interactions :
Signaling & communication in plants, pages 247–266, 2009. Cité page 12.
Angelo Cangelosi : Language emergence and grounding in sensorimotor agents and
robots. In First International Workshop on Emergence and Evolution of Linguistic
Communication, May 31- Jun 1 2004, Kanazawa Japan, pages 1–6, Aug 2004. Cité
page 17.
Angelo Cangelosi et Domenico Parisi : Simulating the evolution of language. Springer
Verlag, 2002. Cité page 17.
Walter B. Cannon : The Wisdom of the Body. Norton, New York, 1932. Cité page 34.
Andy Clark : Being There : Putting Brain, Body, and World Together Again. MIT
Press, Cambridge, MA, 1997. Cité page 16.
Ignasi Cos-Aguilera, Lola Cañamero et Gillian M. Hayes : Learning affordances of
consummatory behaviors : Motivation-driven adaptive perception. Adaptive Behaviour,
18(3-4):285–314, 2010. Cité pages 45 et 50.
John J. Craig : Introduction to robotics - mechanics and control (2. ed.). AddisonWesley,
1989. ISBN 978-0-201-09528-9. Cité page 114.
Mihaly Csikszentmihalyi, Sami Abuhamdeh et Jeanne Nakamura : Flow. In Andrew J.
Elliot et Carol S. Dweck, éditeurs : Handbook of competence and motivation, volume
xvi, pages 598–698. New York, NY, US : Guilford Publications, 2005. Cité page 35.
Charles Darwin : On the origin of species. John Murray, London, first edition édition,
1859. Cité page 30.
Edward L. Deci : Effects of externally mediated rewards on intrinsic motivation. Journal
of Personality and Social Psychology, 18:105–115, 1971. Cité page 37.
Edward L. Deci et Richard M. Ryan : Intrinsic Motivation and Self-Determination in
Human Behavior (Perspectives in Social Psychology). Perspectives in social psychology.
Plenum Press, 1985. Cité page 37.
Edward L. Deci et Richard M. Ryan, éditeurs. Handbook of Self-Determination Research.
The University of Rochester Press, USA, 2002. Cité page 37.174 BIBLIOGRAPHIE
Daniel C. Dennett : Why not the whole iguana ? Brain and Behavioural Sciences,
1:103–104, 1978. Cité page 18.
Ralf Der et René Liebscher : True autonomy from self-organized adaptivity. In Proceedings
of Workshop Biologically Inspired Robotics, Bristol, 2002. Cité pages 46 et 50.
Ines Di Loreto et Fabien Hervouet : Identity : the contribution of contemporary philosophy
to agent design. Rapport technique, LIRMM – University of Montpellier, janvier
2012a. Cité page 13.
Ines Di Loreto et Fabien Hervouet : The role of identity in agent design. In Proceedings
of the 11th International Conference on Autonomous Agents and Multiagent Systems
(AAMAS’12), pages 1449–1450, 2012b. Cité page 13.
Edwin Diday : Une nouvelle méthode en classification automatique et reconnaissance
des formes la méthode des nuées dynamiques. Revue de Statistique Appliquée, 19
(2):19–33, 1971. Cité page 84.
Hubert L. Dreyfus : Intelligence artificielle : Mythes et limites. Flammarion, 1984.
ISBN 9782080646408. Cité page 17.
Albert Ducrocq : L’ère des robots. Editions Julliard, 1954. Cité page 15.
Jean-Pierre Dupuy : Aux origines des sciences cognitives. La Découverte poche. La
Découverte, 1999. Cité page 38.
Andrew J. Elliot et Carol S. Dweck : Handbook of Competence and Motivation. Guilford
Press, 2005. ISBN 9781593851231. Cité page 31.
Martin Ester, Hans-Peter Kriegel, Jörg Sander et Xiaowei Xu : A density-based algorithm
for discovering clusters in large spatial databases with noise. In Proc. of 2nd
International Conference on Knowledge Discovery and Data mining, pages 226–231,
1996. Cité page 84.
Fabien Fenouillet : Les théories de la motivation. Dunod, 2012. Cité page 33.
Jacques Ferber : Les systèmes multi-agents, vers une intelligence collective. Inter Editions,
Paris, 1995. Cité page 13.
Leon Festinger : A Theory Of Cognitive Dissonance. Stanford University Press, Stanford,
1957. Cité page 35.
Dario Floreano et Claudio Mattiussi : Bio-Inspired Artificial Intelligence : Theories,
Methods, and Technologies. MIT Press, 2008. Cité page 14.BIBLIOGRAPHIE 175
Jean-Gabriel Ganascia : L’intelligence artificielle. Editions Le Cavalier Bleu, 2007.
ISBN 978-2-84670-165-5. Cité page 18.
Jean-Gabriel Ganascia : Epistemology of ai revisited in the light of the philosophy of
information. Knowledge, Technology & Policy, 23(1-2):57–73, 2010. ISSN 0897-1986.
Cité pages 18 et 37.
Olivier Georgeon, James Marshall et Riccardo Manzotti : Eca : An enactivist cognitive
architecture based on sensorimotor modeling. Biologically Inspired Cognitive
Architectures, 6:46–57, septembre 2013. Cité pages 47 et 50.
Olivier L. Georgeon, James B. Marshall et Simon Gay : Interactional motivation in
artificial systems : Between extrinsic and intrinsic motivation. Proceedings of International
Conference on Development and Learning (ICDL-Epirob), San Diego, CA,
2012. Cité page 47.
James J. Gibson : The Ecological Approach to Visual Perception. Houghton Mifflin,
Boston, 1979. Cité pages 45 et 47.
Agnès Guillot et Jean-Arcady Meyer : La bionique : Quand la science imite la nature.
Sciences de l’ingénieur. Dunod, 2008. ISBN 9782100529858. Cité pages 14, 18 et 31.
Harry F. Harlow, Margaret K. Harlow et Donald R. Meyer : Learning motivated by a
manipulation drive. Journal of Experimental Psychology, 40:228–234, 1950. Cité page
36.
Stevan Harnad : The symbol grounding problem. Physica D : Nonlinear Phenomena,
42:335–346, 1990. Cité page 17.
Stephen Hart et Roderic Grupen : Learning generalizable control programs. Autonomous
Mental Development, IEEE Transactions on, 3(3):216–231, 2011. Cité page 45.
Stephen Hart, Shiraj Sen et Rod Grupen : Intrinsically motivated hierarchical manipulation.
In Robotics and Automation, 2008. ICRA 2008. IEEE International Conference
on, pages 3814–3819. IEEE, 2008. Cité page 45.
Donald O. Hebb : The organization of behavior : A neuropsychological theory. Wiley,
New York, 1949. ISBN 0-8058-4300-0. Cité page 15.
Donald O. Hebb : Drives and the c.n.s. (conceptual nervous system). Psychological
Review, 62(4):243–254, 1955. Cité page 35.
Fabien Hervouet : Autour de la preuve en intelligence artificielle. In La preuve et ses
moyens – Actes des journées interdisciplinaires de Rochebrune (sous presse), pages
1–13, 2013. Cité page 108.176 BIBLIOGRAPHIE
Fabien Hervouet : The looping problem. Constructivist Foundations, 9(2):216–217,
2014. Cité page 169.
Fabien Hervouet et Eric Bourreau : Improvement proposals to intrinsically motivational
robotics. In Proceedings of the second joint conference (ICDL-Epirob’12), 2012. Cité
page 77.
Fabien Hervouet et Eric Bourreau : Fimo : Framework for intrinsic motivations. In
Advances in Artificial Life, ECAL 2013 : Proceedings of the Twelfth European Conference
on the Synthesis and Simulation of Living Systems, Taormina – Sicily, Italy
September 2-6, 2013., pages 997–1004, 2013. Cité page 97.
Olivier Houdé : Rationalité, développement et inhibition : un nouveau cadre d’analyse.
Psychologie et sciences de la pensée. Presses Universitaires de France, 1995. ISBN
9782130472919. Cité page 24.
Olivier Houdé et Gaëlle Leroux : Psychologie du développement cognitif. Presses Universitaires
de France, seconde édition édition, 2013. Cité page 21.
Clark L. Hull : Principles of behavior : an introduction to behavior theory. The Century
Psychology Series. Appleton-Century-Crofts, 1943. Cité page 34.
John D. Hunter : Matplotlib : A 2d graphics environment. Computing In Science &
Engineering, 9(3):90–95, May-Jun 2007. Cité page 101.
Marcus Hutter : Universal algorithmic intelligence : A mathematical top→down approach.
In B. Goertzel et C. Pennachin, éditeurs : Artificial General Intelligence,
Cognitive Technologies, pages 227–290. Springer, Berlin, 2007. Cité page 41.
Eric Jones, Travis Oliphant, Pearu Peterson et al. : Scipy : Open source scientific tools
for python, 2001. Cité page 101.
Hervé Kempf : Le cerveau n’est pas un ordinateur : on ne peut comprendre la cognition
si l’on s’abstrait de son incarnation. entretien avec francisco j. varela. La Recherche,
(308):109–112, Avril 1998. Cité page 12.
Alexander S. Klyubin, Daniel Polani et Chrystopher L. Nehaniv : All else being equal
be empowered. In Mathieu S. Capcarrère, Alex A. Freitas, Peter J. Bentley, Colin G.
Johnson et Jon Timmis, éditeurs : 8th European Conference on Artificial Life (ECAL
2005), volume 3630 de Lecture Notes in Computer Science, pages 744–753, Berlin,
Heidelberg, 2005a. Springer Berlin / Heidelberg. ISBN 978-3-540-28848-0. Cité pages
47 et 50.BIBLIOGRAPHIE 177
Alexander S. Klyubin, Daniel Polani et Chrystopher L. Nehaniv : Empowerment : a
universal agent-centric measure of control. In Evolutionary Computation, 2005. The
2005 IEEE Congress on, volume 1, pages 128–135, 2005b. Cité page 47.
Alexander S. Klyubin, Daniel Polani et Chrystopher L. Nehaniv : Keep your options
open : An information-based driving principle for sensorimotor systems. PLoS ONE,
3(12):e4018, 12 2008. Cité page 47.
Levente Kocsis et Csaba Szepesvári : Bandit based monte-carlo planning. In In :
ECML-06. Number 4212 in LNCS, pages 282–293. Springer, 2006. Cité page 77.
Teuvo Kohonen : Self-Organizing Maps. Springer, Berlin, 2001. ISBN 3-540-67921-9.
Cité page 85.
Andrea Kulakov et Georgi Stojanov : Structures, inner values, hierarchies and stages :
essentials for developmental robot architectures. In Proceedings of the 2nd International
Workshop on Epigenetic Robotics, volume 94, pages 63–69. Lund University
Cognitive Studies, 2002. Cité page 44.
Jean-Jacques Kupiec : L’Origine des individus. Le Temps des Sciences, Paris, Fayard.,
2008. Cité page 30.
Matthieu Lapeyre, Pierre Rouanet et Pierre-Yves Oudeyer : Poppy humanoid platform :
Experimental evaluation of the role of a bio-inspired thigh shape. In Humanoids 2013,
Atlanta, United States, octobre 2013. URL http://hal.inria.fr/hal-00861110. Cité page
31.
Rachel Lee, Ryan Walker, Lisa Meeden et James Marshall : Category-based intrinsic
motivation. In Proceedings of the 9th International Conference on Epigenetic Robotics,
volume 146, pages 81–88, 2009. Cité pages 43 et 50.
Jessica Lindblom et Tom Ziemke : Social situatedness : Vygotsky and beyond. Proceedings
of the 2nd International Workshop on Epigenetic Robotics : Modeling Cognitive
Development in Robotic Systems. Edinburgh, Scotland., pages 71–78, 2002. Cité page
25.
Robert K. Lindsay, Bruce G. Buchanan, Edward A. Feigenbaum et Joshua Lederberg :
Applications of Artificial Intelligence for Organic Chemistry - The DENDRAL Project.
McGraw-Hill, New York, 1980. Cité page 13.
Stuart Lloyd : Least squares quantization in pcm. IEEE Transactions on Information
Theory, 28(2):129–137, 1982. Cité page 84.178 BIBLIOGRAPHIE
Nicolas Lopes, Thomas Hélie et René Caussé : Control of an artificifial mouth playing
a trombone and analysis of sound descriptors on experimental data. In SMAC 2013,
2013. Cité page 115.
Max Lungarella, Giorgio Metta, Rolf Pfeifer et Giulio Sandini : Developmental robotics :
a survey. Connection Science, 15:151–190, 2003. Cité page 29.
James B. MacQueen : Some methods for classification and analysis of multivariate
observations. In L. M. Le Cam et J. Neyman, éditeurs : Proc. of the fifth Berkeley
Symposium on Mathematical Statistics and Probability, volume 1, pages 281–297.
University of California Press, 1967. Cité page 84.
Humberto Maturana et Jorge Mpodozis : De l’origine des espèces par voie de la dérive
naturelle. Presses universitaires de Lyon, 1999. ISBN 9782729706432. Cité page 30.
Humberto Maturana et Francisco Varela : Autopoiesis and Cognition : The Realization
of the Living. Reidel, 1980. Cité page 12.
Humberto Maturana et Francisco Varela : L’arbre de la connaissance. Vie artificielle.
Addison-Wesley France, 1994. ISBN 9782879080727. Cité page 27.
John McCarthy, Marvin Minsky, Nathan Rochester et Claude Shannon : A proposal for
the dartmouth summer research project on artificial intelligence. Rapport technique,
Dartmouth College, 1955. Cité page 38.
Warren McCulloch et Walter Pitts : A logical calculus of the ideas immanent in nervous
activity. Bulletin of Mathematical Biophysic, 5:115–133, 1943. Cité page 15.
Tad McGeer : Passive dynamic walking. The International Journal of Robotics Research,
9(2):62–82, 1990. Cité page 21.
Jean-Arcady Meyer : The animat approach : Simulation of adaptive behavior in animals
and robots. Proc. NPI, pages 1–21, 1998. Cité pages 12, 18 et 19.
Benjamin F. Miessner : The wirelessly directed torpedo. Scientific American, 107, 1912.
Cité page 14.
Marco Mirolli et Domenico Parisi : Towards a vygotskyan cognitive robotics : The role
of language as a cognitive tool. New Ideas in Psychology, 29:298–311, 2011. Cité page
25.
Hans Moravec : Mind Children : The Future of Robot and Human Intelligence. Harvard
University Press, 1988. ISBN 9780674576186. Cité page 28.BIBLIOGRAPHIE 179
Clément Moulin-Frier, Sao Mai Nguyen et Pierre-Yves Oudeyer : Self-organization of
early vocal development in infants and machines : The role of intrinsic motivation.
Frontiers in Psychology, 4(1006), 2013. Cité page 113.
Clément Moulin-Frier et Pierre-Yves Oudeyer : Exploration strategies in developmental
robotics : a unified probabilistic framework. In Proceedings of IEEE International
Conference on Development and Learning and Epigenetic Robotics, IEEE ICDLEpirob,
Osaka, Japan., 2013. Cité page 113.
Allen Newell et Herbert A. Simon : Gps : A program that simulates human thought.
In Edward A. Feigenbaum et Jerome A. Feldman, éditeurs : Computers and Thought.
McGraw-Hill, New York, 1963. Cité pages 12 et 13.
Sao Mai Nguyen et Pierre-Yves Oudeyer : Socially guided intrinsic motivation for robot
learning of motor skills. Autonomous Robots, pages 1–22, 2013. Cité page 25.
Travis E. Oliphant : Python for scientific computing. Computing in Science and Engineering,
9(3):10–20, 2007. ISSN 1521-9615. Cité page 101.
Gérard Olivier : La Cognition gestuelle. Ou de l’écho à l’égo. Presses Universitaires de
Grenoble, 2012. Cité page 27.
Pierre-Yves Oudeyer et Frédéric Kaplan : Intelligent adaptive curiosity : a source of
self-development. In Luc Berthouze, Hideki Kozima, Christopher G. Prince, Giulio
Sandini, Georgi Stojanov, G. Metta et C. Balkenius, éditeurs : Proceedings of the 4th
International Workshop on Epigenetic Robotics, volume 117, pages 127–130. Lund
University Cognitive Studies, 2004. Cité pages 41, 43, 50 et 54.
Pierre-Yves Oudeyer et Frédéric Kaplan : Discovering communication. Connection
Science, 18(2):189–206, Jun 2006. Cité page 16.
Pierre-Yves Oudeyer et Frédéric Kaplan : What is intrinsic motivation ? a typology
of computational approaches. Frontiers in Neurorobotics, 1(1), 2007. Cité pages 40
et 48.
Pierre-Yves Oudeyer, Olivier Ly et Pierre Rouanet : Exploring robust, intuitive and
emergent physical human-robot interaction with the humanoid acroban. In IEEERAS
International Conference on Humanoid Robots, Bled, Slovenia, 2011. Cité page
21.
Karl Pearson : On lines and planes of closest fit to systems of points in space. Philosophical
Magazine, 2:559–572, 1901. Cité page 91.180 BIBLIOGRAPHIE
F. Pedregosa, G. Varoquaux, A. Gramfort, V. Michel, B. Thirion, O. Grisel, M. Blondel,
P. Prettenhofer, R. Weiss, V. Dubourg, J. Vanderplas, A. Passos, D. Cournapeau,
M. Brucher, M. Perrot et E. Duchesnay : Scikit-learn : Machine learning in Python.
Journal of Machine Learning Research, 12:2825–2830, 2011. Cité page 101.
Christian S. Perone : Pyevolve : a python open-source framework for genetic algorithms.
SIGEVOlution, 4:12–20, 2009. Cité page 101.
Rolf Pfeifer et Josh C. Bongard : How the Body Shapes the Way We Think : A New
View of Intelligence. MIT Press, Cambridge, MA, 2006. Cité pages 15, 31 et 163.
Rolf Pfeifer et Fumiya Iida : Morphological computation : Connecting body, brain and
environment. Japanese Scientific Monthly, 58(2):48–54, 2005. Cité page 31.
Rolf Pfeifer, Fumiya Iida et Josh Bongard : New robotics : Design principles for intelligent
systems. Artif. Life, 11(1-2):99–120, janvier 2005. ISSN 1064-5462. Cité page
31.
Rolf Pfeifer et Alexandre Pitti : La révolution de l’intelligence du corps. Manuella
Editions, 2012. Cité page 15.
Rolf Pfeifer et Christian Scheier : Understanding intelligence. MIT Press, 1999. ISBN
978-0-262-16181-7. Cité pages 15 et 16.
Jean Piaget : La Naissance de l’intelligence chez l’enfant. Actualités pédagogiques et
psychologiques. Delachaux et Niestlé, 1936. Cité page 22.
Jean Piaget : La construction du réel chez l’enfant. Delauchaux et Niestlé, Neuchâtel,
Switzerland, 1937. Cité page 23.
Jean Piaget : Biologie et connaissance. Delachaux et Niestlé, 1967. Cité page 22.
Bernd Porr et Paolo Di Prodi : Subsystem formation driven by double contingency.
Constructivist Foundations, 9(2):199–211, 2014. Cité page 48.
Amélie Rochet-Capellan : De la substance à la forme : rôle des contraintes motrices
orofaciales et brachiomanuelles de la parole dans l’émergence du langage. Thèse de
doctorat, INP Grenoble, 2007. Cité page 25.
Matthias Rolf, Jochen J. Steil et Michael Gienger : Goal-babbling permits direct learning
of inverse kinematics. IEEE Trans. Autonomous Mental Development, 2(3), 2010. Cité
pages 8, 55 et 113.
Jean-Jacques Rousseau : Émile, ou De l’éducation. 1762. Cité page 31.BIBLIOGRAPHIE 181
Christoph Salge, Cornelius Glackin et Daniel Polani : Empowerment – an introduction.
In M. Prokopenko, éditeur : Guided Self-Organization : Inception. Springer, 2014.
Cité page 47.
Vieri Giuliano Santucci, Gianluca Baldassarre et Marco Mirolli : Which is the best
intrinsic motivation signal for learning multiple skills ? Frontiers in Neurorobotics, 7
(22), 2013. ISSN 1662-5218. Cité pages 98, 114 et 131.
Juergen Schmidhuber : Curious model-building control systems. In Proceedings of
the International Joint Conference on Neural Networks, Singapore, volume 2, pages
1458–1463. IEEE press, 1991a. Cité page 40.
Juergen Schmidhuber : A possibility for implementing curiosity and boredom in modelbuilding
neural controllers. In Jean-Arcady Meyer et Stewart W. Wilson, éditeurs :
Proceedings of the International Conference on Simulation of Adaptive Behavior,
pages 222–227. MIT Press/Bradford Books, 1991b. Cité page 40.
Juergen Schmidhuber : Driven by compression progress : A simple principle explains
essential aspects of subjective beauty, novelty, surprise, interestingness, attention,
curiosity, creativity, art, science, music, jokes. Computing Research Repository, pages
48–76, 2008. Cité pages 40 et 41.
Juergen Schmidhuber : Formal theory of creativity, fun, and intrinsic motivation
(1990–2010). IEEE Transactions on Autonomous Mental Development, 2:230–247,
2010. Cité pages 40, 41, 42, 48 et 50.
Michael Scriven : Evaluation Thesaurus. SAGE Publications, 1991. ISBN
9780803943643. Cité page 108.
John R. Searle : Minds, brains, and programs. Behavioral and Brain Sciences, 3:417–424,
1980. Cité page 16.
John R. Searle : Langage, conscience, rationalité : une philosophie naturelle – entretien
avec john r. searle. Le Débat, 2(109):177–192, 2000. Cité page 17.
Robert S. Siegler : Emerging Minds : The Process of Change in Children’s Thinking.
Oxford University Press, USA, 1996. ISBN 9780195352085. Cité page 24.
Herbert A. Simon : The Sciences of the Artificial. MIT Press, Cambridge, MA, USA,
third édition, 1996. Cité pages 15 et 38.
Satinder Singh, Andrew G. Barto et Nuttapong Chentanez : Intrinsically motivated
reinforcement learning. Neural Information Processing Systems, 2004. Cité pages 41
et 50.182 BIBLIOGRAPHIE
Kenny Smith, Henry Brighton et Simon Kirby : Complex systems in language evolution :
the cultural emergence of compositional structure. Advances in Complex Systems, 6
(4):537–558, Jan 2003. Cité page 21.
Luc Steels : The autotelic principle. In Fumiya Iida, Rolf Pfeifer, Luc Steels et Yasuo
Kuniyoshi, éditeurs : Embodied Artificial Intelligence, pages 231–242. Springer-Verlag
Berlin Heidelberg, 2004. Cité page 47.
Luc Steels : Fifty years of ai : From symbols to embodiment - and back. In 50 years of
artificial intelligence, pages 18–28. Springer Berlin Heidelberg, 2007. Cité page 17.
Luc Steels : The symbol grounding problem has been solved. so what’s next ? In
M. de Vega, éditeur : Symbols and Embodiment : Debates on Meaning and Cognition,
chapitre 12. Oxford University Press, Oxford, 2008. Cité page 17.
Luc Steels et Angus McIntyre : Spatially distributed naming games. Advances in complex
systems, 1(04):301–323, 1999. Cité pages 16 et 17.
Hugo Steinhaus : Sur la division des corp matériels en parties. Bull. Acad. Polon. Sci,
1:801–804, 1956. Cité page 84.
Georgi Stojanov : Petitagé : A case study in developmental robotics. In Proceedings of
the 1st International Workshop on Epigenetic Robotics, volume 85. Lund University
Cognitive Studies, 2001. Cité page 44.
Georgi Stojanov, Stevo Bozinovski et Goran Trajkovski : Interactionist-expectative view
on agency and learning. Mathematics and Computers in Simulation, 44:295–310, 1997.
Cité page 44.
Georgi Stojanov et Andrea Kulakov : Interactivist approach to representation in epigenetic
agents. In Christopher G. Prince, Luc Berthouze, Hideki Kozima, Daniel
Bullock, Georgi Stojanov et Christian Balkenius, éditeurs : Proceedings of the 3rd
International Workshop on Epigenetic Robotics, volume 101, pages 123–130. Lund
University Cognitive Studies, 2003. Cité page 44.
Georgi Stojanov et Andrea Kulakov : On curiosity in intelligent robotic systems. American
Association for Artificial Intelligence, 2006. Cité pages 45 et 50.
Andrew Stout, George D. Konidaris et Andrew G. Barto : Intrinsically motivated reinforcement
learning : A promising framework for developmental robot learning. In In
The AAAI Spring Symposium on Developmental Robotics, 2005. Cité page 41.
Richard S. Sutton et Andrew G. Barto : Reinforcement Learning : An Introduction.
MIT Press, Cambridge, MA, 1998. Cité page 41.BIBLIOGRAPHIE 183
Jean-Claude Tabary : Du cerveau à la pensée (par la rencontre avec l’autre). 2005. Cité
pages 25 et 26.
Mariarosaria Taddeo et Luciano Floridi : Solving the symbol grounding problem : a
critical review of fifteen years of research. Journal of Experimental and Theoretical
Artificial Intelligence, 17:419–445, 2005. Cité page 17.
Esther Thelen, Daniela Corbetta et John. P Spencer : Development of reaching during
the first year : role of movement speed. Journal of Experimental Psychology. Human
Perception and Performance., 22(5):1059–1076, 1996. Cité page 55.
Alan M. Turing : Computing machinery and intelligence. Mind, 59(236):433–460, 1950.
Cité pages 5 et 28.
Francisco Varela : Autonomie et connaissance : Essai sur le vivant. Edition Seuil, 1989.
Cité page 38.
Fransisco Varela, Evan Thompson et Eleanor Rosch : The Embodied Mind : Cognitive
science and human experience. MIT Press, Cambridge, 1991. Cité pages 16, 24 et 26.
Paul Vogt : The emergence of compositional structures in perceptually grounded language
games. Artificial Intelligence, 167(1-2):206–242, Sep 2005. Cité page 17.
Grey W. Walter : A machine that learns. Scientific American, pages 60–63, 1951. Cité
page 15.
Joseph Weizenbaum : Eliza – a computer program for the study of natural language
communication between man and machine. Communications of the ACM, 9(1):36–45,
January 1966. Cité page 13.
Robert W. White : Motivation reconsidered : The concept of competence. Psychological
Review, 66:297–333, 1959. Cité page 36.
Stewart W. Wilson : Knowledge growth in an artificial animal. Proceedings of an
International Conference on Genetic Algorithms and Their Applications, pages 16–
23, 1985. Cité pages 12 et 18.
Stewart W. Wilson : The animat path to ai. From Animals to Animats : Proceedings of
the First International Conference on Simulation of Adaptive Behavior, pages 15–21,
1991. Cité page 12.
Tom Ziemke : Rethinking grounding. In Riegler & Peschl, éditeur : Does Representation
Need Reality ? Proceedings of the International Conference ’New Trends in Cognitive
Science’ (NTCS’97), pages 87–94. Austrian Society for Cognitive Science, 1997. Cité
pages 16 et 17.184 BIBLIOGRAPHIE
Tom Ziemke : The construction of ’reality’ in the robot : Constructivist perspectives on
situated artificial intelligence and adaptive robotics. Foundations of Science, 6:163–
233, 2001. Cité page 16.
Hervé Zwirn : Les systèmes complexes : Mathématiques et biologie. Sciences. Editions
Odile Jacob, 2006. ISBN 9782738118585. Cité page 156.Abstract
In this thesis, we study a motivational model for artificial systems, which aims at
exploring and structuring sensorimotor learning spaces. Our approach relies on some
essential notions, including the body, the development, and the motivation. This particular
kind of artificial curiosity is based on the competence or learning progress, and thus
depends on the physical natural constraints originating from the agent’s embodiment.
We follow the Goal-Babbling Exploration approach which consists in determining a set
of techniques allowing an agent to self-generate goals, i.e. sensory configurations, and
try to reach them using motor actions. Our contributions improve the SAGG-RIAC
motivational model, by proposing alternative ways of structuring the exploration of the
goal space. Some of our contributions have been experimentally validated within the
FIMO framework we developed to this purpose and which is available online.
Keywords: artificial intelligence, developmental robotics, sensorimotor learning, intrinsic
motivation, FIMO
Résumé
Dans cette thèse, nous nous intéressons à l’étude d’un modèle dédié à l’exploration
et à la structuration d’espaces d’apprentissage sensorimoteur pour des systèmes arti-
ficiels. Nous appuyons notre démarche sur les notions de corps et de développement
propre, auxquelles se greffe un troisième processus dit motivationnel. Cette forme de curiosité
artificielle se base sur le progrès en compétence et repose ainsi sur les contraintes
physiques naturelles directement issues de l’encorporation de l’agent. L’objectif de la
motivation est de réguler un développement à long terme, dédié à l’apprentissage de
nouvelles compétences non prévues par le concepteur. Nous inscrivons nos travaux dans
la continuité de l’approche du babillage sensorimoteur dans l’espace des buts, qui consiste
à déterminer un ensemble de techniques permettant à un agent de générer, selon une mé-
trique d’intérêt, une configuration sensorielle qu’il va essayer d’atteindre par des actions
motrices. Nos contributions viennent améliorer et complexifier le modèle motivationnel
SAGG-RIAC, en proposant des alternatives au processus de structuration de l’espace
d’exploration. Certaines de ces propositions théoriques ont été validées expérimentalement
grâce à la plateforme FIMO, que nous avons développée dans cette optique, et qui
est disponible en ligne.
Mots clefs : intelligence artificielle, robotique développementale, apprentissage sensorimoteur,
motivation intrinsèque, FIMO
LIRMM — 161, rue Ada — 34095 Montpellier cedex 5 — France
Etude de repr´esentations parcimonieuses des statistiques ´
d’erreur d’observation pour diff´erentes m´etriques.
Application `a l’assimilation de donn´ees images.
Vincent Chabot
To cite this version:
Vincent Chabot. Etude de repr´esentations parcimonieuses des statistiques d’erreur ´
d’observation pour diff´erentes m´etriques. Application `a l’assimilation de donn´ees images.. Signal
and Image processing. Universit´e de Grenoble, 2014. French.
HAL Id: tel-01073582
https://tel.archives-ouvertes.fr/tel-01073582
Submitted on 10 Oct 2014
HAL is a multi-disciplinary open access
archive for the deposit and dissemination of scientific
research documents, whether they are published
or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.
L’archive ouverte pluridisciplinaire HAL, est
destin´ee au d´epˆot et `a la diffusion de documents
scientifiques de niveau recherche, publi´es ou non,
´emanant des ´etablissements d’enseignement et de
recherche fran¸cais ou ´etrangers, des laboratoires
publics ou priv´es.THÈSE
Pour obtenir le grade de
DOCTEUR DE L’UNIVERSITÉ DE GRENOBLE
Spécialité : Mathématiques Appliquées
Arrêté ministériel : 7 aout 2006
Présentée par
Vincent Chabot
Thèse dirigée par Arthur Vidard
et codirigée par Maëlle Nodet
préparée au sein du Laboratoire Jean Kuntzmann
et de École Doctorale Mathématiques, Sciences et Technologies de
l’Information, Informatique
Étude de représentations parcimonieuses
des statistiques d’erreur
d’observation pour différentes
métriques. Application à l’assimilation
de données images.
Thèse soutenue publiquement le 11 juillet 2014,
devant le jury composé de :
Mme. Valérie Perrier
Professeur à Grenoble INP, Présidente
M. Thibaut Montmerle
Ingénieur des Ponts, des Eaux et des Forêts, Météo–France, Rapporteur
M. Thomas Corpetti
Directeur de recherche CNRS (Rennes), Rapporteur
M. Didier Auroux
Professeur à l’Université de Nice Sophia Antipolis, Examinateur
M. Arthur Vidard
Chargé de recherche INRIA, Directeur de thèse
Mme. Maëlle Nodet
Maître de conférences à l’Université Joseph Fourier, Co-Directrice de thèse
Mme. Claire Lauvernet
Chargée de recherche IRSTEA, (Lyon), Invitée
M. Nicolas Papadakis
Chargé de recherche CNRS (Bordeaux), InvitéiiSommaire
Remerciements
Introduction
Chapitre 1 Introduction à l’assimilation de données 7
1.1 Notations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2 Formulation variationnelle du problème d’assimilation . . . . . . . . . . . . . . . 10
1.3 Préconditonnement du problème . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.4 Influence de la matrice B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.5 Construction de la matrice B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Chapitre 2 Transformée en ondelettes discrète 19
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2 Transformée en ondelettes discrète . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2.1 Analyse multi-résolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2.2 Le rôle des filtres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.2.3 Propriétés des bases d’ondelettes . . . . . . . . . . . . . . . . . . . . . . . 29
2.2.4 Opérations de seuillage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.3 Ondelettes séparables en dimension 2 . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.3.1 Construction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.3.2 Obtention des coefficients . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.3.3 Illustration sur un exemple du stockage de l’information dans un espace
d’ondelettes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.3.4 Autre représentation en dimension 2 . . . . . . . . . . . . . . . . . . . . . 38
Chapitre 3 Utilisation d’images en assimilation de données 41
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.1.1 Atmospheric motion vectors . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.1.2 Estimation du champ de vitesse par mesure du flot optique . . . . . . . . 43
3.1.3 Assimilation directe d’image . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.2 Méthode d’assimilation utilisée dans ce manuscrit . . . . . . . . . . . . . . . . . . 48
3.2.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.2.2 Mesure de la distance entre deux images . . . . . . . . . . . . . . . . . . . 49
iiiiv Sommaire
3.3 Expériences jumelles avec des données parfaites . . . . . . . . . . . . . . . . . . . 56
3.3.1 Contexte expérimental . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.3.2 Diagnostic utilisé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.3.3 Validation des opérateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.3.4 Influence de la longueur de la fenêtre d’assimilation . . . . . . . . . . . . 64
3.3.5 Impact de la régularisation par l’ébauche . . . . . . . . . . . . . . . . . . 67
3.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Chapitre 4 Impact d’un bruit d’observation non corrélé en espace 73
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
4.1.1 Rappel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
4.1.2 Notations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
4.1.3 Matrice de covariance ou matrice de corrélation ? . . . . . . . . . . . . . . 74
4.2 Matrice de covariance dans différents espaces . . . . . . . . . . . . . . . . . . . . 75
4.2.1 Distance entre gradients . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
4.2.2 Dans une base d’ondelettes orthonormées . . . . . . . . . . . . . . . . . . 79
4.2.3 Distance dans une trame de curvelettes . . . . . . . . . . . . . . . . . . . 79
4.2.4 Distance entre les gradients normalisés . . . . . . . . . . . . . . . . . . . . 82
4.3 Expériences effectuées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
4.3.1 Impact du niveau de bruit . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
4.3.2 Intérêt de la perte d’information en présence de biais . . . . . . . . . . . . 88
4.3.3 Impact de la fréquence d’observation . . . . . . . . . . . . . . . . . . . . . 90
Chapitre 5 Impact d’un bruit d’observation corrélé en espace 93
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
5.2 Pixels, gradients et gradient normalisés . . . . . . . . . . . . . . . . . . . . . . . . 97
5.2.1 Approximation dans une base de pixels . . . . . . . . . . . . . . . . . . . 97
5.2.2 Approximation dans l’espace des gradients . . . . . . . . . . . . . . . . . . 97
5.2.3 Approximation pour les gradients normalisés . . . . . . . . . . . . . . . . 99
5.3 Approximation scalaire dans une base d’ondelettes . . . . . . . . . . . . . . . . . 99
5.3.1 Construction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
5.3.2 Pourquoi est-ce une mauvaise approximation ? . . . . . . . . . . . . . . . 100
5.4 Construction formelle de la matrice de covariance dans une base d’ondelettes . . 103
5.4.1 Obtention de la matrice de covariance en mode boîte noire . . . . . . . . 103
5.4.2 Utilisation de la connaissance de la transformée en ondelette . . . . . . . 103
5.4.3 Mais au final, à quoi ça ressemble ? . . . . . . . . . . . . . . . . . . . . . . 110
5.4.4 Propriété facilitant la construction lorsque le bruit est identiquement distribué
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
5.5 Approximation diagonale dans une base d’ondelettes . . . . . . . . . . . . . . . . 113
5.5.1 Impact de la diagonalisation . . . . . . . . . . . . . . . . . . . . . . . . . . 113
5.5.2 Renormalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116v
5.5.3 Propriété intéressante pour la renormalisation (et autres) . . . . . . . . . 117
5.6 Estimation de la matrice dans une trame de curvelettes . . . . . . . . . . . . . . 119
5.6.1 Utilisation de matrice de poids symétrique définie positive . . . . . . . . . 119
5.6.2 Restriction à des matrices diagonales . . . . . . . . . . . . . . . . . . . . . 122
5.7 Estimation de la matrice de covariance dans un espace de Fourier . . . . . . . . . 128
5.8 Expériences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
5.8.1 Influence du niveau de bruit . . . . . . . . . . . . . . . . . . . . . . . . . . 131
5.8.2 Impact de R sur le choix de B . . . . . . . . . . . . . . . . . . . . . . . . . 139
5.8.3 Quelle quantité d’information est contenue dans les statistiques d’erreurs
d’observation ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
5.8.4 Attention danger : statistiques à manipuler avec précaution ! . . . . . . . 143
5.8.5 Anisotropie et choix de la représentation . . . . . . . . . . . . . . . . . . . 147
Chapitre 6 Gestion des occultations dans des bases d’ondelettes 151
6.1 Données parfaites et nuages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
6.1.1 Fonction coût dans l’espace des pixels . . . . . . . . . . . . . . . . . . . . 152
6.1.2 Expériences jumelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
6.1.3 Bilan partiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
6.2 Impact des occultations sur le modèle de corrélations . . . . . . . . . . . . . . . . 156
6.3 Comparaison d’images occultées dans un espace d’ondelettes . . . . . . . . . . . 158
6.3.1 Approximation de la matrice de covariance sans prise en compte des occultations
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
6.3.2 Que se passe-t-il lorsques certains pixels viennent à manquer ? Illustration
dans l’espace des gradients. . . . . . . . . . . . . . . . . . . . . . . . . . . 162
6.3.3 Pourquoi les coefficients de petite échelle sont peu affectés par un bruit
corrélé ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
6.4 Modélisation de la variance en présence d’occultation . . . . . . . . . . . . . . . . 166
6.4.1 Pourcentage d’information disponible . . . . . . . . . . . . . . . . . . . . 166
6.4.2 Calcul du terme d’inflation . . . . . . . . . . . . . . . . . . . . . . . . . . 169
6.4.3 Approximation de la variance de coefficients partiellement occultés . . . . 171
6.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Chapitre 7 Conclusion et perspectives 177
7.1 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
7.2 Perspectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
7.2.1 Vers l’utilisation d’autres espaces multi–échelles . . . . . . . . . . . . . . . 178
7.2.2 Prise en compte des corrélations temporelles . . . . . . . . . . . . . . . . 180
7.2.3 Gestion des occultations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
7.2.4 Approximation par blocs diagonaux . . . . . . . . . . . . . . . . . . . . . 182
7.2.5 Vers des problèmes réalistes . . . . . . . . . . . . . . . . . . . . . . . . . . 183
7.2.6 Autres définitions de la distance entre deux images . . . . . . . . . . . . . 184vi Sommaire
Annexe A Pourquoi la hauteur d’eau n’est-elle pas corrigée ? 187
Bibliographie 191Remerciements
Je souhaite tout d’abord remercier mes directeurs de thèse Arthur Vidard et Maëlle Nodet
pour avoir eu l’occasion d’effectuer cette thèse sous leur direction. Je les remercie en effet pour
leur disponibilité, leur patience et le temps qu’ils ont pu consacrer à l’encadrement de ces travaux.
Les nombreuses discussions que j’ai pu avoir avec eux ont toujours été à la fois agréables et
enrichissantes. Leur adaptabilité et leur rapidité de compréhension d’un discours souvent "trop
direct et trop technique" m’a été d’un grand secours durant ces années. Je tiens aussi à les
remercier d’avoir su introduire une méthodologie dans mon travail. Enfin, je tiens à les remercier
pour les bons moments passés, notamment autour de bières ou de jeux, durant ces quelques
années à Grenoble.
Cette thèse n’aurait sans doute pas été la même sans l’implication de Nicolas Papadakis.
Je tiens à le remercier pour le temps qu’il a pu consacrer à ce projet, son engouement et son
foisonnement d’idées. Je tiens aussi à le remercier pour avoir su plusieurs fois me remotiver.
Les années passées à Grenoble n’auraient pas été aussi bonnes sans un environnement de
travail agréable. Je tiens à remercier l’ensemble de l’équipe MOISE pour son accueil. Parmi ses
membres, je tiens tout particulièrement à remercier Anne Pierson qui a toujours été disponible
pour m’aider à surmonter les tâches administratives afférentes à la préparation d’un doctorat.
Un grand merci à Alexandre Hoffman que j’ai eu le plaisir d’encadrer lors de son stage de
licence. Merci pour son implication et ses différentes idées sur un sujet pas toujours aisé au
premier abord.
Je tiens à remercier Thibaut Montmerle et Thomas Corpetti pour le temps qu’ils ont pu
consacrer à effectuer un travail de rapport de très grande qualité. Leurs nombreuses critiques,
très constructives, m’ont permis d’améliorer ces travaux de thèse. Je dois la découverte du monde
des ondelettes (très présent dans ces travaux) à Valérie Perrier que je remercie d’avoir accepté
de présider mon jury de thèse. Enfin, je tiens à remercier Didier Auroux et Claire Lauvernet
pour le temps consacré à une lecture minutieuse et pour l’intérêt porté à ces travaux.
Je n’aurai certainement pas réalisé cette thèse si Gérald Desroziers et Loïk Berre ne m’avaient
pas accueilli lors de mon stage de licence au sein du GMAP. Je tiens à les remercier de m’avoir
fait découvrir très tôt le monde de l’assimilation de données et de m’avoir fait comprendre
l’importance des matrices de corrélations d’erreur au sein de cette discipline.
J’ai apprécié au cours de ma dernière année de thèse d’avoir pu collaborer avec Jean–François
Coeurjolly. Je le remercie pour son encadrement de ma pratique de l’enseignement des statistiques
au sein de l’UPMF. Je le remercie au passage pour le temps passé à répondre à mes
différentes questions concernant cette discipline aussi bien pour le côté enseignement que pour
le côté recherche scientifique.
Si j’ai été aussi heureux de passer quatre années au sein du LJK, cela tient en partie aux personnes
que j’ai pu y côtoyer. Je pense tout d’abord à mes co–bureaux : Gaëlle et ses réactions
12 Remerciements
spontanées, aux histoires et autres râleries de Bertrand, aux déambulations inopinées de Romain.
Je tiens aussi à remercier les abeilles du 36 et leur essaimage spontané grâce auquel j’ai
co–burauté avec Mathias, Nelson et les mots croisés. Je tiens aussi à remercier Chloé Mimeau
pour les nombreuses discussions que nous avons pu avoir (et aussi pour avoir accepté de relire
et corriger une partie de ce travail de thèse). Enfin, j’ai pu apprécier de nombreuses autres personnes
d’apprécier : Emilie, Roland, Innocent, Madison, Thomas, PJ, PO, Morgane (merci pour
tes encouragements dans des moments pas facile), Jean-Mathieu, Lukas, Eurielle, Bénédicte,
Meriem.
Cette thèse n’aurait sans doute pas été la même sans l’ensemble de mes colocataires avec qui
j’ai pu passer de très bon moments, et ce aussi bien à La Tronche qu’à Venon.
Dernier point, et non des moindres, je tiens à remercier la machine à café du 7ème d’avoir
produit (périodiquement) un café qui m’a permis de tenir physiquement (ainsi que de faire de
nombreuses pauses) au cours de la réalisation de ces travaux.Introduction
Pourquoi les météorologistes ont-ils tant de peine à prédire le temps avec quelque certitude ?
Pourquoi les chutes de pluie, les tempêtes elles-mêmes nous semblent-elles arriver au hasard,
de sorte que bien des gens trouvent tout naturel de prier pour avoir la pluie ou le beau temps,
alors qu’ils jugeraient ridicule de demander une éclipse par une prière ? Nous voyons que les
grandes perturbations se produisent généralement dans les régions où l’atmosphère est en équilibre
instable. Les météorologistes voient bien que cet équilibre est instable, qu’un cyclone va naître
quelque part ; mais où, ils sont hors d’état de le dire ; un dixième de degré en plus ou en moins
en un point quelconque, le cyclone éclate ici et non pas là, et il étend ses ravages sur des contrées
qu’il aurait épargnées. Si on avait connu ce dixième de degré, on aurait pu le savoir d’avance,
mais les observations n’étaient ni assez serrées, ni assez précises, et c’est pour cela que tout
semble dû à l’intervention du hasard. Ici encore nous retrouvons le même contraste entre une
cause minime, inappréciable pour l’observateur, et des effets considérables, qui sont quelquefois
d’épouvantables désastres.
Henri Poincaré (1854-1912)
Le caractère chaotique de la météorologie fut pressenti très tôt par Henri Poincaré. Comme on
peut le voir dans la citation précédente, le caractère non prévisible de l’état de l’atmosphère
n’est ainsi pas dû au hasard mais découle de la sensibilité du système aux conditions initiales
mal connues et de la propriété de récurrence du système 1
.
Comme le pressentait Henri Poincarré, afin d’effectuer de bonnes prévisions météorologiques,
il est essentiel d’avoir accès à la meilleure condition initiale possible. Il est tout aussi fondamental,
à partir de ces conditions initiales, de savoir comment les propager dans le temps afin
d’obtenir une trajectoire de l’atmosphère précise à courte échéance. Au vu de la complexité des
lois physiques régissant le système, arriver à prévoir la trajectoire du système à moyen terme
est un travail complexe que nous sommes peu capable de faire seul. Jay Forrester (fondateur
de la dynamique des systèmes) résume en peu de mot pourquoi nous ne sommes pas capables
d’appréhender le comportement des systèmes complexes :
La difficulté, c’est que ces systèmes sont contre–intuitifs. Ils ne se comportent pas comme on
s’y attendrait. Et il y a des raisons à cela. Le cerveau humain a formé son intuition et son
expérience à partir de systèmes simples. Conduire une voiture est sans doute le système le plus
complexe, le plus élaboré, que nous maîtrisons pleinement. Face à des systèmes plus complexes
nous appliquons l’expérience acquise sur des systèmes simples mais les systèmes complexes ont
une dynamique très différente. C’est la structure du système complet qui détermine son comportement.
Jay Forrester (1918–)
1. Cette dernière propriété signifie que pour presque toute condition initiale du système, le système repasse
au cours du temps une infinité de fois arbitrairement près de cette configuration initiale.
34 Introduction
Dans les années 1920, Richardson tenta le premier de résoudre numériquement les équations
différentielles simplifiées afin de produire une prévision météorologique de six heures. Par manque
de moyen de calcul, le résultat fut décevant mais son expérience fut profitable aux générations
suivantes. Ce n’est cependant que dans les années cinquante, après que furent inventés les premiers
ordinateurs, que [Charney et al., 1950] firent la première prévision numérique couronnée
de succès.
De manière générale, l’arrivée des ordinateurs a permis de mieux appréhender le comportement
de ces système complexes grâce à la résolution numérique d’équation (décrivant de manière
idéalisée les processus au centre des systèmes complexes), et ce, aussi bien en météorologie que
dans bien d’autres domaines.
Depuis le début des prévisions numériques du temps, la qualité des modèles numériques (permettant
de propager les conditions initiales dans le temps) s’est accrue, et ce en partie grâce à
la croissance de la puissance de calcul des ordinateurs. Cependant, sans condition initiale fiable,
l’utilité de l’accroissement de la qualité de ces modèles (dans le but d’effectuer des prévisions)
est discutable. Pour obtenir ces conditions initiales, il est nécessaire d’accéder à des informations
sur l’état actuel de l’atmosphère. Pour ce faire, la quantité d’information récoltée par le réseau
d’observation mondiale (Global Observing System) s’est accrue au fil des années.
Remarque 0.1
Il est bon de noter que la météorologie est sans doute un des domaines où la coopération
internationale est la plus aboutie. En effet, via l’Organisation Météorologique Mondiale les
données récoltées par chaque pays sont accessibles aux autres membres en temps réel. Il est
ainsi possible pour chaque centre météorologique de disposer d’observations un peu partout
sur Terre sans avoir à les effectuer eux mêmes.
Ce réseau comprend, entre autre, de nombreux satellites. L’information en provenance de
ces derniers a crû de manière rapide depuis maintenant une vingtaine d’année. Aujourd’hui la
majeure part des informations utilisées en météorologie provient des satellites malgré l’important
réseau d’observation conventionnelle actuellement en place. En météorologie l’impact des
observations satellites est particulièrement important au–dessus des régions peu observées par
les moyens conventionnels. Ainsi, les satellites sont, de loin, la principale source d’information
au niveau des pôles, au dessus de l’océan et, dans une moindre mesure, dans les pays du Sud
[Desroziers et al., 2009]. Ces informations sont cruciales car elles contribuent à réduire l’écart
de qualité entre les prévisions effectuées dans les pays du Nord et du Sud. En océanographie,
science pauvre en observations conventionnelles, leur impact est encore plus grand : les satellites
permettent d’accéder aux processus se déroulant à la surface de ce dernier de manière de plus
en plus précise.
Dans ces deux domaines, afin d’effectuer les meilleures prévisions possibles, une bonne prise
en compte de ces observations est primordiale dans le but d’estimer de manière optimale les
conditions initiales du système. Ces images peuvent fournir de nombreuses informations sur des
variables directement observées, comme la hauteur de surface de l’océan en océanographie, ou une
information indirecte sur la dynamique du système. En observant des séquences d’images (comme
par exemple celle présentées lors des prévisions météorologiques à la télévision), l’information
sur la dynamique du système (ici le champ de vitesse) est aisément perçue par l’oeil humain.
Cependant, cette information est actuellement sous–utilisée dans les systèmes opérationnels de
prévision numérique :
— en météorologie, l’information est intégrée sous la forme d’observation indirecte sévèrement
sous-échantillonnées en temps et en espace,
— en océanographie, elle n’est tout simplement pas (encore) utilisée.
Depuis maintenant quelques années, de nouvelles méthodes ont été proposées pour utiliser
ce type d’information [Papadakis and Mémin, 2008, Korotaev et al., 2008, Corpetti et al., 2009,5
Titaud et al., 2010, Michel, 2011]. Dans ce mémoire nous utilisons une méthode dans la continuité
des travaux de [Souopgui, 2010, Titaud et al., 2010] réalisés au sein de l’équipe projet
INRIA MOISE2
afin d’extraire des séquences d’images les informations sur la dynamique du
système.
Les séquences d’images satellites, bien que fournissant des données denses en espace ne sont pas
sans poser certains problèmes.
Le premier problème consiste à savoir comment extraire à partir d’une séquence d’images
des informations sur la dynamique du système.
Le second problème provient du moyen utilisé pour créer ces séquences d’images. En effet, les
satellites mesurent des rayonnements électromagnétiques émis ou réfléchis par les objets étudiés
(nuages, surface de l’eau, ...) dans un certain domaine de fréquences. Ceci est rendu possible par
le fait que les objets étudiés émettent ou réfléchissent du rayonnement à différentes longueurs
d’onde et intensités selon leur état. Pour avoir accès aux quantités physiques nous intéressant, il
est nécessaire d’effectuer un pré–traitement de ces données. Ce pré–traitement tend à créer des
corrélations au sein des champs d’erreurs d’observations, corrélations qui doivent être prise en
compte lors de la phase d’assimilation de données.
En océanographie, les séquences d’images sont souvent en partie occultées par la présence de
nuages. L’espace observé changeant d’un instant à l’autre il est dans ce cas bien plus difficile de
prendre en compte de manière peu coûteuse les corrélations au sein des erreurs d’observations :
les approximations effectuées sur la matrice de covariance lorsque l’ensemble de l’image est
observé ne sont plus valables et doivent être adaptées.
Organisation du document
Ce travail de thèse est présenté en 6 chapitres. Le premier chapitre porte sur la méthode
d’assimilation de données utilisée dans la suite du manuscrit. Le second chapitre présente la
transformée en ondelettes orthogonales. Le troisième chapitre introduit le problème de l’assimilation
d’images ainsi que la méthode employée dans ce manuscrit. Le quatrième porte sur la
gestion d’un bruit d’observation décorrélé en espace et en temps. Ce chapitre est relativement
court au vu du suivant : il est en effet peu envisageable d’avoir à décrire des erreurs décorrélées
en temps et en espace pour des observations dont la densité spatiale et temporelle s’accroit
continuellement.
Au cours du cinquième chapitre sont décrites différentes manières de prendre en compte
un bruit corrélé en espace via l’utilisation des propriétés des bases d’ondelettes et des trames
de curvelettes. Dans ce chapitre, l’intérêt d’appauvrir l’information (en travaillant par exemple
dans l’espace des gradients) est aussi présenté.
Le dernier chapitre aborde le problème de la gestion des occultations lorsque les corrélations
sont modélisées par une matrice diagonale dans une base d’ondelettes. Enfin, une dernière partie
conclut et propose quelques perspectives à ces travaux.
2. Equipe où cette thèse a été préparée.6 Introduction1
Introduction à l’assimilation de
données
Sommaire
1.1 Notations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2 Formulation variationnelle du problème d’assimilation . . . . . . . . 10
1.3 Préconditonnement du problème . . . . . . . . . . . . . . . . . . . . . 14
1.4 Influence de la matrice B . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.5 Construction de la matrice B . . . . . . . . . . . . . . . . . . . . . . . 16
En novembre 1854, au cours de la Guerre de Crimée, une violente tempête provoqua le
naufrage de 41 navires français en Mer Noire. Cette tempête avait, avant d’arriver en Crimée,
traversée l’ensemble de l’Europe. Cependant, personne ne fut en mesure de la signaler. Pour
prévenir ce genre d’évènement désagréable dans le futur, à la demande de Napoléon III, Urbain
le Verrier mit en place un réseau d’observatoires météorologiques en France (24 observatoires)
qui fut étendu par la suite à l’ensemble de l’Europe (59 observatoires). A partir des données
récoltées par ces observatoires, les premières prévisions météorologiques en France eurent lieu
dès 1863 via l’étude de l’évolution des phénomènes observés sur des cartes.
Ces premières prévisions étaient à l’époque destinées aux marins pour les prévenir des tempêtes
arrivant. Elles étaient effectuées via l’utilisation d’observations et par "déduction" de la
trajectoire de l’atmosphère.
Aujourd’hui et ce depuis l’apparition des premiers calculateurs, de nombreuses choses ont changé
en ce qui concerne la prévision du temps. Actuellement, on parle de prévision numérique du
temps, le terme numérique signifiant que la majorité du travail de prévision est effectuée par des
ordinateurs compilant des informations en provenance de sources hétérogènes. Ces informations
comprennent toujours les observations du système (qui sont un rappel vers la réalité qui
est en train de se dérouler au dessus de notre tête) et un a priori sur l’état de l’atmosphère
(nommée ébauche). Ce qui a profondément changé depuis l’arrivée des premiers calculateurs
est l’utilisation de modèles numériques d’évolution intégrant des équations mathématiques
décrivant la physique des processus étudiés.
Les calculateurs exécutant simplement les calculs demandés par l’utilisateur, un domaine de
recherche important consiste à savoir comment leur demander d’extraire et de combiner (de
manière calculatoire) l’information en provenance de différentes sources que nous ne sommes
pas capable d’analyser sans utiliser leurs capacités de calcul.
Ces méthodes, en météorologie et océanographie, sont nommées méthodes d’assimilation de
données. Elles permettent de combiner d’une manière optimale (dans un sens à définir) les
différentes sources d’informations à notre disposition.
78 Chapitre 1. Introduction à l’assimilation de données
Dans quel but peut–on utiliser l’assimilation de données ?
Les méthodes d’assimilations de données peuvent être utilisées dans différents buts.
1. La prévision : Les informations passées et présentes sont utilisées au mieux afin de
fournir la meilleure prévision possible au travers de la définition d’une condition initiale
optimale propagée par un modèle.
2. La réanalyse : Les observations passées sont utilisées afin de construire la meilleure
trajectoire du système étudié au cours du temps. Elles permettent d’étudier à posteriori un
phénomène particulier ou de mieux comprendre l’évolution d’un système sur de longues
périodes de temps. Ces réanalyses sont l’occasion d’utiliser des nouveaux systèmes de
prévisions sur des cas anciens afin d’évaluer leur impact (et notamment savoir si à l’heure
actuelle certains événements sont mieux représentés et prévus par les modèles).
Ces deux premiers usages de l’assimilation de données sont les usages "traditionnels" de
l’assimilation de données. Un autre usage, traditionnellement moins répandu, est actuellement
plus fréquemment utilisé.
3. La calibration des modèles : Les informations passées et présentes peuvent en effet
être utilisées pour mieux comprendre et régler les paramètres utilisés dans les modèles numériques.
L’utilisation des techniques d’assimilations peut en effet permettre d’optimiser
la calibration de certains "paramètres" du modèle en les confrontant à des observations.
Dans ce chapitre, nous introduisons le concept de l’assimilation variationelle de données. Bien
que d’autres méthodes pour effectuer de l’assimilation de données existent et soient employées
quotidiennement, nous ne les présentons pas ici. Le lecteur intéressé par une review des différentes
méthodes de filtrage peut se tourner vers [Bonan, 2013].
Dans cette thèse, nous ne développons pas de nouvelle méthode d’assimilation de données. La
littérature portant sur la description des différentes méthodes d’assimilation de données étant
conséquente et bien détaillée, il a été choisit de décrire uniquement la méthode utilisée dans
ces travaux. C’est pourquoi seul le cadre d’un 4D–Var classique est introduit. Cette introduction
pourrait paraître brève et peu détaillée pour le lecteur intéressé découvrant le sujet. Si tel
est le cas, ce dernier est invité à consulter différentes notes de cours [Blayo and Nodet, 2012,
Bocquet, 2011] ou travaux présentant bien plus en détails les différentes techniques d’assimilation
de données [Vidard, 2001, Souopgui, 2010, Mirouze, 2010, Neveu, 2011, Bonan, 2013,
Nodet, 2013].
1.1 Notations
Avant d’entrer dans les détails algorithmiques, nous allons commencer par introduire le
vocabulaire et les notations employées dans ce chapitre.
Le vecteur d’état X
Le vecteur d’état représente l’ensemble des variables pronostiques du modèle, c’est–à–dire les
variables dont la dérivée par rapport au temps est prise en compte explicitement dans les équations
du modèle. Il est noté X(t) et contient l’état des différentes variables du système étudié
à l’instant t. Dans un système numérique, le vecteur d’état est une représentation discrète des
variables continues du système. Sa dimension est notée nx. L’état du système à l’instant tk, i-e
X(tk), est noté Xk.1.1. Notations 9
L’état vrai Xt
L’état vrai Xt
représente l’état à estimer au moyen d’un processus d’assimilation. Cet état
est par nature discret et ne peut donc représenter le véritable état continu Xc
. Il est cependant
possible de relier Xc
à Xt
au moyen d’un opérateur Π permettant la projection de la variable
continue sur la discrétisation employée. Nous avons ainsi :
Xt
i = ΠXc
i
. (1.1)
Le modèle
Le modèle représente l’implémentation numérique des équations d’évolution du système. A
partir d’un état initial X0, le modèle M permet de fournir un estimé de l’état du système Xk.
∂X(t)
∂t = M(X(t))
X(t0) = X0
(1.2)
Cependant, le modèle n’est qu’une représentation partielle de la réalité des processus physiques.
Ainsi, même si le véritable vecteur d’état, noté Xt
, est connu à l’instant tk son intégration
par le modèle jusqu’au temps tk+1 comporte des erreurs :
Xt
k+1 = Mtk→tk+1
Xt
k
+ ηk. (1.3)
Le vecteur ηk est nommé erreur modèle. Cette erreur modèle dépend, entres autres, de l’état
continu Xc
k
. Sans informations supplémentaires sur la nature de l’erreur modèle, cette dernière
peut être modélisée comme une variable aléatoire gaussienne de moyenne :
ηk = E (ηk) (1.4)
et de matrice de covariance :
Qk = E
(ηk − ηk)(ηk − ηk)
T
. (1.5)
Ces perturbations représentent l’ensemble des processus non modélisés. Ils englobent les
processus non résolus par le modèle car de trop petite échelle.
L’ébauche Xb
L’ébauche est une première estimation du vecteur d’état. Typiquement, il s’agit d’une sortie
du modèle en provenance de la phase de prévision de la période précédente d’assimilation.
L’ébauche est une connaissance a priori de l’état du système.
De la même manière que nous avons défini l’erreur modèle, nous pouvons définir une erreur
d’ébauche :
Xb = Xt
0 +
b
(1.6)
Dans la suite, on suppose que ces erreurs suivent une loi gaussienne et ne sont pas biaisées :
b ∼ N (0, B). (1.7)
Les observations y
o
Afin de pouvoir contrôler le système, il est nécessaire d’avoir des informations sur les processus
qui sont en train d’avoir lieu. C’est le rôle des observations de fournir ce type d’information.
Ces observations, notées y
o
, proviennent de sources diverses. Elles ne sont pas nécessairement
des observations des variables des modèles ou situées au point de grille de notre discrétisation.10 Chapitre 1. Introduction à l’assimilation de données
Afin de relier les observations à un instant tk, notée y
o
k
, au vecteur d’état Xk il est nécessaire
de définir un opérateur d’observation discret Hk tel que :
y
o
k = Hk(Xt
k
) +
o
k
(1.8)
où
o
k
représente l’erreur d’observation au temps tk. Les erreurs d’observations peuvent provenir
de différentes sources dont les erreurs de mesure, les erreurs de pré-processing et les erreurs
de représentativité. Ces dernières peuvent notamment être liées au fait que certains phénomènes
observés ne sont pas résolus par le modèle.
Les erreurs d’observations sont supposées décorrélées des erreurs d’ébauche et non
biaisées. Leur matrice de covariance est donnée par :
Ri = E
o
k
o
k
T
(1.9)
1.2 Formulation variationnelle du problème d’assimilation
L’assimilation de données consiste à résoudre un problème inverse posé sur un système physique
dont les paramètres d’entrée sont mal connus et dont les sorties ne sont que partiellement
observées. Le principe des méthodes variationnelles est de résoudre ce problème par minimisation
d’une fonctionnelle prenant en compte l’ensemble de l’information disponible.
Dans notre cas, le but est d’estimer la condition initiale X0 permettant d’expliquer la trajectoire
observée de l’atmosphère, en prenant en compte nos connaissances sur la dynamique et un a
priori sur la condition initiale. Cette condition initiale constitue notre vecteur de contrôle,
c’est à dire l’ensemble des paramètres que nous allons chercher à estimer.
Remarque 1.1
Dans la suite de ce chapitre, pour décrire le concept de l’assimilation de données variationnelle,
nous utilisons uniquement un modèle linéaire (noté M) et un opérateur d’observation
linéaire (noté H) par soucis de simplicité. Toujours par soucis de simplicité, les statistiques
d’erreurs d’observation et d’ébauche sont supposées gaussiennes tandis que les erreurs modèles
sont négligées.
La fonctionnelle à minimiser s’écrit sous la forme :
J(X0) = 1
2
(X0 − Xb
)
T B
−1
(X0 − Xb
) + 1
2
X
N
i=0
(y
o
i − Hi(Xi))T R−1
k
(y
o
i − Hi(Xi))
= kX0 − Xb
k
2
B | {z }
J
b
+
X
N
i=0
ky
o
i − Hi(Xi)k
2
Rk
| {z }
J
o
(1.10)
Le minimum de cette fonctionnelle est nommé état analysé Xa
:
Xa = argmin
X0
J(X0) (1.11)
Cet état analysé peut être décomposé sous la forme de l’ébauche sur la condition initiale à
laquelle un incrément a été ajouté :
Xa = Xb + δXa. (1.12)
Cet incrément δXa est nommé incrément d’analyse.1.2. Formulation variationnelle du problème d’assimilation 11
Le terme J
o
est nommé terme d’écart aux observations. Il contient l’écart entre le vecteur d’observations
y
o
et l’état du modèle dans l’espace des observations. L’écart entre les observations et
l’état du modèle est "pondéré" par l’inverse de la matrice de covariance d’erreur d’observation.
Le terme J
b
est le terme d’écart à l’ébauche. Ce premier terme joue deux rôles :
— Il contient l’information a priori dont on dispose sur l’état du système ;
— Il permet de régulariser le problème mathématique à résoudre. Il y a en général trop peu
d’observations pour que le problème sans ce terme d’écart à l’ébauche puisse être bien
posé.
Remarque 1.2
Les observations à l’instant ti sont liées au vecteur de contrôle X0 de manière très "indirecte".
En effet, le lien entre l’état du système à l’instant ti et l’état initial est fourni par le
modèle d’évolution en temps :
Xi = M(t0→ti)
(X0)
= MiMi−1 · · ·M1(X0)
où on a noté Mi = M(ti−1→ti)
.
Résolution par méthode adjointe
Au vu de la taille du vecteur de contrôle, minimiser directement la fonctionnelle (1.10) via des
méthodes de descente de gradient est très coûteux lorsque le gradient est calculé par différences
finies. L’utilisation des méthodes adjointes rend cependant ce calcul possible à un coût raisonnable
[LeDimet, 1982, LeDimet and Talagrand, 1986] au prix du développement des modèles et
opérateurs adjoints 3
.
Le gradient de la fonction coût (1.10) introduite précédemment est donné par :
∇J(X0) = B
−1
(X0 − Xb
) −
X
N
i=0
MT
1
· · ·MT
i HT
i R−1
i
[y
o
i − HiMi
· · ·M1X0]
= ∇J
b
(X0) + ∇J
o
(X0) (1.13)
La partie du gradient correspondant au rappel à l’ébauche s’obtient aisément (si on est
capable d’inverser la matrice de covariance d’erreur d’ébauche). La seconde partie est cependant
plus ardue à calculer. Elle fait intervenir le modèle et l’opérateur d’observation ainsi que leurs
adjoints respectifs (notés MT
et HT
). Cette seconde partie est, en assimilation variationelle,
obtenue par méthode adjointe.
Afin de visualiser comment ces méthodes fonctionnent, nous pouvons réécrire ∇J
o
(X0) en
utilisant le vecteur d’innovation di défini par :
di = y
o
i − HiMi
· · ·M1X0. (1.14)
qui correspond donc à la différence entre les observations et l’état du modèle à l’instant ti
.
3. A ce sujet, des dérivateurs automatiques tels TAPENADE développé dans l’équipe projet INRIA TROPICS
[Hascoet and Pascual, 2013] existent pour faire une partie du travail de dérivation à notre place.12 Chapitre 1. Introduction à l’assimilation de données
Avec cette nouvelle notation, la part du gradient imputable aux observations s’écrit :
−∇J
o
(X0) = X
N
i=0
MT
1
· · ·MT
i HT
i R−1
i
[y
o
i − HiMi
· · ·M1X0]
=
X
N
i=0
MT
1
· · ·MT
i HT
i R−1
i di
= HT
0 R−1
0 d0 + MT
1 HT
1 R−1
1 d1 + MT
1 MT
2 HT
2 R−1
2 d2 + · · · +
MT
1
· · ·MT
NHT
NR−1
N dN
= HT
0 R−1
0 d0 + MT
1
HT
1 R−1
1 d1 + MT
2
h
HT
2 R−1
2 d2 +
MT
3
· · · + MT
NHT
NR−1
N dN
i
En écrivant de cette manière le gradient du terme d’écart aux observations, on s’aperçoit
qu’il est possible de l’obtenir par une intégration du modèle adjoint (en supposant qu’on ait déjà
effectué une intégration directe pour obtenir les vecteurs d’innovations).
L’intégration du modèle adjoint fonctionne de la manière suivante :
Xˆ N = HT
NR−1
N dN
Xˆ
i = MT
i+1Xˆ
i+1 + HT
i R−1
i di pour i = N − 1, 0
(1.15)
Par identification, en fin d’algorithme, on a donc ∇J
o
(X0) = −Xˆ
0.
Remarque 1.3
Remarquons que l’ensemble des états adjoints se calculent dans le sens contraire au sens
du calcul des états directs du modèle.
Ce moyen d’obtenir le gradient de la fonction coût est à la base de l’application du 4D − Var
qui, à partir d’une connaissance à priori du vecteur d’état Xb peut calculer la fonctionnelle J,
son gradient.
L’algorithme du 4D − Var peut se résumer de la manière suivante :
Algorithme 4D − Var
1. Initialisation de l’algorithme : X0 = Xb
,
2. Intégration du modèle direct M en partant de X0. Cette intégration permet d’obtenir
les vecteurs d’innovations di
.
3. Intégration du modèle adjoint. Cette intégration permet d’obtenir le gradient de la
fonctionnelle J.
4. Appel à une méthode de descente permettant d’obtenir une nouvelle condition initiale
X0 = Xb + δX0
5. Si le critère de minimisation est atteint, on s’arrête. Sinon, on reprend à la seconde
étape.
La figure 1.1 résume le principe de l’assimilation variationnelle utilisant l’information sur la
dynamique du modèle (4D − V ar). Tout d’abord, l’ébauche est propagée par le modèle. L’assimilation
variationnelle consiste alors à comparer l’ensemble des observations disponibles sur la
fenêtre au vecteur d’état (à l’instant d’observation) pour corriger la condition initiale. Cela permet
d’obtenir un nouvel état initial qui peut à son tour être propagé par le modèle puis corrigé
Etude th´eorique et implantation mat´erielle d’unit´es de ´
calcul en repr´esentation modulaire des nombres pour la
cryptographie sur courbes elliptiques
Karim Bigou
To cite this version:
Karim Bigou. Etude th´eorique et implantation mat´erielle d’unit´es de calcul en repr´esentation ´
modulaire des nombres pour la cryptographie sur courbes elliptiques. Computer Arithmetic.
Universit´e Rennes 1, 2014. French.
HAL Id: tel-01084254
https://tel.archives-ouvertes.fr/tel-01084254
Submitted on 19 Nov 2014
HAL is a multi-disciplinary open access
archive for the deposit and dissemination of scientific
research documents, whether they are published
or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.
L’archive ouverte pluridisciplinaire HAL, est
destin´ee au d´epˆot et `a la diffusion de documents
scientifiques de niveau recherche, publi´es ou non,
´emanant des ´etablissements d’enseignement et de
recherche fran¸cais ou ´etrangers, des laboratoires
publics ou priv´es.ANNÉE 2014
THÈSE / UNIVERSITÉ DE RENNES 1
sous le sceau de l’Université Européenne de Bretagne
pour le grade de
DOCTEUR DE L’UNIVERSITÉ DE RENNES 1
Mention : Informatique
Ecole doctorale MATISSE
présentée par
Karim Bigou
préparée à l’unité de recherche IRISA (UMR6074)
Institut de recherche en informatique et systèmes aléatoires
École Nationale Supérieure des Sciences Appliquées et de
Technologie (ENSSAT) - Équipe CAIRN
Étude théorique et
implantation matérielle
d’unités de calcul en
représentation modulaire
des nombres pour la
cryptographie sur
courbes elliptiques
Thèse soutenue à Lannion
le 3 Novembre 2014
devant le jury composé de :
Liam MARNANE
Senior Lecturer, University College Cork
rapporteur
Jean-Michel MULLER
Directeur de recherche CNRS, ENS Lyon, LIP
rapporteur
Jean-Claude BAJARD
Professeur, Université de Paris 6, LIP6
examinateur
Guy GOGNIAT
Professeur, Université de Bretagne Sud, Lab-STICC
examinateur
Arnaud TISSERAND
Chargé de recherche CNRS, IRISA
directeur de thèse
Nicolas GUILLERMIN
Expert cryptographie DGA
co-directeur de thèse23
Remerciements
Je tiens tout d’abord à remercier mes directeurs de thèse, Arnaud Tisserand et Nicolas
Guillermin, qui m’ont permis d’effectuer ce travail sur une problématique passionnante. Ils
m’ont notamment mis le pied à l’étrier sur les aspects matériels, et Arnaud s’est montré
extrêmement patient lorsqu’il a fallu rédiger les idées et les résultats pour les soumettre en
conférence. Leurs précieux conseils m’ont permis d’aboutir au document que voici, dans
les temps de mon financement de thèse (DGA-INRIA).
Je remercie aussi les autres membres du jury : Guy Gogniat en tant que président du
jury, Jean-Claude Bajard en tant qu’examinateur, et enfin les relecteurs Liam Marnane et
Jean-Michel Muller, qui sont venus de toute la France, et même d’Irlande.
Je tiens à remercier tous les membres de l’équipe CAIRN que j’ai pu côtoyer durant ma
thèse. Cette équipe possède une formidable ambiance de travail, ce qui est très motivant et
très encourageant dans les périodes difficiles qui juchent le chemin jusqu’à la soutenance de
thèse. Je remercie plus particulièrement les secrétaires d’équipe Nadia et Angélique, mes
anciens co-bureaux Thomas et Julien, les autres doctorants du groupe arithmétique/crypto
Jérémy et Frank, et les doctorants qui ont démarré en même temps que moi, notamment
Ganda-Stéphane et Hai.
Je remercie aussi tous ceux qui m’ont beaucoup soutenu durant la rédaction. En vrac,
merci à Cédric, Christophe, aux trois Nicolas et à Mélanie. Les conseils de Nicolas E., les
légendaires pestos de Nicolas V., les délicieuses mousses au chocolat de Mélanie, les discussions
endiablées sur le jeu vidéo avec Nicolas S., le rendez-vous hebdomadaire after work
à « l’Atmo » animé par Christophe et les combos de blagues réalisés par Cédric m’ont aidé
à surmonter le rythme soutenu de fin de thèse.
Je remercie mes parents Gilles et Rachida et mes frères Nadjim et Jason pour tout leur
soutien tout au long de ma thèse, et plus généralement, tout au long de ma scolarité. Je
remercie mes parents d’avoir fait ces 20 heures de route en 3 jours pour pouvoir me soutenir
encore une fois afin de conclure mes 8 années d’études.
Pour terminer, je remercie Julie, qui m’accompagne depuis bientôt 10 ans, et qui s’est
investie dans cette thèse, notamment en relisant l’intégralité du document ici présent. Elle
a dû faire face à mes périodes de doute, et m’a soutenu quelles que soient les humeurs qui
m’ont traversées durant ces 3 dernières années. Elle a été mon soutien le plus fondamental
durant toute la durée de ces travaux, et l’est encore aujourd’hui.4Table des matières
Introduction 9
Notations 21
1 État de l’art 25
1.1 La cryptographie asymétrique . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.1.1 Le cryptosystème RSA . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.1.2 Le problème du logarithme discret, application dans les corps finis . 26
1.1.3 Le problème du logarithme discret sur les courbes elliptiques . . . . 28
1.1.4 Techniques classiques de multiplication scalaire et d’exponentiation . 33
1.1.5 Réduction du coût de la multiplication scalaire . . . . . . . . . . . . 34
1.1.6 Sécurité et attaques physiques . . . . . . . . . . . . . . . . . . . . . . 37
1.2 Arithmétique modulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
1.2.1 Définitions et rappels sur l’arithmétique modulaire . . . . . . . . . . 39
1.2.2 Réduction Modulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
1.2.3 Inversion Modulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
1.3 La représentation modulaire des nombres (RNS) . . . . . . . . . . . . . . . 46
1.3.1 Définition et premières propriétés . . . . . . . . . . . . . . . . . . . . 47
1.3.2 Extensions de base RNS . . . . . . . . . . . . . . . . . . . . . . . . . 49
1.3.3 Adaptation RNS de l’algorithme de Montgomery . . . . . . . . . . . 54
1.3.4 Autres algorithmes de réduction . . . . . . . . . . . . . . . . . . . . 57
1.3.5 Implantations RNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2 Inversion modulaire rapide en RNS 69
2.1 Inversion modulaire RNS dans l’état de l’art . . . . . . . . . . . . . . . . . . 69
2.2 Inversion modulaire plus-minus en RNS . . . . . . . . . . . . . . . . . . . . 72
2.3 Algorithme binaire-ternaire plus-minus en RNS . . . . . . . . . . . . . . . . 78
2.4 Comparaison avec l’état de l’art . . . . . . . . . . . . . . . . . . . . . . . . . 83
2.4.1 Complexité du FLT-MI . . . . . . . . . . . . . . . . . . . . . . . . . . 83
2.4.2 Complexité de PM-MI et BTPM-MI . . . . . . . . . . . . . . . . . . . . 84
2.5 Architecture et implantation FPGA . . . . . . . . . . . . . . . . . . . . . . 85
2.6 Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
2.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
3 Décomposition et réutilisation d’opérandes pour la multiplication modulaire
RNS 99
3.1 Algorithme de multiplication modulaire RNS proposé . . . . . . . . . . . . . 99
3.1.1 L’étape de décomposition . . . . . . . . . . . . . . . . . . . . . . . . 100
3.1.2 Algorithme de multiplication modulaire SPRR . . . . . . . . . . . . . 102
56 TABLE DES MATIÈRES
3.1.3 Preuve des propositions 1 et 2 . . . . . . . . . . . . . . . . . . . . . . 105
3.1.4 Sélection des paramètres . . . . . . . . . . . . . . . . . . . . . . . . . 107
3.2 Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
3.2.1 Application au logarithme discret . . . . . . . . . . . . . . . . . . . . 110
3.2.2 Applications aux courbes elliptiques . . . . . . . . . . . . . . . . . . 112
3.3 Exponentiation rapide RNS sans hypothèse sur P . . . . . . . . . . . . . . . 116
3.3.1 Un nouvel algorithme d’exponentiation RNS . . . . . . . . . . . . . . 117
3.3.2 Autres algorithmes d’exponentiation . . . . . . . . . . . . . . . . . . 120
3.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
4 Multiplication modulaire RNS mono-base 123
4.1 La multiplication modulaire RNS à base unique SBMM . . . . . . . . . . . . . 123
4.2 Analyse de l’algorithme SBMM . . . . . . . . . . . . . . . . . . . . . . . . . . 126
4.2.1 Généralisation du paramètre c . . . . . . . . . . . . . . . . . . . . . . 126
4.2.2 Utilisation de l’extension de base de Kawamura et al. . . . . . . . . . 127
4.2.3 Compression des sorties de l’algorithme . . . . . . . . . . . . . . . . 128
4.2.4 Analyse des coûts en EMM et EMW . . . . . . . . . . . . . . . . . . . . 130
4.3 Implantation FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
4.3.1 Architecture implantée . . . . . . . . . . . . . . . . . . . . . . . . . . 133
4.3.2 Résultats d’implantation . . . . . . . . . . . . . . . . . . . . . . . . . 135
4.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
5 Tests de divisibilité multiples 139
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
5.2 Notations et hypothèses d’implantation matérielle . . . . . . . . . . . . . . . 140
5.3 État de l’art . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
5.4 Utilisation directe des rubans de Pascal en base 2 . . . . . . . . . . . . . . . 143
5.5 Amélioration via les rubans de Pascal en grande base 2
v
. . . . . . . . . . . 144
5.6 Comparaisons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
5.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Conclusion 149
Bibliographie personnelle 153
Bibliographie 153Liste des Algorithmes
1 Protocole de chiffrement RSA [102]. . . . . . . . . . . . . . . . . . . . . . . . 26
2 Échange de clé de Diffie-Hellman [38]. . . . . . . . . . . . . . . . . . . . . . . 27
3 Protocole de chiffrement Elgamal simple [44]. . . . . . . . . . . . . . . . . . . 27
4 Chiffrement avec le cryptosystème Elgamal ECC simple (source [57]). . . . . 32
5 Multiplication scalaire doublement et addition poids faibles en tête (source [57],
p. 96). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
6 Multiplication scalaire doublement et addition poids forts en tête (source [57],
p. 97). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
7 Multiplication scalaire par fenêtre fixe de Yao [125]. . . . . . . . . . . . . . . 35
8 Réduction modulaire de Montgomery [82]. . . . . . . . . . . . . . . . . . . . 41
9 Réduction modulo un nombre pseudo-Mersenne [34]. . . . . . . . . . . . . . 42
10 Algorithme d’Euclide étendu (source [66]). . . . . . . . . . . . . . . . . . . . 44
11 Algorithme d’Euclide étendu binaire de [66]§ 4.5.2. . . . . . . . . . . . . . . . 45
12 Inversion modulaire plus-minus [37]. . . . . . . . . . . . . . . . . . . . . . . . 46
13 Conversion RNS vers MRS [120]. . . . . . . . . . . . . . . . . . . . . . . . . 50
14 Extension de base (BE) issue de [64]. . . . . . . . . . . . . . . . . . . . . . . . 53
15 Réduction de Montgomery RNS (MR) [99]. . . . . . . . . . . . . . . . . . . . . 54
16 Inversion modulaire FLT-MI basée sur le petit théorème de Fermat (version
LSBF de [48]). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
17 Inversion modulaire plus-minus proposée PM-MI (version binaire). . . . . . . 73
18 Inversion modulaire binaire-ternaire plus-minus proposée (BTPM-MI). . . . . . 80
19 Fonction Divup. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
20 Étape de décomposition (Split). . . . . . . . . . . . . . . . . . . . . . . . . 101
21 Multiplication modulaire proposée SPRR. . . . . . . . . . . . . . . . . . . . . 102
22 Exponentiation « échelle de Montgomery » [62]. . . . . . . . . . . . . . . . . 111
23 Exponentiation carré et multiplication (source [51]). . . . . . . . . . . . . . . 117
24 Exponentiation RNS revisitée . . . . . . . . . . . . . . . . . . . . . . . . . . 119
25 Exponentiation RNS régulière revisitée. . . . . . . . . . . . . . . . . . . . . . 121
26 Multiplication modulaire RNS mono-base SBMM. . . . . . . . . . . . . . . . . . 124
27 Étape de décomposition compacte CSplit. . . . . . . . . . . . . . . . . . . . 125
28 Compression d’une valeur représentée par (K, R). . . . . . . . . . . . . . . . 128
78 LISTE DES ALGORITHMESIntroduction
Contexte et motivations des travaux
La sécurité des systèmes d’information et de communication est, de nos jours, une
question primordiale dans un bon nombre d’applications, et son champ d’application va
avoir tendance à encore s’accroître avec l’utilisation et l’intégration de plus en plus massive
de systèmes intelligents. Cette sécurité intervient dans des domaines différents comme la
défense, l’économie numérique ou encore les divertissements, ce qui impose des contraintes
très différentes. Le secret militaire, les transactions bancaires ou encore les services de
vidéo à la demande sont des exemples que l’on peut associer à ces domaines. D’autres domaines
apparaissent avec, par exemple, l’utilisation de circuits électroniques directement
intégrés dans le corps à des fins médicales. Un autre exemple est la domotique, c’est-à-dire
la construction de « maisons intelligentes » avec un contrôle informatique. On peut aussi
évoquer des concepts plus généraux qui ont des besoins de sécurité, comme l’informatique
dans le nuage (cloud computing). Le principe est d’utiliser la puissance de serveurs distants
et leur capacité de stockage pour en profiter sur des dispositifs bien moins puissants, via
le réseau (internet principalement). Une telle application génère beaucoup de trafic sur le
réseau, et notamment beaucoup d’informations à protéger, avec potentiellement un gros
débit d’informations à garder confidentielles, et beaucoup d’utilisateurs à authentifier. Une
des promesses de ce type de service est de fournir autant de confidentialité sur les données
stockées de façon distante que si elles étaient enregistrées localement.
La variété des contextes d’utilisation implique une variété de contraintes possibles : des
contraintes de coût de mise en œuvre, de consommation d’énergie et de temps d’exécution
ou de débit d’information doivent être prises en compte. Ces contraintes sont conditionnées
par le niveau de sécurité que le concepteur cherche à obtenir ou à garantir. Par exemple,
il n’est pas forcément nécessaire pour certaines applications d’avoir des protections qui ré-
sistent à des attaques de plusieurs années. Par contre, d’autres applications requièrent une
protection pour des dizaines d’années, comme cela peut être le cas d’informations classées
« Confidentiel Défense » ou « Secret Défense », qui sont prévues pour rester confidentielles
50 ans dans la loi.
Les systèmes d’information ayant des limites physiques, on ne peut pas obtenir une
protection qui reste valable quelle que soit la puissance de calcul de l’attaquant. D’où une
notion de niveau de sécurité, directement reliée à l’attaque la plus efficace que peut faire un
attaquant, avec une certaine quantité de ressources. La sécurité repose sur différents types
de protocoles, qui permettent par exemple d’authentifier les interlocuteurs et de garder secrète
leurs communications. Ces protocoles utilisent des primitives cryptographiques pour
assurer ces fonctions. La cryptographie classique, utilisée actuellement dans nos systèmes
de communication, repose sur des problèmes mathématiques qui sont a priori impossibles
910 INTRODUCTION
à résoudre à un coût raisonnable lorsqu’on ne possède pas un certain secret : la clé. La
difficulté de ces problèmes est choisie pour être adaptée à la protection que l’on veut mettre
en place et contre quel attaquant on veut se protéger : un particulier, une entreprise ou un
état par exemple. Ces paramètres font que la mise en place de protections adaptées est un
problème complexe.
Il existe plusieurs types de cryptographie. Actuellement, dans les protocoles de sécurité,
on utilise généralement deux types de cryptographie : la cryptographie asymétrique (ou à
clé publique) et la cryptographie symétrique (ou à clé secrète). Ces deux catégories ont
des caractéristiques différentes et sont utilisées généralement de façon complémentaire. La
cryptographie à clé publique ne requiert pas de secret partagé entre les deux interlocuteurs,
celui qui reçoit le message possède 2 clés, une publique qu’il diffuse, et un autre qu’il garde
secrète. Ce type de cryptographie requiert des calculs compliqués sur des grands nombres,
ce qui rend ces opérations coûteuses en temps. Les travaux de cette thèse s’intéresse exclusivement
à ce type de cryptographie. Plus précisément, on va s’intéresser à l’accélération
des calculs pour la cryptographie sur courbes elliptiques (ECC pour elliptic curve cryptography),
qui a été introduite dans le milieu des années 1980 par Koblitz [67] et Miller [80].
D’autres primitives de cryptographie asymétrique seront plus brièvement étudiées, comme
RSA [102] (du nom de ses auteurs Rivest, Shamir et Adleman) et Diffie-Hellman [38]. De
l’autre côté, la cryptographie symétrique a comme contrainte forte que les deux interlocuteurs
doivent partager une même clé secrète. Grâce à ce secret partagé, ils vont pouvoir
utiliser un des algorithmes de chiffrement symétrique comme l’AES [90] par exemple, qui
est un chiffrement symétrique très rapide. La complémentarité des deux types de cryptographie
se dessine lorsque deux interlocuteurs cherchent à établir une communication
via un canal sécurisé. Ces interlocuteurs devront d’abord s’authentifier mutuellement puis
échanger une clé secrète grâce à la cryptographie asymétrique. Ensuite, ils pourront communiquer
de manière sécurisée en utilisant un chiffrement symétrique avec la clé qu’ils ont
partagée, de manière bien plus rapide que si tout était fait avec la cryptographie asymé-
trique.
Il existe aussi d’autres propositions en terme de cryptographie, mais qui ne sont pas
utilisées car trop peu performantes pour des besoins actuels. Par exemple, la distribution
de clé quantique est une méthode qui est basée sur des phénomènes physiques, à la diffé-
rence de la cryptographie actuelle basée sur certains problèmes mathématiques. L’avantage
principal de ce type de cryptographie est qu’elle est résistante aux attaques que l’on pourrait
implanter si un véritable ordinateur quantique était mis au point un jour. Un exemple
célèbre est l’algorithme de Shor [113] permettant de factoriser des entiers très rapidement
sur un ordinateur quantique. Cette factorisation permettrait par exemple de casser très
rapidement RSA. Actuellement, le plus grand nombre entier décomposé en ses facteurs
premiers par un calculateur quantique est 21 [75]. L’utilisation massive, un jour, de ce type
de cryptographie est extrêmement hypothétique, et est largement en dehors du cadre de
cette thèse.
Cette thèse porte principalement sur l’accélération de certaines opérations sur des
nombres de plusieurs centaines à plusieurs milliers de bits pour les calculs nécessaires à
la cryptographie asymétrique, en particulier ECC. Les courbes elliptiques sont très intéressantes
parmi l’ensemble des primitives de cryptographie asymétrique car elles permettent
d’utiliser des tailles de clé plus petites que les autres standards, pour une sécurité équivalente
[57]. Il en va de même pour la taille des nombres traités et les performances en temps11
d’exécution. Par exemple, ECC définit avec des clés de 160 bits et des nombres représentés
sur 160 bits, propose une sécurité équivalente à RSA sur 1024 bits (taille des clés et des
éléments). Plus généralement, les tailles des valeurs pour ECC vont de 160 à 600 bits et
pour RSA de 1024 à 3072 dans les standards. Les tables 1.1, 1.2, 1.3 et 1.4 aux pages 32
et 33 présentent des comparaisons sur la taille des clés, la vitesse d’exécution ou encore la
consommation d’énergie.
On trouve deux grandes catégories de courbes elliptiques dans l’état de l’art d’ECC :
les courbes ayant comme corps de base F2m et celles définies sur Fp. Les courbes défi-
nies sur F2m proposent une arithmétique généralement plus efficace, car le corps de base
F2m possède plus de structure permettant l’accélération des calculs. Par exemple, on a
(x + y)
2 = x
2 + y
2 dans F2m, ce qui permet d’accélérer certains calculs. Cependant, on ne
sait pas si cette structure sur le corps de base peut aider un attaquant et réduit la sécurité
du système. Les travaux de cette thèse porteront exclusivement sur ECC sur Fp. Ces
courbes sont, par exemple, recommandées par l’agence américaine NSA (national security
agency) pour l’échange de clé et la signature numérique des documents classés « Secret »
et « Top Secret » avec des corps de 256 bits et 384 bits (voir [88, 89]). Les deux types de
courbes sont intéressants car, premièrement, il est important en cryptographie de pouvoir
disposer de différentes protections pour pallier l’éventuelle défaillance de l’une d’entre elles,
et deuxièmement, il existe un bon nombre de brevets sur l’implantation efficace des 2 types
de courbes qui peuvent guider le choix du type de corps (F2m ou Fp).
Si les courbes elliptiques ont de si petites clés et de si petites tailles d’éléments par
rapport à RSA et Diffie-Hellman, c’est grâce à leur meilleure résistance aux attaques mathématiques
connues. Le champ de la cryptologie s’intéressant aux attaques mathématiques
se nomme la cryptanalyse. Par exemple, c’est en partie parce que nous ne savons pas mettre
en œuvre l’attaque du calcul d’indices [3] sur les courbes elliptiques qu’elles utilisent des
entiers de centaines de bits, comparés aux milliers de bits pour RSA et Diffie-Hellman.
Pour illustrer cette différence, on peut comparer les records des tailles maximales qui ont
été cassées pour RSA et pour ECC dans la littérature. Ainsi, un module RSA de 768
bits a été factorisé dans [65] fin 2009, alors que le record pour ECC est seulement de 109
bits, pour les 2 types de corps F2m et Fp (2002 et 2004, voir [24]). Le prochain niveau
du concours pour ECC est fixé à 131 bits par Certicom, qui est l’entreprise organisatrice
du concours et détentrice de centaines de brevets sur les implantations ECC. Du côté de
RSA, des équipes de recherche travaillent actuellement à la résolution de RSA sur 1024 bits.
Malgré les bonnes propriétés mathématiques d’ECC, d’autres types d’attaques existent
utilisant les fuites d’information des implantations, comme la consommation d’énergie [69]
ou le rayonnement électromagnétique [4]. C’est d’autant plus vrai lorsque nous travaillons
sur des implantations sur systèmes embarqués, où des protections spéciales doivent être
mises en œuvre. On appelle celles-ci attaques par canaux cachés/auxiliaires (SCA pour side
channel attack). Les travaux de la thèse sont effectués dans un contexte d’implantation circuit/systèmes
embarqués, ce type d’attaques est donc à prendre en compte. L’objectif est
d’avoir une implantation rapide et sûre. Nos travaux portent sur l’accélération des calculs
ECC, tout en étant compatibles avec les protections habituelles de l’état de l’art.
La taille des nombres avec lesquels on calcule en cryptographie asymétrique (160–521
bits pour ECC, 1024–3072 pour RSA/Diffie-Hellman) donne une importance capitale à
l’arithmétique implantée pour effectuer les différentes opérations élémentaires. Ce qu’on12 INTRODUCTION
entend ici par opérations élémentaires sont les additions/soustractions, les multiplications
et les réductions modulaires dans le corps de base. Les implications des choix d’implantation
de ces opérations sont diverses. De très gros opérateurs permettront de gagner un
ordre de grandeur en temps d’exécution par exemple, mais consommeront plus d’énergie et
peuvent être ainsi plus visibles sur une attaque d’analyse de consommation d’énergie. D’un
autre côté, si la priorité n’est pas le temps d’exécution mais la consommation d’énergie
ou la surface de silicium utilisée, un petit opérateur, lent, peut suffire. Plus généralement,
les contraintes typiques que l’on retrouve pour de tels opérateurs sont la surface utilisée,
que l’on peut relier aux moyens financiers nécessaires pour concevoir et faire le circuit, la
vitesse d’exécution, le débit de traitement des données et la consommation d’énergie.
Pour réaliser des opérateurs arithmétiques répondant aux contraintes fixées par l’application,
diverses possibilités existent. Premièrement, on peut toujours doubler le débit
si on s’autorise à doubler la surface de circuit, en utilisant deux instances du même opé-
rateur. On peut aussi augmenter le nombre d’étages de pipeline, ce qui peut accroître la
fréquence d’utilisation et le débit de données mais, en contrepartie, augmente la surface
et la consommation d’énergie. Les choix arithmétiques influent aussi sur les performances
de l’opérateur. Par exemple, la propagation de retenue dans l’addition ou la multiplication
sont un frein à la parallélisation des opérateurs arithmétiques sans représentation adaptée.
Certaines représentations des nombres permettent tout de même de paralléliser l’addition
ou même la multiplication. C’est le cas de la représentation modulaire des nombres RNS
(pour residue number system) qui est l’objet de cette thèse. Plus généralement, la repré-
sentation des nombres dans une implantation de cryptographie asymétrique est un élément
important à prendre en compte pour accélérer les calculs. Par exemple, certaines représentations,
comme RNS, permettent de faire les additions et les multiplications en parallèle.
De plus, à chaque représentation correspond des coûts de calcul différents pour les opérations
élémentaires addition, multiplication et réduction modulaire, ce qui peut encourager
son utilisation pour certaines applications. Certaines opérations spécifiques sont même extrêmement
efficaces, et peuvent mener à repenser certains algorithmes. Par exemple, en
numération simple de position en base 2, la division et la multiplication par 2 sont très
efficaces : elles correspondent à de simples décalages.
Le standard américain du NIST [91] propose l’utilisation de courbes elliptiques définies
sur des corps qui permettent de tirer parti de la représentation en base 2. Il est proposé
d’utiliser des nombres premiers très particuliers, les pseudo-Mersenne [79], permettant d’effectuer
les réductions modulaires très efficacement lorsque les valeurs sont représentées en
base 2. Par exemple, un des corps proposé est FP521 avec P521 = 2521 − 1, pour lequel 2
additions suffisent pour effectuer une réduction modulaire. Nous verrons dans les travaux
de cette thèse qu’il est possible de trouver des nombres premiers qui sont eux adaptés à la
représentation modulaire des nombres, que nous allons brièvement introduire ci-dessous.
La représentation modulaire des nombres (RNS)
Dans cette thèse, une segmentation va être faite entre la numération simple de position
qui est de très bas niveau et la représentation finale des valeurs. Nous allons toujours représenter
les nombres avec des « groupes de bits », mais organisés de façon bien différente
de la représentation habituelle. Cette représentation, appelée représentation modulaire des
nombres ou RNS [49, 119] (pour residue number system) a été proposée à l’origine pour
des applications de traitement du signal [26, 60] et plus récemment pour des calculs cryp-13
canal 1
±×
mod m1
w
z1
w
y1
w
x1
canal 2
±×
mod m2
w
z2
w
y2
w
x2 . . .
. . .
. . .
. . .
canal n
±×
mod mn
w
zn
w
yn
w
X xn
Y
Z
Figure 1 – Addition et multiplication sur les canaux parallèles en RNS.
tographiques [10, 52, 87]. Cette représentation permet d’effectuer des calculs rapides sur
de très grands éléments, entiers ou éléments de grands corps finis, ce qui est très intéressant
pour la cryptographie asymétrique. Dans cette représentation, les entiers de ` bits
sont découpés en n morceaux bien plus petits, de w bits seulement. Typiquement, pour
ECC, on a ` ∈ [160, 600] (pour les besoins de sécurité actuels) et w ∈ [16, 64] en pratique
sur les circuits actuels, avec n × w > `. En RNS, un entier X sera représenté par
−→
X = (x1, . . . , xn) = (X mod m1, . . . , X mod mn), où (m1, . . . , mn) sont des moduli de w
bits. On dit alors que (m1, . . . , mn) est la base RNS et
−→
X la représentation RNS de X. On
appelle canal tous les traitements effectués modulo un des éléments de la base. L’originalité
du RNS vient du fait que pour un certain nombre d’opérations, dont la multiplication et
l’addition, les calculs sont fait indépendamment sur chacun des morceaux. En fait, on a :
−→
X
−→
Y = (|x1 y1|m1
, . . . , |xn yn|mn
) ,
avec ∈ {+, −, ×}. Les multiplications et les additions/soustractions sont donc découpées
en petites opérations indépendantes sur w bits. Ces petites opérations sont parallèles
de façon naturelle, permettant d’obtenir très rapidement le résultat d’une somme ou d’un
produit. La figure 1 illustre le parallélisme du RNS et l’indépendance des calculs sur les
différents moduli/canaux. On a deux arithmétiques distinctes : l’arithmétique sur chacun
des canaux et l’arithmétique combinant les canaux pour faire les opérations sur la totalité
de l’entier qu’on appellera arithmétique RNS. L’arithmétique des canaux, c’est-à-dire modulo
l’un des mi
, est en fait l’arithmétique modulaire classique, sur w bits. On représente
les valeurs en numération simple de position et on choisit les moduli pour que les calculs
soient efficaces, en choisissant des pseudo-Mersenne. Un travail très récent déroge au choix
des pseudo-Mersenne, proposé par Bajard et Merkiche [14], ce qui permet d’avoir plus de
choix pour définir la base RNS. Ils effectuent des petites réductions de Montgomery [82]14 INTRODUCTION
±× ±, × sur un canal ±, × en RNS changement de base modulo P en RNS
1 n
temps
n
±×
±×
±×
±×
•
•
•
±×
±×
±×
±×
•
•
•
±×
±×
±×
±×
•
•
•
±×
±×
±×
±×
•
•
•
• • •
• • •
• • •
• • •
±×
±×
±×
±×
•
•
•
±×
±×
±×
±×
•
•
•
±×
±×
±×
±×
•
•
•
Figure 2 – Séquence de calcul typique en RNS pour la cryptographie : enchaînement
de multiplications et d’additions RNS suivies d’une réduction modulo P en supposant les
opérations sur les canaux parallélisées.
sur les canaux de w bits. Les algorithmes de cette thèse porteront eux sur l’arithmétique
RNS, c’est-à-dire sur la combinaison des valeurs dans les différents moduli pour effectuer
nos calculs efficacement pour des opérations plus compliquées que la multiplication, comme
la réduction modulaire et l’inversion modulaire.
Au vu de la figure 1 seule, on pourrait croire qu’avec n unités arithmétiques, il suffit de
prendre des moduli très petits, c.-à-d. avec w très petit, pour calculer le plus rapidement
possible. Il est vrai qu’en réduisant w, on réduit la complexité des calculs sur chacun des
canaux. Par contre, on va augmenter celle de la réduction modulaire, qui est une opération
essentielle aux calculs cryptographiques. En effet, la multiplication et la réduction modulaire
sont en contradiction en RNS pour le choix de la taille des moduli. La figure 2 illustre
le coût d’une réduction modulaire et d’une multiplication ou addition RNS suivant n, le
nombre de moduli. Alors qu’une multiplication ne demande que n multiplications de w
bits, qui peuvent toutes être effectuées en parallèle, la réduction modulaire a un coût quadratique
(≈ 2 n
2
). En supposant que nous puissions effectuer n multiplications ou additions
en parallèle sur une architecture, une multiplication sera effectuée en à peu près 2n fois
moins de cycles que la réduction modulaire. Ceci est dû à l’utilisation de changements de
base [120] pour la réduction modulaire, qui est une fonction permettant de passer d’une
représentation RNS définie par une première base, à une seconde représentation RNS défi-
nie par une deuxième base. Cette fonction est, actuellement, indispensable pour faire une
réduction modulaire. Le côté quadratique du changement de base est illustré à la figure 2 :
chacun des n moduli de la base d’arrivée va opérer sur les valeurs correspondant aux n
moduli de la base de départ, ce qui donne bien n
2 opérations. Pour chaque moduli, n opé-15
rations sont effectuées, nous n’avons pas déroulé ces opérations dans la figure 2 par soucis
de place. Comme nous le verrons dans le chapitre 1, le choix du nombre de canaux n’est
pas une question facile, et n’a pas été très étudié pour des tailles cryptographiques.
Une des subtilités de la représentation RNS est que nous devrions plutôt parler de
représentations au pluriel. En effet, à la différence de la numération simple de position en
base 2 qui est un objet très précis, une représentation RNS va être définie par un ensemble
de moduli. C’est d’ailleurs ce qui d’une part, apporte la flexibilité de la représentation,
et d’autre part, permet de trouver de nouvelles optimisations en jouant sur l’interaction
entre la définition des moduli et l’arithmétique RNS. La plupart des algorithmes de l’état
de l’art ne posent que de faibles contraintes sur le choix des moduli, généralement pour
garantir une bonne arithmétique sur ceux-ci (on choisit des nombres pseudo-Mersenne).
C’est un peu comme si on proposait des algorithmes pour la numération simple de position
sans utiliser les spécificités de la base 2. Certaines propositions ont quand même été faites
en contraignant plus fortement le choix des moduli, afin d’améliorer l’arithmétique RNS et
seront présentées dans l’état de l’art. Par contre, le fait de ne pas trop contraindre le choix
des moduli permet d’utiliser certaines protections contre les attaques par canaux cachés
basées sur le RNS, comme la contre-mesure Leak Resistant Arithmetic (LRA [11]). Cette
protection consiste à tirer au hasard une base avant d’effectuer le calcul cryptographique,
ce qui a pour effet de changer la représentation des éléments, et permet de lutter contre
des attaques statistiques sur plusieurs exécutions de ce calcul.
Dans le cadre d’implantations matérielles pour la cryptographie, la représentation RNS
n’a pas encore connu beaucoup d’évolutions. En effet, la plupart des implantations sont
complètement parallélisées, c’est-à-dire avec autant d’unités de calcul que de canaux, afin
d’obtenir un temps d’exécution le plus faible possible (cf. table 1.6 dans la section 1.3.5).
Parfois, pour certaines implantations sur de grands paramètres, comme pour RSA, un
grand diviseur du nombre de moduli a été choisi. On peut citer en exemple l’implantation
de Nozaki et al. [87], qui intègre 11 unités arithmétiques parallèles, pour des bases de 22, 33
ou 66 moduli. Pourtant, la flexibilité du RNS devrait mener à toute une zoologie de types
d’implantations différentes, que ce soit grâce à l’indépendance des canaux ou encore la flexibilité
sur la paramétrisation des canaux. En effet, la modularité que permet naturellement
la représentation peut sembler sous-exploitée au vue des références de l’état de l’art. En
réalité, comme présenté au chapitre 1, le nombre de propositions est en train d’augmenter,
bien que souvent basées sur le même modèle. La modularité a au moins deux avantages
pour nos applications. Premièrement, elle permet de changer facilement la surface allouée
à notre circuit, sans changer les opérateurs implantés : il suffit de retirer ou d’ajouter des
unités arithmétiques de calcul sur les moduli. C’est un véritable atout lorsque l’on considère
la conception d’un produit pour qui la cryptographie et la sécurité ne sont seulement que
des fonctionnalités annexes, certes nécessaires, du cahier des charges, comme par exemple
pour un service de vidéo à la demande. Deuxièmement, grâce à cette modularité, on peut
de réduire le nombre d’unités arithmétiques, permettant de rendre aléatoire l’ordre des moduli
sur lesquels on calcule, à l’intérieur d’une même base, pour protéger le circuit contre
certaines attaques par canaux cachés.
Outre une partie des possibilités d’implantation qui n’ont pas été exploitées, la représentation
elle-même n’a subi que très peu de modifications pour fournir de meilleurs résultats.
Les mises en œuvre du RNS ne s’éloignent finalement que très peu de la définition provenant
du théorème des restes chinois. Par opposition, l’arithmétique sur la représentation16 INTRODUCTION
classique binaire a subit toute sorte de modifications pour accélérer les calculs, que ce soit
pour les additions ou les multiplications (par exemple en introduisant de la redondance
dans la représentation). Dans le cas du RNS, le calcul modulaire utilise 2 bases de tailles
égales depuis que les premières adaptations RNS de l’algorithme de réduction modulaire
de Montgomery ont été proposées [6, 64, 99]. Les améliorations de la réduction modulaire
en RNS sont depuis lors toujours restées sur cette approche, généralement en améliorant
des sous-parties de l’algorithme. La représentation n’a été véritablement modifiée que ré-
cemment, avec les travaux de Gandino et al. [48]. Les auteurs se sont autorisés à ne pas
travailler exactement en représentation RNS dans la seconde base, mais cette modification
leur a permis de réduire le nombre de calculs car celle-ci s’intègre parfaitement dans l’algorithme
de réduction de Montgomery RNS.
Même si dans les détails la proposition de Gandino et al. [48] reste très proche du RNS
habituel, elle marque peut-être le début d’une évolution beaucoup plus profonde de l’arithmétique
RNS. Le RNS est utilisé pour faire le lien entre les mathématiques et l’arithmétique
d’un côté, et le matériel de l’autre : il y a donc deux directions vers lesquelles tendre pour
améliorer les implantations. Le travail de Gandino et al. porte essentiellement sur la ré-
duction du nombre d’opérations, leur travail tend donc à améliorer le côté arithmétique
même si cela permet au final de réduire le nombre de cycles dans leur implantation RSA
en RNS. Elle ne porte pas sur une évolution du RNS pour le matériel. Il n’y a pas encore
eu, à notre connaissance, de véritables modifications de la représentation afin d’obtenir
une architecture moins coûteuse par exemple. Il est quand même souvent considéré que
w, la taille des moduli, est très proche de la taille des mots machines, ou des multiplieurs
des blocs DSP pour les implantations FPGA. Malgré tout, cette considération est juste
un choix plus ou moins astucieux des moduli, et non pas une transformation de la repré-
sentation pour le matériel. On essaye généralement de faire une bonne implantation du
RNS classique plutôt que d’essayer de modifier celui-ci pour avoir une bonne implantation.
Après tout, la représentation RNS hérite naturellement d’un certain nombre de bonnes
propriétés pour le matériel, comme la non propagation de retenue pour l’addition et la
multiplication, et son haut niveau de parallélisme. C’est donc déjà un bon point de départ
pour le matériel, mais ce potentiel là n’a peut-être pas, et même sûrement pas, atteint son
maximum. Dans un futur proche, outre les améliorations arithmétiques, la représentation
RNS gagnera sûrement aussi sur son implantation.
Pour finir, les caractéristiques particulières du RNS permettent non seulement d’obtenir
des implantations cryptographiques rapides, mais aussi de protéger le circuit. Nous avons
évoqué l’existence de propositions contre les attaques statistiques sur la consommation de
courant ou le rayonnement électromagnétique avec le tirage aléatoire de l’ordre des calculs
ou de la base (protection LRA [11]). Il existe aussi des protections contre les attaques par
injection de faute dans [9] et [53]. Des premières études d’implantations de telles protections
ont récemment été publiées, par exemple [94], aboutissant à de bons résultats en terme de
protection. Ces implantations sont par contre toujours proposées dans une architecture
complètement parallèle, afin de se comparer à des résultats d’implantation sans protection
en RNS. On pourrait aussi imaginer des architectures beaucoup plus orientées sécurité que
performance, et utiliser la modularité que propose la représentation RNS pour avoir encore
plus d’aléa que dans le cas complètement parallèle. C’est aussi un aspect important du
RNS, mais qui n’a pas été traité dans cette thèse pour des raisons de temps.
Les sujets de recherche sur la représentation RNS sont donc assez vastes, et beaucoup17
de travaux seront encore publiés sur le sujet. Pour conclure cette introduction, les travaux
de cette thèse vont être rapidement introduit via la présentation du plan de la thèse.
Objectifs et plan de la thèse
Les objectifs de la thèse sont d’améliorer les performances des implantations cryptographiques
utilisant le RNS, avec comme objectif particulier ECC. Ces améliorations doivent
être raisonnables en terme de surface de circuit utilisée, nous avons donc gardé comme
support architectural l’implantation proposée par Guillermin dans [52], qui est l’état de
l’art des implantations ECC en RNS, et est elle-même basée sur l’architecture de Kawamura
et al. [64]. Ces contributions gardent les bonnes propriétés du RNS (indépendance
des canaux), mais vont parfois utiliser certaines contraintes pour plus d’efficacité.
Le premier chapitre porte sur le contexte de mes travaux, et l’état de l’art dans lequel
ils s’inscrivent. La cryptographie asymétrique y est présentée plus en détail, en introduisant
les cryptosystèmes qui vont nous intéresser tout au long du document. Certaines techniques
classiques de calcul pour la cryptographie seront présentées, ainsi que certaines notions sur
la sécurité des implantations de celles-ci. Ensuite sont présentés certains algorithmes de
l’arithmétique modulaire classique, en numération simple de position en base 2. Ceux-ci
sont souvent à la base des algorithmes de l’état de l’art en RNS (ou du moins leurs idées
fondatrices), et le travail présenté au chapitre 2 reprend par exemple des idées sur les algorithmes
d’inversion. Enfin, le chapitre 1 se termine sur un état de l’art de l’arithmétique
RNS pour la cryptographie. L’accent est notamment mis sur la réduction modulaire qui
est l’opération élémentaire qui coûte le plus cher dans les implantations cryptographiques
en RNS. Un état de l’art des implantations RNS est présenté et analysé, ainsi que les choix
d’architecture.
La première contribution de la thèse, présentée au chapitre 2, porte sur l’inversion modulaire
en RNS. Cette opération difficile en RNS est effectuée généralement grâce à une
exponentiation, en utilisant le petit théorème de Fermat. Cette opération est très longue
en RNS, elle représente environ 10% du temps total de calcul d’une multiplication scalaire
complète (qui est le calcul principal pour ECC). Le coût en RNS des comparaisons et des
divisions nécessaires aux algorithmes de type « Euclide étendu » ont fait qu’il était préfé-
rable de garder l’exponentiation de Fermat, notamment dans le cadre d’une implantation
matérielle ou aucun matériel supplémentaire n’est requis. Notre proposition est une adaptation
RNS de l’algorithme d’Euclide étendu binaire, utilisant une certaine astuce pour éviter
les comparaisons et pouvant être utilisée sur l’architecture de l’état de l’art des courbes
elliptiques en RNS avec quelques petites modifications. Il en résulte un algorithme bien
plus rapide que l’état de l’art (de 5 à 12 fois plus rapide sur nos implantations FPGA)
et coûtant bien moins d’opérations pour une surface de circuit similaire. Ce travail a fait
l’objet d’une première publication à CHES 2013 [19], et sera soumis à un journal dans une
version étendue avec les nouveaux résultats présentés dans le chapitre ainsi qu’un nouvel
algorithme, qui n’a pas encore été implanté mais qui coûte moins d’opérations que notre
première proposition [19].
Le chapitre 3 présente deux contributions. La première a été publiée à ASAP 2014 [20]
sur la multiplication modulaire en RNS. La seconde contribution est un nouvel algorithme
d’exponentiation, encore non publié. L’idée principale de ce chapitre est de séparer les multi-18 INTRODUCTION
plications modulaires RNS en 2 parties, tout d’abord une étape de décomposition spécifique
à chacun des opérandes, puis une deuxième étape dépendant des deux opérandes pour obtenir
le résultat final. Ce qui va permettre de réduire le coût des calculs, c’est que l’on peut
factoriser les étapes de décomposition entre plusieurs multiplications modulaires, à chaque
réutilisation d’une des opérandes. Par exemple, dans l’état de l’art de l’arithmétique RNS,
un carré ou une multiplication par une constante coûte aussi cher qu’une multiplication
quelconque. Nous proposons un nouvel algorithme de multiplication qui, lui, va être capable
de profiter de ces réutilisations. Notre proposition est cependant moins performante
que l’algorithme de l’état de l’art sur les multiplications de deux opérandes quelconques,
s’il n’y pas de réutilisation. Suivant les séquences de calcul effectuées, nous obtenons des
coûts en nombre d’opérations meilleurs que l’algorithme de l’état de l’art sur des grands
paramètres cryptographiques. On réduit aussi le nombre de pré-calculs à stocker vis à vis de
l’algorithme de l’état de l’art [48]. Les résultats obtenus sont bons pour des exponentiations
pour les applications du logarithme discret comme les protocoles de Diffie-Hellman [38] ou
Elgamal [44]. Cet algorithme requiert par contre que le nombre premier p, qui définit le
corps de base Fp, ait une forme particulière adaptée au RNS. Cette condition empêche son
utilisation dans le cadre de RSA. Par contre, en reprenant certaines idées sur la réutilisation,
un nouvel algorithme d’exponentiation est proposé, sans condition sur p. Ce dernier
algorithme peut, lui, être utilisé avec RSA. Il permet de réduire le nombres d’opérations par
rapport à l’exponentiation de l’état de l’art en RNS [48], mais demande plus de pré-calculs.
La troisième contribution de la thèse, présentée au chapitre 4, porte sur un autre algorithme
de multiplication modulaire en RNS. Dans cette proposition, nous ne représentons
plus directement les valeurs en RNS. En fait nous découpons nos entiers en deux sousvaleurs
qui, elles, sont représentées en RNS, en reprenant l’idée de décomposition du chapitre
3. Avec ce découpage, on casse un peu l’aspect non positionnel de la représentation car
les deux sous-valeurs satisfont une relation pour retrouver la représentation RNS de notre
valeur initiale. Grâce à cette nouvelle représentation et à l’introduction de l’équivalent des
premiers de Mersenne pour le RNS, nous obtenons un algorithme qui divise presque par 2
le nombre d’opérations élémentaires par rapport à l’état de l’art, et qui est utilisable pour
des implantations de cryptographie sur courbes elliptiques. De même, le nombre de moduli
requis est divisé par 2 et le nombre de pré-calculs nécessaires par 4. Un peu à la façon de
l’utilisation des premiers pseudo-Mersenne du standard NIST [91] spécialement adaptés à
la numération simple de position en base 2, nous proposons une nouvelle façon de choisir
le corps de base spécialement adapté au calcul en RNS. Une implantation FPGA de l’algorithme
a été faite, presque deux fois plus petite que notre implantation de l’algorithme
de l’état de l’art, avec un faible surcoût en temps. Cette contribution fera bientôt l’objet
d’une soumission.
Le chapitre 5 est un chapitre à part dans la thèse car il ne concerne pas directement le
RNS, bien que traitant de tests de divisibilité et de calcul modulaire. Ce travail a été publié
à ComPAS 2013 [18] et est issu d’une collaboration avec un autre doctorant (à l’époque),
Thomas Chabrier. Ce travail s’intègre dans un contexte de recodage de clé appelé système
de représentation des nombres à base multiple [25,73] (MBNS pour multi base number system)
pour accélérer les calculs d’une multiplication scalaire d’une courbe elliptique. Cette
accélération intervient au niveau de l’algorithme de multiplication scalaire, et non pas de
l’arithmétique : elle est donc parfaitement compatible avec l’utilisation de la représentation
RNS. Ce chapitre présente une méthode pour effectuer en matériel des tests de divisibilité
de très grands nombres par de petites constantes, en parallèle. L’idée est de pouvoir effec-19
tuer à la volée le recodage, ce qui est nécessaire si par exemple on introduit un aléa dans
le scalaire pour le protéger contre des attaques par canaux cachés. L’idée principale est de
remarquer qu’un certain nombre de factorisations dans les calculs peuvent être effectuées,
réduisant le coût de notre opérateur de test de divisibilité. Pour faire apparaître ces factorisations,
il ne faut plus travailler seulement en base 2, mais dans une base plus grande de
la forme 2
w. Grâce à ces factorisations, les parties qui sont propres à chacun des tests de
divisibilité sont très réduites, ne prenant en entrée que w + bits ( = 3, 4 ou 5) au lieu
de travailler sur les centaines de bits en entrée.
Pour finir, la conclusion propose une synthèse des idées principales qui ont mené aux
différentes contributions de cette thèse et présente des perspectives à court terme de travaux
dans la lignée de ceux-ci. Le plus long terme est aussi discuté, notamment sur certaines
évolutions possibles du RNS et des architectures RNS au vu des résultats obtenus.20 INTRODUCTIONNotations
Nous allons ici introduire un certain nombre de notations utilisées dans le reste du
document. Tout d’abord, des sigles généraux sont présentés à la table 1 puis les notations
utiles à la représentation RNS à la table 2. Les notations présentées pour le RNS ne sont
utilisées qu’à partir de la section 1.3 et jusqu’à la fin du chapitre 4. Pour résumer, elles ne
sont valables que pour les parties traitant du RNS. Les notations utilisées dans le début
du chapitre 1 et dans le chapitre 5 sont détaillées localement car bien moins complexes que
celles du RNS.
La complexité des notations du RNS vient du fait que premièrement, il y a en fait une
représentation RNS par base (il faut donc pouvoir les différencier) et deuxièmement, on
rajoute un étage de détails dans les algorithmes. Par exemple, si nous prenons le cas des
courbes elliptiques, un point de la courbe est défini par un ensemble de coordonnées sur
un corps fini, par exemple FP . À ces éléments de FP vont être associés des représentations
RNS, elles-mêmes constituées de petites composantes entières. De même, les opérations
élémentaires comme l’addition sont déclinées en plusieurs niveaux : l’addition de points,
d’éléments de FP , de leur représentation RNS et enfin des composantes d’une représentation
RNS. Dans une tentative de hiérarchisation, les notations suivantes sont proposées. Les
lettres majuscules en gras représenteront les points d’une courbe, les lettres majuscules
fines seront des éléments de FP , les représentations RNS seront notées comme des vecteurs
et enfin leurs composantes seront notées en minuscule (voir table 2).
2122 NOTATIONS
ADD addition de deux points distincts d’une courbe elliptique
bloc DSP unité de calcul contenant un multiplieur/accumulateur sur FPGA
(DSP pour digital signal processing)
BRAM bloc RAM dans un FPGA
CRT théorème chinois des restes (chinese remainder theorem)
DBL doublement d’un point d’une courbe elliptique
DBNS système de numération à base double (double base number system)
DH cryptosystème de Diffie-Hellman [38]
DLP problème du logarithme discret (discrete logarithm problem)
DPA analyse différentielle de la puissance consommée (differential power analysis)
DSA standard du NIST de signature numérique [91] (digital signature algorithm)
ECC cryptographie sur courbes elliptiques (elliptic curve cryptography)
ECDH cryptosystème de Diffie-Hellman sur courbes elliptiques (elliptic curve DH )
ECDLP problème du logarithme discret sur les courbes elliptiques (elliptic curve DLP)
ECDSA standard du NIST de signature numérique ECC (elliptic curve DSA)
FF bascule (flip-flop)
FFDLP problème du logarithme discret sur les corps finis (finite field DLP)
FPGA circuit logique programmable (field programmable gate array)
FLT petit théorème de Fermat (Fermat’s little theorem)
LSBF bit de poids faibles en tête (least significant bits first)
LUT table de correspondance (look-up table)
mADD addition mixte de deux points distincts d’une courbe elliptique
MBNS système de numération à base multiple (multi base number system)
MRS représentation en base mixte (mixed radix system)
MSBF bit de poids forts en tête (most significant bits first)
NAF forme non adjacente d’un nombre (non adjacent form)
NIST institut de standardisation américain (national institue of standards and technology)
P, Q points d’une courbe elliptique
pgcd plus grand commun diviseur
ppcm plus petit commun multiple
RSA cryptosystème de Rivest, Shamir et Adleman [102]
RNS représentation modulaire des nombres (residue number system)
SPA analyse simple de la puissance consommée (simple power analysis)
TPL triplement d’un point d’une courbe elliptique
VHDL langage de description matérielle (VHSIC hardware description language)
VHSIC circuits intégrés très haute vitesse (very high speed integrated circuits)
Table 1 – Notations générales valables pour tout le document23
X, Y éléments de FP ou grands entiers
P un grand nombre premier définissant le corps de base
` taille de P, ` = dlog2 Pe et ` ≈ 160–550 bits pour ECC
w taille d’un mot élémentaire ou d’un canal
n nombre de mots nécessaires pour représenter une valeur de ` bits
k scalaire de la multiplication scalaire, k ∈ N (p. ex. Q = [k]P)
|X|P autre notation de X mod P, pour des besoins de concision
Ba = (ma,1, . . . , ma,na
) une première base RNS de na moduli
Bb = (mb,1, . . . , mb,nb
) une deuxième base RNS de nb moduli
Bc = (mc,1, . . . , mc,nc
) une troisième base RNS de nc moduli
ma,i, mb,i, mc,i entiers premiers entre eux 2 à 2, avec ms,i = 2w − hs,i
et hs,i < 2
w/2 pour s ∈ {a, b, c}
Ba|b = (ma,1, . . . , mb,nb
) concaténation des bases Ba et Bb
−−−→
(X)s = (xs,1, . . . , xs,ns
) représente l’élément X en base Bs (p. ex. s = a ou s = b|c)
avec xs,i = |X|ms,i , peut être abrégé en
−→
Xs
Ms produit des moduli de la base Bs :
Qs
i=1
Ms,i le produit de tous les moduli de Bs sauf ms,i :
Ms
ms,i −→
Ts
|Ms,i|ms,i
, . . . , |Ms,n|ms,n
, défini pour le CRT
Xb modification de la représentation RNS pour les sections 2.2 et 2.3
EMM multiplication élémentaire de w bits modulo un des ms,i
EMA addition élémentaire de w bits modulo un des ms,i
EMW mot mémoire élémentaire de w bits
BE extension (ou changement) de base
MR réduction de Montgomery RNS de l’état de l’art
MM multiplication de Montgomery RNS de l’état de l’art
FLT-MI inversion modulaire en RNS de l’état de l’art basée sur FLT
PM-MI algorithme d’inversion modulaire plus-minus proposé chap. 2
BTPM-MI variante binaire-ternaire du PM-MI proposé chap. 2
SPRR algorithme de multiplication modulaire RNS proposé chap. 3
(split - partial reduction - reduction)
SBMM algorithme de multiplication modulaire RNS proposé chap. 4
(single base modular multiplication)
Cox-Rower architecture RNS de l’état de l’art pour la cryptographie
Rower élément du Cox-Rower calculant modulo l’un des ms,i
Cox élément permettant de détecter les dépassements lors des BE
Table 2 – Notations spécifiques au RNS24 NOTATIONSChapitre 1
État de l’art
1.1 La cryptographie asymétrique
La cryptographie asymétrique repose sur la notion de fonction à sens unique à trappe,
c’est à dire une fonction facile à calculer dans un sens, mais dont l’inverse est très difficile
à calculer sans avoir la clé correspondant à la trappe [38]. Une inversion de la fonction
sans clé est censée être impossible, ou du moins à un coût « raisonnable » par rapport à
l’application visée. On peut par exemple estimer que pour certaines applications, une résistance
aux meilleures attaques connues nécessitant plusieurs années sur plusieurs centaines
de machines est suffisante. D’un autre côté, pour certaines applications relevant du secret
défense, des informations doivent rester confidentielles pour des dizaines d’années, ce qui
est aujourd’hui difficile à garantir. Grâce aux fonctions à sens unique à trappe, on peut
définir des protocoles tels que ceux de Diffie-Hellman [38], qui permettent à deux interlocuteurs
d’échanger une clé commune. Une autre utilisation est la signature numérique,
par exemple les standards Digital Signature Algorithm (DSA) et Elliptic Curve Digital
Signature Algorithm (ECDSA) de l’institut américain National Institute of Standards and
Technology (NIST) [91]. Ce type de cryptographie est aussi appelé à clé publique car elle ne
nécessite pas de clé secrète partagée au préalable par les deux interlocuteurs. Les travaux
de Diffie et Hellman [38], puis de Rivest, Shamir et Adleman [102] font parti des pionniers
de la cryptographie asymétrique, et sont toujours très utilisés dans les systèmes de sécurité
actuels. On compte aussi parmi ces pionniers Clifford Cocks, qui découvrit RSA [102]
avant ses auteurs en 1973 mais dont l’algorithme avait été classifié par le gouvernement
britannique puis déclassifié en 1997 [30].
1.1.1 Le cryptosystème RSA
Le cryptosystème RSA, du nom de ses auteurs Rivest, Shamir et Adleman [102], repose
sur un problème qui lui est propre, que nous appellerons RSAP, et qui s’énonce ainsi :
soient n un entier produit de deux nombres premiers p et q (distincts), et e un nombre
premier avec (p − 1) et (q − 1). Étant donné c, résoudre le RSAP revient à trouver m tel
que me ≡ c mod n ou, autrement dit, cela revient à trouver la racine e-ème d’un élément
modulo n.
Ce problème est proche du problème de la factorisation des grands entiers. Notamment,
si on est capable de factoriser n en p et q, on peut alors calculer d l’inverse de e modulo
(p−1)(q −1), et finalement on calcule (me
)
d = m mod n ce qui résout le RSAP. On ne sait
pas par contre si la résolution du RSAP permet de résoudre le problème de la factorisation.
2526 CHAPITRE 1. ÉTAT DE L’ART
Le protocole de chiffrement RSA est présenté à l’algorithme 1. On considère que le message
à chiffrer est un entier naturel inférieur ou égal à n − 1 (si besoin, découper les messages).
Le principal calcul est l’exponentiation modulaire et peut être effectué à l’aide d’un des
algorithmes présentés en section 1.1.4. À cause des algorithmes de factorisation des grands
entiers tels que NFS [70] (number field sieve), le nombre d’opérations à effectuer pour casser
RSA avec n = 1024 bits n’est que de 2
80. Ainsi, en 2009, un module RSA de 768 bits a été
factorisé [65], ce qui a nécessité des centaines de machines en parallèle et plus de deux ans
et demi de calcul. Différents chercheurs étudient sérieusement la possibilité de mettre en
œuvre un système pour casser RSA 1024 bits.
Algorithme 1: Protocole de chiffrement RSA [102].
Entrées : Alice diffuse sa clé publique (n, e) et garde secrète d sa clé privée
Entrées : Bob veut chiffrer le message m pour Alice, un nombre dans [0, n − 1]
Chiffrement
1) Bob récupère la clé publique de Alice, c’est à dire (n, e)
2) Bob calcule l’exponentiation modulaire c = me mod n
3) Bob envoie c à Alice
Déchiffrement
1) Alice calcule m = c
d mod n
1.1.2 Le problème du logarithme discret, application dans les corps finis
Un autre problème célèbre est celui du logarithme discret (DLP). Il peut être vu comme
une fonction à sens unique et est utilisé dans certains standards de cryptographie asymé-
trique. Le problème est défini comme suit (voir [78], pages 103–113) : soient (G, ×) un
groupe cyclique fini et g ∈ G un élément qui le génère. Calculer le logarithme discret de h
revient à trouver d tel que h = g
d dans G.
Certains cryptosystèmes sont basés sur le DLP sur des groupes G pour lesquels le logarithme
est difficilement calculable. Une idée naturelle de groupe est de choisir les éléments
de F
∗
p
, mais à cause de l’attaque du calcul d’indices sur F
∗
p
(voir [3]), on l’utilise peu. Si
on l’utilisait, l’attaque réduirait par exemple la sécurité d’un système à clé de 1024 bits à
seulement 80 bits de sécurité (comme pour RSA). Dans les faits, on choisit plutôt un sousgroupe
de F
∗
p
, noté G, d’ordre premier q. Par exemple, un sous-groupe avec environ 2
160
éléments (log2
q ≈ 160) pour p de taille 1024 bits (voir par exemple [91]). Comme expliqué
à la page 113 de [78], le calcul d’indices ne semble pas pouvoir s’appliquer directement
sur ce sous-groupe, on doit alors l’appliquer sur tout F
∗
p
, le passage de F
∗
p au sous-groupe
n’impacte donc pas la sécurité du point de vue de cette attaque. Par contre, il faut faire
attention à d’autres attaques sur le sous-groupe, comme celle de Pohlig-Hellman [96] et
l’attaque rho de Pollard [97] qui sont en O(
√q) opérations, donnant un nombre de bits de
sécurité correspondant à (log2
q)/2 lorsque q est premier. Il faut choisir q premier car ces
attaques dépendent seulement de la taille du plus gros facteur premier de q. La sécurité
conférée par ce problème est donc le minimum des attaques sur F
∗
p
et sur le sous-groupe
sélectionné. Il est recommandé de choisir des paramètres tels que le système soit aussi ré-
sistant aux deux types d’attaque. Par exemple, si blog2
qc = 160 bits, on a donc 80 bits de
sécurité pour l’attaque Pohlig-Hellman, on prend alors blog2 pc = 1024 on a aussi 80 bits
de sécurité pour le calcul d’indices [91]. Si on compare avec RSA, on se retrouve avec un
même niveau de sécurité en traitant avec des éléments de même taille (1024 ou 2048 bits1.1. LA CRYPTOGRAPHIE ASYMÉTRIQUE 27
par exemple), mais le DLP dans les corps finis (FFDLP) offre des clés bien plus petites
(160 bits contre 1024 par exemple).
Le standard américain DSA [91] du NIST, l’échange de clés de Diffie et Hellman [38]
(DH, présenté algorithme 2) et le chiffrement d’Elgamal [44] (algorithme 3) se basent sur
le fait que le FFDLP n’est pas résoluble en pratique sur un groupe approprié. Les deux
cryptosystèmes sont utilisés dans les conditions décrites dans le paragraphe précédent, c’est
à dire q est l’ordre de g modulo p, et q est un grand nombre premier. Le problème utilisé
pour ces deux protocoles est en réalité un peu plus faible que le FFDLP car il suffit de
savoir forger g
ab à partir de g
a
et g
b pour casser ces deux protocoles (il est évident que si
le FFDLP devient facile, ces cryptosystèmes n’apportent plus aucune sécurité).
Algorithme 2: Échange de clé de Diffie-Hellman [38].
Entrées : Alice et Bob sont d’accord sur (p, q, g) où q et p sont premiers, et q est
l’ordre de g dans F
∗
p
1) Alice (respectivement Bob) tire un nombre au hasard a (resp. b) dans [2, q − 2]
2) Alice (respectivement Bob) calcule u = g
a mod p (resp. v = g
b mod p)
3) Alice (respectivement Bob) envoie u (resp. v) à Bob (resp. Alice)
4) Alice (respectivement Bob) calcule la clé partagée g
ab = v
a mod p (resp.
g
ab = u
b mod p)
Algorithme 3: Protocole de chiffrement Elgamal simple [44].
Entrées : Alice garde secrète a sa clé privée et diffuse (p, q, g, ga
) sa clé publique
Entrées : Bob veut chiffrer le message m pour Alice, un nombre dans [0, p − 1]
Chiffrement
1) Bob récupère la clé publique de Alice, c’est à dire (p, q, g, ga
)
2) Bob choisi k au hasard tel que 1 6 k 6 p − 2
3) Bob calcule les exponentiations modulaires γ = |g
k
|p et δ = |m · (g
a
)
k
|p
4) Bob envoie (γ, δ) à Alice
Déchiffrement
1) Alice calcule γ
−a mod p
2) Alice obtient m = δ · γ
−a mod p28 CHAPITRE 1. ÉTAT DE L’ART
−2 −1 0 1 2
0
1
2
−1
−2
Figure 1.1 – Courbe elliptique d’équation y
2 = x
3 − x sur R.
1.1.3 Le problème du logarithme discret sur les courbes elliptiques
Nous allons maintenant nous intéresser à un autre groupe défini à l’aide d’une courbe
elliptique et l’utiliser pour le DLP. On va définir ainsi l’ECDLP, le problème du logarithme
discret sur les courbes elliptiques. L’idée d’utiliser les courbes elliptiques pour la cryptographie
a été proposée indépendamment par Koblitz [67] et Miller [80] dans le milieu des
années 1980. Cette section rappelle rapidement les définitions et outils nécessaires à la
compréhension du cadre de mes travaux, mais son but n’est pas de détailler toutes les
mathématiques sous-jacentes. Des ouvrages tels que [57] ou [31] apporteront au lecteur
plus de détails sur la cryptographie sur courbes elliptiques (ECC) et les mathématiques
sur lesquelles elle repose.
Définition 1. Une courbe elliptique E/K est une courbe lisse définie sur un corps K par
l’équation :
E : y
2 + a1xy + a3y = x
3 + a2x
2 + a4x + a6 (1.1)
où a1, a2, a3, a4, a5, a6 ∈ K.
Le fait que la courbe soit lisse, c.-à-d. sans singularité, se traduit par le fait que δ 6= 0,
où δ est le discriminant défini par :
δ = −d
2
2 d8 − 8 d
3
4 − 27 d
2
6 + 9 d2 d4 d6
d2 = a
2
1 + 4 a2
d4 = 2 a4 + a1 a2
d6 = a
2
3 + 4 a6
d8 = a
2
1 a6 + 4 a2 a6 − a1 a3 a4 + a2 a
2
3 − a
2
4
.
L’équation 1.1 est communément appelée équation de Weierstrass. Les points de la
courbe E/K sont tout simplement les couples (x, y) ∈ K2 qui satisfont l’équation 1.1. La
figure 1.1 montre un exemple de courbe elliptique sur R alors que la figure 1.2 montre 3
exemples sur des corps finis Fp, pour des petits p non utilisables en pratique.1.1. LA CRYPTOGRAPHIE ASYMÉTRIQUE 29
Figure 1.2 – Points des courbes définies par y
2 = x
3 + 3x + 5 sur F113, F1223 et F11489.
L’équation 1.1 peut être simplifiée sous certaines hypothèses sur le corps, en appliquant
un certain changement de variable. Si K a une caractéristique différente de 2 ou 3 alors le
changement de variable :
(x, y) −→
x − 3a
2
1 − 12a2
36
,
y − 3a1x
216
−
a
3
1 + 4a1a2 − 12a3
24
permet de réécrire l’équation de E/K en :
y
2 = x
3 + ax + b (1.2)
où (a, b) ∈ K2
. Le discriminant devient alors δ = −16(4a
3 + 27b
2
).
On appelle forme de Weierstrass courte l’équation 1.2, dans le cas où la caractéristique
est différente de 2 et 3. Nous allons plus précisément travailler sur le corps K = Fp, où p est
un grand nombre premier de plusieurs centaines de bits. Dans le cadre de cette thèse, les
corps en petite caractéristique (F2m) ne seront pas étudiés. En effet, l’arithmétique dans
ces corps est très différente du cas Fp et le système RNS, sous sa forme actuelle, ne semble
pas bien adapté à ces corps. Le lecteur curieux d’en savoir plus sur les courbes définies sur
F2m pourra consulter par exemple [31, 57].
Loi de groupe et ECDLP
Nous allons présenter le groupe sur lequel nous appliquerons le DLP. Une loi de groupe
peut être définie sur l’ensemble des points de la courbe. Cette loi sera notée +, P+Q est
donc l’addition des points P et Q. Ces points sont représentés par leurs coordonnées affines
P = (x1, y1) et Q = (x2, y2). La loi + applique la règle de la corde et la tangente qui, à
partir de 2 points P et Q de la courbe tels que P 6= ±Q, donne un troisième point R aussi
sur la courbe. La corde reliant P à Q coupe en fait la courbe en un troisième point (S sur
la figure 1.3), le résultat est ensuite obtenu en prenant le symétrique par rapport à l’axe
des abscisses (illustration à la figure 1.3 (a)). Le doublement de point est le cas spécial de
l’addition de point où l’on additionne un point à lui même c’est à dire [2] P = P+P. Dans
ce cas, au lieu de prendre la corde on prend la tangente à la courbe passant par P (voir
figure 1.3 (b)). Une différenciation va donc être faite suivant la nature des opérandes, pour
effectuer soit une addition soit un doublement. Pour noter spécifiquement le doublement
de la loi de groupe on utilisera DBL dans la suite de ce manuscrit et ADD pour l’addition de30 CHAPITRE 1. ÉTAT DE L’ART
−2 −1 0 1 2
0
1
2
−1
−2
S
R
P
Q
(a)
−2 −1 0 1 2
0
1
2
−1
−2
S
R
P
(b)
Figure 1.3 – Addition (a) et doublement (b) de points sur la courbe y
2 = x
3 − x sur R.
2 points distincts. La description de la loi est faite à la figure 1.3 de façon géométrique sur
R, justifiant le nom « règle de la corde et la tangente ». On peut aussi la définir de façon
algébrique, et l’adapter à des courbes sur Fp (illustrées à la figure 1.2). Afin de déterminer
complètement la loi de groupe, l’élément neutre O est défini, aussi appelé point à l’infini.
On ne peut pas lui attribuer de coordonnées affines, c’est ici une sorte de vue de l’esprit
pour compléter la loi de groupe. On l’appelle point à l’infini car on peut l’imaginer comme
un point qui serait à l’infini en coordonnée y, et pour lequel toutes les droites d’équation
x = c (c constant) passerait (voir l’exemple sur R [31], page 269).
Définition 2 (Loi de groupe en caractéristique 6= 2 et 3, pour une courbe d’équation 1.2).
Soient P = (x1, y1), Q = (x2, y2) deux points de E/Fp. On définit la loi de groupe sur les
points de la courbe comme suit :
Élément neutre : P + O = O + P = P.
Opposé d’un point : L’opposé de P est -P = (x1, −y1) (qui est aussi un point de la
courbe), on a donc P + (- P) = O.
Addition de points ADD : Si P 6= ±Q alors P+Q = (x3, y3) est un point de E/Fp où
x3 = λ
2 − x1 − x2, y3 = λ(x1 − x3) − y1 avec λ =
y2−y1
x2−x1
.
Doublement de point DBL : Si P 6= O alors [2]P = (x3, y3) est un point de E/Fp où
x3 = λ
2 − 2x1, y3 = λ(x1 − x3) − y1 avec λ =
3x
2
1+a
2y1
.
Cette loi de groupe va permettre de définir le problème du logarithme discret pour
les courbes elliptiques : l’ECDLP. On peut vérifier que la loi présentée est bien interne : si
R = P+Q, alors R ∈ E/Fp. Elle est aussi associative, car on a (P+Q)+R = P+(Q+R).
L’opération principale des protocoles qui sont basés sur l’ECDLP est la multiplication sca-1.1. LA CRYPTOGRAPHIE ASYMÉTRIQUE 31
laire (l’équivalent de l’exponentiation pour le FFDLP). La multiplication scalaire [k]P
revient à accumuler k fois le point P grâce à l’opération d’addition que nous venons de
définir. Des techniques pour effectuer cette opération sont présentées en section 1.1.4. Le
problème de l’ECDLP est donc le suivant. Soient (E/K, +) le groupe des points de la
courbe et P un élément qui génère ce groupe, alors calculer le logarithme discret de Q
revient à trouver k tel que Q = [k]P.
Si on définit ce groupe là, avec une loi moins naturelle que celle de (Fp, ×), c’est parce
qu’il n’y a pas d’autres attaques connues sur le groupe des points d’une courbe elliptique
que les attaques génériques contre le problème du DLP, si certaines précautions sont prises.
Ainsi, on ne sait actuellement pas faire d’attaques comme celle du calcul d’indice, alors que
celle-ci fonctionne contre le FFDLP. Cependant, les attaques comme celles de Pollard [97]
et de Pohlig-Hellman [96] sont toujours applicables, ce qui veut dire que l’ordre du groupe,
c’est à dire le nombre de points de la courbe #E(Fp), doit toujours être divisible par un
grand nombre premier. En pratique, on va choisir une courbe telle que #E(Fp) = lq avec
l petit, par exemple l ∈ {1, 2, 3, 4} et q un grand nombre premier. On va donc travailler
sur le sous-groupe d’ordre q. De plus, le théorème de Hasse [58] (théorème 1) nous garantit
que #E(Fp) est de la même taille que p. On en conclut donc que pour 80 bits de sécurité,
en prenant un p de 160 bits, on va générer des courbes d’environ 2
160 points. Il suffit de
trouver une courbe telle que #E(Fp) = lq avec l petit et nous aurons un système offrant
a priori une sécurité de 80 bits, pour des clés de 160 bits mais aussi des calculs sur des
nombres de 160 bits (au lieu de 1024 pour l’application du FFDLP).
Théorème 1 (Hasse [58]). Soit E une courbe elliptique définie sur Fp, alors
p + 1 − 2
√
p 6 #E(Fp) 6 p + 1 + 2√
p .
Lors de la sélection de la courbe, certaines précautions seront à prendre en plus sur le
cardinal de la courbe. Si par exemple #E/K = p (la caractéristique du corps), alors on
peut calculer un isomorphisme de la courbe vers (Fp, +) et calculer le DLP dans ce groupe
trivialement [110,114]. De même, pour éviter l’attaque MOV [77], il faut vérifier que l’ordre
l du point P (l’élément générateur du sous-groupe sur lequel on fait la multiplication scalaire)
ne divise pas p
k −1, pour k suffisamment grand (pour l > 2
160, il faut vérifier jusqu’à
k = 20, voir page 173 de [57]).
L’algorithme 4 présente la version courbes elliptiques du chiffrement Elgamal. On peut
de même transposer le protocole de Diffie-Hellman, DSA ou tout autre algorithme basé
sur le DLP. Dans la suite du document, lorsque sera évoqué la cryptographie sur courbes
elliptiques ou ECC, il sera question des protocoles reposant sur l’ECDLP, utilisant la multiplication
scalaire comme opération de base.
Pour conclure, nous allons ici présenter certains éléments de comparaison entre ECC
et RSA. Tout d’abord, la table 1.1 (issue de la page 19 de [57]) montre l’évolution prévue
des tailles RSA/FFDLP et ECDLP, en se basant sur les temps requis pour les attaques
NFS et rho de Pollard. L’écart déjà conséquent pour les niveaux de sécurité conseillés
actuellement est amené à se creuser encore et de plus en plus vite (tant que de nouvelles
attaques spécifiques aux courbes elliptiques ne seront pas trouvées).32 CHAPITRE 1. ÉTAT DE L’ART
Algorithme 4: Chiffrement avec le cryptosystème Elgamal ECC simple (source [57]).
Entrées : Alice diffuse (p, E/Fp, P, l) et sa clé publique Q, d est sa clef secrète
Entrées : Bob veut chiffrer le message M pour Alice, un point de la courbe
Chiffrement
1) Bob récupère la clé publique de Alice, c’est à dire Q et les paramètres
(p, E/Fp, P, l)
2) Bob choisi k au hasard tel que 1 6 k 6 n − 1
3) Bob calcule les multiplications scalaires C1 = [k]P et C2 = M + [k]Q
4) Bob envoie (C1, C2) à Alice
Déchiffrement
1) Alice calcule C3 = [d]C1
2) Alice obtient M = C2 − C3
Niveau de sécurité par algorithme symétrique (bits)
SKIPJACK Triple-DES AES AES AES
80 112 128 192 256
Tailles des clés (bits)
RSA 1024 2048 3072 8192 15360
FFDLP 160 224 256 384 512
ECDLP 160 224 256 384 512
Tailles des éléments (bits)
RSA 1024 2048 3072 8192 15360
FFDLP 1024 2048 3072 8192 15360
ECDLP 160 224 256 384 512
Table 1.1 – Tailles de clés et de l’arithmétique pour les cryptosystèmes asymétriques RSA,
FFDLP et ECDLP correspondant aux niveaux de sécurité des cryptosystèmes symétriques
SKIPJACK, Triple-DES et AES (source [57]).
Réf. Implémentation Slices DSP Fréq. Temps
[56] Fp NIST 224 bits 1580 26 487 MHz 365 µs
[118] RSA-1024 3937 17 400 MHz 1.71 ms
Table 1.2 – Comparaison de performances ECC et RSA sur FPGA Virtex 4 XC4VFX12
issue de [56].1.1. LA CRYPTOGRAPHIE ASYMÉTRIQUE 33
Opération temps moyen mémoire données mémoire programme
[k]P ECC-160 0.81 s 282 octets 3682 octets
[k]P ECC-224 2.19 s 422 octets 4812 octets
me mod n RSA-1024 0.43 s 542 octets 1073 octets
c
d mod n RSA-1024 10.99 s 930 octets 6292 octets
me mod n RSA-2048 1.94 s 1332 octets 2854 octets
c
d mod n RSA-2048 83.26 s 1853 octets 7736 octets
Table 1.3 – Comparaison en temps et en mémoire d’ECC et RSA-CRT sur ATmega128
issue de [55]. L’exposant public e est choisi e = 216 + 1.
Implémentation Client Serveur
ECC-160 bits 93.7 mJ 93.9 mJ
RSA-1024 bits 397.7 mJ 390.3 mJ
Table 1.4 – Consommation d’énergie issue de [123] pour une version simplifié de handshake
SSL avec authentification mutuelle utilisant RSA ou ECC sur microcontrôleur basse
consommation ATmega128.
Les tables 1.2, 1.3 et 1.4 présentent des exemples de comparaison d’implantations matérielles
et logicielles RSA et ECC. La table 1.2 issue de la contribution [56] compare ainsi
RSA-1024 et ECC avec le premier du NIST P-224. On rappelle que d’après la table 1.1,
ECC défini sur 224 bits fournit le même niveau de sécurité que RSA-2048. Les résultats
présentés montrent une forte réduction du nombre de slices de Virtex 4 (qui sont les blocs
de base du FPGA), contre une utilisation accrue du nombre de DSP blocs (qui sont des
accélérateurs arithmétiques). De plus, en terme de vitesse l’implantation ECC est presque
5 fois plus rapide, pour un niveau de sécurité supérieur. La table 1.3 présente des résultats
des auteurs de [55], qui ont comparé ECC et RSA sur des implantations sur microcontrôleur
ATmega128. On remarque que pour un petit exposant public e = 216 + 1, l’exponentiation
est plus rapide que la multiplication scalaire. Par contre, l’exponentiation utilisant l’exposant
secret d est un ordre de grandeur fois plus lent que la multiplication scalaire. Les
mêmes auteurs ont comparé dans [123] la consommation d’énergie d’un handshake SSL
simplifié utilisant soit RSA-1024 soit ECC-160 toujours sur ATmega128. Ils ont observé
une division par 4 de l’énergie consommée pour effectuer le handshake avec ECC-160, tout
en gardant une sécurité équivalente.
1.1.4 Techniques classiques de multiplication scalaire et d’exponentiation
Dans cette section sont présentés quelques algorithmes de multiplication scalaire. Ils
sont présentés pour une loi de groupe notée additivement (notation pour ECC) mais la
transformation en algorithme d’exponentiation est triviale (ainsi par exemple l’algorithme
doublement et addition 5 peut se réécrire en carré et multiplication). Les algorithmes 5
et 6 sont deux variantes de l’algorithme dit doublement et addition (ou double-and-add en
anglais), bits de poids faibles et bits de poids forts en tête, respectivement. Le principe
est de parcourir le scalaire k bit à bit afin de calculer le schéma de Hörner correspondant.
L’avantage de l’algorithme 5 provient du fait que ses lignes 3 et 4 sont parallélisables, alors
que dans l’algorithme 6, ils travaillent sur la même donnée. Par contre l’algorithme 6 ne34 CHAPITRE 1. ÉTAT DE L’ART
Algorithme 5: Multiplication scalaire doublement et addition poids faibles en tête
(source [57], p. 96).
Entrées : k = (k`−1, . . . , k1, k0)2, P ∈ E/Fp
Sortie : [k]P
1 Q ←− O
2 pour i de 0 à ` − 1 faire
3 si ki = 1 alors Q ←− Q + P
4 P ←− [2]P
5 retourner Q
travaillant que sur une seule valeur, il suffit de stocker un seul point durant le calcul. L’algorithme
7, issu de [125], permet d’accélérer les calculs en réduisant le nombre d’additions,
au prix de pré-calculs. Le scalaire k est ici parcouru par fenêtre de w bits (par exemple
w = 4). Un compromis est alors à faire entre la réduction du nombre d’additions de points
et la quantité de points pré-calculés à stocker. En plus de la mémoire pour stocker ces
points, le coût du calcul de ces points en début de multiplication scalaire doit être pris en
compte si le point de base est régulièrement changé, par exemple pour protéger le circuit
contre des attaques statistiques (cf. sous-section 1.1.6). Il existe beaucoup d’autres algorithmes
d’exponentiation et de multiplication scalaire (un exemple de plus est donné au
chapitre 3). Ces algorithmes proposent par exemple de recoder k dans une certaine repré-
sentation pour réduire encore le nombre d’additions de points. Des exemples seront donnés
dans la section 1.1.5. Pour plus de détails, le lecteur trouvera par exemple une étude des
algorithmes d’exponentiation et de multiplication scalaire rapide dans l’article [51]. En-
fin, d’autres algorithmes sont aussi utilisés pour protéger le circuit contre les attaques
par canaux cachés, par exemple la multiplication scalaire dite échelle de Montgomery [62]
(algorithme 22, chapitre 3).
Algorithme 6: Multiplication scalaire doublement et addition poids forts en tête
(source [57], p. 97).
Entrées : k = (k`−1, . . . , k1, k0)2, P ∈ E/Fp
Sortie : [k]P
1 Q ←− O
2 pour i de ` − 1 à 0 faire
3 Q ←− [2]Q
4 si ki = 1 alors Q ←− Q + P
5 retourner Q
1.1.5 Réduction du coût de la multiplication scalaire
La figure 1.4 propose une vue sur la hiérarchie des opérations d’une multiplication
scalaire. On considère généralement deux sous-niveaux : les opérations sur les points ADD
et DBL et les opérations ±, ×,
−1
sur le corps de base Fp (la plupart des études de l’état
de l’art se consacre surtout à la réduction du nombre de multiplications). Afin d’améliorer
l’efficacité de la cryptographie sur courbes elliptiques, de nombreuses approches ont été
proposées dans la littérature, aux différents niveaux de la figure 1.4. Des améliorations ont
aussi été proposées sur la réduction de l’arithmétique des courbes, c’est à dire la réduction1.1. LA CRYPTOGRAPHIE ASYMÉTRIQUE 35
Algorithme 7: Multiplication scalaire par fenêtre fixe de Yao [125].
Entrées : k = (km−1, . . . , k1, k0)2w avec ki ∈ [0, 2
w − 1], m =
`
w
et P ∈ E/Fp
Pré-calculs : T = (O, P, [2]P, . . . , [2w − 1]P)
Sortie : [k]P
1 début
2 Q ←− T(km−1)
3 pour i de m − 2 à 0 faire
4 pour j de 1 à w faire
5 Q ←− [2]Q
6 Q ←− Q + T(ki)
7 retourner Q
temps
[k]Q
DBL ADD DBL . . .
±, ×,
−1±, ×,
−1±, ×,
−1±, ×,
−1±, ×,
−1±, ×,
−1±, ×,
−1±, ×,
−1±, ×,
−1±, ×,
−1±, ×,
−1 FP
E/FP
Figure 1.4 – Hiérarchie des opérations dans une multiplication scalaire.
du coût des opérations de base telles que l’addition et le doublement de point, ou la proposition
de formules pour des opérations plus complexes pour le triplement, par exemple [39],
ou le quintuplement avec par exemple [81]. Une façon d’améliorer les formules est de changer
de système de coordonnées. En effet, les inversions modulaires étant très coûteuses vis
à vis des autres opérations modulaires, l’utilisation de systèmes de coordonnées différents
des coordonnées affines a été proposée dans la littérature [28, 32]. Ces systèmes rajoutent
un certain nombre de coordonnées, notamment pour éviter de faire une inversion à chaque
opération ADD ou DBL. Par exemple, dans [32] est évoqué un coût d’environ 30 multiplications
pour une inversion, ou même 100 multiplications pour les auteurs de [17]. Le retour
à une représentation normalisée affine demande une inversion, mais c’est la seule requise
sur toute la multiplication scalaire. Par exemple, les coordonnées projectives Jacobiennes
font correspondre le point (x, y) = (X/Z2
, Y /Z3
) à (X, Y, Z) avec Z 6= 0 pour (x, y) 6= O
(si Z = 0 alors (x, y) = O). L’équation 1.2 devient ainsi
Y
2 = X3 + aXZ4 + bZ6
.
Par exemple, les formules de la table 1.5, issues de [17] permettent de calculer l’addition
et le doublement de point sans inversion.
Le site web [17] recense un grand nombre de systèmes de coordonnées, et évalue leur coût
en terme d’opérations élémentaires sur le corps en décomptant les opérations nécessaires
aux additions, doublements, mais aussi triplements ou encore λ-doublements (formules spé-
ciales lorsqu’on enchaîne les doublements). Une autre façon d’améliorer l’arithmétique de
certaines courbes est de les choisir avec une forme particulière permettant des simplifications
dans les calculs, autrement dit de changer l’équation de définition d’une courbe pour
obtenir de nouvelles formules d’addition et doublement. Par exemple les courbes d’Edwards
[43], définies par x
2 +y
2 = c
2
(1 +dx2y
2
) avec cd(1−c
4d) 6= 0 mènent à des formules36 CHAPITRE 1. ÉTAT DE L’ART
P1 + P2 2 P1
A1 = Z
2
1 A = X2
1
A2 = Z
2
2 B = Y
2
1
u1 = X1A2 C = B2
u2 = X2A1 D = Z
2
1
S1 = Y1Z2A2 S = 2
(X1 + B)
2 − A − C
S2 = Y2Z1A1 M = 3A + aD2
H = u2 − u1 T = M2 − 2S
I = (2H)
2 X3 = T
J = HI Y3 = M(S − T) − 8C
R = 2(S2 − S1) Z3 = (Y1 + Z1)
2 − B − D
V = u1I
X3 = R2 − J − 2V
Y3 = R(V − X3) − 2S1J
Z3 =
(Z1 + Z2)
2 − A1 − A2
H
Table 1.5 – Formules pour courbe elliptique sous forme de Weierstrass courte en coordonnées
Jacobiennes (source [17]). Note : P1 = (X1, Y1, Z1), P2 = (X2, Y2, Z2) et
P3 = (X3, Y3, Z3).
nécessitant peu d’opérations [16, 17].
On peut aussi accélérer les calculs au niveau de l’algorithme de multiplication scalaire
lui même (voir des exemples en section 1.1.4). Des techniques de recodage de la clé ont
par exemple été proposées afin de limiter le nombre d’additions de points (souvent plus
coûteuses que les doublements). On peut citer par exemple le recodage en forme non adjacente
[83] (NAF pournon-adjacent form) qui recode la clé avec un nombre limité de 1
(correspondants aux additions) dans la nouvelle représentation. Un autre exemple de recodage
est la représentation à base double [39] (DBNS pour double-base number system),
qui propose de réécrire la clé dans une base double 2 et 3. Ce dernier recodage suppose
des formules de triplement de points, qui sont des formules plus efficaces que celles d’un
doublement et d’une addition combinées.
Pour finir, les travaux sur l’amélioration de l’arithmétique dans les grands nombres
trouvent une application directe dans la cryptographie asymétrique. On notera par exemple
les travaux d’implantations de [121] qui testent différentes façons d’implanter l’arithmétique
ECC sur GPU, ou encore les travaux [5, 45, 52] qui utilisent la représentation RNS pour
accélérer les calculs ECC. Les travaux de cette thèse se placent donc au plus bas niveau,
dans l’implantation de l’arithmétique du corps de base. On verra, notamment dans le chapitre
3, que les différents niveaux de la hiérarchie d’une multiplication scalaire (algorithme
de multiplication scalaire, opération sur les points et opérations sur le corps) ne peuvent
pas être complètement dissociés afin d’être le plus efficace possible, chaque modification
sur l’un des niveaux ayant un impact sur les autres.1.1. LA CRYPTOGRAPHIE ASYMÉTRIQUE 37
1.1.6 Sécurité et attaques physiques
Quelques types d’attaques
Les attaques par canaux cachés sont un type d’attaques important, notamment dans un
contexte d’implantation matérielle. En effet, ces attaques sont extrêmement dangereuses
car elles ne reposent pas sur la qualité du cryptosystème en terme de sécurité purement
mathématique, mais sur son implantation. Une implantation matérielle peut être observée
ou bien agressée, fautée et ainsi révéler des secrets à l’attaquant, tout en semblant parfaitement
sûre mathématiquement. Une implantation cryptographique doit donc être aussi
résistante aux deux types d’attaques.
On peut globalement classer en 2 catégories les attaques physiques. D’une part les
attaques par observation (ou attaques passives), qui demandent de pouvoir disposer d’un
canal de mesure fuitant de l’information, classiquement la consommation de courant [33,69],
le rayonnement électromagnétique [4, 100] ou bien le temps d’exécution [68]. D’autre part
les attaques par perturbation (ou attaques actives), où l’attaquant va, par exemple, essayer
d’introduire des fautes dans le circuit en modifiant un ensemble de bits à l’aide d’un laser.
L’exemple probablement le plus simple d’attaque par observation est l’analyse simple
de courant (SPA pour simple power analysis), proposée par Kocher et al. [69]. Comme
présenté dans la section 1.1.4, certains algorithmes d’exponentiation ou de multiplication
scalaire effectuent des calculs complètement différents suivant les bits de la clé secrète. Par
exemple, l’algorithme 5 effectue dans un cas un simple doublement, et dans l’autre une
addition et un doublement. Les additions étant des opérations bien différentes des doublements
dans le cas standard (sans contre-mesure spécifique avec des formules unifiées comme
dans [23, 61]), les différences de consommation entre les 2 opérations sont très facilement
perceptibles. Toujours dans [69] sont proposées des attaques plus sophistiquées, qui à la
suite d’un certain nombre de mesures appliquent un traitement statistique afin de retrouver
une partie de la clé. On appelle ces attaques DPA, pour Differential Power Analysis attacks.
Un exemple connu d’attaque active a été proposé par Boneh et al. dans [21]. La proposition
est une attaque contre les implantations dites RSA-CRT, où le théorème chinois des
restes (détaillé en 1.2.1) est appliqué directement sur la factorisation du module RSA. En
injectant une faute dans le calcul effectué sur l’un des facteurs premiers du modulus, on
peut retrouver directement la factorisation de celui-ci, et donc casser le système. Une autre
exemple est l’attaque safe error, présentée dans [128,129], qui permet d’attaquer certaines
implantations d’exponentiation ou de multiplication scalaire. Ces attaques révèlent des informations
sur les branchements pris suivant les bits de clé. Cela permet notamment de
différencier ces différents branchements, lorsqu’une analyse de courant simple SPA ne suffit
pas. Le modèle d’attaquant est par contre ici plus fort que celui d’une SPA car il requiert
de pouvoir attaquer avec une très bonne précision le circuit sans le détruire, comme par
exemple attaquer un registre contenant une coordonnée d’un point à un moment précis.
Des exemples de contre-mesure
Pour lutter contre les attaques de type SPA, on va généralement chercher à briser le lien
entre la consommation de courant et le côté du branchement choisi dans les algorithmes
d’exponentiation et de multiplication scalaire. Il existe notamment plusieurs façons d’uniformiser
les calculs effectués si le bit de clé ki vaut 1 ou 0.38 CHAPITRE 1. ÉTAT DE L’ART
La contre-mesure présentée par Joye et Yen dans [62], appelée échelle de Montgomery
permet d’effectuer une multiplication scalaire en effectuant pour chaque bit de k exactement
une addition de points et un doublement. En utilisant cet algorithme (présenté plus
en détail dans la section 3.2), on s’attend à ce que la consommation de courant varie très
peu suivant que le bit ki soit à 1 ou 0. De même, la contre-mesure de Möller [86] propose une
adaptation de l’algorithme de multiplication par fenêtre de Yao [125] qui effectue toujours w
doublements puis une addition, quelque soit la valeur de la fenêtre (ki+m−1, . . . , ki). Cette
contre-mesure nécessite donc le pré-calcul de constantes comme pour l’algorithme [125] et
requiert en plus un recodage de la clé pour être sûr de ne pas effectuer des opérations
irrégulières, comme une addition entre P et l’élément neutre O.
Une autre contre-mesure visant à uniformiser les calculs est par exemple proposé par
Brier et Joye dans [23]. Cette contre-mesure propose l’utilisation de formules unifiées pour
l’addition et le doublement de point. Autrement dit, on effectue exactement de la même
façon l’addition de points et le doublement de point, la consommation ne dépend alors
plus des opérations effectuées. On remarque que contrairement aux deux premières contremesures
[62, 86] qui proposent une protection au niveau algorithme de multiplication scalaire
ou d’exponentiation, celle-ci propose une protection directement au niveau des formules
pour ADD et DBL.
Pour se protéger contre les attaques statistiques, on peut aussi citer les contre-mesures
de Coron [33] qui sont des contre-mesures classiques pour les implantations ECC. Pour
protéger le circuit d’une analyse statistique, l’idée est d’introduire de l’aléa à chaque exé-
cution. Dans [33] est proposé par exemple de rendre aléatoire les coordonnées du point de
base P en coordonnées projectives ou encore d’ajouter des bits d’aléa à la clé sans changer
le résultat final.
Une autre façon de se protéger contre les attaques statistiques, mais aussi des attaques
de type SPA, est d’utiliser du matériel pour ne plus avoir de lien entre le canal observé
et les données ou les calculs effectués. Par exemple, la logique WDDL pour wave dynamic
differential logic est utilisée par Tiri et Verbauwhede [122] ou encore McEvoy et al. [76]
pour protéger le système. Dans une implantation WDDL, tout signal s est implanté de
paire avec son complémentaire s. Ainsi, un changement sur s implique un changement sur
s, ce qui rend plus difficile l’analyse de la consommation de courant et le lien qui peut
être fait avec les calculs effectués. Nous remarquons que cette contre-mesure est proposée
au plus bas niveau en terme d’implantation, elle peut donc être implantée en complément
d’autres contre-mesures.
Enfin, pour se protéger contre certaines attaques en faute, Giraud [50] propose de tester
le résultat de certains algorithmes de multiplication scalaire ou d’exponentiation avant
de retourner un résultat qui donnerait potentiellement des informations à un attaquant.
Ce type de contre-mesure doit être utilisé avec un algorithme adapté, comme l’échelle de
Montgomery. En effet, certains types d’algorithmes protégés contre la SPA peuvent retourner
un résultat juste, malgré qu’une faute ait été commise. Dans ce cas, le test final ne
protège plus de la fuite d’information.
Pour conclure sur cette section, ma thèse se plaçant dans un contexte d’implantations
matérielles de cryptographie, il est important d’évoquer les attaques par canaux cachés.1.2. ARITHMÉTIQUE MODULAIRE 39
Les propositions que nous avons faites dans la thèse portent sur l’accélération des calculs
du corps de base, elles sont pour la plupart compatibles avec les contre-mesures qui sont
faites aux autres niveaux de la figure 1.4, que ce soit sur l’arithmétique de la courbe ou
bien l’algorithme de multiplication scalaire. Par exemple, elles sont compatibles avec les
contre-mesures classiques de Coron [33] contre la DPA ou celles de Joye et Yen [62] ou
Möller [86] contre la SPA.
1.2 Arithmétique modulaire
Dans cette section, nous allons présenter quelques rappels de base du calcul modulaire,
ainsi que des techniques classiques utilisées dans le cadre de la représentation binaire
standard de position. Comme nous le verrons dans la suite du document, ces techniques
sont souvent à l’origine des techniques utilisées dans le cadre du RNS. Le calcul modulaire
spécifique au RNS sera présenté dans la section 1.3, qui lui est consacrée.
1.2.1 Définitions et rappels sur l’arithmétique modulaire
Sans définir dans l’absolu ce qu’est l’arithmétique modulaire, on peut la voir comme un
type d’arithmétique ne s’intéressant pas directement aux valeurs de nombres sur lesquels
on travaille, mais plutôt aux restes de leur division par un autre nombre. Le reste de a
divisé par b sera écrit a mod b. L’arithmétique modulaire existe depuis l’antiquité, mais
on attribue en général son développement en la version que nous connaissons aujourd’hui
à Gauss pour son ouvrage Disquisitiones Arithmeticae de 1801. On rappelle maintenant
quelques outils nécessaires au calcul modulaire.
Définition 3 (congruences).
Soient a, b, n ∈ N avec n > 0, alors a ≡ b mod n si et seulement si le reste de a divisé
par n est égal au reste de b divisé par n. Ils sont alors représentés par la même classe de
congruence modulo n. Si a ≡ b mod n et c ≡ d mod n alors :
– a + c ≡ b + d mod n ;
– a · c ≡ b · d mod n ;
– a
q ≡ b
q mod n .
On choisit généralement le représentant de la classe de congruence comme un élément
supérieur ou égal à 0 et inférieur strictement à n (il existe d’autres façons de choisir, par
exemple en ayant des représentants négatifs). On rappelle que l’inverse de a modulo n,
noté a
−1
, est, lorsqu’il existe, l’unique élément b ∈ [0, n − 1] tel que ab ≡ 1 mod n. Un tel
élément existe si et seulement si a et n sont premiers entre eux. Enfin, on rappelle que si
m divise n, alors a mod m = (a mod n) mod m.
Nous présentons maintenant le théorème chinois des restes (qui sera souvent abrégé en
CRT). Ce théorème est à la base de la représentation RNS et donc de la grande majorité
des travaux de cette thèse. Ce théorème est très ancien (un premier sous-cas a été énoncé
par Sun Tsˇu au IIIe
siècle environ, d’après Knuth [66], page 287). L’exemple de Sun Tsˇu
peut se traduire comme suit (voir [92]) :
Soient des objets dont nous ne connaissons pas le nombre.
Si nous les comptons par 3, il en reste 2.
Si nous les comptons par 5, il en reste 3.
Si nous les comptons par 7, il en reste 2.
Combien y a-t-il d’objets ?40 CHAPITRE 1. ÉTAT DE L’ART
La réponse à ce problème est 23. Cette solution est unique si on considère que le nombre
d’objets est inférieur à 105 (3 × 5 × 7). Nous allons voir comment ce genre de problème se
résout dans le cas général, avec l’énoncé du théorème.
Théorème 2 (théorème chinois des restes CRT). Soient {m1, . . . , mn} un ensemble d’entiers
premiers entre eux deux à deux et M =
Qn
i=1 mi. Soit (x1, . . . , xn) ∈ N
n alors il existe
un unique x ∈ [0, M − 1] tel que
x ≡ x1 mod m1
x ≡ x2 mod m2
.
.
.
x ≡ xn mod mn .
(1.3)
Cet élément est défini par
x =
Xn
i=1
xi
· T
−1
i
mi
· Ti
M
(1.4)
où Ti =
M
mi
où | · |M représente la réduction modulo M.
Démonstration.
Nous allons d’abord prouver que l’équation 1.4 fourni bien une solution du système 1.3.
Les éléments de {m1, . . . , mn} étant premiers entre eux 2 à 2, Ti =
M
mi
est donc premier
avec mi
, son inverse |T
−1
i
|mi
existe bien. De plus, on remarque que si i 6= j, alors Tj est
un multiple de mi
, c’est à dire |Tj |mi = 0. Pour résumer,
xi
· T
−1
i
mi
· Ti
mi
= xi
xi
· T
−1
i
mi
· Ti
mj
= 0 pour i 6= j .
(1.5)
On obtient bien |x|mi = xi pour chaque i ∈ [1, n]. Il ne reste plus qu’à prouver l’unicité
de la solution. Soient x, y ∈ [0, M−1], deux solutions du système 1.3. Alors on a |x−y|mi = 0
pour tout i ∈ [1, n]. L’entier x − y est donc multiple de tous les mi
, c’est à dire multiple
de leur produit M. Or, puisque x − y ∈ [−M + 1, M − 1], le seul multiple de M possible
est 0, on en conclut que x − y = 0.
Ce théorème sera commenté plus en détail dans la section 1.3 consacrée au RNS.
1.2.2 Réduction Modulaire
L’opération caractéristique de l’arithmétique modulaire est le calcul, à partir d’un entier,
de sa représentation modulo un certain nombre n, c’est à dire de son reste divisé
par n. Cette opération, appelée réduction modulaire, peut s’effectuer à l’aide d’une division
Euclidienne par exemple, qui retourne quotient et reste. Nous allons voir maintenant
quelques techniques utilisées habituellement pour effectuer le calcul du reste sans avoir à
calculer le quotient, qui sont efficaces en numération simple de position (les algorithmes
sont présentés pour la base 2).1.2. ARITHMÉTIQUE MODULAIRE 41
Réduction de Barrett
La réduction de Barrett [15] est une méthode qui va chercher à approcher le quotient
de la division de a par p pour obtenir a mod p. En effet, on rappelle que a mod p = a−
j
a
p
k
p.
La méthode de Barrett propose d’approcher j
a
p
k
par a
2
l
µ
2
l
, où µ =
j
2
2l
p
k
et l le
nombre de bits de p. En faisant une approximation de j
a
p
k
, nous sommes sûrs d’obtenir
le bon résultat modulo p, à un certain nombre de soustractions par p près (dépendant
directement de la précision de l’approximation). Dans la méthode proposée, il suffit de
pré-calculer µ, les autres divisions étant en fait juste des décalages. Au final, la réduction
calcule :
a −
jj a
2
l
k µ
2
l
k
p . (1.6)
L’algorithme coûte donc une multiplication de l × (l/2) bits (
µ
2
l
ne fait que l/2 bits)
et une multiplication de l bits, en plus de la soustraction de l’équation 1.6 et de celles
nécessaires à corriger le résultat. En utilisant la méthode de Barrett, on obtient un résultat
inférieur à 3p (voir [15]), on effectue alors finalement une à deux soustractions par p en
plus pour obtenir le résultat final.
Réduction de Montgomery
La réduction de Montgomery, initialement proposée en 1985 dans [82], est une méthode
de réduction permettant d’éviter l’utilisation de divisions coûteuses, les remplaçant par
des opérations très efficaces comme des décalages. Pour pouvoir utiliser ces décalages, la
contrainte est d’autoriser la sortie à être un peu supérieure à p pour une réduction modulo
p (généralement la sortie est inférieure à 2p, ce qui implique un bit supplémentaire pour
représenter les valeurs). L’algorithme 8 décrit la méthode de Montgomery.
Algorithme 8: Réduction modulaire de Montgomery [82].
Entrées : a < p2
, p < R avec pgcd(R, p) = 1
Pré-calcul : (−p
−1
) mod R
Sortie : ω ≡ a · R−1 mod p , ω < 2p
1 s ←− a · (−p
−1
) mod R
2 t ←− a + sp
3 ω ←− t/R
Cet algorithme prend en entrée un entier a < p2
, typiquement le résultat d’un produit de
deux éléments inférieurs à p. Pour que cet algorithme soit efficace, il faut que les réductions
modulo R et divisions par R soient efficaces. En représentation binaire classique, on prend
généralement R = 2l
, ainsi une réduction équivaut juste à garder les r derniers bits et les
divisions sont de simples décalages. De plus, il est aisé de constater que t défini ligne 2 est
un multiple de R en écrivant :
t ≡ a + sP ≡ a + a · (−p
−1
) · p ≡ 0 mod R ,
de même que de retrouver la borne sur le résultat ω :
ω =
t
R
=
a + sp
R
< p ·
p + s
R
< 2p .42 CHAPITRE 1. ÉTAT DE L’ART
On peut remarquer que la sortie de l’algorithme n’est pas a mod p mais a · R−1 mod p,
représentation qu’on appelle parfois domaine de Montgomery. Pour retrouver a mod p, il
suffit de multiplier le résultat de l’algorithme par R2 mod p et réappliquer l’algorithme 8
une fois. Le coût de cette opération peut être négligée, car celle-ci n’intervient qu’une fois
tous nos calculs modulaires effectués. De plus, on peut observer que le produit de deux sorties
ω1 et ω2 de l’algorithme 8 donne un élément ω1 · ω2 < 4p
2 au lieu de p
2
. Pour pouvoir
maîtriser la taille des entrées et sorties de l’algorithme lorsque les réductions modulaires
s’enchaînent, on choisit un élément R > 2M, ce qui va permettre de retourner toujours un
résultat ω < 2p, même avec une entrée entre p
2
et 4p
2
.
Remarque. La réduction de Montgomery peut être vue comme une première application
du théorème chinois des restes. En effet, puisque p et R sont premiers entre eux, si
a < p2 < pR alors d’après le CRT (avec m1 = p et m2 = R) on a :
a = |ap−1
|R · p + |aR−1
|p · R mod pR ,
et donc
(a − |ap−1
|R · p)/R ≡ |aR−1
|p mod pR ,
ce qui nous donne la formule calculée par l’algorithme 8.
Le cas des nombres de Mersenne et pseudo-Mersenne
Les deux algorithmes précédents ne demandent aucune condition sur le modulus p. Dans
certains cas, la réduction peut être grandement simplifiée, comme pour les nombres de Mersenne
qui s’écrivent de la forme 2
`−1. Par exemple, le standard ECC du NIST [91] propose
d’utiliser le corps FP521 où P521 = 2521 −1. Ainsi pour réduire x = x12
521 +x0 (x0, x1 < 2
`
)
un nombre de 1042 bits, modulo P521, il suffit de calculer x ≡ x1 + x0 mod P521. On note
que x1 + x0 est un nombre de 522 bits, une soustraction peut être nécessaire pour obtenir
le résultat final de la réduction. De même, on réduit en général un nombre de 2` bits en
un nombre de ` bits.
La même idée peut être généralisée en utilisant ce qu’on appelle les nombres pseudoMersenne,
de la forme 2
` − r, où 0 < r < √
`. L’idée de l’utilisation de tels premiers
pour ECC a été introduite par Crandall [34]. Si x = x12
` + x0 (toujours x0, x1 < 2
`
) est
un nombre de 2` bits, et p = 2` − r on a maintenant x ≡ x1r + x0 mod p. Si on pose
s = x1r+x0, alors on peut remarquer que log2
s = 3`/2+ 1 (en effet x1r est de taille 3`/2).
En appliquant cette méthode une nouvelle fois, sur s, on obtient à nouveau un nombre de
` + 1 bits auquel on soustrait une ou 2 fois P pour obtenir le bon résultat. L’algorithme 9
résume cette méthode.
Algorithme 9: Réduction modulo un nombre pseudo-Mersenne [34].
Entrées : p = 2` − r, r < √p, x = x12
` + x0 < p2
, x0, x1 < 2
`
Sortie : ω ≡ x mod p, ω < 2p
1 s ←− x1r + x0 /*s = s12
` + s0*/
2 t ←− s1r + s0
3 ω ←− |t|p
Afin de réduire le coût des multiplications par r dans l’algorithme 9, Solinas [116]
remarque que r peut être construit lui aussi de façon particulière, par exemple avec quelques1.2. ARITHMÉTIQUE MODULAIRE 43
puissances de 2. Ainsi, dans le standard du NIST est défini P192 = 2192 − 2
64 − 1, ce qui
permet de remplacer les calculs de s et t par 3 additions.
1.2.3 Inversion Modulaire
Dans cette section sont détaillées les techniques classiques pour effectuer l’inversion
modulaire, c’est à dire étant donnés p et a, comment calculer l’élément b tel que ab ≡
1 mod p. Cette opération est par exemple requise pour ECC, mais on en réduit le nombre au
minimum car elle est très coûteuse vis à vis des autres opérations comme la multiplication.
Il existe deux grandes familles d’algorithmes pour effectuer cette opération et qui sont
présentées ci-dessous.
Inversion avec le petit théorème de Fermat
Le théorème porte le nom de Pierre de Fermat, qui semble-t-il a été le premier à énoncer
le théorème qui suit dans une lettre à Frénicle de Bessy (voir [35], page 209) datant du 18
octobre 1640. Le théorème y est énoncé de la façon suivante : « Tout nombre premier mesure
infailliblement une des puissances −1 de quelque progression que ce soit, et l’exposant de
la dite puissance est sous-multiple du nombre premier donné −1 ». Ce qui peut se traduire
par le théorème 3.
Théorème 3 (Petit Théorème de Fermat ou FLT pour Fermat Little Theorem).
Soit p un nombre premier et a un nombre qui n’est pas multiple de p. Alors a
p−1 − 1 ≡
0 mod p.
De ce théorème découle directement le fait que si 0 < a < p alors a × a
p−2 ≡ 1 mod p,
et donc a
p−2 ≡ a
−1 mod p. Ainsi, le calcul de l’inverse modulaire peut se résumer à un
grande exponentiation modulaire, implantée par exemple à l’aide de l’un des algorithmes
présentés dans la section 1.1.4. Le nombre de tours de la boucle principale est donc en
log p. Pour obtenir le coût total, il suffit de multiplier ce nombre par le coût des multiplications
internes à la boucle. Les avantages de l’algorithme issu du petit théorème de Fermat
(noté FLT) viennent de sa nature d’exponentiation. Ces algorithmes sont très réguliers, et
ils demandent principalement de savoir faire des multiplications modulaires et de savoir
compter le nombre (fixe) de tours de boucle. Dans un contexte de cryptographie matérielle
pour les courbes elliptiques par exemple, les multiplieurs sont déjà implantés pour calculer
les opérations nécessaires au doublement de point par exemple. De plus, le contrôle est très
simple puisqu’il s’agit juste d’un compteur.
Algorithmes d’Euclide étendus
L’algorithme d’Euclide est à l’origine une méthode permettant de trouver le « plus
grand diviseur commun » (pgcd) de deux entiers, proposé par Euclide dans son œuvre
Les Éléments (livre 7, propositions 1 et 2, voir par exemple l’édition [46]). Cet algorithme
permet notamment, dans une version étendue, de trouver les éléments u et v tels que
ua + vb = pgcd(a, b) (identité de Bézout). Supposons que l’algorithme soit calculé pour
0 < a < p et p premier, on obtient alors ua+vp = 1. Ce qui est équivalent à ua ≡ 1 mod p,
on a donc bien calculé l’inverse de a modulo p. La méthode est détaillée dans l’algorithme 10
(issu de [66]).
L’idée principale de l’algorithme est d’utiliser l’égalité suivante :
pgcd(a, p) = pgcd(p mod a, a) .44 CHAPITRE 1. ÉTAT DE L’ART
Algorithme 10: Algorithme d’Euclide étendu (source [66]).
Entrées : a, p ∈ N avec pgcd(a, p) = 1
Sortie : U = a
−1 mod p
1 (u1, u2, u3) ←− (0, 1, p)
2 (v1, v2, v3) ←− (1, 0, a)
3 tant que v3 6= 0 faire
4 q ←− j
u3
v3
k
5 (u1, u2, u3) ←− (u1, u2, u3) − q(v1, v2, v3)
6 (u1, u2, u3) ←→ (v1, v2, v3)
7 si u1 < 0 alors
8 u1 ←− u1 + p
9 retourner u1
Ainsi en prenant successivement l’opérande le plus grand, modulo le plus petit, on réduit
leur taille à chaque tour de boucle, pour finalement arriver au pgcd final (qui vaut 1 dans
notre cas). Les opérandes sont d’abord stockés dans les variables u1, u2, u3, v1, v2 et v3.
Ces variables sont telles que u1 · a + u2 · p = u3 et v1 · a + v2 · p = v3 à la fin de chaque tour
de boucle. À la fin de l’algorithme, u3 vaut 1, le résultat est donc bien u1. On peut remarquer
qu’il n’est pas nécessaire de calculer u2 et v2, seuls u1 et v1 contiendront les valeurs
pour arriver à l’inverse, u3 et v3 étant requis pour savoir quand arrêter l’algorithme. En
moyenne, le nombre de tours de la boucle principale est environ 12 log 2
π2 ln p ≈ 0.58 log2 p,
voir par exemple [41,59] si on considère en entrée p et a un élément de Fp. Cela est presque
deux fois moins que pour l’algorithme de Fermat, mais il faut en contrepartie être capable
de faire des divisions euclidiennes sur des grands nombres de façon efficace.
Une variante célèbre de l’algorithme d’Euclide est sa version dite « binaire », proposée
initialement par Stein dans [117]. Cette variante va permettre de s’affranchir du coût des
divisions Euclidiennes, pour les remplacer par des divisions par 2 et des tests modulo 2. Ces
deux opérations étant triviales en représentation binaire, cet algorithme va permettre une
grosse réduction du coût d’une itération de la boucle principale. En contrepartie, plus de
tours de boucle principale sont effectués, environ 0.71 log2 p. La version étendue est décrite
dans l’algorithme 11 (issu de [66]§ 4.5.2).
Tout au long de cet algorithme, on retrouve l’égalité u1 ·a ≡ u3 mod p, et la même chose
pour les vi
. La différence vient de la façon dont on fait évoluer ces valeurs intermédiaires.
La propriété utilisée pour réduire les opérandes tout en gardant le même pgcd n’est plus
pgcd(a, p) = pgcd(p mod a, a), mais on utilise le fait que
pgcd(u3, v3) = pgcd(u3/2, v3) si u3 pair et v3 impair
pgcd(u3, v3) = 2 · pgcd(u3/2, v3/2) si u3 et v3 pairs
pgcd(u3, v3) = pgcd((u3 − v3)/2, v3) si u3 et v3 impairs.
(1.7)
Ainsi, dans la boucle principale on commence par diviser les deux opérandes par 2 tant
qu’ils sont pairs. Lorsqu’on divise par 2 la valeur v3 par exemple, il faut mettre à jour la
valeur associée v1 pour conserver (v1/2) · a ≡ (v3/2) mod p, quitte à rajouter p à v1 si sa
valeur est impaire. Après les deux boucles internes de parité, u3 et v3 sont impairs (on est
dans le troisième cas de l’équation 1.7) : on fait donc la différence du plus grand et du plus1.2. ARITHMÉTIQUE MODULAIRE 45
Algorithme 11: Algorithme d’Euclide étendu binaire de [66]§ 4.5.2.
Entrées : a, p ∈ N, p > 2 avec pgcd(a, p) = 1
Sortie : |a
−1
|p
1 (u1, u3) ← (0, p), (v1, v3) ← (1, a)
2 tant que v3 6= 1 et u3 6= 1 faire
3 tant que |v3|2 = 0 faire
4 v3 ← v3
2
5 si |v1|2 = 0 alors
6 v1 ← v1
2
7 sinon
8 v1 ← v1+p
2
9 tant que |u3|2 = 0 faire
10 u3 ← u3
2
11 si |u1|2 = 0 alors
12 u1 ← u1
2
13 sinon
14 u1 ← u1+p
2
15 si v3 ≥ u3 alors
16 v3 ← v3 − u3
17 v1 ← v1 − u1
18 sinon
19 u3 ← u3 − v3
20 u1 ← u1 − v1
21 si v3 = 1 alors retourner |v1|p sinon retourner |u1|p
petit, puis on applique à nouveau la règle 1.7.
Pour finir est présentée ici une variante de l’algorithme binaire d’Euclide étendu, utilisant
une astuce appelée plus-minus. Les auteurs de [22] ont proposé de remplacer la
comparaison v3 > u3 par un test modulo 4 dans l’algorithme binaire du calcul du pgcd.
Cette astuce est très intéressante pour les représentations dans lesquelles les comparaisons
sont difficiles (comme RNS). Il faut surtout être capable de faire de façon efficace
des réductions modulo 4. L’algorithme 12, proposé dans [37], est une version étendue de
l’algorithme de calcul de pgcd de [22]. L’astuce est de remarquer que si deux entiers sont
impairs, alors leur somme ou (exclusif) leur différence est un multiple de 4. Ainsi, au lieu
d’effectuer une comparaison entre les valeurs u3 et v3 comme dans l’algorithme 11, on teste
la valeur modulo 4 de leur somme. Si on obtient 0, on effectue ensuite une division par 4 de
cette somme, sinon on divise par 4 la différence. Des petites comparaisons sont effectuées
sur les valeurs de contrôle lu et lv, mais ces valeurs là sont très petites devant la taille
des opérandes (elles sont de taille log2
log2 p). Dans l’algorithme 12, des fonctions div2 et
div4 sont définies. La fonction div2 effectue en fait les lignes 5,6,7 et 8 de l’algorithme 11,
c’est à dire elle divise par 2 modulo p son entrée. De même div4 divise par 4 modulo p, sa
définition complète dépend de la valeur |p|4. Par exemple, si |p|4 = 3, alors
v1/4 si |v1|4 = 0
(v1 + p)/4 si |v1|4 = 1
(v1 + 2p)/4 si |v1|4 = 2
(v1 − p)/4 si |v1|4 = 3 ,46 CHAPITRE 1. ÉTAT DE L’ART
ce qui correspond bien à la division par 4 modulo p. Autrement dit, on construit un
multiple de 4, en ajoutant un certain nombre de fois p, qui est finalement divisé par 4.
Algorithme 12: Inversion modulaire plus-minus [37].
Entrées : a, p ∈ N avec pgcd(a, p) = 1, ` = dlog2 pe
Sortie : |a
−1
|p
1 (u1, u3) ← (0, p), lu ← `
2 (v1, v3) ← (1, a), lv ← `
3 tant que lv > 0 faire
4 si |v3|4 = 0 alors
5 v3 ← v3/4
6 v1 ← div4(v1, p)
7 lv ← lv − 2
8 sinon si |v3|2 = 0 alors
9 v3 ← v3/2
10 v1 ← div2(v1, p)
11 lv ← lv − 1
12 sinon
13 v
∗
3 ← v3, v
∗
1 ← v1, l
∗
u ← lu, l
∗
v ← lv
14 si |u3 + v3|4 = 0 alors
15 v3 ← (v3 + u3)/4
16 v1 ← div4(v1 + u1, p)
17 sinon
18 v3 ← (v3 − u3)/4
19 v1 ← div4(v1 − u1, p)
20 si lv < lu alors
21 u3 ← v
∗
3
, u1 ← v
∗
1
, lu ← l
∗
v
, lv ← l
∗
u − 1
22 sinon v ← v − 1
23 si u1 < 0 alors u1 ← u1 + p
24 si u3 = 1 alors retourner u1 sinon retourner p − u1
Les auteurs de [36] fournissent des résultats d’implantation FPGA Spartan 3 des diffé-
rents algorithmes d’inversion présentés dans cette section (voir pages 113-116 de [36]). Pour
leurs implantations, les algorithmes les plus efficaces sont clairement l’algorithme d’Euclide
étendu binaire ainsi que sa variante plus-minus. Les deux implantations sont très proches
en termes de temps, et la surface de la version plus-minus se révèle un peu plus petite.
L’algorithme classique d’Euclide étendu et celui issu du FLT sont tous deux loin derrière
(l’algorithme du FLT restant le plus lent).
1.3 La représentation modulaire des nombres (RNS)
La représentation modulaire des nombres, ou RNS (residue number system) a été introduite
indépendamment par Svodoba et Valach [119] d’un côté et Garner [49] dans les
années 50. Proposée initialement pour des problèmes de vérification des calculs, elle a ensuite
été utilisée pour des problèmes de traitement du signal [26, 60] puis plus récemment
pour différentes implantations de cryptographie asymétrique. Par exemple des travaux sur
l’implantation de RSA et FFDLP [10,71,87] (1024–4096 bits), d’autres sur ECC [52,72,104]1.3. LA REPRÉSENTATION MODULAIRE DES NOMBRES (RNS) 47
temps
[k]Q
DBL ADD DBL . . .
±, ×,
−1±, ×,
−1±, ×,
−1±, ×,
−1±, ×,
−1±, ×,
−1±, ×,
−1±, ×,
−1±, ×,
−1±, ×,
−1±, ×,
−1
ma,1
ma,2
ma,3
ma,1
ma,2
ma,3
ma,1
ma,2
ma,3
ma,1
ma,2
ma,3
ma,1
ma,2
ma,3
ma,1
ma,2
ma,3
ma,1
ma,2
ma,3
ma,1
ma,2
ma,3
ma,1
ma,2
ma,3
ma,1
ma,2
ma,3
ma,1
ma,2 { ma,3
RNS
FP
E/FP
Figure 1.5 – Hiérarchie des opérations (fictives) dans une multiplication scalaire en utilisant
la représentation RNS.
(160–521 bits) et enfin sur les couplages [27,42] ont été implantés en RNS. Plus de références
sont disponibles dans le tableau 1.6. Son intérêt réside dans le fait qu’on peut découper
les opérandes et effectuer un certain nombre d’opérations indépendamment sur les diffé-
rents morceaux, c’est-à-dire sans propagation de retenue. C’est le cas notamment pour la
multiplication, les additions et les soustractions. Ces opérations peuvent donc être effectuées
naturellement en parallèle et être implantées sur des architectures exploitant cette
parallélisation. Cependant, certaines opérations sont difficiles en RNS comme la détection
de signe/dépassement, la comparaison, la division Euclidienne ou encore la réduction modulaire.
Certaines de ces opérations seront traitées particulièrement dans ce document de
thèse. Enfin, une autre difficulté pour le RNS vient du fait que c’est une représentation non
standard. Les langages de description de matériel (HDL) ainsi que les outils de conception
assistés par ordinateur (CAD) ne supportent pas directement la représentation, impliquant
un coût de développement important. La figure 1.5 illustre l’intégration du RNS dans la
hiérarchie des opérations dans une multiplication scalaire. Dans cette figure, les calculs dans
FP sont découpés en petits canaux parallèles ma,1, ma,2 et ma,3, afin d’accélérer les calculs.
Le lecteur pourra se référer aux ouvrages [92, 115, 120] pour une introduction approfondie
sur les différents aspects du RNS.
1.3.1 Définition et premières propriétés
Le CRT, présenté théorème 2, permet de lier directement chacun des éléments de [0, M−
1] à un « vecteur » (x1, . . . , xn) (avec M =
Qn
i=1 mi et xi ∈ [0, mi − 1] pour tout i). Plus
précisément, nous avons une bijection entre les éléments de Z/MZ et (Z/m1Z, . . . , Z/mnZ),
c’est à dire une nouvelle façon de représenter les éléments modulo M. L’ensemble des mi
permet alors de définir complètement cette représentation et on appelle (m1, . . . , mn) la
base RNS.
Définition 4. Soient Ba = (ma,1, . . . , ma,na
), où tous les ma,i sont des entiers naturels
premiers 2 à 2, et X ∈ Z. Alors Ba est une base RNS et on définit la représentation RNS
de X en base Ba par :
−→
X = (xa,1, . . . , xa,na
) = (|X|ma,1
, . . . , |X|ma,na
) . (1.8)
De plus, si X ∈ [0, Ma − 1] où Ma =
Qna
i=1 ma,i, et si on définit Ta,i =
M
ma,i
alors
X = |X|Ma =
Xna
i=1
xa,i · T
−1
a,i
ma,i
× Ta,i
Ma
(1.9)48 CHAPITRE 1. ÉTAT DE L’ART
w
w w
xa,1 ya,1
za,1
mod ma,1
+ − × (/)
canal (a, 1)
w
w w
xa,2 ya,2
za,2
mod ma,2
+ − × (/)
canal (a, 2)
• • •
w
w w
xa,na
ya,na
za,na
mod ma,na
+ − × (/)
canal (a, na)
Figure 1.6 – Vue globale de la représentation RNS dans la base Ba. La notation (/) désigne
la division exacte par un diviseur premier avec chacun des ma,i.
permet de retrouver X à partir de
−→
X .
La notation · désigne ici une multiplication entre deux « petites » valeurs de w bits
(la taille d’un modulo), alors que × désigne une multiplication où au moins l’un des deux
opérandes est une grande valeur, de l’ordre de n × w bits ou (n − 1) × w bits. On a introduit
dans cette définition une notation plus précise que lors de la définition du CRT
en annotant d’un indice a toutes les valeurs correspondant à Ba. Comme on le verra par
la suite, plusieurs bases seront définies et ces indices permettront de retrouver rapidement
la base dans laquelle nous travaillons. Le détail des notations est présenté dans la section
dédiée mais des rappels seront donnés tout au long du manuscrit.
L’arithmétique de base est très simple en RNS, comme indiqué sur la figure 1.6. En fait,
en utilisant les propriétés élémentaires du calcul modulaire présentés en section 1.2.1, on
voit immédiatement que les additions/soustractions ou multiplications s’effectuent canal
par canal avec
−−→
Xa
−→
Ya =
|xa,1 ya,1|ma,1
, . . . , |xa,na ya,na
|ma,na
, (1.10)
où ∈ {+, −, ×}. Sur la figure 1.6, la division est notée entre parenthèse car cela ne
concerne que la division exacte lorsque le diviseur est premier avec Ma. Dans ce cas précis,
si on note Z le diviseur, la division revient juste à multiplier par l’inverse de Z modulo
ma,i pour tout i, c’est à dire par
−−→
Z
−1
a = (|Z
−1
a
|ma,1
, . . . , |Z
−1
a
|ma,na
). On peut remarquer
l’équation 1.9 est réduite modulo Ma. Cela signifie que si on calcule une valeur plus grande
que Ma, un dépassement se produit et le résultat est réduit modulo Ma. Par exemple,
pour éviter un dépassement, deux fois plus de moduli sont nécessaires pour stocker le ré-
sultat d’un produit que pour ses opérandes. Par contre la réduction modulo Ma est faite
automatiquement lors d’un dépassement, c’est donc une opération très efficace en RNS
en base Ba. Nous verrons dans la sous-section 1.3.3 que cette propriété est utilisée pour
adapter l’algorithme de Montgomery en RNS.1.3. LA REPRÉSENTATION MODULAIRE DES NOMBRES (RNS) 49
Les opérations sont faites indépendamment sur chaque canal, sans propagation de retenue
(à la différence de la numération simple de position). Ainsi, ces opérations sont parallélisables
si nous disposons de plusieurs unités de calcul modulaire. On observe notamment
que la multiplication RNS ne coûte que na multiplications modulaires élémentaires EMM,
toutes parallèles. Nous verrons que ce parallélisme est grandement mis à contribution dans
les implantations cryptographiques pour son efficacité. De plus, le RNS est une représentation
non-positionnelle, il n’y a pas de mot de poids fort ou faible, ils ont tous une place
équivalente. Notamment l’ordre des moduli importe peu dans les calculs, on peut ainsi le
rendre aléatoire par exemple. Cet aléa a notamment été expérimenté dans l’état de l’art en
tant que protection contre certaines attaques par canaux cachés (voir dans la section 1.3.5).
En contrepartie, certaines opérations sont plus difficiles en RNS qu’en numération
simple de position. C’est le cas, entre autres, de la comparaison qui est complexe en RNS,
car c’est un système non-positionnel. On peut par exemple convertir notre vecteur RNS en
une représentation positionnelle comme la représentation MRS (présentée section 1.3.2) ou
encore la représentation binaire standard, mais ces conversions sont coûteuses (conversion
présentée section 1.3.2 pour le MRS, calcul du CRT pour la conversion vers la représentation
binaire standard). Enfin, la réduction modulaire par une valeur différente de Ma est
une opération difficile, de même que la division Euclidienne. La réduction étant aussi essentielle
que la multiplication dans les calculs pour la cryptographie, nous allons voir dans
la suite des techniques mises en œuvre pour réduire son coût, menant à une représentation
très efficace dans les implantations cryptographiques. Un outil va d’abord être introduit,
appelé extension de base (BE) qui permet d’effectuer des conversions entre 2 bases RNS.
1.3.2 Extensions de base RNS
Les extensions de base ont été introduites par Szabo et Tanaka dans [120]. Une extension
de base est une fonction permettant de passer de
−−→
Xa représenté dans la base Ba à
−→
Xb dans
Bb, qui est première avec Ba (c’est à dire Ma et Mb sont premiers entre eux). Les extensions
de base de l’état de l’art permettent d’éviter un retour à la représentation standard. Comme
nous allons le voir, il existe deux grandes techniques pour les effectuer, une utilisant encore
le CRT, l’autre passant par une représentation intermédiaire appelée mixed-radix system
(abrégée MRS [49]). On nomme ces conversions « extensions de base » car une fois
−→
Xb
obtenu, puisque Ba et Bb sont premières entre elles, la concaténation des 2 vecteurs
−−→
Xa|b
est une représentation RNS de X étendue à na + nb restes, dans la base notée Ba|b
. Dans
tous les algorithmes de l’état de l’art, on a toujours na = nb = n, les coûts seront parfois
donnés dans ce cas précis. Les extensions de base vont être utilisées dans les algorithmes
de réduction modulaire de l’état de l’art (cf. section 1.3.3).
Extensions de base RNS via la représentation MRS
La première forme d’extension de base, introduite en [120], propose d’effectuer une
conversion de la représentation RNS en base Ba à la représentation MRS [49] (définie pour
la base Ba) puis enfin de convertir cette représentation en base Bb. Nous allons donc tout
d’abord définir ce qu’est la représentation MRS en base Ba.
Définition 5. Soit (ma,1, . . . , ma,na
) un ensemble de na entiers strictement positifs et
soient Ma =
Qna
i=0 ma,i et X < Ma (on considère que ma,0 = 1). Alors la représentation
MRS de X dans la base (ma,1, . . . , ma,na
) est l’unique n-uplet (x
0
a,1
, . . . , x0
a,na
) tel que
0 6 x
0
a,i < ma,i pour tout i ∈ [1, n] et50 CHAPITRE 1. ÉTAT DE L’ART
X =
Xna
i=1
(x
0
a,i Y
i−1
j=0
ma,j ) = x
0
a,1 + x
0
a,2 ma,1 + x
0
a,3 ma,1ma,2 + . . . + x
0
a,na
nYa−1
j=0
ma,j . (1.11)
On peut convertir (xa,1, . . . , xa,na
) en (x
0
a,1
, . . . , x0
a,na
) de façon efficace, c’est à dire
passer du RNS en base Ba au MRS en base Ba. Tout d’abord, on peut remarquer que
x
0
a,1 = xa,1 en réduisant l’équation 1.11 modulo ma,1. De même, en réduisant l’équation
modulo ma,2, on obtient x
0
a,2 = |(xa,2−x
0
a,1
)·m−1
a,1
|ma,2
. L’algorithme 13 décrit complètement
la conversion RNS vers MRS.
Algorithme 13: Conversion RNS vers MRS [120].
Entrée :
−→
X = (xa,1, . . . , xa,na
) en base Ba
Pré-calculs : |m−1
a,i |ma,j pour i < j
Sortie : (x
0
a,1
, . . . , x0
a,na
)
1 x
0
a,1 ←− x1
2 x
0
a,2 ←− |(xa,2 − x
0
a,1
) · m−1
a,1
|ma,2
3 x
0
a,3 ←−
(xa,3 − x
0
a,1
) · m−1
a,1 − x
0
a,2
· m−1
a,2
ma,3
4 · · ·
5 x
0
a,na ←−
. . .
xa,na − x
0
a,1
m−1
a,1
− x
0
a,2
m−1
a,2
. . . − x
0
a,na−1
m−1
a,na−1
ma,na
L’algorithme 13 requiert na(na−1)
2
pré-calculs et autant de multiplications modulaires
élémentaires EMM. Pour finir l’extension de base, il suffit d’évaluer l’expression de X (équation
1.11) dans chacun des canaux de la seconde base. Autrement dit, on calcule
xbk =
x
0
a,1 + x
0
a,2 ma,1 + x
0
a,3 ma,1ma,2 + . . . + x
0
a,na
Ta,na
mbk
, (1.12)
pour tous les k ∈ [1, nb]. Si on suppose que les Qi−1
j=0 ma,j pour tout i ∈ [1, na] sont pré-
calculés, cette dernière étape demande na × nb EMM. Des améliorations sur cette dernière
partie ont été proposées par Bajard et al. dans [12], en choisissant bien les éléments de Ba
et Bb. En effet, le coût des multiplications modulaires élémentaires EMM peut être réduit en
prenant des moduli de la forme 2
w − c où c est une valeur avec un faible poids de Hamming.
De plus, en choisissant bien Ba et Bb, il est possible de réduire les multiplications de
l’équation 1.12 à des combinaisons de décalages et additions.
Bien qu’évoqué ici, ce type d’extension de base ne sera pas utilisé dans nos travaux
d’implantation. Tout d’abord le gain obtenu par Bajard et al. dans [12] dépend beaucoup de
l’architecture. Nous verrons que l’architecture que nous avons choisi comme base de travail,
qui est en fait l’architecture de l’état de l’art des implantations ECC en RNS, utilise des
multiplieurs embarqués sur FPGA (ceux des blocs DSP). Dans cette architecture, l’addition
se révèle même plus chère que la multiplication, comme expliqué dans la section 1.3.5.
Remplacer ces multiplications par des additions et des décalages n’est donc pas intéressant
dans ce cas. De plus, l’inconvénient de cette méthode est qu’il y a beaucoup de dépendances
de données lors de l’algorithme 13, limitant fortement la parallélisation. Les architectures
de l’état de l’art étant fortement parallélisées (le parallélisme naturel du RNS est l’un de
ses plus gros points forts), cet algorithme n’est pas très adapté. Dans [8], Bajard et al.
soulignent aussi ce fait, et estiment que la complexité temporelle de leur proposition, en
supposant n unités de calcul parallèles, est moins bonne que celle des extensions basées sur
le CRT, que nous allons maintenant présenter.1.3. LA REPRÉSENTATION MODULAIRE DES NOMBRES (RNS) 51
Extensions de base RNS utilisant le CRT
Une autre façon d’évaluer la valeur de X dans la base Bb à partir
−−→
Xa est d’évaluer le
CRT en Ba et de le réduire dans la base Bb. On peut d’abord réécrire l’équation 1.9 :
X =
Xna
i=1
xa,i · T
−1
a,i
ma,i
× Ta,i − qMa , (1.13)
où q =
Pna
i=1
xa,i · T
−1
a,i
ma,i
× Ta,i
/Ma
. L’idée des extensions basées sur le CRT est
d’évaluer l’équation 1.13 modulo chacun des éléments de Bb. On remarque d’abord que la
somme Pna
i=1
xa,i · T
−1
a,i
ma,i
×Ta,i coûte na multiplications pour le calcul de
xa,i · T
−1
a,i
ma,i
pour tout i, puis na multiplications par Ta,i pour chaque canal de Bb. Au total, on a donc
nanb+na EMM. Dans les algorithmes utilisés pour la réduction modulaire dans l’état de l’art,
on utilise des extensions de base avec na = nb = n, ce qui donne un coût de n
2 + n EMM.
Il est aussi important de noter que si nous avons n unités arithmétiques (toujours avec
na = nb = n) calculant les multiplications en 1 cycle, alors ce calcul seul demande n + 1
cycles. Maintenant, il reste à calculer q, qui est le résultat d’un quotient et qui semble
difficile à évaluer. Le matériel de calcul modulaire sur les canaux n’étant pas adapté à ce
calcul, nous allons voir comment calculer q en minimisant le coût des opérateurs nécessaires
à cette nouvelle opération.
Extensions de base CRT par extra modulo
Une première méthode a été proposée par Shenoy et Kumaresan dans [112]. En fait,
ils ont remarqué qu’en ajoutant un modulo supplémentaire ma,na+1, il était possible de
retrouver q. Posons ξa,i =
xa,i
Ma
ma,i −1
ma,i
=
xa,i T
−1
a,i
ma,i
.
D’après l’équation 1.13 on a :
q Ma =
Xna
i=1
ξa,i · Ta,i!
− X , (1.14)
qui pris modulo ma,na+1 donne
|q Ma|ma,na+1 =
Xna
i=1
ξa,i · Ta,i
ma,na+1
− xma,na+1
ma,na+1
,
aboutissant finalement à
|q|ma,na+1 =
M−1
ma,na+1
·
Xna
i=1
ξa,i · Ta,i
ma,na+1
− xma,na+1
ma,na+1
.
En choisissant ma,n+1 > q, on aura alors directement q = |q|ma,na+1 . Par définition,
on a ξa,i < ma,i et donc ξa,i Ta,i < Ma. Finalement Pna
i=1 ξa,i Ta,i < naMa, ce qui prouve
que q < na. Dans les applications cryptographiques, na est bien plus petit que la largeur
des canaux (typiquement de 2 à 7 bits, contre des canaux de 16 à 64 bits). Le modulo
supplémentaire doit juste être supérieur à q, on le choisit donc tel que ma,na+1 > na. Cet52 CHAPITRE 1. ÉTAT DE L’ART
algorithme n’est pas très cher, on peut allouer une petite ressource effectuant les calculs
sur ce petit modulo supplémentaire qui effectuera les na+1 multiplications nécessaires. Les
calculs sont seulement sur dlog2 nae bits contre w bits pour les calculs sur les canaux RNS.
Il faut noter par contre qu’il faudra effectuer tous les autres calculs cryptographiques aussi
sur ce petit canal supplémentaire, il y a donc un surcoût aussi sur les opérations basiques
RNS comme la multiplication. Cependant, on verra dans la section 1.3.3 qu’on ne peut pas
utiliser cette méthode dans certains cas.
Extensions de base CRT avec approximation
Une autre approche permet de calculer q de l’équation 1.13, ou du moins d’en calculer
une bonne approximation. Dans leur travaux [98], Posch et Posch ont remarqué qu’en
simplifiant l’expression de q on avait :
q =
$Xna
i=1
ξa,i
ma,i%
, (1.15)
avec ξa,i défini comme précédemment. En évaluant une approximation de ce rapport, on
aurait donc une approximation du CRT, et donc de
−→
Xb . Ils ont montré que si on peut
limiter X à être 0 < X < (1 − εmax)Ma, alors on peut toujours s’arranger pour que le
calcul approché donne le bon q.
Kawamura et al. [64] ont proposé une méthode permettant d’approcher efficacement q
en matériel, grâce à un accumulateur sur quelques bits, utilisé seulement lors de l’extension
de base (à la différence de la proposition précédente de Shenoy et Kumaresan). Cette
approche requiert d’avoir tous les éléments de la base sous la forme 2
w−ha,i avec ha,i < 2
w/2
(c’est-à-dire des pseudo-Mersenne de même taille). Cette condition n’est pas vraiment
contraignante car les pseudo-Mersenne sont habituellement choisis pour l’efficacité de la
réduction modulaire sur chacun des canaux. De plus, le fait que tous les éléments de la
base soient de la même taille est aussi un argument matériel, car il permet d’avoir des
unités arithmétiques identiques pour tous les canaux (aux pré-calculs près). Finalement
l’approximation se traduit par le calcul de
q
0 =
$
σ0 +
Xna
i=1
trunc(ξa,i)
2
w
%
(1.16)
où trunc(ξa,i) est une fonction qui approche ξa,i par ses t bits de poids forts suivis de w −t
bits à 0. Si t est petit alors l’évaluation de q revient juste à sommer na valeurs de t bits, la
division par 2
w sert juste à savoir où se trouve la virgule et borner l’erreur d’approximation
(voir les détails dans [64]). Par exemple, les auteurs de [87] ont implanté cette approximation
pour des calculs sur RSA 2048 bits, et t = 8 était suffisant. Ce calcul était effectué sur
un petit accumulateur, en parallèle des calculs sur les unités arithmétiques des canaux.
Avant d’expliquer plus en détail comment l’approximation fonctionne, nous allons pré-
senter l’algorithme 14 d’extension de base, issu de [64]. On peut voir qu’il y a une boucle
principale sur la première base (on compte jusqu’à na), puis une seconde interne sur la
seconde base. Dans cet algorithme, on ne calcule pas d’abord la somme pour trouver q,
mais on fait plutôt un calcul à la volée. Ainsi, plutôt que de soustraire q d’un seul coup, il
va être soustrait progressivement, remplaçant la multiplication q(−Ma) par une succession1.3. LA REPRÉSENTATION MODULAIRE DES NOMBRES (RNS) 53
Algorithme 14: Extension de base (BE) issue de [64].
Entrées :
−−→
Xa , Ba, Bb, σ0 (paramètre fixé du système)
Pré-calculs :
−−−−−→
T
−1
a
a
,
−−−→
(Ta)
b
,
−−−−−−→
(−Ma)
b
Sortie :
−→
Xb
1
−→
ξa =
−−→
Xa ×
−−−−−→
T
−1
a
a
,
−→
Xb =
−→
0b , σ = σ0
2 for i = 1, . . . , na do
3 σ = σ + trunc(ξa,i)
4 q = bσc /* Commentaire : q vaut 0 ou 1 */
5 σ = σ − q
6 for j = 1, . . . , nb do
7 xb,j = |xb,j + ξa,i · Ta,i + q · (−Ma)|mb,j
8 retourner
−→
Xb
de q soustractions de Ma. Le calcul du CRT sur les éléments de la base Bb est effectué
dans la boucle interne (en matériel sur les unités de calcul modulaire). Pour le coût de
l’algorithme, on compte généralement une multiplication RNS pour la ligne 1 (na EMM), et
na × nb EMM pour la ligne 7. Le décompte de la multiplication q(−Ma) dépend des auteurs,
on la compte soit comme na EMM en tant que produit (par exemple dans [48]), soit elle n’est
pas comptabilisée comme une multiplication mais comme q × nb EMA, où EMA dénote les
additions élémentaires sur chacun des canaux. Les contributions de l’état de l’art sont rares
à prendre en compte les additions. Il est difficile d’estimer quelle est la meilleure façon de
compter, sachant que q × nb dépend du système mais aussi de la valeur qu’on étend à une
autre base. On peut cependant borner cette valeur à na ×nb EMA pour se situer dans le pire
cas. Pour un décompte plus « mathématique », il sera plus simple de compter na EMM (c’est
à dire une multiplication RNS sur la base Ba), alors que dans un cadre d’implantation tel
que [52], la valeur na × nb EMA reflétera mieux ce qui est effectué en matériel, le matériel
étant conçu pour le pire cas, c’est à dire na soustractions sur les nb canaux.
Les deux théorèmes suivants, extraits de [64], définissent les cadres d’utilisation de
l’approximation.
Théorème 4 (issu de [64]). Soit σ0 tel que 0 6 εmax 6 σ0 < 1 et supposons X tel que
0 6 X < (1 − σ0)Ma alors q
0 = q.
Théorème 5 (issu de [64]). Soient σ0 = 0 et X tel que 0 6 X < Ma alors q
0 = q ou
q
0 = q − 1.
Cela signifie que si X est suffisamment petit par rapport à Ma (le produit des éléments
de Ba), on peut faire en sorte que q
0 = q en choisissant bien σ0 (qui est directement
déterminé par t et les éléments de la base comme nous allons voir). Si ce n’est pas le cas,
on obtient alors un résultat approché, mais on sait alors que soit q
0 = q soit q
0 = q − 1.
Le résultat de l’extension de X dans la base Bb est alors
−→
Xb si la conversion a bien
fonctionné et
−−−−−−−−→
(X + Ma)b s’il y a eu une erreur d’approximation. En fait, on commet 2
erreurs dans l’approximation. La première est due à l’utilisation de trunc et dépend donc
directement de t. La seconde est due à l’approximation des éléments de la base par 2
w.
D’après [64], on a τ = max
ξa,i−trunc(ξa,i)
ma,i
qui est l’erreur maximale due à trunc et54 CHAPITRE 1. ÉTAT DE L’ART
δ = max
2
w−ma,i
2
r
l’erreur maximale due à la division par 2
w. L’erreur maximale globale
est alors εmax = na(τ + δ). Dans [64], il est prouvé que :
Xna
i=1
ξa,i
ma,i
− na(τ + δ) <
Xna
i=1
trunc(ξa,i)
2
w
<
Xna
i=1
ξa,i
ma,i
, (1.17)
ce qui permet de déduire le théorème 5. Pour le théorème 4, remarquons d’abord que
d’après l’équation 1.14, on a :
q +
X
Ma
=
Xna
i=1
ξa,i
ma,i
,
et si on rajoute σ0 tel que na(τ + δ) 6 σ0 < 1 de chaque côté dans l’équation 1.17 on
obtient :
q +
X
Ma
− na(τ + δ) + σ0 <
Xna
i=1
trunc(ξa,i)
2
w
+ σ0 <
q +
X
Ma
+ σ0 . (1.18)
En se plaçant dans les conditions du théorème, on a X < (1 − σ0)Ma, on déduit
finalement
q 6
Xna
i=1
trunc(ξa,i)
2
w
+ σ0 < q + 1
qui prouve qu’en prenant la partie entière on obtient bien exactement q.
Nous allons maintenant voir comment ces extensions de base permettent une réduction
modulaire efficace en RNS.
1.3.3 Adaptation RNS de l’algorithme de Montgomery
L’algorithme de l’état de l’art de réduction modulaire en RNS est basé sur l’algorithme
de Montgomery, présenté à la section 1.2.2. La première adaptation RNS a été proposée
dans [99] et optimisée notamment dans [6,48,64]. L’algorithme 15 décrit l’algorithme dans
sa version initiale, avec une généralisation sur les conditions sur les entrées de l’algorithme
grâce à un paramètre α, proposée par Guillermin dans [52].
Algorithme 15: Réduction de Montgomery RNS (MR) [99].
Entrées : (
−−→
Xa ,
−→
Xb ) avec X < αP2
, Ma > αP et Mb > 2P
Pré-calculs : (
−→
Pa ,
−→
Pb ),
−−−−−−→
(−P
−1
)a ,
−−−−−→
(M−1
a
)b
Sortie :
−→
S =
−−−−−−−−−→
X|M−1
|P
P
+ δ
−→
P avec δ ∈ {0, 1} in Ba and Bb
1
−→
Qa ←
−−→
Xa ×
−−−−−−→
(−P
−1
)a /* Commentaire : réduction par Ma implicite */
2
−→
Qb ← BE −→
Qa , Ba, Bb
3
−→
Rb ←
−→
Xb +
−→
Qb ×
−→
Pb
4
−→
Sb ←
−→
Rb ×
−−−−−→
(M−1
a
)b
5
−→
Sa ← BE −→
Sb , Bb, Ba
6 retourner (
−→
Sa ,
−→
Sb )1.3. LA REPRÉSENTATION MODULAIRE DES NOMBRES (RNS) 55
Les lignes 1, 3 et 4 correspondent aux 3 lignes de l’algorithme 8 où R = Ma, plutôt
qu’à une puissance de 2. Dans l’algorithme original de Montgomery, on utilise le fait que les
réductions modulo 2
w et les divisions par 2
w sont très faciles. Ici, grâce au CRT, calculer
dans Ba opère une réduction implicite du produit Xa × (−P
−1
)a par Ma. Par contre, pour
pouvoir effectuer une division par Ma, il nous faut passer par une seconde base RNS Bb
(première avec la base Ba), pour laquelle la division exacte par Ma devient triviale comme
expliqué au début de la section 1.3. Dans chacune des bases, une seule des 2 opérations est
facile, on doit donc avoir recours à des extensions de base pour pouvoir passer de l’une à
l’autre.
Dans l’algorithme 8, la sortie de l’algorithme est inférieure à 2P et l’entrée pouvait
aller jusqu’à 4P
2
. Les travaux présentés dans [52] permettent de généraliser la condition
sur l’entrée grâce à un paramètre α. Grâce à cette généralisation, on peut utiliser la technique
de réduction paresseuse (ou lazy reduction), où on effectue une seule réduction pour
calculer par exemple (AB + CD) mod P, et plus généralement une somme de produits ré-
duite modulo P. Les multiplications et additions étant bien plus efficaces que les réductions
en RNS, cette technique est utilisée par exemple en [8] pour proposer des formules ECC
adaptées au RNS. En utilisant les mêmes arguments que pour l’algorithme 8, la taille de
la sortie est majorée par 2P (voir [52] pour la démonstration).
Quelques remarques avant de discuter des améliorations de cet algorithme qui ont été
proposées dans la littérature. Tout d’abord, l’algorithme est toujours utilisé dans le cas
na = nb = n. En effet, son cadre classique d’utilisation est la réduction après un produit
de valeurs de FP (ou alors d’une somme de produits). L’entrée est de taille de 2 log2 P,
il nous faut donc déjà 2n moduli pour la représenter (impliquant une seconde base Bb).
De plus, pour obtenir un résultat de taille log2 P (ou plutôt log2 P + ), il faut que notre
première base soit composée d’au moins n moduli (on a Ma > αP). C’est pourquoi on a
toujours na = nb = n. Ensuite, il faut bien noter que le coût global de l’algorithme est
largement dominé par les extensions de base. En effet 2 sont requises, et si on utilise une
extension de base de type CRT, on a besoin de nanb + na EMM sinon via le MRS on obtient
na(na−1)
2 + nanb EMM. Ces coûts sont donc bien plus élevés que les na ou nb EMM requises
pour faire les lignes 1, 3 et 4.
Il y a d’abord un choix à faire au niveau des algorithmes d’extension de base. Si nous
nous considérons sur une architecture parallèle, nous excluons l’extension de base via MRS
pour son manque de parallélisme. Ensuite, nous pouvons remarquer qu’il est impossible
d’utiliser l’extension de Posch et Posch [98] pour la première extension de base de manière
efficace. Cela vient du fait que l’on ne peut pas calculer
|X × (−P
−1
)|Ma
ma,n+1
efficacement
dans le modulo supplémentaire, puisqu’il ne divise pas Ma. On ne peut donc pas
évaluer q dans ce cas. Par contre, la seconde extension de base n’inclut pas de réduction
implicite, en effet, les calculs lignes 3 et 4 sont faits de telle sorte que le résultat soit borné
par 2P et comme Mb > 2P, aucune réduction n’est opérée. S peut donc bien être calculé
dans notre canal supplémentaire, ce qui nous permet d’utiliser l’extension avec extra modulo.
L’extension de base de Kawamura et al. [64] peut, elle, être utilisée pour l’extension de
base ligne 1 et celle ligne 5. En fait, en ligne 1, on va utiliser le théorème 5 car puisque Q est
une valeur prise modulo Ma, on ne peut pas assurer qu’elle soit plus petite que (1−σ0)Ma
avec σ0 > 0 (on peut avoir Q = Ma−1 par exemple). Le résultat de l’extension de base
−→
Qb56 CHAPITRE 1. ÉTAT DE L’ART
est alors soit Q soit Q+Ma dans la seconde base. Il se trouve que cela ne va pas changer le
résultat modulo P car on calcule (ligne 3)
−→
Qb ×
−→
Pb . L’impact de l’erreur d’approximation
se retrouve dans la taille de S avec une borne S < 3P au lieu de S < 2P (il suffit de choisir
la base Bb pour un Mb un peu plus grand). Par contre ligne 5, on se retrouve dans le cas
d’utilisation du théorème 4 sans erreur d’approximation, car puisque l’on peut borner S
suivant P, on peut choisir Bb et σ0 pour obtenir le bon résultat. Il est d’ailleurs nécessaire
que cette extension de base soit exacte, car elle mène au résultat final (il n’y a pas l’effet
de la multiplication par P comme après la première extension de base).
Enfin, une méthode a été proposée par Bajard et al. [7] remarquant que, puisque l’erreur
de l’approximation de l’extension de base de Kawamura et al. effectuée en ligne 1 n’a
comme effet que de fournir une sortie S < 3P au lieu de S < 2P, alors ils ont proposé
de ne même pas calculer q de l’équation 1.13. Ainsi, le résultat obtenu en base Bb est, au
pire, Q + nMa menant à une sortie S < nP. La valeur n étant assez réduite même pour
un RSA 2048 (par exemple si w = 32 alors n = 65) on peut considérer que ce surplus est
acceptable. La sortie a donc quelques bits supplémentaires (on devra augmenter la taille de
Ma). Par contre, on voit que cette méthode ne s’accorde pas très bien avec la technique de
réduction paresseuse car si on calcule par exemple (AB + CD + EF) mod P alors la sortie
sera de taille S < 3nP. Cette technique ne peut-être utilisée que sur la première extension
de base, la seconde devant être exacte, elle est souvent combinée à la réduction de Posch
et Posch [98] qui elle s’applique dans l’autre extension (voir par exemple [48]).
Le coût de l’algorithme 15 est directement lié au choix des extensions de base. Nous
n’allons pas considérer ici le cas d’une extension de base via MRS, pour les raisons déjà
évoquées plus tôt. Nous allons utiliser une extension de base via le CRT. On va considérer
une configuration avec deux extensions de base BE de Kawamura et al. [64] (que l’on notera
KBE) et une autre avec la combinaison BE de Bajard et al. [7]/Posch et BE de Posch [98]
(notée BPBE). En comptant les multiplications, et en négligeant la multiplication qMa
(considérée comme des additions), on obtient un algorithme avec un coût de 2n
2 + 5n EMM
(n
2 + n par extension de base, plus les lignes 1,3,4). Si on compte la multiplication qMa,
on obtient 2n
2 + 7n pour KBE et 2n
2 + 6n pour BPBE.
Dans leurs travaux (indépendants), Guillermin [52] et Gandino et al. [48] ont réduit
le coût de l’algorithme MR en factorisant les calculs dans les extensions de base pour
y intégrer directement les lignes 1, 3 et 4. Ainsi, la multiplication ligne 1 de l’algorithme
14
−−→
Xa ×
−−−−−→
T
−1
a
a
peut se combiner avec la multiplication ligne 1 de l’algorithme 15,
−−→
Xa ×
−−−−−−→
(−P
−1
)a en calculant directement
−−→
Xa ×
−−−−−−−−−→
−P
−1T
−1
a
a. Il faut pour cela pré-calculer
−−−−−−−−−→
−P
−1T
−1
a
a. En fait, on peut faire de même pour la seconde extension de base, en pré-
calculant
−−−−−−−−−→
M−1
a T
−1
b
b
. On peut appliquer cette méthode pour KBE et BPBE pour un
gain de 2n EMM. En plus de ces gains, Gandino et al. ont prouvé que nous pouvions factoriser
encore plus pour la seconde extension de base. En effet, ils proposent de modifier la
représentation dans la seconde base en gardant les valeurs multipliées par
−−−−−→
T
−1
b
b
, ce qui
permet ensuite de fusionner les lignes 3, 4 et de directement les intégrer dans la ligne 7 de
l’algorithme d’extension de base 14. La modification de la représentation requiert encore
quelques pré-calculs. Dans les travaux [48] sont présentés les résultats pour KBE et BPBE.
Nous obtenons finalement que le coût de l’algorithme 15 est 2n
2 + 2n EMM pour KBE et
pour BPBE si on compte qMa comme q additions. Sinon on obtient 2n
2 + 4n EMM pour1.3. LA REPRÉSENTATION MODULAIRE DES NOMBRES (RNS) 57
KBE et 2n
2 + 3n EMM pour BPBE.
1.3.4 Autres algorithmes de réduction
D’autres algorithmes non basés sur celui de Montgomery ont été proposés dans la littérature.
L’algorithme de Montgomery semble toujours être la meilleure solution, mais
peut-être que des avancées majeures de ces autres formes changeront la donne.
Phillips et al. ont proposé dans [95] une façon originale d’effectuer la réduction modulaire,
bien qu’elle soit bien moins performante (en théorie et sûrement en pratique) que
l’algorithme RNS Montgomery MR. Cette méthode, appelée somme des restes, est quand
même évoquée car elle propose une vision différente de l’algorithme RNS de l’état de l’art.
La méthode ne va pas être présentée de façon aussi détaillée que l’algorithme 15, on pré-
sentera ici l’idée utilisée et le coût global de l’algorithme. À notre connaissance, il n’y a
pas d’implantation de cet algorithme dans la littérature RNS. Dans cette proposition, on
considère la concaténation de Ba et Bb comme une seule et unique grande base. X est
une valeur issue d’un produit d’éléments de FP et l’idée de cette réduction modulaire et
d’évaluer directement le CRT modulo P, c’est à dire de calculer :
|X|P ≡
X
2n
i=1
ξa|b,i ×
Ta|b,i
P
+
−q Ma|b
P
, (1.19)
où ξa|b,i =
xa|b,i · T
−1
a|b,i
ma|b,i
. On remarque qu’il faut en fait définir notre grande base
Ba|b
(concaténation de Ba et Bb), avec plus de bits que pour MR. En effet, si on évalue l’équation
1.19, on observe que la somme obtenue est seulement majorée par P ×
P2n
i=1 ma|b,i
qu’on peut simplifier en 2n2
wP. De plus, son principal défaut est que l’équation 1.19 né-
cessite 4n
2 EMM, soit 2 fois plus que l’état de l’art. Enfin, le calcul de q est calculé avec
l’approximation de Kawamura et al. [64]. L’avantage de cette méthode est que, du fait de
sa simplicité, il y a moins de dépendances de données que dans l’algorithme 15.
Enfin, une tentative de transcription de la réduction de Barrett en RNS a été proposée
dans [106, 108]. Cette proposition étant récente, je n’ai pas encore pu étudier de façon
approfondie la contribution, mais il semble qu’elle soit moins bonne que l’algorithme de
Montgomery RNS. Cette méthode impose notamment de pouvoir effectuer des additions
et multiplications en représentation standard sur des nombres de la taille de P, ce qui
ne semble pas adapté à l’utilisation des architectures habituelles de l’état de l’art RNS.
De plus, d’après [106, 108], cet algorithme requiert aussi 4n
2 EMM, soit deux fois plus que
l’algorithme de Montgomery RNS.
1.3.5 Implantations RNS
Depuis une quinzaine d’années, le RNS prend de plus en plus d’importance dans les implantations
matérielles de cryptographie asymétrique. Dans le tableau 1.6, un bon nombre
de ces contributions sont listées, incluant aussi des implantations sur GPU et microprocesseur.
Nous allons commenter maintenant quelques unes de ces contributions, et des
stratégies vis à vis des paramètres adoptés.58 CHAPITRE 1. ÉTAT DE L’ART
ref. conf./journ. aa usage implant. ` et (n × w)
[6] IEEE TC 98 RSA N 1024 (33 × 32)
[64] EuroCrypt 00 RSA N 1024 (33 × 32)
[87] CHES 01 RSA A 250 nm 672, 1024, 2048, 4096
(22 × 32), (33 × 32)
(66 × 32), (66 × 32 ?)
[29] MWSCAS 03 RSA F Virtex 2 1024 (9 × {58, . . . , 64} ?)
[10] IEEE TC 04 RSA N 1024 (33 × 32)
[109] MELECON 06 ECC Virtex2 Pro 160 (20 × 30)
[84] IMA CC 07 RSA G 7800GTX 1024 (88 × 12 & 44 × 24)
[71] ASSC 07 RSA P Xtensa 1024 (33 × 32), 1024 (17 × 32 ?)
[121] CHES 08 RSA G 8800GTS 1024 (16 × 32 ?), 2048 (32 × 32 ?),
ECC 224 (7 × 32)
[104] IEEE TCAS I 09 ECC F Virtex E 160, 192, 224, 256
5 bases/FP size
e.g. (30 × {23, 28, 30, 35})
[72] TenCon 09 ECC P Xtensa 192 (7 × 32)
[52] CHES 10 ECC F Stratix 160 (5 × 34), 192 (6 × 33), 256 (8 × 33),
I & II 384 (11 × 35), 521 (15 × 35)
[27] CHES 11 Coupl. F Virtex 6 126, 128, 192 (courbes de Barreto-Naehrig)
Stratix 3 (8 × 33), (8 × 33), (19 × 33)
Cyclone 2
[53] ePrint IACR 11 RSA Stratix III 1024 (16 × 36 ?) (33 × 32)
[105] ISCAS 11 RSA N 1024 (33 × 32)
[127] Pairing 12 Coupl. F Virtex 6 126, 128 (courbes de Barreto-Naehrig)
(4 × 67)
[48] IEEE TC 12 RSA A 45 nm 1024 (33 × 32)
[5] Comp. J. 12 ECC G 285GTX 224 (15 × 16)
[9] Arith 13 RSA A 250 nm 1024 (33 × 32), 4096 (65 × 64)
[94] DSD 13 RSA F Spartan 3 1024 (17 × 32 ?)
[45] IEEE TVLSI 13 ECC F VirtexE 160, 192, 224, 256
Virtex 2 Pro 3 × 56, (3 × 66 & 4 × 50),
Stratix II 4 × 58, 4 × 66
[107] IEEE TCAS 14 RSA F Virtex6 1024 (66 × 16, 33 × 32)
F Virtex 2 1024 (18 × 64)
[14] ePrint IACR 14 ECC F Kintex 7 256, 521
(16 × 17 , 31 × 17)
Table 1.6 – Implantations de cryptographie asymétrique en RNS. Colonnes : 1 référence,
2 nom conférence/journal, 3 année (19aa/20aa), 4 usage (ECC, Couplages, RSA), 5 implantation
(N pour des résultats Non reportés, FPGA, ASIC CMOS, GPU, Processeur),
6 paramètres généraux (taille de FP et caractéristiques des bases RNS). ? note une implantation
RSA-CRT.1.3. LA REPRÉSENTATION MODULAIRE DES NOMBRES (RNS) 59
canal 1
rower 1
w
w
canal 2
rower 2
w
w
. . .
canal n
rower n
w
w
cox
. . .
1
t
w
w
Sortie
Entr´ee
n × w
w w w w w w
CTRL
Figure 1.7 – Architecture Cox-Rower pour le calcul ECC de [52] (adaptation de [64]).
La première implantation matérielle complète de RSA en RNS se trouve dans la contribution
[87], qui est une implantation de l’architecture dite Cox-Rower permettant le calcul
modulaire efficace en RNS. Ce travail fait suite à la proposition d’architecture [64], ou était
proposée l’astuce de Kawamura et al. et présenté le Cox-Rower. La figure 1.7 représente une
version de l’architecture de Kawamura et al. utilisée dans le cas de calculs ECC dans [52].
Cette architecture Cox-Rower est composée d’unités chargées des calculs sur les diffé-
rents canaux des bases Ba et Bb, appelés Rowers dans la figure 1.7, et d’un petit accumulateur
Cox calculant q pour l’extension de base (présenté figure 1.8). Dans cette thèse, nous
conserverons les termes anglais Cox et Rower pour garder la cohérence avec la notation de
la littérature sur le sujet et ainsi faciliter la compréhension. On pourrait traduire ces termes
par barreur pour le Cox et rameurs pour les Rowers. Comme me l’a expliqué le professeur
Kawamura rencontré lors de CHES 2013, le nom vient du fait que le Cox rythme le travail
des rameurs ou Rower durant l’extension de base (le signal passe à 1 pour ordonner la
soustraction de Ma dans l’algorithme 14, ligne 7). Le Cox laisse le véritable effort de calcul
aux Rowers, il ne doit donc pas être trop grand vis à vis de ceux-ci, mais il est indispensable
pour arriver à destination (c.-à-d. avoir une approximation correcte).
Dans l’architecture figure 1.7, les petits carrés indiquent de simples sélections de bits
(par exemple pour le Cox, les t bits de poids forts) et les petits cercles ( ) sont des
signaux de contrôle. Cette figure illustre le principe général des principales architectures
de l’état de l’art, qui sont souvent avec n Rowers pour n canaux (c’est à dire autant de
Rowers que d’éléments dans une base). Le Cox est illustré figure 1.8. Comme déjà expliqué
précédemment, c’est une petite unité composée d’un accumulateur de t bits (t choisi afin60 CHAPITRE 1. ÉTAT DE L’ART
de calculer de façon exacte q).
Il y a eu différentes variations d’architectures Cox-Rower. Par exemple, dans la version
originale de Kawamura et al. [64], une propagation de retenue entre les différents blocs est
instanciée pour effectuer la conversion RNS/représentation binaire standard. Guillermin,
dans ses travaux [52], montre qu’il n’est pas nécessaire d’avoir ces retenues entre les blocs
en effectuant une conversion un peu plus lente. Ceci dit, les temps de conversion sont né-
gligeables devant les temps de calcul de la multiplication scalaire ou d’une exponentiation.
On peut trouver un autre exemple dans le papier de Nozaki et al. [87] où les auteurs
ont choisi d’implanter un Cox par Rower (en fait un Cox est inclus dans chacun des Rowers),
pour limiter la sortance (fanout en anglais) du Cox ainsi que le routage. De plus, pour cette
implantation de RSA, 11 Rowers sont implantés permettant d’effectuer les calculs sur 22,
33 et 66 moduli. Cette contribution met donc aussi en valeur l’aspect modularité du RNS
(leur architecture permet d’effectuer des calculs RSA de 672 à 2048 bits, et jusqu’à 4096 si
on utilise une implantation de type RSA-CRT). Enfin, afin d’effectuer l’extension de base
de Kawamura et al., les auteurs ont opté pour une structure en anneau pour les Rowers,
c’est à dire que chaque Rower a sa sortie reliée à un Rower voisin.
t
t
t + 1
1
Figure 1.8 – Cox présenté dans [64].
Du côté des contributions s’intéressant spécifiquement aux implantations ECC en RNS,
la première implantation a été proposée en [109] en 2006. Celle-ci s’éloigne assez de ce
qu’avaient proposé Nozaki et al. [87] et Kawamura et al. [64] car ils n’utilisent pas de ré-
duction modulaire MM classique, mais utilisent un passage par la représentation standard
binaire. Cette stratégie ne semble pas être efficace, car les performances obtenues sont bien
inférieures aux propositions basées sur l’utilisation de l’algorithme de Montgomery RNS
(comme celle [52]). Les mêmes auteurs ont d’ailleurs choisi d’utiliser les méthodes classiques
d’extension de base pour leurs autres contributions par la suite [45, 105, 107].
La contribution [52] propose une des implantations ECC les plus rapides, et protégée
contre certaines attaques (par exemple contre les attaques SPA grâce à l’utilisation de
l’échelle de Montgomery [62]). Cette implantation ne nécessite pas de forme particulière
pour P, à la différence d’une implantation du standard du NIST [91] par exemple. Les implantations
faites dans cette thèse sont très similaires à cette implantation. En effet, dans
le cadre des implantations RNS, cette contribution est la plus rapide en étant protégée.
Elle obtient d’ailleurs des résultats assez proches de [45], qui est l’implantation RNS la plus1.3. LA REPRÉSENTATION MODULAIRE DES NOMBRES (RNS) 61
rapide à notre connaissance. Plus de détails seront donnés à propos de cette contribution
qui a servi de base architecturale pour nos implantations.
La contribution [45] propose une implantation encore plus rapide, toujours en RNS, mais
ne peut être comparée équitablement avec la contribution [52] car elle ne propose aucune
contre-mesure contre les attaques par canaux cachés. Ainsi, l’algorithme de multiplication
scalaire utilisé est l’algorithme 6 doublement et addition. De plus, les formules d’addition
et de doublement de points ne sont pas les mêmes que [52]. Il est donc impossible, ou très
difficile, de comparer les choix portant uniquement sur l’arithmétique RNS.
Choix des paramètres
Les propositions de Guillermin [52] et Esmaeildoust et al. [45] dénotent des différences
importantes dans les choix d’implantation et de la meilleure utilisation du RNS. Nous allons
discuter ici ces choix, en commençant par comparer l’approche des ces 2 papiers.
Guillermin a choisi d’utiliser des tailles de mots (c’est à dire de canaux) w 6 36 bits
sur les FPGA Stratix pour utiliser au mieux leurs multiplieurs embarqués dans les blocs
DSP. L’idée est donc d’avoir des canaux très rapides, une architecture très parallélisée avec
des opérations sur des petits mots. De l’autre côté, Esmaeildoust et al. [45] choisissent de
gros moduli de 50 à 66 bits sur la même architecture, limitant donc la parallélisation mais
permettant de réduire le coût des réductions modulaires (on rappelle que chaque MM coûte
2n
2 + O(n) EMM). De plus, elle permet de choisir des canaux pour lesquels les opérations
sont très efficaces, et permet aussi d’utiliser des bases très bien choisies, à la façon des
travaux [12]. Par contre, une telle stratégie mène à des fréquences bien plus basses que
celle de Guillermin (un facteur 3 au niveau des fréquences en faveur de Guillermin). Des
résultats de comparaison sont disponibles dans [45], mais ne déterminent pas de vrai vainqueur.
En effet, de prime abord les résultats fournis semblent un peu plus à l’avantage de
Esmaeildoust et al.. Mais c’est sans compter que, premièrement, les travaux de [45] n’implantent
que l’algorithme doublement et addition présenté algorithme 5, donc moralement
un quart d’opérations en moins, et deuxièmement les temps ne sont comparés que pour les
plus petites courbes, leur stratégie semble très peu adaptée aux hauts niveaux de sécurité.
Ainsi les auteurs de [45] n’ont pas proposé leur solution pour des courbes plus grandes que
256 bits, là où Guillermin propose des résultats d’implantations couvrant toutes les tailles
standards du NIST (c’est à dire jusqu’à 521 bits).
Les compromis sur les choix de n (le nombre de canaux), et w (la taille d’un canal)
n’ont pour le moment été que peu étudiés dans la littérature, mais, dans tous les cas,
de telles études dépendraient très fortement de la plate-forme sur laquelle elles seraient
menées. Un article très récent sur le choix de n est paru dans [126]. Dans ce papier est
considérée une machine avec des mots de m bits (l’exemple de m = 16 est pris) et l’objectif
est de compter les multiplications de m bits dans une multiplication modulaire RNS complète.
Ici, m ne vaut pas forcément w (où w est toujours la taille des canaux). Dans leurs
exemples, les meilleurs résultats suivant cette métrique montrent que les n optimaux, pour
leurs modèles, sont assez petits pour une machine 16 bits (des bases de 4 moduli pour des
corps de 256 ou 512 bits, 5 moduli pour 1024). Ce résultat met en évidence une certaine
contradiction dans les calculs RNS. En prenant des bases avec plus d’éléments, c.-à-d. avec
des w plus petits, on réduit le coût des multiplications. En effet, les multiplications sur les
canaux EMM ont complexité de w
2
, et les multiplications RNS ont une complexité de n en
EMM, ce qui donne un coût de nw2
. Sachant qu’on a toujours, pour un corps fixé de taille62 CHAPITRE 1. ÉTAT DE L’ART
`, n × w = `, réduire w permet bien de réduire le coût total d’une multiplication RNS. En
contrepartie, en réduisant w, on va augmenter le nombre d’opérations élémentaires pour
faire nos réductions modulaires, il y a donc un équilibre à trouver entre les multiplications
et les réductions modulaires.
Ceci dit, dans les faits, un tel décompte ne s’applique pas directement à une architecture
parallèle. En effet, réduire le nombre de multiplications n’implique pas nécessairement
de réduire le temps de calcul, le niveau de parallélisme est aussi un facteur très important.
Notamment les multiplications sur beaucoup de canaux sont indépendantes et donc parallélisables,
mais les sous-produits d’une multiplication pour un grand w le sont beaucoup
moins. De plus, choisir un petit n impliquant un grand w, la chute de la fréquence des opérateurs
arithmétiques doit être prise en compte, mais n’est pas chiffrable sans avoir implanté
effectivement de telles unités. Si on prend par exemple les multiplieurs des constructeurs
de FPGA qui sont très optimisés, il y aura à un moment donné un effet de seuil en terme
de chute de fréquence dû à un routage devenant d’un coup plus compliqué. Et si ces grosses
unités sont pipelinées pour augmenter la fréquence, outre le matériel supplémentaire requis,
cela implique une complexification du contrôle pour utiliser efficacement ces unités. Enfin,
d’un point de vue attaques physiques, les variations de consommation d’énergie de grosses
unités de calcul risquent de se démarquer beaucoup plus sur les traces de consommation
que des petits canaux. De même, l’architecture perd du coup en modularité si on considère
peu d’unités très grosses. Pour toutes ces raisons, il est très difficile d’évaluer les véritables
conséquences de ce type de métrique, le plus sûr (mais aussi de loin ce qui consomme le plus
de temps) est d’effectuer un grand nombre d’implantations avec beaucoup de paramètres.
Ce genre d’étude sera tôt ou tard nécessaire pour qui veut obtenir les meilleures performances
dans une architecture RNS, même si une telle étude serait limitée à un ensemble
de circuits (par exemple une famille de FPGA).
Architecture sélectionnée
Les travaux de cette thèse portent sur des propositions algorithmiques, arithmétiques
implantées sur le modèle de l’architecture [52, 54]. L’architecture a été considérée comme
une contrainte ici, bien que peut-être, une recherche architecturale améliorerait les résultats
que nous avons obtenus avec nos nouveaux algorithmes. C’est pourquoi on détaille ici
un peu plus les éléments internes de ce Cox-Rower, adapté de [64]. Les parties modifiées
seront directement présentées dans les sections sur les contributions.
L’architecture implantée dans [52] (qu’on retrouve dans une version plus détaillée
dans [54]) est très proche de celle de Kawamura et al., avec un Cox et n Rowers (l’architecture
est donc complètement parallélisée), mais sans la propagation de retenue. Les
Rowers ne sont pas directement reliés en anneau dans cette architecture : les sorties sont
ici reliées à un grand multiplexeur pour les rediriger vers tous les autres Rowers, lorsqu’on
effectue l’extension de base (voir figure 1.7). Les Rowers ont aussi été modifiés pour pouvoir
faire des opérations plus complexes que des carrés ou des multiplications par des constantes
(ce qui ne posait pas de problèmes pour l’implantation RSA [64, 87]).
La figure 1.9, provenant de [54], présente l’unité arithmétique implantée dans cette
contribution, avec 6 étages de pipeline. Sur la figure 1.9, ε correspond à ha,i dans les
notations présentées précédemment. Cette unité a été spécialement conçue pour optimiser
les calculs sur les courbes elliptiques et les réductions modulaires qu’ils requièrent. Cette1.3. LA REPRÉSENTATION MODULAIRE DES NOMBRES (RNS) 63
Figure 3.3 – Structure de Rower pour les courbes elliptiques
Multiplieur
Bus principal
U(t)
X0
ALU
SC
regS
m C
principale
ROM
ROM1 ROM2
X1 registres
C
X0
X1
U(t)
ε
Additionneur modulaire (algorithme 19)
55
tel-00674975, version 1 - 28 Feb 2012 Figure 1.9 – Unité arithmétique contenue dans un Rower pour ECC (source [54]).
unité permet de calculer sur Ba la première base
Ut = |x1 · x2 + b0(−Mb) + b1Ut−1|ma,i ,
où b0, b1 ∈ {0, 1} et Ut−1 est le résultat précédent (on définit de même les calculs sur Bb).
On rappelle que ha,i permet de déduire le canal sur lequel nous calculons. Cette unité
nous permet donc de multiplier ses deux entrées, puis d’ajouter éventuellement au résultat
(−Mb) pour corriger l’extension de base avec la technique de Kawamura et al. [64]. Enfin,
ce résultat peut être accumulé au résultat précédent, notamment afin de calculer efficacement
la somme du CRT. On peut remarquer qu’avec une telle unité de calcul, une addition
coûtera 2 cycles car il faudra calculer x1 · 1 + x2 · 1, alors qu’une multiplication ne prendra
qu’un seul cycle. Par contre, les 2 cycles de l’addition seront transparents lorsque l’on fera
des sommes de produits : faire x1 · x2 + x3 · x4 prendra autant de temps que de calculer
indépendamment x1 · x2 puis x3 · x4. L’architecture est donc particulièrement efficace pour
les sommes de produits (qui sont utilisées par les formules ECC pour le RNS par [8] ou
encore pour le CRT).
À notre connaissance, très peu d’implantations FPGA d’ECC se sont révélées plus rapides
que celle de Guillermin [52]. En dehors de la contribution RNS [45] dont nous avons
parlé précédemment, les contributions [56] et [74] proposent des implantations (non RNS)
ECC en FPGA plus rapides que [52]. En fait, il est toujours assez difficile de tirer de vrais
conclusions autrement qu’en terme de performance pure. En effet, le papier de Güneysu
et Paar [56] propose une implantation double-and-add, en utilisant les premiers du NIST
P-224 et P-256 et les coordonnées de Chudnovsky obtenant une multiplication scalaire un64 CHAPITRE 1. ÉTAT DE L’ART
petit plus rapide (0.62 ms contre 0.68 ms pour 256 bits) que [52], mais en implantant une
multiplication scalaire beaucoup moins coûteuse et avec un P très adapté à la représentation
qu’ils utilisent. Enfin, à la différence de Guillermin qui a proposé une implantation
générique pour 5 tailles du NIST, la proposition [56] est optimisée pour leur taille de corps.
Ces faits sont juste exposés afin de justifier qu’il n’y a, pour le moment, pas de « meilleure »
stratégie en terme de choix de l’arithmétique (surtout lorsque P est quelconque).
De même, la contribution de Ma et al. [74] propose cette fois-ci une implantation pour
un P quelconque, avec une protection SPA, mais cette protection (celle de Möller [86])
réduit en fait beaucoup le nombre d’additions de points à effectuer (c’est un calcul fenêtré
divisant par 4 le nombre d’additions de points par rapport à une échelle de Montgomery,
pour les paramètres de fenêtre qu’ils ont choisis). On ne peut donc pas comparer équitablement
les opérateurs arithmétiques proposés dans [74] et dans [52].
Pour conclure sur cette question, il y a plusieurs façons d’implanter ECC sur FP avec
des arithmétiques très différentes et de bonnes performances. De plus, des avancées autant
sur l’arithmétique que sur l’utilisation des blocs FPGA étant régulièrement effectuées, il
n’existe pour l’heure pas de meilleure solution.
Le RNS en tant que protection contre certaines attaques physiques
Les spécificités du RNS ont fait que plusieurs propositions de protection contre des
attaques par canaux cachés ont été proposées. On a, premièrement, l’indépendance sur les
canaux qui nous permet par exemple, d’effectuer les calculs d’un canal aléatoirement sur un
Rower ou un autre, ou encore de rendre aléatoire l’ordre des calculs lorsque l’architecture
n’est pas complètement parallélisée. Deuxièmement, d’autres choix d’introduction d’aléa
sont possibles, comme le fait de choisir aléatoirement Ba parmi les 2n moduli nécessaires
pour les réductions (ou plus), introduisant ainsi une représentation dans le domaine de
Montgomery aléatoire (en effet, en RNS la valeur X, dans le domaine de Montgomery, est
définie par XMa).
Ainsi, la contribution [29] de Ciet et al. propose la randomisation des bases en tirant
aléatoirement les 2n moduli dans un ensemble de moduli plus grand, avant de procéder
à une exponentiation (logarithme discret ou RSA). Comme pointé dans [11], le calcul des
constantes pour la réduction de Montgomery prend beaucoup de temps, et n’est pas envisageable
(plusieurs To de pré-calculs, voir [11]). L’article [11] de Bajard et al. règle ce
problème de pré-calculs, et propose d’effectuer le tirage aléatoire des bases soit avant l’exponentiation
(ou multiplication scalaire), soit pendant l’exponentiation même, en utilisant
simplement quelques appels à la multiplication de Montgomery RNS. Le terme de leak
resistant arithmetic (LRA) est ainsi introduit pour désigner ces techniques. Dans le papier
[53], Guillermin adapte la LRA pour les extensions de base de type CRT (dans [11]
le MRS est utilisé), et les pré-calculs qui y sont associés. On y trouve aussi la première
implantation de la LRA sur FPGA (menant à un surcoût de 15 % en surface et 6 % en
temps). Enfin, l’article [94], de Perin et al., propose une implantation du tirage aléatoire
des bases avant exponentiation LRA et une implantation d’une autre contre mesure, la
permutation des éléments internes à chacune des bases Ba et Bb. Ces contre-mesures ont
été ensuite attaquées par rayonnement électromagnétique afin d’évaluer leur sécurité pour
ce type de canal caché. D’après leurs résultats, ces contre-mesures sont très peu coûteuses
et améliorent significativement la résistance à certaines attaques sur le rayonnement électromagnétique.1.3.
LA REPRÉSENTATION MODULAIRE DES NOMBRES (RNS) 65
CLB
BRAM
plot E/S
DCM
bloc DSP
Figure 1.10 – Architecture générique d’un FPGA.
Enfin, des propositions utilisant un modulo supplémentaire ou le Cox ont été proposées
pour protéger les implantations RNS contre certaines attaques de type injection de faute.
Ciet et al. [29] proposent l’utilisation d’un modulo supplémentaire pour vérifier si, à la fin
de l’exponentiation, le résultat n’est pas plus grand que ce qui est attendu (par exemple
inférieur à 3P). Guillermin [53] propose lui de détecter les fautes pour toutes les multiplications
modulaires en transformant le Cox. La contribution de Bajard et al. [9] propose
aussi une technique de détection de fautes pour chaque réduction modulaire, mais ne force
pas l’utilisation d’une architecture Cox-Rower. De plus, un modèle de fautes plus fin est
utilisé suivant le moment où la faute se produit.
Les contributions de cette thèse portant surtout sur l’amélioration de l’efficacité des
calculs en RNS, ces questions ne seront pas plus approfondies. On notera toutefois que ces
contre-mesures ne sont qu’un arsenal de protections supplémentaires, en plus des protections
au niveau de la multiplication scalaire comme celles de Coron [33] (randomisation
du point de base en coordonnées projectives, masquage du point de base ou masquage
de la clé) ou des protections matérielles comme des logiques avec moins de variation de
consommation de courant [76, 122].
À propos des circuits FPGA
Les implantations réalisées dans cette thèse ont été effectuées sur FPGA (pour field
programmable gate array), comme bon nombre d’implantations cryptographiques de la
littérature, notamment en RNS comme le montre la table 1.6. Dans cette dernière section
consacrée aux implantations, nous rappelons ici quelques informations sur les FPGA.
Les FPGA sont un type de circuit intégré complètement programmable après leur fabrication
(ils ont une architecture dite configurable et souvent reconfigurable un grand66 CHAPITRE 1. ÉTAT DE L’ART
nombre de fois). Ces technologies sont très avancées (finesse de gravure de 28 nm pour les
Virtex 7 et Stratix V, introduits en 2010), et sont beaucoup plus accessibles que les ASIC
(application-specific integrated circuit) qui demandent un énorme investissement dans la
conception et la fabrication. Les délais de fabrication chez le fondeur pouvant être importants
(plusieurs mois), la conception et le test sur FPGA sont beaucoup plus rapides
à effectuer, et nécessitent beaucoup moins de personnel. Ces circuits sont fabriqués en
grand volume et coûtent de quelques euros à plusieurs milliers d’euros. Ces prix font que
les FPGA sont plus rentables que les ASIC pour les petites séries, les circuits ASIC ne
deviennent rentables que pour de très grands volumes. Les FPGA sont aussi utilisés pour
faire du prototypage.
Les FPGA offrent donc une possibilité de mise sur le marché rapide, mais, en contrepartie,
consomment plus d’énergie que les ASIC, pour des performances moins élevées. Ceci est
dû aux mécanismes permettant la configuration du FPGA. Enfin, ces produits fournissent
les très bonnes performances du matériel avec les avantages d’une configuration logicielle,
on les retrouve donc dans de nombreuses applications (calcul hautes performances, réseaux
sans fil, imagerie médicale, dispositifs de sécurité, etc). Une bonne introduction aux FPGA
peut être trouvée dans [111].
Un FPGA peut être vu comme un tableau de portes logiques (d’où son nom). Une
mémoire va être alors directement programmée par l’utilisateur, qui va définir les fonctionnalités
des différents blocs ainsi que leurs interconnexions. La figure 1.10 présente l’architecture
générique d’un FPGA. On y voit une large matrice composée de blocs logiques
configurables (CLB pour configurable logic bloc), de blocs d’entrées/sorties et de blocs de
génération d’horloge programmable (DCM pour digital clock manager ). Prenons l’exemple
des FPGA Xilinx Virtex 5, sur lesquels les implantations de cette thèse ont été faites. Sur
Virtex 5, un CLB est composé de deux slices, qui sont les blocs de base des FPGA Xilinx.
Pour cette famille de FPGA, chaque slice est composé de 4 LUT à 6 entrées (ou table
de correspondance, look-up table en anglais) et de 4 bascules. Très souvent, d’autres types
de blocs spécifiques cassent l’homogénéité d’une telle architecture pour gagner en performance
ou en consommation d’énergie. Par exemple, on trouve fréquemment des BRAM,
blocs de mémoire RAM ou encore des blocs arithmétiques optimisés (généralement optimisés
pour les calculs de traitement du signal, appelés blocs DSP). Chez Xilinx par exemple,
les blocs DSP sur Virtex 5 contiennent un multiplieur-accumulateur, permettant d’effectuer
des multiplications 18 × 25 bits et des les accumuler sur 48 bits, ou d’effectuer un simple
multiplication ou addition (voir figure 1.11, issue de [2], page 14). Un exemple provenant
du concurrent Altera est lui présenté dans la figure 1.12 issue de [1] (chapitre 7, page 5).
Ce bloc là, présent dans les Stratix 3, contient 4 multiplieurs 18 × 18 bits sur chacune de
ses moitiés, et toujours des fonctions d’additions et d’accumulations. Les Rowers vont en
fait combiner ces blocs dans l’unité arithmétique qu’ils intègrent.
Par contre, la possibilité de pouvoir configurer et reconfigurer tous ces blocs a un
coût. Tous les composants d’interconnexion (ces nœuds ne sont pas représentés sur la fi-
gure 1.10) sont ajoutés par rapport à un circuit non reconfigurable. Ceux-ci impliquent une
perte de performances (en énergie et fréquence d’horloge) ainsi qu’une perte de surface.
D’après [111], la surface totale occupée pour ce routage et la mémoire de configuration
représente 90 % de la surface du FPGA. De plus, les fréquences de fonctionnement des
FPGA ne dépassent pas quelques centaines de MHz, contre les GHz des microprocesseurs.
Par contre, les FPGA peuvent contrebalancer cette différence de fréquence et être plus1.3. LA REPRÉSENTATION MODULAIRE DES NOMBRES (RNS) 67
14 www.xilinx.com Virtex-5 FPGA XtremeDSP Design Considerations
UG193 (v3.5) January 26, 2012
Chapter 1: DSP48E Description and Specifics R
Architectural Highlights
The Virtex-5 FPGA DSP48E slice includes all Virtex-4 FPGA DSP48 features plus a variety
of new features. Among the new features are a wider 25 x 18 multiplier and an
add/subtract function that has been extended to function as a logic unit. This logic unit can
perform a host of bitwise logical operations when the multiplier is not used. The DSP48E
slice includes a pattern detector and a pattern bar detector that can be used for convergent
rounding, overflow/underflow detection for saturation arithmetic, and auto-resetting
counters/accumulators. The Single Instruction Multiple Data (SIMD) mode of the
adder/subtracter/logic unit is also new to the DSP48E slice; this mode is available when
the multiplier is not used. The Virtex-5 DSP48E slice also has new cascade paths. The new
features are highlighted in Figure 1-2.
Figure 1-1: Virtex-5 FPGA DSP48E Slice
X
17-Bit Shift
17-Bit Shift
0
Y
Z
1
0
0
48
48
18
4
3
48
25 30
BCOUT*
BCIN* ACIN*
OPMODE
PCIN*
MULTSIGNIN*
PCOUT*
CARRYCASCOUT*
MULTSIGNOUT*
CREG/C Bypass/Mask
CARRYCASCIN*
CARRYIN
CARRYINSEL
ACOUT* A:B
ALUMODE
B
B
A
C
B
M
P
P
P
C
25 X 18
A A
PATTERNDETECT
PATTERNBDETECT
CARRYOUT
UG193_c1_01_032806
4
7
48
48
30
18
30
18
P
P
*These signals are dedicated routing paths internal to the DSP48E column. They are not accessible via fabric routing resources.
Figure 1.11 – Schéma de bloc DSP Virtex 5 issu de [2].
rapides pour de nombreuses applications grâce au fait qu’ils permettent une implantation
spécifique à l’application, souvent parallèle, et à grain fin (architecture au bit près). Les
FPGA sont souvent présentés comme une solution intermédiaire entre une solution purement
logicielle, peu chère en développement mais plus faible en performances, et une
solution de type ASIC, très chère en développement mais très performante.
La programmation d’un FPGA se fait par un grand nombre de configurations de mé-
moires pour effectuer la fonction souhaitée. Cette configuration va permettre de programmer
les LUT, les blocs arithmétiques (DSP), l’initialisation des mémoires et les connexions
qui relient tous ces composants. Le concepteur va en fait utiliser des outils de CAO qui
permettront de transformer une implantation en langage de description matérielle (HDL)
en un flot binaire appelé bitsream qui sera chargé dans le FPGA pour le programmer. Dans
cette thèse, les travaux d’implantation ont été effectués en langage VHDL. Ce langage permet
de décrire au niveau RTL (register transfer level) l’architecture en cours de conception.
Autrement dit, on programme en utilisant des fonctions combinatoires de base (fonctions
arithmétiques, logiques, multiplexeur, etc), des fonctions synchrones (la mémoire,
les registres, les bascules) et en décrivant les signaux qui les relient. Ce code est ensuite
synthétisé par un outil tel que l’outil ISE de Xilinx ou Quartus d’Altera. Il sera analysé
par l’outil qui extraira les blocs arithmétiques pour utiliser les ressources adéquates (avec
une utilisation, ou non des blocs DSP par exemple), puis simplifiera les équations logiques
suivant les options d’optimisation activées (optimisation temps ou surface). Cette analyse
effectuée, l’outil passera à une étape de transformation technologique afin de faire correspondre
les blocs à des instances matérielles existantes sur le FPGA, en essayant de tenir68 CHAPITRE 1. ÉTAT DE L’ART
Chapter 5: DSP Blocks in Stratix III Devices 5–7
Simplified DSP Operation
© March 2010 Altera Corporation Stratix III Device Handbook, Volume 1
Figure 5–5. Stratix III Full DSP Block Summary Input Register Bank Pipeline Register Bank
Adder/Accumulator
Output Multiplexer Output Multiplexer
Round/Saturate
Output Register Bank
+
+
From Previous
Half-Block DSP
To Next Half-Block DSP
44
44
Input
Data
144
+
Input Register Bank
Pipeline Register Bank
Adder/Accumulator
Round/Saturate
Output Register Bank
+
+ Input
Data
144
+
Top Half-DSP Block
Bottom Half-DSP Block
Result
Result
Figure 1.12 – Schéma de bloc DSP Stratix III issue de [1].
compte au mieux des contraintes imposées. Enfin le placement et le routage vont placer ces
unités sur les blocs du FPGA et les relier en utilisant les différentes ressources de routage.
Afin de simuler le comportement du code VHDL implanté, du code VHDL spécifique peut
être utilisé (du code non synthétisable) pour écrire un banc d’essais. Le comportement est
alors simulé par des logiciels tels que ModelSim ou Isim.Chapitre 2
Inversion modulaire rapide en RNS
Dans certaines implantations matérielles cryptographiques utilisant le RNS, comme
ECC [45, 52, 104] ou encore les couplages [27, 127] une ou des inversions modulaires sont
nécessaires. Par exemple, dans le cas des courbes elliptiques, nous avons besoin d’au moins
une inversion finale afin de normaliser en affine les coordonnées du point obtenu lors de
la multiplication scalaire. Les unités de calcul modulaire sur de grands nombres étant
implantées en RNS à des fins de performances, on les utilise aussi pour faire cette ou ces
inversions. Cependant cette opération reste très coûteuse en RNS, même devant le coût
d’une multiplication scalaire. En effet, nous allons voir que nous pouvons estimer que dans
le cas du RNS, l’inversion coûte entre 10 et 20% du coût de la multiplication scalaire
complète. Dans le cas des couplages, il est dit par exemple dans [27] « the remaining
inversion in Fp is very expensive » à propos de l’inversion RNS. Dans ce chapitre sont
présentés les résultats publiés dans [19], ainsi qu’une extension en cours de soumission à
un journal. Un nouvel algorithme d’inversion RNS est présenté, permettant de réduire très
significativement le nombre d’opérations élémentaires, aussi bien que le temps d’exécution
sur nos implantations FPGA en section 2.2. Ensuite, une variante de cet algorithme menant
à une réduction de 30 % de EMM (multiplication modulaire élémentaire de w bits) et de
20 % de EMA (addition modulaire élémentaire) est présentée en section 2.3. Les sections
suivantes proposent une comparaison avec l’état de l’art en section 2.4 ainsi que les détails
d’implantations et les résultats obtenus en section 2.5.
2.1 Inversion modulaire RNS dans l’état de l’art
Dans quasiment toutes les implantations RNS de l’état de l’art (en tout cas en maté-
riel), l’algorithme utilisé pour calculer l’inversion modulaire est une adaptation en RNS du
calcul de l’exponentiation utilisant le petit théorème de Fermat. L’algorithme 16 présente
une façon de faire cette inversion, que nous avons ici modifiée en une version bit de poids
faible en premier (LSBF pour least significant bit first) de l’exponentiation RNS de l’état
de l’art [48]. On rappelle que le but de l’algorithme est de calculer AP −2 mod P ce qui est
égal à A−1 mod P d’après le FLT. L’algorithme met en œuvre les optimisations présentées
dans la section 1.3.3 provenant de [48], on se place dans la représentation RNS modifiée
sur la seconde base (ligne 1 de l’algorithme 16) puis on reconvertit à la fin en multipliant
par
−→
Tb (ligne 9). Cet algorithme, grâce à sa représentation RNS modifiée, permet d’être
plus rapide en accélérant MM, comme expliqué dans la section 1.3.3. Mettre cet algorithme
en version LSBF permet d’avoir la multiplication (ligne 5) et le carré (ligne 6) exécutés
en parallèle. Cet algorithme sera utilisé par la suite afin de se comparer à l’état de l’art.
6970 CHAPITRE 2. INVERSION MODULAIRE RAPIDE EN RNS
Un défaut de cet algorithme d’inversion est qu’il y a beaucoup de dépendances entre les
itérations de la boucle (comme dans tout algorithme d’exponentiation), ce qui limite fortement
le remplissage du pipeline. Dans la suite, cette inversion modulaire RNS sera notée
FLT-MI. Les auteurs de [127], qui ont obtenu parmi les meilleures performances pour une
implantation FPGA de couplages et qui ont implanté FLT-MI (dans un algorithme très
proche de l’algorithme 16), appuient ce constat en écrivant :
« The problem with this exponentiation in Fp is that the computation cannot be pipelined
[. . . ] causes low pipeline occupation rate and a huge waste. »