15 research outputs found

    From Self-Interpreters to Normalization by Evaluation

    Get PDF
    We characterize normalization by evaluation as the composition of a self-interpreter with a self-reducer using a special representation scheme, in the sense of Mogensen (1992). We do so by deriving in a systematic way an untyped normalization by evaluation algorithm from a standard interpreter for the ?-calculus. The derived algorithm is not novel and indeed other published algorithms may be obtained in the same manner through appropriate adaptations to the representation scheme

    Efficient normalization by evaluation

    Get PDF
    International audienceDependently typed theorem provers allow arbitrary terms in types. It is convenient to identify large classes of terms during type checking, hence many such systems provision some form of conversion rule. A standard algorithm for testing the convertibility of two types consists in normalizing them, then testing for syntactic equality of the normal forms. Normalization by evaluation is a standard technique enabling the use of existing compilers and runtimes for functional languages to implement normalizers, without peaking under the hood, for a fast yet cheap system in terms of implementation effort. Our focus is on performance of untyped normalization by evaluation. We demonstrate that with the aid of a standard optimization for higher order programs (namely uncurrying) and the reuse of pattern matching facilities of the evaluator for datatypes, we may obtain a normalizer that evaluates non-functional values about as fast as the underlying evaluator, but as an added benefit can also fully normalize functional values — or to put it another way, partially evaluates functions efficiently

    Linear Haskell: practical linearity in a higher-order polymorphic language

    Get PDF
    Linear type systems have a long and storied history, but not a clear path forward to integrate with existing languages such as OCaml or Haskell. In this paper, we study a linear type system designed with two crucial properties in mind: backwards-compatibility and code reuse across linear and non-linear users of a library. Only then can the benefits of linear types permeate conventional functional programming. Rather than bifurcate types into linear and non-linear counterparts, we instead attach linearity to function arrows. Linear functions can receive inputs from linearly-bound values, but can also operate over unrestricted, regular values. To demonstrate the efficacy of our linear type system - both how easy it can be integrated in an existing language implementation and how streamlined it makes it to write programs with linear types - we implemented our type system in GHC, the leading Haskell compiler, and demonstrate two kinds of applications of linear types: mutable data with pure interfaces; and enforcing protocols in I/O-performing functions

    A Lambda Term Representation Inspired by Linear Ordered Logic

    Get PDF
    We introduce a new nameless representation of lambda terms inspired by ordered logic. At a lambda abstraction, number and relative position of all occurrences of the bound variable are stored, and application carries the additional information where to cut the variable context into function and argument part. This way, complete information about free variable occurrence is available at each subterm without requiring a traversal, and environments can be kept exact such that they only assign values to variables that actually occur in the associated term. Our approach avoids space leaks in interpreters that build function closures. In this article, we prove correctness of the new representation and present an experimental evaluation of its performance in a proof checker for the Edinburgh Logical Framework. Keywords: representation of binders, explicit substitutions, ordered contexts, space leaks, Logical Framework.Comment: In Proceedings LFMTP 2011, arXiv:1110.668

    Genetic and phenotypic spectrum associated with IFIH1 gain-of-function

    Get PDF
    IFIH1 gain-of-function has been reported as a cause of a type I interferonopathy encompassing a spectrum of autoinflammatory phenotypes including Aicardi–Goutiùres syndrome and Singleton Merten syndrome. Ascertaining patients through a European and North American collaboration, we set out to describe the molecular, clinical and interferon status of a cohort of individuals with pathogenic heterozygous mutations in IFIH1. We identified 74 individuals from 51 families segregating a total of 27 likely pathogenic mutations in IFIH1. Ten adult individuals, 13.5% of all mutation carriers, were clinically asymptomatic (with seven of these aged over 50 years). All mutations were associated with enhanced type I interferon signaling, including six variants (22%) which were predicted as benign according to multiple in silico pathogenicity programs. The identified mutations cluster close to the ATP binding region of the protein. These data confirm variable expression and nonpenetrance as important characteristics of the IFIH1 genotype, a consistent association with enhanced type I interferon signaling, and a common mutational mechanism involving increased RNA binding affinity or decreased efficiency of ATP hydrolysis and filament disassembly rate

    CoqInE: Translating the Calculus of Inductive Constructions into the λΠ-calculus Modulo

    No full text
    We show how to translate the Calculus of Inductive Constructions (CIC) as implemented by Coq into the λΠ-calculus modulo, a proposed common backend proof format for heterogeneous proof assistants.

    The λΠ-calculus Modulo as a Universal Proof Language

    No full text
    International audienceThe λΠ -calculus forms one of the vertices in Barendregt's -cube and has been used as the core language for a number of logical frameworks. Following earlier extensions of natural deduction, Cousineau and Dowek generalize the de nitional equality of this well studied calculus to an arbitrary congruence generated by rewrite rules, which allows for more faithful encodings of foreign logics. This paper motivates the resulting language, the λΠ -calculus modulo, as a universal proof language, capable of expressing proofs from many other systems without losing their computational properties. We further show how to very simply and e ciently check proofs from this language. We have implemented this scheme in a proof checker called Dedukti

    Dedukti: A Universal Proof Checker

    No full text
    International audiencePrésentation du projet aux journées communes LTP (Langages, Types et Preuves) - LAC (Logique AlgÚbre et Calcul
    corecore