— Sujet de stage recherche L3 ÉNS Lyon 2014 — Langage pour les machines à signaux Encadrant : Jérôme Durand-Lose, LIFO, Orléans [email protected] Résumé Les machines à signaux considèrent l’évolution de signaux (points sans dimension) sur une ligne (R). Ils avancent de manière uniforme et sont remplacés par d’autres quand ils se rencontrent. Les diagrammes espace-temps engendrés sont formés de segments de droite. Une machine à signaux est définie par l’ensemble (fini) des méta-signaux et des règles de collision. Une configuration se définit par les positions des signaux présents et leurs métasignaux associés. Elles forment un modèle de calcul à temps et espace continus où l’on peut simuler une machine de Turing mais également y faire du calcul analogique exact. Ce modèle possède également ses propres primitives et schémas pour construire des machines à signaux à partir d’autres. Par exemple, on peut construire des versions infiniment accélérées. Nous disposons d’une bibliothèque Java complète pour la manipulation des machines à signaux et la plupart des algorithmes y ont été implantés. Actuellement, une machine se définit en Java ou en xml (ou avec une interface graphique) et les algorithmes de modification sont écrits en Java. Ces solutions sont malheureusement lourdes et peu lisibles. Le but du stage est de définir un langage et un interpréteur (ANTLR et Java) pour définir des machines à signaux puis des règles de modifications. Mots-clés : ANTLR ; Algorithmique géométrique ; Java ; Machines à signaux ; Systèmes complexes. Machines à signaux Dans un espace euclidien unidimensionnel (R), on place un certain nombre de signaux : points sans dimension se déplaçant à vitesse constante. À chaque signal, est associé un métasignal, celui-ci définit entièrement la dynamique du signal. Quand des signaux se rencontrent, ils sont enlevés et d’autres signaux apparaissent suivant des règles de collision. La Figure 1 contient un diagramme espace-temps d’une machine à signaux avec à gauche les méta-signaux et les règles de collision qui définissent la machine à signaux. a 1 b -1 c 0 Règles de collision {a, b} → {c, a} {a, c} → {} {b, c} → {} {a, b, c} → {c, b} c temps (N) Méta-signal Vitesse c c a a a b b a c b espace (Z) Figure 1 – Méta-signaux, règles et diagramme espace-temps. Le comportement des machines à signaux est complexe et très riche comme le montre la Fig. 2. En effet, on peut calculer au sens des machines de Turing, mais on peut également résoudre le problème de la halte [Durand-Lose, 2012], calculer sur des valeurs continues avec exactitude [Durand-Lose, 2009] et engendrer des fractales et y mener des calculs [Duchier et al., 2012]. Une courte introduction visuelle aux machines à signaux est accessible sur internet 1 . Nous disposons d’une bibliothèque Java pour manipuler des machines à signaux. Pour définir une machine, il faut soit utiliser un fichier xml soit la coder en dur en Java (soit passer par une interface graphique). Tout cela est trop lourd si l’on veut juste faire quelques essais. 1. http://www.univ-orleans.fr/lifo/Members/Jerome.Durand-Lose/Recherche/AGC/intro AGC.html 1 Figure 2 – Diagrammes espace-temps de machines à signaux. Notre bibliothèque contient de nombreuses transformations comme le fait d’enchâsser dans une structure accélérant infiniment (Fig. 3). Cette transformation est définie en Java ce qui impose de rentrer dans le cadre de la programmation Java — peu adaptée — alors que l’on voudrait se concentrer sur la modification de machines que l’on implante. Figure 3 – Diagramme initial, un pas d’accélération, et une infinité de tels pas. Sujet Tout d’abord, il s’agira de définir un langage pour les machines à signaux (syntaxe et sémantique) au travers d’exemples (sans chercher à faire un langage complet de haut niveau) puis passer la syntaxe sous ANTLR. Ce sera l’occasion de ré-écrire de vieux algorithmes comme d’en proposer de nouveaux. Ensuite, il faudra écrire un interpréteur pour la partie déclaration de machine, puis, si le temps le permet, pour la partie modification de machines. Laboratoire et encadrant Le stage aura lieu au LIFO (Laboratoire d’Informatique Fondamentale d’Orléans 2 ) sur le site d’Orléans-la Source dans les conditions usuelles d’accueil. Le LIFO compte quatre vingtaines de membres dont une moitié d’enseignants-chercheurs permanents. Jérôme Durand-Lose est professeur d’Informatique à l’Université d’Orléans. Il poursuit ses recherches au sein de l’équipe GAMoC (Graphe, Algorithmes et Modèles du Calcul) du LIFO. Références D. Duchier, J. Durand-Lose, and M. Senot. Computing in the fractal cloud: modular generic solvers for SAT and Q-SAT variants. In M. Agrawal, B. S. Cooper, and A. Li, editors, Theory and Applications of Models of Computations (TAMC ’12), number 7287 in LNCS, pages 435–447. Springer, 2012. doi: 10.1007/978-3-642-29952-0 42. URL http://arxiv.org/abs/1105.3454. J. Durand-Lose. Abstract geometrical computation 3: Black holes for classical and analog computing. Nat. Comput., 8(3):455–472, 2009. doi: 10.1007/s11047-009-9117-0. J. Durand-Lose. Abstract geometrical computation 6: a reversible, conservative and rational based model for black hole computation. Int. J. Unconventional Computing, 8(1):33–46, 2012. Les articles de J. Durand-Lose sont accessibles sur cette page web 3 . 2. http://www.univ-orleans.fr/lifo/ 3. http://www.univ-orleans.fr/lifo/Members/Jerome.Durand-Lose/Recherche/publications.html 2