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 :

[TXT]

 Etude-theorique-cryp..> 06-Jan-2015 13:08  3.0M  

[TXT]

 Modelisation-qualita..> 06-Jan-2015 13:08  2.6M  

[TXT]

 Etude-de-representat..> 06-Jan-2015 13:07  3.0M  

[TXT]

 Exploration-et-struc..> 06-Jan-2015 13:07  3.4M  

[TXT]

 Analyse-de-dependanc..> 06-Jan-2015 13:06  4.5M  

[TXT]

 Scenarisation-d-envi..> 06-Jan-2015 13:06  4.1M  

[TXT]

 De-l-auto-evaluation..> 06-Jan-2015 06:51  6.2M

[TXT]

 APISENSE-a-distribut..> 05-Jan-2015 08:09  5.7M  

[TXT]

 APISENSE-terminaux-i..> 04-Jan-2015 21:53  5.4M  

[TXT]

 Addition-formulae-on..> 04-Jan-2015 21:26  3.0M  

[TXT]

 Algorithmique-distri..> 05-Jan-2015 23:00  4.2M  

[TXT]

 Approche-algorithmiq..> 05-Jan-2015 22:53  3.5M  

[TXT]

 Architecture-de-comm..> 05-Jan-2015 08:04  4.4M  

[TXT]

 Bornes-inferieures-e..> 05-Jan-2015 15:39  1.6M  

[TXT]

 CONTRIBUTION-A-LA-ST..> 05-Jan-2015 22:56  5.5M  

[TXT]

 Caracterisation-auto..> 05-Jan-2015 16:34  5.1M  

[TXT]

 Caracterisation-et-d..> 05-Jan-2015 22:51  4.5M  

[TXT]

 Catalogage-de-petits..> 05-Jan-2015 08:06  3.8M  

[TXT]

 Classification-et-ca..> 04-Jan-2015 11:58  1.3M  

[TXT]

 Collaboration-de-tec..> 04-Jan-2015 21:27  2.4M  

[TXT]

 Completion-combinato..> 05-Jan-2015 15:41  2.6M  

[TXT]

 Contribution-a-l-etu..> 05-Jan-2015 22:54  3.2M  

[TXT]

 Contribution-a-la-co..> 05-Jan-2015 16:10  3.5M  

[TXT]

 Contributions-a-la-v..> 04-Jan-2015 21:51  5.4M  

[TXT]

 Controle-de-la-puiss..> 05-Jan-2015 22:52  3.6M  

[TXT]

 Coordination-Modulai..> 05-Jan-2015 15:58  2.2M  

[TXT]

 Couplage-de-modeles-..> 05-Jan-2015 22:46  5.3M  

[TXT]

 Cryptographie-sur-le..> 05-Jan-2015 08:01  3.4M  

[TXT]

 De-l-auto-evaluation..> 05-Jan-2015 22:44  6.2M  

[TXT]

 Detection-de-rails-m..> 05-Jan-2015 08:04  5.1M  

[TXT]

 Dispositifs-spatiaux..> 05-Jan-2015 22:59  5.2M  

[TXT]

 Dynamique-des-graphe..> 05-Jan-2015 22:56  5.5M  

[TXT]

 Environnements-urbai..> 05-Jan-2015 08:03  6.3M  

[TXT]

 Equilibrage-de-charg..> 04-Jan-2015 21:25  3.2M  

[TXT]

 Etude-de-la-synchron..> 05-Jan-2015 15:58  2.4M  

[TXT]

 Etude-des-facteurs-d..> 05-Jan-2015 15:38  1.8M  

[TXT]

 Evaluation-analytiqu..> 05-Jan-2015 08:07  3.5M  

[TXT]

 Evaluation-de-la-sur..> 05-Jan-2015 15:39  1.4M  

[TXT]

 Execution-efficace-d..> 05-Jan-2015 15:39  1.4M  

[TXT]

 Faciliter-le-develop..> 04-Jan-2015 21:56  4.4M  

[TXT]

 Factorisation-matric..> 04-Jan-2015 11:59  2.7M  

[TXT]

 Formes-et-fonctions-..> 05-Jan-2015 22:49  4.5M  

[TXT]

 Generation-automatiq..> 03-Jan-2015 22:04  2.6M  

[TXT]

 Generation-de-modele..> 05-Jan-2015 15:41  3.2M  

[TXT]

 Gestion-de-la-variab..> 04-Jan-2015 21:55  4.8M  

[TXT]

 Idéalisation-d-asse..> 04-Jan-2015 11:57  2.1M  

[TXT]

 Inference-d-invarian..> 04-Jan-2015 11:58  1.5M  

[TXT]

 Influence-du-mapping..> 05-Jan-2015 22:49  4.6M  

[TXT]

 Integration-de l-inf..> 04-Jan-2015 21:25  3.4M  

[TXT]

 Integration-et-explo..> 05-Jan-2015 16:35  4.8M  

[TXT]

 Intelligence-en-essa..> 05-Jan-2015 08:03  5.6M  

[TXT]

 Interaction-entre-al..> 05-Jan-2015 22:51  4.1M  

[TXT]

 Interrogation-de-gra..> 03-Jan-2015 22:04  2.9M  

[TXT]

 L-architecture-du-di..> 05-Jan-2015 15:40  1.2M  

[TXT]

 La-gestion-du-trafic..> 03-Jan-2015 22:01  4.1M  

[TXT]

 Langage-de-mashup-Th..> 04-Jan-2015 21:24  4.1M  

[TXT]

 Les-logiciels-de-ges..> 03-Jan-2015 22:03  3.1M  

[TXT]

 Lh-rs-p2p-une-nouvel..> 04-Jan-2015 11:59  2.7M  

[TXT]

 Mesure-de-la-fragili..> 04-Jan-2015 21:24  3.8M  

[TXT]

 Meta-modelisation-du..> 04-Jan-2015 21:56  4.1M  

[TXT]

 Methode-de-classific..> 04-Jan-2015 11:58  1.3M  

[TXT]

 Methode-de-game-desi..> 05-Jan-2015 08:10  4.2M  

[TXT]

 Methodes-de-reconstr..> 05-Jan-2015 23:05  6.1M  

[TXT]

 Methodes-et-structur..> 05-Jan-2015 22:46  5.6M  

[TXT]

 Methodes-numeriques-..> 05-Jan-2015 22:52  3.9M  

[TXT]

 Methodes-sequentiell..> 04-Jan-2015 21:27  2.2M  

[TXT]

 Mise-en-oeuvre-appli..> 04-Jan-2015 21:54  4.4M  

[TXT]

 Mise-en-oeuvre-de-cr..> 05-Jan-2015 23:03  6.3M  

[TXT]

 Modele-de-comporteme..> 05-Jan-2015 16:10  3.2M  

[TXT]

 Modele-et-experience..> 05-Jan-2015 08:01  3.8M  

[TXT]

 Modelisation-d-un-re..> 05-Jan-2015 23:03  7.2M  

[TXT]

 Modelisation-d-une-a..> 04-Jan-2015 21:53  5.0M  

[TXT]

 Modelisation-de-la-p..> 05-Jan-2015 15:59  1.9M  

[TXT]

 Modelisation-et-dete..> 04-Jan-2015 11:57  1.6M  

[TXT]

 Modelisation-et-scor..> 05-Jan-2015 16:09  4.4M  

[TXT]

 Normalisation-et-App..> 03-Jan-2015 22:01  4.1M  

[TXT]

 Nouvelles-approches-..> 05-Jan-2015 08:09  2.3M  

[TXT]

 Periodes-d-integrale..> 05-Jan-2015 22:54  3.0M  

[TXT]

 Planification-d-une-..> 05-Jan-2015 08:06  4.1M  

[TXT]

 Positionnement-robus..> 05-Jan-2015 15:39  1.5M  

[TXT]

 Prise-en-compte-de-l..> 03-Jan-2015 22:04  2.8M  

[TXT]

 Proposition-d-approc..> 05-Jan-2015 22:58  5.2M  

[TXT]

 Proposition-d-une-ar..> 05-Jan-2015 22:48  5.0M  

[TXT]

 Protection-obligatoi..> 05-Jan-2015 22:44  6.0M  

[TXT]

 Qualification-system..> 04-Jan-2015 21:26  2.8M  

[TXT]

 Reconnaissance-de-co..> 03-Jan-2015 22:03  3.6M  

[TXT]

 Reseaux-urbains-de-c..> 05-Jan-2015 16:34  5.6M  

[TXT]

 Samsung-Telephone-Mo..> 05-Jan-2015 15:41  2.4M  

[TXT]

 Segmentation-par-cou..> 05-Jan-2015 23:01  3.9M  

[TXT]

 Segmentation-supervi..> 04-Jan-2015 11:58  1.3M  

[TXT]

 Services-de-repartit..> 03-Jan-2015 21:59  4.7M  

[TXT]

 Simulation-credible-..> 05-Jan-2015 22:58  5.2M  

[TXT]

 Simulations-numeriqu..> 05-Jan-2015 22:48  4.8M  

[TXT]

 Systeme-de-mesure-d-..> 05-Jan-2015 15:40  1.3M  

[TXT]

 Techniques-de-codage..> 05-Jan-2015 22:53  3.5M  

[TXT]

 Techniques-visuelles..> 04-Jan-2015 21:27  2.7M  

[TXT]

 The-Emergence-of-Mul..> 03-Jan-2015 22:05  2.5M  

[TXT]

 Thermoformage-du-ver..> 05-Jan-2015 22:59  4.4M  

[TXT]

 Trigraphes-de-Berge-..> 03-Jan-2015 22:02  3.9M  

[TXT]

 Typologies-textuelle..> 05-Jan-2015 23:05  6.1M  

[TXT]

 Un-ilot-formel-pour-..> 05-Jan-2015 08:07  3.1M  

[TXT]

 Une-approche-agile-f..> 05-Jan-2015 16:09  4.0M  

[TXT]

 Une-approche-d-align..> 05-Jan-2015 15:40  2.9M  

[TXT]

 Vers-une-capitalisat..> 03-Jan-2015 22:00  4.6M
Cours d'informatique :

[TXT]

 Analyse-numerique-Co..> 03-Jan-2015 17:33  3.0M  

[TXT]

 Approches-m-k-firm-p..> 03-Jan-2015 17:27  3.7M  

[TXT]

 COURS-LA-CULTURE-INF..> 03-Jan-2015 17:25  3.8M  

[TXT]

 CRYPTANALYSE-DE-RSA-..> 03-Jan-2015 17:33  3.0M  

[TXT]

 Cours-Interconnexion..> 03-Jan-2015 17:34  3.0M  

[TXT]

 Cours-d-Analyse-et-C..> 03-Jan-2015 17:22  3.9M  

[TXT]

 Efficient-C++finite-..> 03-Jan-2015 17:30  3.5M  

[TXT]

 Efficient-C++finite-..> 03-Jan-2015 17:31  3.2M  

[TXT]

 Fondements-de-l-Info..> 03-Jan-2015 17:22  4.0M  

[TXT]

 INTRODUCTION-A-L-INF..> 03-Jan-2015 17:24  3.8M  

[TXT]

 Informatique-et-Ling..> 03-Jan-2015 17:24  3.8M  

[TXT]

 Initiation-a-l-infor..> 03-Jan-2015 17:26  3.8M  

[TXT]

 Intelligence-Artific..> 03-Jan-2015 15:16  2.5M  

[TXT]

 Introduction-a-l-ana..> 03-Jan-2015 17:27  3.7M  

[TXT]

 Introduction-a-la-ge..> 03-Jan-2015 17:26  3.8M  

[TXT]

 Le-routage-externe-B..> 03-Jan-2015 17:32  3.1M  

[TXT]

 Le-systeme-d-informa..> 03-Jan-2015 17:32  3.1M  

[TXT]

 Lecture1_Linear_SVM_..> 03-Jan-2015 14:57  2.4M  

[TXT]

 Lecture2_Linear_SVM_..> 03-Jan-2015 14:56  2.4M  

[TXT]

 Lecture3_Linear_SVM_..> 03-Jan-2015 14:56  2.4M  

[TXT]

 Lecture4_Kenrels_Fun..> 03-Jan-2015 14:55  2.4M  

[TXT]

 Lecture5_Kernel_SVM...> 03-Jan-2015 14:55  2.4M  

[TXT]

 Lecture6_SVDD.pdf.htm   03-Jan-2015 14:54  2.4M  

[TXT]

 Lecture7_Cross_Valid..> 03-Jan-2015 14:54  2.4M  

[TXT]

 Lecture8_Multi_Class..> 03-Jan-2015 14:57  2.4M  

[TXT]

 Lecture9_Multi_Kerne..> 03-Jan-2015 14:53  2.5M  

[TXT]

 Lecture10_Outilier_L..> 03-Jan-2015 14:53  2.5M  

[TXT]

 Les-reseaux-sans-fil..> 03-Jan-2015 15:17  2.5M  

[TXT]

 NooJ-pour-l-Intellig..> 03-Jan-2015 17:30  3.2M  

[TXT]

 Outils-Logiques-pour..> 03-Jan-2015 15:15  2.8M  

[TXT]

 Presentation-de-la-r..> 03-Jan-2015 17:33  3.0M  

[TXT]

 Projet-IP-SIG-Signal..> 03-Jan-2015 15:16  2.5M  

[TXT]

 Robotique-Mobile-PDF..> 03-Jan-2015 15:16  2.6M  

[TXT]

 Systeme-informatique..> 03-Jan-2015 15:17  2.5M  

[TXT]

 Systemes-Multi-Agent..> 03-Jan-2015 17:28  3.5M  

[TXT]

 Tutoriel-Android-TP-..> 03-Jan-2015 14:57  2.3M  

[TXT]

 Understanding-SVM-th..> 03-Jan-2015 14:57  2.4M  

[TXT]

 Une-histoire-de-la-m..> 03-Jan-2015 17:28  3.5M  

[TXT]

 Une-introduction-aux..> 03-Jan-2015 17:31  3.1M  

[TXT]

 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. »