18 research outputs found

    Abitbol : un langage sur mesure pour la métaprogrammation

    Get PDF
    Ce mémoire a pour thèse que les fonctions devraient être transparentes lors de la phase de métaprogrammation. En effet, la métaprogrammation se veut une possibilité pour le programmeur d’étendre le compilateur. Or, dans un style de programmation fonctionnelle, la logique du programme se retrouve dans les définitions des diverses fonctions le composant. Puisque les fonctions sont généralement opaques, l’impossibilité d’accéder à cette logique limite les applications possibles de la phase de métaprogrammation. Nous allons illustrer les avantages que procurent les fonctions transparentes pour la métaprogrammation. Nous donnerons notamment l’exemple du calcul symbolique et un exemple de nouvelles optimisations désormais possibles. Nous illustrerons également que la transparence des fonctions permet de faire le pont entre les datatypes du programme et les fonctions. Nous allons également étudier ce qu'implique la présence de fonctions transparentes au sein d'un langage. Nous nous concentrerons sur les aspects reliés à l'implantation de ces dernières, aux performances et à la facilité d'utilisation. Nous illustrerons nos propos avec le langage Abitbol, un langage créé sur mesure pour la métaprogrammation.Our main thesis is that functions should be transparent during the metaprogramming stage. Metaprogramming is intended as a possibility for the programmer to extend the compiler. But in a functional programming style, the program logic is found in the definition of its functions. Since functions are generally opaque, it is impossible for the programmer to access this information and this limits the metaprogramming possibilities. We will illustrate the benefits of transparent functions for metaprogramming. We will give the example of symbolic computation and also show new forms of optimizations now available at the metaprogramming stage. We will also illustrate that transparency allows us to bridge the gap between the datatypes of a program and its functions. We will also examine how transparent functions affects other aspects of the language. We will focus on how to implement them, their performance impact and their ease of use. We illustrate our thesis with Abitbol, a language designed for metaprogramming

    Vers une nouvelle ingénierie de l'information

    Get PDF

    Conception d'un noyau de vérification de preuves pour le λΠ-calcul modulo

    No full text
    In recent years, the emergence of feature rich and mature interactive proof assistants has enabled large formalization efforts of high-profile conjectures and results previously established only by pen and paper. A medley of incompatible and philosophically diverging logics are at the core of all these proof assistants. Cousineau and Dowek (2007) have proposed the λΠ-calculus modulo as a universal target framework for other front-end proof languages and environments. We explain in this thesis how this particularly simple formalism allows for a small, modular and efficient proof checker upon which the consistency of entire systems can be made to rely upon. Proofs increasingly rely on computation both in the large, as exemplified by the proof of the four colour theorem by Gonthier (2007), and in the small following the SSReflect methodoly and supporting tools. Encoding proofs from other systems in the λΠ-calculus modulo bakes yet more computation into the proof terms. We show how to make the proof checking problem manageable by turning entire proof terms into functional programs and compiling them in one go using off-the-shelf compilers for standard programming languages. We use untyped normalization by evaluation (NbE) as an enabling technology and show how to optimize previous instances of it found in the literature. Through a single change to the interpretation of proof terms, we arrive at a representation of proof terms using higher order abstract syntax (HOAS) allowing for a proof checking algorithm devoid of any explicit typing context for all Pure Type Systems (PTS). We observe that this novel algorithm is a generalization to dependent types of a type checking algorithm found in the HOL proof assistants enabling on-the-fly checking of proofs. We thus arrive at a purely functional system with no explicit state, where all proofs are checked by construction. We formally verify in Coq the correspondence of the type system on higher order terms lying behind this algorithm with respect to the standard typing rules for PTS. This line of work can be seen as connecting two historic strands of proof assistants: LCF and its descendents, where proofs of untyped or simply typed formulae are checked by construction, versus Automath and its descendents, where proofs of dependently typed terms are checked a posteriori. The algorithms presented in this thesis are at the core of a new proof checker called Dedukti and in some cases have been transferred to the more mature platform that is Coq. In joint work with Denes, we show how to extend the untyped NbE algorithm to the syntax and reduction rules of the Calculus of Inductive Constructions (CIC). In joint work with Burel, we generalize previous work by Cousineau and Dowek (2007) on the embedding into the λΠ-calculus modulo of a large class of PTS to inductive types, pattern matching and fixpoint operators.Ces dernières années ont vu l'émergence d'assistants interactifs de preuves riches en fonctionnalités et d'une grande maturité d'implémentation, ce qui a permis l'essor des grosses formalisations de résultats papier et la résolution de conjectures célèbres. Mais autant d'assistants de preuves reposent sur presque autant de logiques comme fondements théoriques. Cousineau et Dowek (2007) proposent le λΠ-calcul modulo comme un cadre universel cible pour tous ces environnement de démonstration. Nous montrons dans cette thèse comment ce formalisme particulièrement simple admet une implémentation d'un vérificateur de taille modeste mais pour autant modulaire et efficace, à la correction de laquelle on peut réduire la cohérence de systèmes tout entiers. Un nombre croissant de preuves dépendent de calculs intensifs comme dans la preuve du théorème des quatre couleurs de Gonthier (2007). Les méthodologies telles que SSReflect et les outils attenants privilégient les preuves contenant de nombreux petits calculs plutôt que les preuves purement déductives. L'encodage de preuves provenant d'autres systèmes dans le λΠ-calcul modulo introduit d'autres calculs encore. Nous montrons comment gérer la taille de ces calculs en interprétant les preuves tout entières comme des programmes fonctionnels, que l'on peut compiler vers du code machine à l'aide de compilateurs standards et clé-en-main. Nous employons pour cela une variante non typée de la normalisation par évaluation (NbE), et montrons comment optimiser de précédentes formulation de celle-ci. Au travers d'une seule petite modification à l'interprétation des termes de preuves, nous arrivons aussi à une représentation des preuves en syntaxe abstraite d'ordre supérieur (HOAS), qui admet naturellement un algorithme de typage sans aucun contexte de typage explicite. Nous généralisons cet algorithme à tous les systèmes de types purs (PTS). Nous observons que cet algorithme est une extension à un cadre avec types dépendants de l'algorithme de typage des assistants de preuves de la famille HOL. Cette observation nous amène à développer une architecture à la LCF pour une large classe de PTS, c'est à dire une architecture où tous les termes de preuves sont corrects par construction, a priori donc, et n'ont ainsi pas besoin d'être vérifié a posteriori. Nous prouvons formellement en Coq un théorème de correspondance entre les système de types sans contexte et leur pendant standard avec contexte explicite. Ces travaux jettent un pont entre deux lignées historiques d'assistants de preuves : la lignée issue de LCF à qui nous empruntons l'architecture du noyau, et celle issue de Automath, dont nous héritons la notion de types dépendants. Les algorithmes présentés dans cette thèse sont au coeur d'un nouveau vérificateur de preuves appelé Dedukti et ont aussi été transférés vers un système plus mature : Coq. En collaboration avec Dénès, nous montrons comment étendre la NbE non typée pour gérer la syntaxe et les règles de réduction du calcul des constructions inductives (CIC). En collaboration avec Burel, nous généralisons des travaux précédents de Cousineau et Dowek (2007) sur l'encodage dans le λΠ-calcul modulo d'une large classe de PTS à des PTS avec types inductifs, motifs de filtrage et opérateurs de point fixe

    Plates-formes et mises Ă  jour dynamiques configurables

    Get PDF
    Dynamic software updating allows applications to be modified without interrupting the services it provides. Because today's systems rely heavily on software and its availability, such a possibility is an important issue. Many mechanisms with diverse needs and properties enable dynamic updates. They are used by platforms targeting specific types of applications and/or updates. While the specialization of these platforms make the development of dynamic updates easier, it can cause the platform to be ill suited in the case of unforeseen updates. A solution is to select and combine best-suited mechanisms for each update in order to guarantee a best compatibility of platforms with the different kinds of applications and updates. The three contributions detailed in this thesis follow this objective: - Studying platforms and identify generic models for platforms and updates - Studying the needs and properties of mechanisms as well as their capacity to be combined - Develop configurable platforms allowing the selection of best-suited mechanisms for each update. Theses contributions open leads towards a new generation of platforms and towards new uses of dynamic updates. The third contribution lead to the development of Pymoult, a configurable platform for Python programs. Pymoult provides several mechanisms through a high-level API suited to the conception of dynamic updates.La mise à jour dynamique des logiciels permet de modifier ces derniers sans interrompre les services qu'ils fournissent. C'est un enjeu important à une époque où les logiciels sont omniprésents et où leur indisponibilité peut être coûteuse (service commercial) ou même dangereuse (système de sécurité). De nombreux mécanismes aux propriétés et besoins variés permettent d'atteindre cet objectif. Ces mécanismes sont employés par des plates-formes dédiées à des types de logiciel et/ou de mises à jour spécifiques. En se spécialisant, ces plates-formes facilitent l'écriture de mises à jour dynamiques mais peuvent être mal adaptées à l'application de certaines modifications imprévues. Il convient alors de sélectionner et combiner les mécanismes les mieux adaptés à chaque mise à jour afin d'assurer une meilleure compatibilité des plates-formes avec les différents logiciels et mises à jour. C'est autour de cet objectif que s'organisent les contributions de ce manuscrit: - Étudier les plates-formes et identifier des modèles génériques de plate-forme et de mise à jour - Étudier les besoins et les propriétés des mécanismes de mise à jour ainsi que leurs capacités à être combinés. - Développer des plates-formes configurables permettant de sélectionner les mécanismes les mieux adaptés pour chaque mise à jour. Les résultats obtenus ouvrent des pistes vers une nouvelle génération de plates-formes ainsi que vers de nouvelles utilisations de la mise à jour dynamique. Le troisième axe a mené au développement de Pymoult, plate-forme configurable pour programmes Python. Cette plate-forme fournit de nombreux mécanismes au travers d'une API de haut niveau adaptée à la conception de mises à jour dynamiques

    Actes de la conférence JFLA 2009 (Vingtièmes Journées Francophones des Langages Applicatifs)

    Get PDF
    Ce fichier regroupe en un seul document l'ensemble des articles acceptés pour la conférence JFLA 2009.Pour la vingtième année consécutive, les Journées Francophones des Langages Applications sont l'occasion de se retrouver dans un cadre agréable et propice aux échanges conviviaux. Cette année, c'est à Saint-Quentin sur Isère, près de Grenoble, que nous nous réunissons, maintenant la tradition de l'alternance mer-montagne. Les neuf articles choisis par le comité de programme reflètent bien la diversité de notre communauté et les avancés tant du point de vue de l'application de langages fonctionnels que de la conception et de l'utilisation d'assistants à la preuve. Nous avons souhaité également inclure des articles plus proches de tutoriels ou de retours d'expérience, ceux-ci étant particulièrement adaptés au cadre pédagogique des Journées. Deux orateurs nous ont fait l'honneur d'accepter notre invitation. L'exposé de Vincent Balat, de l'université Paris 7, intitulé ≪ Ocsigen : approche fonctionnelle typée de la programmation Web ≫ illustre l'utilisation croissante de langages applicatifs dans des milieux inattendus. L'exposé de Bruno Barras, de Trusted Labs, intitulé ≪ Faut-il avoir peur de sa carte SIM ? ≫ présente l'application d'assistants à la preuve dans la modélisation de cartes à puces. Pour la quatrième année consécutive, deux sessions d'une demi-journée chacune sont consacrées à des cours. Le premier porte sur la modélisation de la linguistique (par Gérard Huet, de l'INRIA Paris - Rocquencourt) et le deuxième sur les bibliothèques Coq utilisées dans la preuve récente du théorème des quatre couleurs (par Assia Mahboubi, de l'INRIA Saclay - Île-de-France)

    Une architecture de contrôle distribuée pour l'autonomie des robots

    Get PDF
    Pour des tâches simples ou dans un environnement contrôlé, la coordination des différents processus internes d’un robot est un problème relativement trivial, souvent implémenté de manière ad-hoc. Toutefois, avec le développement de robots plus complexes travaillant dans des environnements non contrôlés et dynamiques, le robot doit en permanence se reconfigurer afin de s’adapter aux conditions extérieures et à ses objectifs. La définition d’une architecture de contrôle efficace permettant de gérer ces reconfigurations devient alors primordiale pour l’autonomie de tels robots. Dans ces travaux, nous avons d’abord étudié les différentes architectures proposées dans la littérature, dont l’analyse a permis d’identifier les grandes problématiques qu’une architecture de contrôle doit résoudre. Cette analyse nous a mené à proposer une nouvelle architecture de contrôle décentralisée, générique et réutilisable, selon une démarche qui intègre une approche "intelligence artificielle" (utilisation de raisonneur logique, propagation dynamique de contraintes) et une approche "génie logiciel" (programmation par contrats, agents). Après une présentation des concepts qui sous-tendent cette architecture et une description approfondie de son fonctionnement, nous en décrivons une implémentation, qui est exploitée pour assurer le contrôle d’un robot terrestre d’extérieur dans le cadre de tâches de navigation, d’exploration ou de suivi. Des résultats sont présentés et analysés. Dans une seconde partie, nous nous sommes penchés sur la modélisation et la vérifiabilité d’une telle architecture de contrôle. Après avoir analysé différentes solutions, nous décrivons un modèle complet de l’architecture qui utilise la logique linéaire. Nous discutons ensuite des différentes approches possibles pour montrer des propriétés d’atteignabilité et de sûreté de fonctionnement en exploitant ce modèle. Enfin nous abordons différentes voies d’enrichissement de ces travaux. En particulier, nous discutons des extensions possibles pour le contrôle d’un ensemble de robots coopérants entre eux, mais aussi de la nécessité d’avoir des liens plus forts entre cette couche de contrôle, et les approches de modélisation des fonctionnalités sous-jacentes. ABSTRACT : For simple tasks in a controlled environment, the coordination of the internal processes of a robot is a relatively trivial task, often implemented in an ad-hoc basis. However, with the development of more complex robots that must operate in uncontrolled and dynamic environments, the robot must constantly reconfigure itself to adapt to the external conditions and its own goals. The definition of a control architecture to manage these reconfigurations becomes of paramount importance for the autonomy of such robots. In this work, we first study the different architectures proposed in the literature, and analyse the major issues that a control architecture must address. This analysis led us to propose a new architecture, decentralized, generic and reusable, integrating an artificial intelligence approach (use of logical reasoning, dynamic propagation of constraints) and a software engineering approach (programming by contract, agents). After a presentation of the concepts underlying this architecture and an in-depth description of its operation, we describe an implementation which is used to control of a ground robot for navigation, exploration and monitoring tasks. Results are presented and analyzed. In a second part, we focus on the modeling and verifiability of such a control architecture. After analyzing different solutions, we present a comprehensive model of the proposed architecture that uses linear logic. We then discuss the different possible approaches to assess the properties of reachability and safety within this model. Finally we discuss different ways to enrich this work. In particular, we discuss possible extensions to the control of a multiple cooperating robots, but also the need for stronger links between the control layer and the modeling

    NOUVELLES TECHNOLOGIES DE L'INFORMATION ET DE LA COMMUNICATION, NOUVELLES LECTURES, NOUVEAUX ÉCRITS - POUR UNE CARACTÉRISATION DU GENRE DU DOCUMENT NUMÉRIQUE

    Get PDF
    Current technologies have enabled knowledge to along pathways that go beyond pluralistic patterns of traditional broadcasting. To improve the indexing and searching in this area, many methods are aimed at overdetermine papers published as a set of metadata. The gendre issue is part of the more global problem of classification of semiotic products and aims to provide elements that could improve research methods and techniques of manipulation.This thesis suggest to highlight discriminating features that could identify the types of digital documents. Ultimately, this should lead to improved search tools and indexing documents. It is organized into four parts. But first, a section introduces the concepts used thoughout the development, it shall determine the epistemological environment and methodologies chosen. The first part of the thesis makes a "flattering" of the concept of document and proceeds with his analysis, particularly in terms of scanning and changing practices that it brings. Three levels were selected as relevant: the technological aspect, witch relates to object (shape), its semiotic consistency, dependent on the interpretation of the subjects (the bottom) and the pragmatic target is it to say that revolve around the actions and justify its existence (it works). One defined the object of study, the second part of the thesis makes a "state of arts" of gender. After tracing the evolution of ideas that the concept of gender has developed over time, were identified three trends that seem to illustrate just as many ways to approach the semiotic object. The third part finally dressed the gendre issue, trying to find items relevant to a closer look operation of the dialectic between "being digital document", "subjects interpretants" and "practices" related. The goal here is to identify discriminating features that could identify the types of digital documents. Gender is thus analyzed:- context as a priori, that to say as a world of expectations of a community, in which case it is a "context of reference" subjects;- buildings as a reading course content, where the "context of actions" provides the defining elements in the formation of a meaning;- as a posteriori description of a document analysis, in this case, the "object context".The fourth section provides an exemplification and discussion of these ideas on a corpus of digital documents. The target application is here. This is to examine the possibility of developing tools for automatic recognition of gendres.Les technologies actuelles ont permis aux savoirs de se développer en suivant des voies pluralistes qui dépassent les schémas de diffusion traditionnelle. Pour améliorer l’indexation et la recherche dans ce nouvel espace, de nombreuses méthodes visent à surdéterminer les documents publiés d’un ensemble de métadonnées. La question du genre s’inscrit dans la problématique plus générale du classement des productions sémiotiques et vise à donner les éléments qui pourraient améliorer les méthodes de recherche et les techniques de manipulation. Cette thèse se propose de mettre en évidence des traits discriminants qui permettraient d’identifier les genres des documents numériques. À terme, cela devrait déboucher sur une amélioration des outils de recherche et d’indexation documentaire. Elle est organisée en quatre parties, avec en préambule, une section relative aux concepts utilisés tout au long des développements. Cette section fixe le cadre épistémologique ainsi que les méthodologies choisies. La première partie de la thèse effectue une « mise à plat » de la notion de document et procède à son analyse, particulièrement sous l’angle de la numérisation et de la modification des pratiques qu’elle amène. Trois niveaux ont été retenus comme pertinents : l’aspect technologique, qui se rattache à l’objet (sa forme), sa consistance sémiotique, dépendante de l’interprétation faite par les sujets (son fond) et la visée pragmatique, c’est-à-dire les actions qui s’articulent autour et qui justifient son existence (son fonctionnement). Une fois l’objet d’étude délimité, la deuxième partie de la thèse procède à un « état de l’art » de la question du genre. Après avoir retracé l’évolution des conceptions que la notion de genre a connu au fil du temps, ont été dégagées trois tendances qui semblent illustrer tout autant de manières d’aborder l’objet sémiotique. La troisième partie aborde enfin la question du genre, en cherchant à y trouver des éléments pertinents pour un regard plus opératoire de la dialectique entre « l’objet document numérique », les « sujets interprétants » et les « pratiques » qui s’y rapportent. L’ambition ici est de dégager des traits discriminants qui permettraient d’identifier les genres des documents numériques
    corecore