289 research outputs found

    Compilation certifiée de SCADE/LUSTRE

    Get PDF
    Les langages synchrones sont apparus autour des années quatre-vingt, en réponse à un besoin d avoir un modèle mathématique simple pour implémenter des systèmes temps réel critiques. Dans ce modèle, le temps est découpé en instants discrets durant lesquels tous les composants du système reçoivent et produisent une donnée. Cette modélisation permet des raisonnements beaucoup plus simples en évitant de devoir prendre en compte le temps de calcul de chaque opération. Dans le monde du logiciel critique, la fiabilité du matériel et de son fonctionnement sont primordiaux, et on accepte d être plus lent si on devient plus sûr. Afin d augmenter cette fiabilité, plutôt que de concevoir manuellement tout le système, on utilise des machines qui synthétisent automatiquement le système souhaité à partir d une description la plus concise possible. Dans le cas du logiciel, ce mécanisme s appelle la compilation, et évite des erreurs introduites par l homme par inadvertance. Elle ne garantit cependant pas la bonne correspondance entre le système produit et la description donnée. Des travaux récents menés par une équipe INRIA dirigée par Xavier Leroy ont abouti en 2008 au compilateur CompCert d un sous-ensemble large de C vers l assembleur PowerPC pour lequel il a été prouvé dans l assistant de preuve Coq que le code assembleur produit correspond bien à la description en C du programme source. Un tel compilateur offre des garanties fortes de bonne correspondance entre le système synthétisé et la description donnée. De plus, avec les compilateurs utilisés pour le temps réel critique, la plupart des optimisations sont désactivées afin d éviter les erreurs qui y sont liées. Dans CompCert, des optimisations elles aussi prouvées sont proposées, ce qui pourrait permettre ces passes dans la production de systèmes temps réel critiques sans en compromettre la fiabilité. Le but de cette thèse est d avoir une approche similaire mais spécifique à un langage synchrone, donc plus approprié à la description de systèmes temps réel critiques que ne l est le C. Un langage synchrone flots de données semblable à Lustre, nommé Ls, et un langage impératif semblable au langage C, nommé Obc y sont proposés ainsi que leur sémantique formelle et une chaîne de compilation avec des preuves de préservation de sémantique le long de cette chaîne.Synchronous languages first appeared during the 80 s, in order to provide a mathematical model for safety-critical systems. In this model, time is discrete. At each instant, all components of the system simultaneously receive and produce some data. This model allows simpler reasonning on the behaviour of the system, as it does not involve the time required for each of the operations for every component. In safety-critical systems, safety is the rule, so a poor performance behaviour can be allowed if it improves safety. In order to improve safety, rather than conceiving directly the system, machines are used to automatically design the system from a given concise description. In the case of software, this machine is called a compiler, and avoids issues due to some human inadvertence. But it does not ensure that the produced system and the description specification really show the same behaviour. Some recent work from an INRIA team lead by Xavier Leroy achieved in 2008 the realisation of the CompCert compiler from a large subset of C to PowerPC assembly, for which it was proven inside of the Coq proof assistant that the produced system fits its source description. Such a compiler offers strong guarantees that the produced system and its given description by the programmer really fit. Furthermore, most current compiler s optimizations are disabled when dealing with safety-critical systems in order to avoid tedious compilation errors that optimizations may introduce. Proofs for optimizations may allow their use in this domain without affecting the faith we could place in the compiler. The aim of this thesis is to follow a similar path, but this one on a language which would be more suited for safety-critical systems than the C programming language. Some dataflow synchronous programming language very similar to Lustre, called Ls is described with its formal semantics, as well as an imperative programming language similar to a subset of C called Obc. Furthermore some compilation process is described as well as some proofs that the semantics is preserved during the compilation process.PARIS11-SCD-Bib. électronique (914719901) / SudocSudocFranceF

    Conteneurs de première classe en Coq

    Get PDF
    National audienceWe present a Coq library for finite sets and maps which brings the same functionalities as the existing FSets/FMaps library, but uses type-classes instead of modules in order to ensure the genericity of the proposed data structures. This architecture facilitates the use of these data structures and more generally the implementation of complex algorithms in Coq.Nous présentons une bibliothèque Coq d'ensembles et de dictionnaires finis qui reproduit les fonctionnalités disponibles dans la bibliothèque existante FSets/FMaps mais où la généricité des structures est obtenue via des classes de types et non des modules. Cette architecture permet un usage simplifié de ces structures et facilite la programmation d'algorithmes complexes en Coq

    Résolution d'équations en algèbre de Kleene : applications à l'analyse de programmes

    Get PDF
    Au fil des ans, l'algèbre de Kleene s'est avérée être un outil formel très pratique et flexible quant vient le temps de raisonner sur les programmes informatiques. Cependant, actuellement, la plupart des applications à l'analyse de programmes de l'algèbre de Kleene se font en sélectionnant un problème précis et en voyant comment l'algèbre de Kleene permet de le résoudre, ce qui limite les applications possibles. L'objectif visé par ce mémoire est de déterminer dans quelle mesure la résolution d'équations, en algèbre de Kleene, peut être utilisée en analyse de programmes. Une grande partie de ce mémoire est donc consacrée à la résolution de différents types d'équations dans différentes variantes de l'algèbre de Kleene. Puis nous montrons comment la vérification de programmes ainsi que la synthèse de contrôleurs peuvent tirer profit de la résolution d'équations en algèbre de Kleene

    Vérification formelle des systèmes multi-agents auto-adaptatifs

    Get PDF
    A major challenge for the development of self-organizing MAS is to guarantee the convergence of the system to the overall function expected by an external observer and to ensure that agents are able to adapt to changes. In the literature, several works were based on simulation and model-checking to study self-organizing MAS. The simulation allows designers to experiment various settings and create some heuristics to facilitate the system design. Model checking provides support to discover deadlocks and properties violations. However, to cope with the complexity of self-organizing MAS, the designer also needs techniques that support not only verification, but also the development process itself. Moreover, such techniques should support disciplined development and facilitate reasoning about various aspects of the system behavior at different levels of abstraction. In this thesis, three essential contributions were made in the field of formal development and verification of self-organizing MAS: a formalization with the Event-B language of self-organizing MAS key concepts into three levels of abstraction, an experimentation of a top-down refinement strategy for the development of self-organizing MAS and the definition of a bottom-up refinement process based on refinement patterns.Un des défis majeurs pour le développement des Systèmes Multi-Agents (SMA) auto-organisateurs est de garantir la convergence du système vers la fonction globale attendue par un observateur externe et de garantir que les agents sont capables de s'adapter face aux perturbations. Dans la littérature, plusieurs travaux se sont basés sur la simulation et le model-checking pour analyser les SMA auto-organisateurs. La simulation permet aux concepteurs d'expérimenter plusieurs paramètres et de créer certaines heuristiques pour faciliter la conception du système. Le model-checking fournit un support pour découvrir les blocages et les violations de propriétés. Cependant, pour faire face à la complexité de la conception des SMA auto-organisateurs, le concepteur a également besoin de techniques qui prennent en charge non seulement la vérification, mais aussi le processus de développement lui-même. En outre, ces techniques doivent permettre un développement méthodique et faciliter le raisonnement sur divers aspects du comportement du système à différents niveaux d'abstraction. Dans cette thèse, trois contributions essentielles ont été apportées dans le cadre du développement et la vérification formelle des SMA auto-organisateurs: une formalisation à l'aide du langage B-événementiel des concepts clés de ces systèmes en trois niveaux d'abstraction (micro, méso et macro), une expérimentation d'une stratégie de raffinement descendante pour le développement des SMA auto-organisateurs et la proposition d'un processus de raffinement ascendant basé sur des patrons de raffinement

    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)

    Méthodes qualitatives pour la construction et l'analyse des réseaux moléculaires SBGN

    Get PDF
    Two fundamental tasks of Systems Biology are the construction of molecular networks from experimental data, and their analysis with a view to discovering their emergent properties. With the increase of available experimental data, these two tasks can no longer be realized by hand. Based on this observation, numerous bioinformatics methods aiming at the automation of these two task have been developped.In parallel, standards aiming at defining and organizing terms of systems biology, or representing networks and mathematical models, have been developped. Among these standards, the Standard Biology Graphical Notation is composed of three languages that allow the representation of molecular networks. The two main SBGN languages are SBGN-PD for the representation of reaction networks, and SBGN-AF for the representation of influence graphs. The SBGN notation not only standardizes the representation of networks, but also gives the concepts of systems biology that are most often used to express knowledge of the field.Our work takes its root in this general background. We have developped a number of methods to construct molecular networks and analyze their dynamics. All the methods that we propose are based on qualitative formalisms, such as logics or automata networks. These formalisms have solid theoretical bases and can be used by numerous pieces of software. All our methods also rely on the biological concepts given by the SBGN standard, and can therefore be blended in the same theoretical framework.First, we introduce two sets of predicates that allow to translate any SBGN-PD or SBGN-AF network into a set of ground atoms. Then, we show how these sets of predicates can be used to reason on networks, by proposing a transformation method of SBGN-PD signaling networks into SBGN-AF influence graphs.Second, we present a first-order logic based method to construct signaling networks from experimental results. This method formalizes and automatizes biologists' reasoning using explicit reasoning rules.On the contrary to existing methods, it allows to take into account numerous types of experimental results while reconstructing precise molecular mecanisms.Third, we show a new method to compute the finite traces and attractor points of Boolean networks that model SBGN-AF networks and that are parameterized using general principles.Finally, we introduce two new qualitative semantics for the computation of the dynamics of SBGN-PD reaction networks. These semantics are expressed using automata networks. The first semantics extends the classical Boolean semantics by taking into account inhibitions. As to the second one, it relies on the concept of story which introduces a new point of view on reaction networks. Indeed, it allows to model different physical states of the same molecular entity using a unique variable.All the methods that we have developped show how qualitative formalisms can be used to reason on the relations represented by molecular networks in order to discorver new knowledge in systems biology.La construction des réseaux moléculaires à partir de résultats expérimentaux, ainsi que leur analyse en vue d'en exhiber des propriétés émergentes, sont deux tâches fondamentales de la biologie des systèmes. Avec l'augmentation du nombre de données expérimentales, elles ne peuvent plus être réalisées manuellement. Partant de ce constat, un certain nombre de méthodes bioinformatiques visant à les automatiser ont été développées.En parallèle du développement des méthodes, un certain nombre de standards ont vu le jour. Parmi ceux-ci, la Standard Biology Graphical Notation (SBGN) se compose de trois langages permettant la représentation des réseaux moléculaires.Les deux langages SBGN les plus couramment utilisés sont SBGN-PD pour la représentation des réseaux de réactions, et SBGN-AF pour celle des graphes d'influences. La notation SBGN, en plus de standardiser la représentation des réseaux, donne l'ensemble des concepts de la biologie des systèmes qui sont le plus souvent utilisés pour exprimer les connaissances du domaine.C'est dans ce cadre général que se placent l'ensemble de nos travaux. Nous avons développé un ensemble de méthodes pour la construction des réseaux moléculaires et l'analyse de leur dynamique. L'ensemble des méthodes que nous proposons reposent sur des formalismes qualitatifs, tels que la logique ou les réseaux d'automates. Ces formalismes on non seulement des bases théoriques solides, mais peuvent aussi être utilisés par de nombreux logiciels.L'ensemble de nos méthodes reposent également sur les concepts biologiques fournis par le standard SBGN, et peuvent ainsi être intégrées dans un même cadre théorique.Nous introduisons d'abord deux ensembles de prédicats qui permettent de traduire n'importe quel réseau SBGN-PD ou SBGN-AF sous la forme d'atomes instanciés. Nous montrons ensuite comment ces deux ensembles peuvent être utilisés pour raisonner automatiquement sur des réseaux moléculaires, en proposant une méthode de transformation automatique des réseaux de signalisation SBGN-PD en graphes d'influences SBGN-AF.Nous présentons ensuite une méthode de construction des réseaux de signalisation à partir de résultats expérimentaux, basée sur la logique du premier ordre. Cette méthode formalise et automatise le raisonnement réalisé par les biologistes à l'aide de règles de raisonnement explicites. Contrairement aux méthodes développées jusqu'à maintenant, celle que nous présentons prend en compte un grand nombre de types d'expériences, tout en permettant la reconstruction de mécanismes moléculaires précis.Puis nous montrons une nouvelle méthode pour le calcul des traces finies et des points attracteurs de réseaux Booléens modélisant des réseaux SBGN-AF et paramétrés à l'aide de principes généraux. Notre méthode repose sur l'utilisation de programmes logiques normaux du premier ordre, qui formalisent ces principes généraux.Enfin, nous proposons deux nouvelles sémantiques qualitatives pour le calcul de la dynamique des réseaux de réactions SBGN-PD, exprimées à l'aide de réseaux d'automates. La première de ces sémantiques étend la sémantique Booléenne des réseaux de réactions en prenant en compte les inhibitions. Quant à la deuxième, elle introduit le concept d'histoire (story) qui offre un nouveau point de vue sur les réseaux de réactions, en permettant de modéliser différents états physiques d'une même entité moléculaire par une seule variable.L'ensemble des méthodes que nous avons développées montrent comment les formalismes qualitatifs, et en particulier la logique, peuvent être utilisés pour raisonner à partir des relations représentées par les réseaux moléculaires, afin de découvrir de nouvelles connaissances en biologie des systèmes

    Mécanisme de contrôle du flot d'information dans un programme : approche par typage trivalué

    Get PDF
    Ce mémoire présente un mécanisme d’application de politiques de sécurité grâce à une analyse de types trivaluée sur un langage impératif. Notre analyse a pour but de réduire les faux positifs générés par l’analyse statique, tout en préparant les programmes analysés à être instrumentés. Les faux positifs se produisent dans l’analyse de systèmes informatiques à temps réel quand il manque de l’information au moment de la compilation, par exemple un nom de fichier, et par conséquent, son niveau de sécurité. Notre approche visant à répondre à la question « Y a-t’il violation de la propriété de non-interférence dans le programme ? », l’idée clé est de distinguer les réponses négatives des réponses incertaines. Au lieu de rejeter le programme systématiquement en cas d’incertitude, nous typons les instructions avec un type additionnel, unknown, indiquant l’incertitude. Notre travail est fait en préparation à un mécanisme d’application hybride, combinant l’analyse statique par l’analyse de types et l’analyse dynamique par l’instrumentation de code. Durant l’étape d’analyse statique, les réponses positives et négatives sont traitées de manière standard, tandis que les réponses incertaines sont clairement annotées du type incertain, préparant ainsi pour un éventuel passage à la deuxième étape : l’instrumentation. Une preuve que notre système de types est cohérent est donnée, ceci en montrant qu’il satisfait la non-interférence. Les programmes interagissent à travers les canaux de communication. Notre contribution réside dans la manipulation de trois types de sécurité, mais aussi dans le traitement des variables et canaux de communication de manière particulière. Les niveaux de sécurité sont associés aux canaux plutôt qu’aux variables dont les niveaux de sécurité varient selon l’information qu’elles contiennent

    Développement d'un système tutoriel intelligent pour l'apprentissage du raisonnement logique

    Get PDF
    Le raisonnement est un processus cognitif nous permettant de tirer à partir de règles, des conclusions sur des faits et situations de la vie. Il est considéré dans la littérature comme étant une partie intégrante de plusieurs autres processus humains comme la perception (résultat d'une combinaison inductive entre les senseurs et la mémoire), la catégorisation, la compréhension, la prise de décision, la résolution de problèmes. L'humain a tendance à effectuer des raisonnements erronés sans s'en rendre compte. Les erreurs de raisonnement seraient des inférences créatives dans un contexte où il aurait été approprié de faire une inférence déductive. L'acquisition de la compétence en raisonnement consiste alors à apprendre à être déductif et ainsi à acquérir des structures plus organisées pour mieux systématiser notre information et pour devenir cognitivement plus performants. L'avènement des technologies de l'information allié à l'évolution du domaine de l'Intelligence Artificielle, a permis le développement de systèmes tel que les systèmes tutoriels intelligents (STI). Ces systèmes sont caractérisés par le fait qu'ils permettent d'automatiser l'enseignement et de favoriser l'apprentissage sans l'intervention d'un tuteur humain. Ce projet vise le développement d'un STI générique appelé Muse-logique et dédié à l'apprentissage du raisonnement logique. Dans ce document, nous présentons en premier lieu la problématique et les objectifs de notre projet. Une étude détaillée des domaines en jeu est faite par la suite. Enfin, l'architecture, les éléments conceptuels et les résultats d'implémentation du système, sont exposés ainsi qu'une validation préliminaire du système. Le contenu et l'élaboration des différents composants du STI on fait l'objet d'un travail minutieux effectué avec la participation active des membres d'une équipe multidisciplinaire. Le composant expert est soutenu par un ensemble de règles du domaine. Le modèle cognitif de l'apprenant est soutenu par un réseau bayésien et enfin, le modèle pédagogique est soutenu par des règles tutorielles étudiées et validées théoriquement. La particularité et la robustesse de Muse-logique résident dans son cadre de développement composé d'experts en sciences cognitives, en systèmes tutoriels intelligent et en raisonnement logique. Des perspectives futures sont envisagées pour les prochaines versions.\ud ______________________________________________________________________________ \ud MOTS-CLÉS DE L’AUTEUR : raisonnement logique, systèmes tutoriels intelligents, logique, système adaptatif, réseau bayésien, feedbacks, représentation des connaissances

    Extraction de code fonctionnel certifié à partir de spécifications inductives.

    Get PDF
    Les outils d aide à la preuve basés sur la théorie des types permettent à l utilisateur d adopter soit un style fonctionnel, soit un style relationnel (c est-à-dire en utilisant des types inductifs). Chacun des deux styles a des avantages et des inconvénients. Le style relationnel peut être préféré parce qu il permet à l utilisateur de décrire seulement ce qui est vrai, de s abstraire temporairement de la question de la terminaison, et de s en tenir à une description utilisant des règles. Cependant, une spécification relationnelle n est pas exécutable.Nous proposons un cadre général pour transformer une spécification inductive en une spécification fonctionnelle, en extrayant à partir de la première une fonction et en produisant éventuellement la preuve de correction de la fonction extraite par rapport à sa spécification inductive. De plus, à partir de modes définis par l utilisateur, qui permettent de considérer les arguments de la relation comme des entrées ou des sorties (de fonction), nous pouvons extraire plusieurs comportements calculatoires à partir d un seul type inductif.Nous fournissons également deux implantations de notre approche, l une dans l outil d aide à la preuve Coq et l autre dans l environnement Focalize. Les deux sont actuellement distribuées avec leurs outils respectifs.Proof assistants based on type theory allow the user to adopt either a functional style, or a relational style (e.g., by using inductive types). Both styles have advantages and drawbacks. Relational style may be preferred because it allows the user to describe only what is true, discard momentarily the termination question, and stick to a rule-based description. However, a relational specification is usually not executable.We propose a general framework to turn an inductive specification into a functional one, by extracting a function from the former and eventually produce the proof of soundness of the extracted function w.r.t. its inductive specification. In addition, using user-defined modes which label inputs and outputs, we are able to extract several computational contents from a single inductive type.We also provide two implementations of our approach, one in the Coq proof assistant and the other in the Focalize environnement. Both are currently distributed with the respective tools.PARIS-CNAM (751032301) / SudocSudocFranceF
    • …
    corecore