13 research outputs found

    Preuves par raffinement de programmes avec pointeurs

    Get PDF
    Le but de cette thèse est de spécifier et prouver des programmes avec pointeurs, tels que des programmes C, en utilisant des techniques de raffinement. L approche proposée permet de faire un compromis entre les techniques complexes qui existent dans la littérature et ce qui est utilisable dans l industrie, en conciliant légèreté des annotations et restrictions sur les alias. Nous définissons, dans un premier temps, un langage d étude, qui s inspire du langage C, et dans lequel le seul type de données mutable possible est le type des structures, auquel on accède uniquement à travers des pointeurs. Afin de structurer nos programmes, nous munissons notre langage d une notion de module et des concepts issus de la théorie du raffinement tels que les variables abstraites que nous formalisons par des champs modèle, et les invariants de collage. Ceci nous permet d écrire des programmes structurés en composants. L introduction des invariants de données dans notre langage soulève des problématiques liées au partage de pointeurs. En effet, en cas d alias, on risque de ne plus pouvoir garantir la validité de l invariant de données d une structure. Nous interdisons, alors l aliasing (le partage de référence) dans notre langage. Pour contrôler les accès à la mémoire, nous définissons un système de type, basé sur la notion de régions. Cette contribution s inspire de la théorie du raffinement et a pour but, de rendre les programmes les plus modulaires possible et leurs preuves les plus automatiques possible. Nous définissons, sur ce langage, un mécanisme de génération d obligations de preuve en proposant un calcul de plus faible précondition incorporant du raffinement. Nous prouvons ensuite, la correction de ce mécanisme de génération d obligations de preuve par une méthode originale, fondée sur la notion de sémantique bloquante, qui s apparente à une preuve de type soundness et qui consiste donc, à prouver la préservation puis le progrès de ce calcul. Nous étendons, dans un deuxième temps, notre langage en levant partiellement la restriction liée au partage de références. Nous permettons, notamment, le partage de références lorsqu aucun invariant de données n est associé au type structure référencé. De plus, nous introduisons le type des tableaux, ainsi que les variables globales et l affectation qui ne font pas partie du langage noyau. Pour chacune des extensions citées ci-dessus, nous étendons la définition et la preuve de correction du calcul de plus faible précondition en conséquence. Nous proposons enfin, une implantation de cette approche sous forme d un greffon de Frama-C (http://frama-c.com/). Nous expérimentons notre implantation sur des exemples de modules implantant des structures de données complexes, en particulier des défis issus du challenge VACID0 (http://vacid. codeplex.com/), à savoir les tableaux creux (Sparse Array) et les tas binaires.The purpose of this thesis is to specify and prove programs with pointers, such as C programs, using refinement techniques. The proposed approach allows a compromise between the complexe methods that exist in the literature and what is used in industry, reconciling lightness annotations and restrictions on the alias. We define, firstly, a language study, based on the C language, in which the only type of mutable data allowed is the type of structures, which can be accessed only through pointers. In order to structure our programs, we bring our language with a module notion and concepts issue from a refinement theory such as abstract variables that we formalize by model fields and gluing invariants. This allows us to write programs structured by components. Introducing invariants in our language raises issues related to aliasing. Indeed, in presence of alias, we might not be able to guarantee the validity of the invariant data structure. We forbid then the aliasing in our language. To control memory access, we define a type system based on the concept of regions. This contribution is based on the theory and refinement. It aims to make programs as modular as possible and proofs as automatic as possible. We define on this language, a mechanism for generation of proof obligations by proposing a weakest precondition calculus incorporating refinement. Next we prove the correction of this proof obligations generation mechnaism by an original method based on the concept of blocking semantic, which is similar to a proof of type soundness, and consists therefore, to proove the preservation and the progress of the defined calculus. Secondly, we extend our language by, partially, lifting the restrictions related to aliasing. We allow, in particular, sharing when no invariant is associated to the referenced data structure. In addition, we introduce the type of arrays, global variables, and assignment that are not part of the core language. For each of the extensions mentioned above, we extend the definition and correctness proof of the weakest precondition calculus accordingly. Finally, we propose an implementation of this approach as a Frama-C plugin(http ://frama-c.com/). We experimente our implantation on examples of modules implementing complex data structures, especially the challenges from the challenge VACID0 (http ://vacid. Codeplex.com /), namely sparse srrays and binary heaps.PARIS11-SCD-Bib. électronique (914719901) / SudocSudocFranceF

    Journées Francophones des Langages Applicatifs 2018

    Get PDF
    National audienceLes 29èmes journées francophones des langages applicatifs (JFLA) se déroulent en 2018 à l'observatoire océanographique de Banyuls-sur-Mer. Les JFLA réunissent chaque année, dans un cadre convivial, concepteurs, développeurs et utilisateurs des langages fonctionnels, des assistants de preuve et des outils de vérification de programmes en présentant des travaux variés, allant des aspects les plus théoriques aux applications industrielles.Cette année, nous avons sélectionné 9 articles de recherche et 8 articles courts. Les thématiques sont variées : preuve formelle, vérification de programmes, modèle mémoire, langages de programmation, mais aussi théorie de l'homotopieet blockchain

    Préformation et épigenèse en développement : une analyse épistémologique de l'Entwicklungsgeschichte après Darwin et de l'Entwicklungsmechanik

    Full text link
    La présente thèse a été évaluée par un jury composé des personnes suivantes: Molly Kao, Présidente-rapporteuse; François Duchesneau, Directeur de recherche; Frédéric Bouchard, Membre du jury; Stéphane Schmitt (CNRS, Paris), Examinateur externe; Jean-François Pflieger (UdeM - Biologie), Représentant du doyen de la FESP.L'objectif premier de cette thèse est de démontrer l'existence d'une logique de la découverte embryologique à l'œuvre dans la genèse de l'Entwicklungsmechanik et renouvelant l'opposition entre préformation et épigenèse. L'articulation d'une typologie du développement et d'une heuristique mécaniste alimente d'une part la réduction causale des phénomènes. L'expérimentation embryologique dévoile d'autre part des phénomènes complexes de régulation épigénétique qui forcent les biologistes à transformer leurs modèles explicatifs. Cette thèse analyse d'abord le rôle de la théorie darwinienne dans l'établissement d'une heuristique mécaniste appliquée à la morphologie. L'Entwicklungsgeschichte d'Ernst Haeckel opère alors la synthèse du programme embryologique de Karl von Baer et de la théorie darwinienne et la réduction physiologique de l'épigenèse typologique schématisée par la loi biogénétique de récapitulation. Une physiologie du développement s'émancipe de la méthodologie haeckelienne et de son cadre phylogénique. Prenant le relais de la physique du développement menée par Wilhelm His (1874), Wilhelm Roux réalise une synthèse physiologique du darwinisme dans Der Kampf der Theile im Organismus (La Lutte des parties dans l'organisme 1881). Une troisième partie de la thèse est consacrée à l'Entwicklungsmechanik et à ses rapports avec le néo-darwinisme d'August Weismann. On y retrace les étapes primordiales de la conception nucléo-idioplasmique de l'hérédité. Les découvertes de la mitose et de la fécondation (1873-1884), combinées à la théorie de Carl von Nägeli (1884), servent de préalables au néo-préformationnisme weismannien; dès 1885, Weismann postule ainsi une prédétermination interne du développement qui se réaliserait par division inégale de qualités héréditaires sises dans l'architecture chromatique du noyau. Cette théorie trouve appuie dans des expérimentations de destruction de blastomères (Chabry 1887, Roux 1888) mais est remise en cause par la découverte de la Theilbildung (Hans Driesch 1892). La réorganisation des destins morphogénétiques de cellules en différenciation (Umdifferenzierung) échapperait donc à la modélisation mécanique du développement. Deux issues au problème sont analysées : (1) l'invention du premier modèle d'induction embryonnaire (Driesch 1894) combinée à une épigenèse néo-vitaliste; (2) la théorie organiciste d'Oscar Hertwig, alliant les principes de la théorie cellulaire à une critique de l'application biologique de la causalité mécanique. L'analyse épistémologique des moments fondateurs de l'embryologie expérimentale éclaire comment une logique de la découverte a pris en compte présupposés préformationnistes et modèles mécanistes, structurant ainsi le devenir de la biologie développementale contemporaine.The main goal of this dissertation is to demonstrate the existence of a logic of embryological discovery which contributed to the genesis of Entwicklungsmechanik, and which renewed the opposition between preformation and epigenesis. On the one hand, the synthesis between a typology of development and a mechanistic heuristic led to a causal reductionist account of phenomena. Embryological experimentation, on the other hand revealed complex processes of epigenetic regulation which forced biologists to transform their models of explanation. This dissertation begins with an analysis of the role of Darwinism in the development of a mechanistic heuristic applied to morphology. Ernst Haeckel's Entwicklungsgeschichte proposed a synthesis between Karl von Baer's embryological program and Darwinism, which led to a physiological-reductionist view of typological epigenesis on the basis of the recapitulation law. A physiology of development thus frees itself from Haeckelian methodology and its phylogenic framework. While relying on Wilhelm His' physics of development (1874), Wilhelm Roux carried out a physiological synthesis of Darwinism in Der Kampf der Theile im Organismus (The Struggle of Parts in the Organism 1881). The third part of this dissertation examines the Entwicklungsmechanik and its relationship to August Weismann's Neo-Darwinism. The essential steps of the nuclear-idioplasmic theory of heredity are then described. The discoveries of mitosis and fertilization (1873-1884), combined with Carl von Nägeli's theory (1884), served as preconditions to Weismann's Neo-Preformationism. By 1885 Weismann postulates the existence of an internal predetermination of development, which would be carried out by unequal division of inherited qualities located in the nucleus chromatic architecture. This theory is first supported by experiments on blastomere destruction (Chabry 1887, Roux 1888), but it ends up being challenged by the discovery of Theilbildung (Hans Driesch 1892). The coordinated actions of differentiating cells which led to the reorganization of their morphogenetic fates (Umdifferenzierung) could not be accounted for by a mechanical model of development. Two outcomes are then examined: (1) the development of the first model of embryonic induction (Driesch 1894) coupled with a Neo-vitalistic epigenesis; (2) Oscar Hertwig's organicism, which combined principles of cell theory with a rejection of the use of mechanistic causality in biology. An epistemological analysis of experimental embryology's founding principles thus shows how a logic of discovery has structured the evolution of contemporary developmental biology by taking into account preformationist ideas and mechanistic models

    Separation logic and deductive verification

    No full text
    Cette thèse s'inscrit dans la démarche de preuve de programmes à l'aide de vérification déductive. La vérification déductive consiste à produire, à partir des sources d'un programme, c'est-à-dire ce qu'il fait, et de sa spécification, c'est-à-dire ce qu'il est sensé faire, une conjecture qui si elle est vraie alors le programme et sa spécification concordent. On utilise principalement des démonstrateurs automatiques pour montrer la validité de ces formules. Quand ons'intéresse à la preuve de programmes qui utilisent des structures de données allouées en mémoire, il est élégant et efficace de spécifier son programme en utilisant la logique de séparation qui est apparu il y a une dizaine d'année. Cela implique de prouver des conjectures comportant les connectives de la logique de séparation, or les démonstrateurs automatiques ont surtout fait des progrès dans la logique du premier ordre qui ne les contient pas.Ce travail de thèse propose des techniques pour que les idées de la logique de séparation puissent apparaître dans les spécifications tout en conservant la possibilité d'utiliser des démonstrateurs pour la logique du premier ordre. Cependant les conjectures que l'ont produit ne sont pas dans la même logique du premier ordre que celles des démonstrateurs. Pour permettre une plus grande automatisation, ce travail de thèse a également défini de nouvelles conversions entre la logique polymorphe du premier ordre et la logique multi-sortée dupremier ordre utilisé par la plupart des démonstrateurs.La première partie a donné lieu à une implémentation dans l'outil Jessie, la seconde a donné lieu à une participation conséquente à l'écriture de l'outil Why3 et particulièrement dans l'architecture et écriture des transformations qui implémentent ces simplifications et conversions.This thesis comes within the domain of proofs of programs by deductive verification. The deductive verification generates from a program source and its specification a mathematical formula whose validity proves that the program follows its specification. The program source describes what the program does and its specification represents what the program should do. The validity of the formula is mainly verified by automatic provers. During the last ten years separation logic has shown to be an elegant way to deal with programs which use data-structures with pointers. However it requires a specific logical language, provers, and specific reasoning techniques.This thesis introduces a technique to express ideas from separation logic in the traditional framework of deductive verification. Unfortunately the mathematical formulas produced are not in the same first-order logic than the ones of provers. Thus this work defines new conversions between the polymorphic first-order logic and the many-sorted logic used by most proves.The first part of this thesis leads to an implementation in the Jessietool. The second part results in an important participation to the writing of the Why3 tool, in particular in the architecture and writing of the transformations which implement these conversions

    Logique de séparation et vérification déductive

    No full text
    This thesis comes within the domain of proofs of programs by deductive verification. The deductive verification generates from a program source and its specification a mathematical formula whose validity proves that the program follows its specification. The program source describes what the program does and its specification represents what the program should do. The validity of the formula is mainly verified by automatic provers. During the last ten years separation logic has shown to be an elegant way to deal with programs which use data-structures with pointers. However it requires a specific logical language, provers, and specific reasoning techniques.This thesis introduces a technique to express ideas from separation logic in the traditional framework of deductive verification. Unfortunately the mathematical formulas produced are not in the same first-order logic than the ones of provers. Thus this work defines new conversions between the polymorphic first-order logic and the many-sorted logic used by most proves.The first part of this thesis leads to an implementation in the Jessietool. The second part results in an important participation to the writing of the Why3 tool, in particular in the architecture and writing of the transformations which implement these conversions.Cette thèse s'inscrit dans la démarche de preuve de programmes à l'aide de vérification déductive. La vérification déductive consiste à produire, à partir des sources d'un programme, c'est-à-dire ce qu'il fait, et de sa spécification, c'est-à-dire ce qu'il est sensé faire, une conjecture qui si elle est vraie alors le programme et sa spécification concordent. On utilise principalement des démonstrateurs automatiques pour montrer la validité de ces formules. Quand ons'intéresse à la preuve de programmes qui utilisent des structures de données allouées en mémoire, il est élégant et efficace de spécifier son programme en utilisant la logique de séparation qui est apparu il y a une dizaine d'année. Cela implique de prouver des conjectures comportant les connectives de la logique de séparation, or les démonstrateurs automatiques ont surtout fait des progrès dans la logique du premier ordre qui ne les contient pas.Ce travail de thèse propose des techniques pour que les idées de la logique de séparation puissent apparaître dans les spécifications tout en conservant la possibilité d'utiliser des démonstrateurs pour la logique du premier ordre. Cependant les conjectures que l'ont produit ne sont pas dans la même logique du premier ordre que celles des démonstrateurs. Pour permettre une plus grande automatisation, ce travail de thèse a également défini de nouvelles conversions entre la logique polymorphe du premier ordre et la logique multi-sortée dupremier ordre utilisé par la plupart des démonstrateurs.La première partie a donné lieu à une implémentation dans l'outil Jessie, la seconde a donné lieu à une participation conséquente à l'écriture de l'outil Why3 et particulièrement dans l'architecture et écriture des transformations qui implémentent ces simplifications et conversions

    Logique de séparation et vérification déductive

    No full text
    This thesis comes within the domain of proofs of programs by deductive verification. The deductive verification generates from a program source and its specification a mathematical formula whose validity proves that the program follows its specification. The program source describes what the program does and its specification represents what the program should do. The validity of the formula is mainly verified by automatic provers. During the last ten years separation logic has shown to be an elegant way to deal with programs which use data-structures with pointers. However it requires a specific logical language, provers, and specific reasoning techniques.This thesis introduces a technique to express ideas from separation logic in the traditional framework of deductive verification. Unfortunately the mathematical formulas produced are not in the same first-order logic than the ones of provers. Thus this work defines new conversions between the polymorphic first-order logic and the many-sorted logic used by most proves.The first part of this thesis leads to an implementation in the Jessietool. The second part results in an important participation to the writing of the Why3 tool, in particular in the architecture and writing of the transformations which implement these conversions.Cette thèse s'inscrit dans la démarche de preuve de programmes à l'aide de vérification déductive. La vérification déductive consiste à produire, à partir des sources d'un programme, c'est-à-dire ce qu'il fait, et de sa spécification, c'est-à-dire ce qu'il est sensé faire, une conjecture qui si elle est vraie alors le programme et sa spécification concordent. On utilise principalement des démonstrateurs automatiques pour montrer la validité de ces formules. Quand ons'intéresse à la preuve de programmes qui utilisent des structures de données allouées en mémoire, il est élégant et efficace de spécifier son programme en utilisant la logique de séparation qui est apparu il y a une dizaine d'année. Cela implique de prouver des conjectures comportant les connectives de la logique de séparation, or les démonstrateurs automatiques ont surtout fait des progrès dans la logique du premier ordre qui ne les contient pas.Ce travail de thèse propose des techniques pour que les idées de la logique de séparation puissent apparaître dans les spécifications tout en conservant la possibilité d'utiliser des démonstrateurs pour la logique du premier ordre. Cependant les conjectures que l'ont produit ne sont pas dans la même logique du premier ordre que celles des démonstrateurs. Pour permettre une plus grande automatisation, ce travail de thèse a également défini de nouvelles conversions entre la logique polymorphe du premier ordre et la logique multi-sortée dupremier ordre utilisé par la plupart des démonstrateurs.La première partie a donné lieu à une implémentation dans l'outil Jessie, la seconde a donné lieu à une participation conséquente à l'écriture de l'outil Why3 et particulièrement dans l'architecture et écriture des transformations qui implémentent ces simplifications et conversions

    Écosystème relationnel pour une paix intérieure et extérieure : modèle issu d’une méthode mixte en recherche sur l’approche de l’écoute compassionnelle selon The Compassionate Listening Project.

    Full text link
    Cette thèse présente un modèle théorique et appliqué favorisant la création d'une culture de paix dans tout environnement, nomme: Écosystème relationnel du mieux-être pour une paix intérieure et extérieure. Il propose une série de variables, indicateurs et moyens pour contribuer un 'agenda du cœur' à toutes autres formes d'agendas (ex. politique, économique, social, religieux). Les résultats sont conçus en fonction d'élaborer un programme avec outils connexes pour concrètement apporter des éléments prosociaux dialogiques et contrer ceux menant à des conflits de tout ordre. La transformation des blessures et éléments liés au conflit s'en trouvent transformer par les choix conscients et l'acquisition d'habiletés centrales pour une culture de paix et un mieux-vivre ensemble. La recherche combine des savoirs issus des sciences des religions, sciences sociales et santé. Innovatrice, cette thèse a comme visée de contribuer une plateforme relationnelle guidant les individus et groupes à un mieux-être personnel et collectif.The research consists of an exploratory mixed-method research (Cresswell & Plano Clark, 2011) using a constructive Grounded Theory methodology (Charmaz, 2014, 2006). The object of study is experiences and transformations related to the practice of compassionate listening, as well as the process and type of spirituality at the heart of this approach for conflict transformation developed by The Compassionate Listening Project (TCLP) based in the United States. People get to sit with Israeli or Palestinian guest speakers and they listen to them share their story and experience with the conflict, wherever they can locate themselves in the political Spectrum. Trained with the compassionate listening approach, it becomes possible for them to affirm their deepest humanity and learn to hold the complexities related to the conflict (Cohen, 2011). 14 semi-structured interviews with delegates from the 2010 TCLP delegation, participant observation and document analysis, took place in the qualitative stage of the research. Followed by the administration of an online questionnaire to past participants of TCLP delegations between 1998 and 2015 (n=60). The study led to the emergence of a theoretical and practical Model named: Well-being Ecosystem for Inner and Outer peace, based on a social process theory (Glaser, 2005) informing on conditions and factors involved in the passage between three stages: from a feeling or state of separation with the other, to more communication and towards deep connection and communion. The integration chapter of the mixed methods presents four key pillars supporting this Model to help integrate an agenda of the heart to peace efforts, in the form of specific types of “responses of the heart” (affiliated to the notion of compassionate love, Fehr et al., 2009) inspired by the compassionate listening approach and series of variables, factors, and conditions to help cultivate a culture of peace in any environment. The quality of presence and environment at the relational level is exposed in the nexus of the notions of spirituality and practice for peacebuilding and conflict transformation. The research combines scientific and experiential knowledge in Social Sciences, Applied Religious Studies, Health and Contemplative Studies.Cette recherche en sciences des religions appliquées porte sur l’approche de l’écoute compassionnelle (Cohen, 2011) développée par l’organisme The Compassionate Listening Project (TCLP) et pratiquée en contexte de réconciliation entre Juifs et Palestiniens d’Israël, de la bande de Gaza et de la Cisjordanie. Selon Marie Pace (2005), qui a fait une étude de cas empirique sur cette approche de construction de la paix, plusieurs participants ont témoigné à leur retour que cette expérience avait été transformationnelle et avait changé leur vie. Certains parlaient même de guérison (healing) (Pace, 2005). Quel processus est au coeur de cette approche, dont le rôle de la compassion est central ? Comment se vit l’expérience de procurer et de recevoir de l’écoute compassionnelle ? Quel impact de transformation, voire de guérison (healing) est à l’oeuvre ? Tel que le clament les auteures de cette méthode, s'il s'avérait qu’elle soit le moteur d'un dialogue plus profond et d'une réconciliation véritable, est-ce qu’il y a un apport particulier d’une forme de spiritualité ? Si oui, quelle est-elle ? Pour répondre à ces questions, une méthode mixte en recherche de type exploratoire fut empruntée, débutant par une phase qualitative suivie d’une phase quantitative de recherche (Cresswell & Plano Clark, 2011). Une observation participante au sein d’une délégation en Israël-Palestine en 2010 et quatorze entrevues individuelles auprès des délégués furent effectuées ainsi qu’une analyse documentaire sur les écrits liés à cette approche. La phase quantitative a inclus l’administration d’un questionnaire auprès de plusieurs anciens participants aux délégations organisées par TCLP de 1998 à 2015 (n=60). Ce qui a permis de vérifier des éléments de réponse sur l’objet d’étude fourni par les entrevues, en plus des composantes d’une théorie émergente. L’étude adopte la méthodologie de la théorie enracinée (Grounded Theory) et présente une théorie de processus social de base (Glaser, 2005) sur les conditions et facteurs favorisant le passage entre un état ou sentiment de séparation avec l’autre, vers une meilleure communication et une connexion profonde et communion. Ces stages s’inscrivent au sein d’un modèle théorique et appliqué nommé : Écosystème relationnel du mieux-être pour lune paix intérieure et extérieure, lequel fait figure de plateforme relationnelle (Lederach, 2005) pour la contribution d’un agenda du coeur aux efforts de paix. Ce modèle informe sur le type de « réponse du coeur » en jeu dans un amour centré sur l’autre, communément vu comme un amour compassionnel (Fehr et al., 2009) et présente une série de variables, indicateurs et indices prenant en compte la synergie et qualité de présence particulières pouvant contribuer aux efforts de paix et à la création d’une culture de la paix intérieure et extérieure dans tout environnement. Mots-clé : Écoute compassionnelle, transformation des conflits, culture de la paix, compassion, écoute, sciences des religions appliquées, amour compassionnel, agenda du coeur, réponse du coeur, conflit israélo-palestinien
    corecore