423 research outputs found

    PML2: Integrated Program Verification in ML

    Get PDF
    We present the PML_2 language, which provides a uniform environment for programming, and for proving properties of programs in an ML-like setting. The language is Curry-style and call-by-value, it provides a control operator (interpreted in terms of classical logic), it supports general recursion and a very general form of (implicit, non-coercive) subtyping. In the system, equational properties of programs are expressed using two new type formers, and they are proved by constructing terminating programs. Although proofs rely heavily on equational reasoning, equalities are exclusively managed by the type-checker. This means that the user only has to choose which equality to use, and not where to use it, as is usually done in mathematical proofs. In the system, writing proofs mostly amounts to applying lemmas (possibly recursive function calls), and to perform case analyses (pattern matchings)

    On automating the extraction of programs from termination proofs

    Get PDF
    Investigamos un sistema de síntesis de programas automatizado que se basa en el paradigma de la programación por pruebas. Para extraer automáticamente un término que calcule una función recursiva dada por un conjunto de ecuaciones, el sistema debe encontrar una prueba formal de la totalidad de la función dada. Debido al marco lógico particular, por lo general estos enfoques dificultan el uso de técnicas de terminación como las de la teoría de reescritura. Superamos esta dificultad para el sistema automatizado que consideramos explotando tipos de productos. Como consecuencia, esto permitiría la incorporación de técnicas de terminación utilizadas en otras áreas sin dejar de extraer programas.We investigate an automated program synthesis system that is based on the paradigm of programming by proofs. To automatically extract a term that computes a recursive function given by a set of equations the system must nd a formal proof of the totality of the given function. Because of the particular logical framework, usually such approaches make it dicult to use termination techniques such as those in rewriting theory. We overcome this diculty for the automated system that we consider by exploiting product types. As a consequence, this would enable the incorporation of termination techniques used in other areas while still extracting programs

    Preface

    Get PDF

    On Extensions of AF2 with Monotone and Clausular (Co)inductive Definitions

    Get PDF
    This thesis discusses some extensions of second-order logic AF2 with primitive constructors representing least and greatest fixed points of monotone operators, which allow to define predicates by induction and coinduction. Though the expressive power of second-order logic has been well-known for a long time and suffices to define (co)inductive predicates by means of its (co)induction principles, it is more user-friendly to have a direct way of defining predicates inductively. Moreover recent applications in computer science oblige to consider also coinductive definitions useful for handling infinite objects, the most prominent example being the data type of streams or infinite lists. Main features of our approach are the use clauses in the (co)inductive definition mechanism, concept which simplifies the syntactic shape of the predicates, as well as the inclusion of not only (co)iteration but also primitive (co)recursion principles and in the case of coinductive definitions an inversion principle. For sake of generality we consider full monotone, and not only positive definitions, after all positivity is only used to ensure monotonicity. Working towards practical use of our systems we give them realizability interpretations where the systems of realizers are strongly normalizing extensions of the second-order polymorphic lambda calculus, system F in Curry-style, with (co)inductive types corresponding directly to the logical systems via the Curry-Howard correspondence. Such realizability interpretations are therefore not reductive: the definition of realizability for a (co)inductive definition is again a (co)inductive definition. As main application of realizability we extend the so-called programming-with-proofs paradigm of Krivine and Parigot to our logics, by means of which a correct program of the lambda calculus can be extracted from a proof in the logic

    What's wrong with Psychology, anyway?

    Get PDF
    This chapter considers various factors that have been responsible for the comparatively slow development of psychology into a cumulative empirical science. Special attention is devoted to correctable methodological mistakes, the over-reliance upon significance testing (and the fact that, in psychology, the null hypothesis is almost always false), and an analysis of the concept of replication

    Preface to Girard's Festschrift

    Get PDF
    International audienceThis text is both meant as a preface to a volume of Theoretical Computer Science dedicated to Jean-Yves Girard, and as a short essay in French (with an English summary) on the relation between proof theory and programming languages -- a coming together in which Jean-Yves' works play a prominent role

    Preface to Girard's Festschrift

    Get PDF
    International audienceThis text is both meant as a preface to a volume of Theoretical Computer Science dedicated to Jean-Yves Girard, and as a short essay in French (with an English summary) on the relation between proof theory and programming languages -- a coming together in which Jean-Yves' works play a prominent role

    Peter, le langage qui n’existe pas...

    Get PDF
    “Inside every large language is a small language struggling to get out ...” [Igarashi et al. 2001]“... and inside every small language is a sharp extension looking for better expressivity ...” [Liquori & Spiwack 2008]It is my privilege and pleasure to introduce Peter, the language that does not exist... The Peter language contains almost the linguistic features I have introduced and investigated in the field of functional and object-oriented programming, plus some new features not published yet. In Peter’s Habilitation, I will try to limit as much as possible the mathematical overhead and the technicalities (e.g. full set of rules, full proofs of theorems, etc.). In my opinion, the habilitation thesis should not be a mere translation of the candidate’s most successful papers (3), nor a commented curriculum vitæ, nor a survey of all the related works in his scientific area (4), just to mention a few “classic Habilitation styles”. It is my opinion that it should be short in length since it is experienced that a very few Habilitation thesis are really downloaded, cited and read. Oftenly, habilitation thesis are not even made accessible on the Web. Peter’s Habilitation will be based on the following three points: • (Modularity) I will present a (Turing complete) kernel of Peter, called Baby Peter, and I will continue in the rest of the Habilitation to extend it in a modular fashion until the final extension, called Wise Peter. Baby Peter is a functional language with object-oriented features equipped with a sound type system. Peter bears some similarities to Atsushi, Benjamin and Phil’s Featherweight Java [IPW01] and Alonso Church’s typed lambda calculus [Chu41]. The main difference lies in an ad hoc exception-handling mechanism allowing the programmer to choose the type system according to her/his necessities and goals. Even more, it allows the programmer to write her/his own type system (see item (Type-programmable)). Some chapters will focus on operational semantics, some others on type systems, some others on both. All topics will be treated in a “lightweight fashion”. Examples of extensions are for instance mixing class-based and pure object-based features, but also improving proof languages à la LF with pattern matching facilities and including those metalanguages to Peter in order to mix algorithms and their correctness proofs. • (Verbatim-like) Instead of annoying the reader with a plain French translation of some of my most relevant papers (6), I will show, for each extension, only some key rules of the operational semantics or of the type system (every system has at least a key rule...) and some motivating examples. I do not plan to prove type soundness for each extension of Peter: the whole soundness of Wise Peter is left as a challenge for the “next” user friendly proof assistant.• (Type-programmable) Type systems for programming languages and proof languages are fixed a priori by language designers; type systems are not first class citizens. To my little knowledge, no language allows the programmer to build, choose, or mix type systems. The idea of modifying the type discipline at compile time is not completely new; a quite inspiring work has been done by the “visionary-6-pages” paper by Gilad in 2004 [Bra04] called Pluggable Type Systems. The possibility to mixing type systems and using it as a first class citizens is an interesting research strand that will constitute an original contribution in Peter’s Habilitation. With the intention of disseminating science in a simple, clear and pedagogical way, and inspired by the works of Kim [Bru99, TKB01, BDKT03, RBC+ 05, Bru02] and Gilles [Dow03, Dow07], I wish you a very nice reading of the Peter’s Habilitation. 3 Although certain parts are taken of my articles. 4 The typographic convention is that references to my papers are in “numeric” style while references to other papers are in “alphanumeric” style. 6 We provide a CD and a Web site with all my papers.C’est mon privilege et plaisir d’introduire Peter, le langage qui n’existe pas... Le langage Peter contient quasiment tous les aspects linguistiques que j’ai introduits et étudiés dans le domaine de la programmation fonctionnelle et objets, ainsi que quelques idées qui n’ont pas encore été publiées. Dans l’habilitation de Peter, la démarche que je suivrai consiste à essayer de limiter les détails concernant les aspects théoriques et techniques (c-à-d. les ensembles complets des règles de typage, suites de théorèmes abscons, etc.). Mon mémoire d’habilitation ne sera pas une traduction brutale des différents articles publiés (1), ni un curriculum vitæ commenté, ni un panorama de tous les articles dans un domaine scientifique (2), pour ne citer que quelques styles classiques de thèses d’habilitation. Tout d’abord elle sera courte car l’expérience enseigne que très peu de thèses d’habilitation sont réellement téléchargées, citées et lues. Très souvent, les thèses d’habilitation ne sont même pas accessibles sur le Web. L’Habilitation de Peter sera fondée sur les trois « dogmes » suivants: • (Modularité) Je commencerai par le plus petit fragment complet (au sens de Turing) de Peter, appelée Baby Peter et je continuerai de façon modulaire, d’extension en extension, jusqu’à l’extension finale appelée Sage Peter. Baby Peter est un langage fonctionnel avec des constructions linguistiques orientées objet et un système de types correct. Peter partage quelques similitudes avec Featherweight Java de Atsushi, Benjamin et Phil [IPW01] et le lambda calcul typé de Alonso (Church) [Chu41]. La différence principale entre Featherweight Java et Peter, est un mécanisme d’exceptions ad hoc, qui permet au programmeur de décider quel système de types sera le plus adapté à l’egard de ses nécessités et objectifs. En plus, ce mécanisme permet au programmeur d'écrire son système de types (voir point Type-programmable). Certains chapitres seront focalisés sur un nouveau système de types, tandis que, dans d’autres chapitres, l’extension sera associée à une extension de la syntaxe et du système de types. Tous les arguments seront traités d’une façon accessible au plus grand nombre de lecteurs. Comme exemples d’extensions, je citerai une forme nouvelle d'héritage multiple, une extension de Peter qui permettra à un objet de « s'échapper de sa classe », une extension de Peter avec filtrage évolué et enfin une extension de Peter qui permettra de mélanger algorithmes et preuves de correction d’algorithmes.• (Verbatim-like) Plutôt que d'asséner à mes lecteurs une traduction française mot-à-mot de mes articles scientifiques (5), j’ai privilegié une présentation simple de chaque extension, utilisant uniquement quelques règles clés de la sémantique opérationnelle ou du système de types (il y a toujours une règle clé...), en ajoutant immédiatement des exemples pour motiver et comprendre son utilisation correcte. Je ne prouverai pas la propriété de complétude de chaque système de types qui étend Peter : la complétude de Sage Peter est proposée en défi au prochain assistant à la preuve convivial. • (Type-programmable) Les systèmes de types pour les langages de programmation et pour la preuve sont fixés a priori par leurs concepteurs et ne sont pas des objets de première classe pouvant être modifiés ou simplement utilisés par le programmeur qui en subit les qualités et les faiblesses. À ma connaissance, aucun langage ne permet au programmeur de « programmer » sa discipline de types personnelle. L’idée de modifier la discipline de typage à la compilation n’est pas très nouvelle ; un article « visionnaire » de 6 pages, qui m'a eclairé, a été Pluggable Type System de Gilad [Bra04] sorti en 2004. La possibilité de permettre au programmeur d'écrire sa propre discipline de typage et de l’utiliser à la volée est par elle-même une contribution originale dans l’habilitation de Peter. Avec l’envie de diffuser la connaissance scientifique de façon simple, claire et pédagogique, inspiré par les ouvrages de Kim [Bru99,TKB01, BDKT03, RBC+ 05, Bru02] et Gilles [Dow03, Dow07], il ne me reste plus qu'à vous souhaiter une bonne lecture de l’habilitation de Peter. 1. Bien que certaines parties soient tirées de mes articles. 2. La convention typographique est que les référence à mes articles soit en style « numérique » tandis que les références à d’autres articles soit en « alphanumérique ». 5 Un CD et un site web contiendront tous mes articles. <br

    Reflexive Translation Studies

    Get PDF
    In the past decades, translation studies have increasingly focused on the ethical dimension of translational activity, with an emphasis on reflexivity to assert the role of the researcher in highlighting issues of visibility, creativity and ethics. In Reflexive Translation Studies, Silvia Kadiu investigates the viability of theories that seek to empower translation by making visible its transformative dimension; for example, by championing the visibility of the translating subject, the translator’s right to creativity, the supremacy of human translation or an autonomous study of translation. Inspired by Derrida’s deconstructive thinking, Kadiu presents practical ways of challenging theories that argue reflexivity is the only way of developing an ethical translation. She questions the capacity of reflexivity to counteract the power relations at play in translation (between minor and dominant languages, for example) and problematises affirmative claims about (self-)knowledge by using translation itself as a process of critical reflection
    corecore