22 research outputs found

    Semi-continuous Sized Types and Termination

    Full text link
    Some type-based approaches to termination use sized types: an ordinal bound for the size of a data structure is stored in its type. A recursive function over a sized type is accepted if it is visible in the type system that recursive calls occur just at a smaller size. This approach is only sound if the type of the recursive function is admissible, i.e., depends on the size index in a certain way. To explore the space of admissible functions in the presence of higher-kinded data types and impredicative polymorphism, a semantics is developed where sized types are interpreted as functions from ordinals into sets of strongly normalizing terms. It is shown that upper semi-continuity of such functions is a sufficient semantic criterion for admissibility. To provide a syntactical criterion, a calculus for semi-continuous functions is developed.Comment: 33 pages, extended version of CSL'0

    Type-Based Termination, Inflationary Fixed-Points, and Mixed Inductive-Coinductive Types

    Full text link
    Type systems certify program properties in a compositional way. From a bigger program one can abstract out a part and certify the properties of the resulting abstract program by just using the type of the part that was abstracted away. Termination and productivity are non-trivial yet desired program properties, and several type systems have been put forward that guarantee termination, compositionally. These type systems are intimately connected to the definition of least and greatest fixed-points by ordinal iteration. While most type systems use conventional iteration, we consider inflationary iteration in this article. We demonstrate how this leads to a more principled type system, with recursion based on well-founded induction. The type system has a prototypical implementation, MiniAgda, and we show in particular how it certifies productivity of corecursive and mixed recursive-corecursive functions.Comment: In Proceedings FICS 2012, arXiv:1202.317

    Tracking Data-Flow with Open Closure Types

    Get PDF
    Type systems hide data that is captured by function closures in function types. In most cases this is a beneficial design that favors simplicity and compositionality. However, some applications require explicit information about the data that is captured in closures. This paper introduces open closure types, that is, function types that are decorated with type contexts. They are used to track data-flow from the environment into the function closure. A simply-typed lambda calculus is used to study the properties of the type theory of open closure types. A distinctive feature of this type theory is that an open closure type of a function can vary in different type contexts. To present an application of the type theory, it is shown that a type derivation establishes a simple non-interference property in the sense of information-flow theory. A publicly available prototype implementation of the system can be used to experiment with type derivations for example programs.Comment: Logic for Programming Artificial Intelligence and Reasoning (2013

    Refinement Types as Higher Order Dependency Pairs

    Get PDF
    Refinement types are a well-studied manner of performing in-depth analysis on functional programs. The dependency pair method is a very powerful method used to prove termination of rewrite systems; however its extension to higher order rewrite systems is still the object of active research. We observe that a variant of refinement types allow us to express a form of higher-order dependency pair criterion that only uses information at the type level, and we prove the correctness of this criterion

    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)

    Practical Subtyping for System F with Sized (Co-)Induction

    Full text link
    We present a rich type system with subtyping for an extension of System F. Our type constructors include sum and product types, universal and existential quantifiers, inductive and coinductive types. The latter two size annotations allowing the preservation of size invariants. For example it is possible to derive the termination of the quicksort by showing that partitioning a list does not increase its size. The system deals with complex programs involving mixed induction and coinduction, or even mixed (co-)induction and polymorphism (as for Scott-encoded datatypes). One of the key ideas is to completely separate the induction on sizes from the notion of recursive programs. We use the size change principle to check that the proof is well-founded, not that the program terminates. Termination is obtained by a strong normalization proof. Another key idea is the use symbolic witnesses to handle quantifiers of all sorts. To demonstrate the practicality of our system, we provide an implementation that accepts all the examples discussed in the paper and much more

    Union of Reducibility Candidates for Orthogonal Constructor Rewriting

    Get PDF
    We revisit Girard's reducibility candidates by proposing a general of the notion of neutral terms. They are the terms which do not interact with some contexts called elimination contexts. We apply this framework to constructor rewriting, and show that for orthogonal constructor rewriting, Girard's reducibility candidates are stable by union

    Toward a General Rewriting-Based Framework for Reducibility

    Get PDF
    Reducibility is a powerful proof method which applies to various properties of typed terms in different type systems. For strong normalization, different vari- ants are known, such as Girard's reducibility candidates, Tait's saturated sets and biorthogonals. They differ by the closure conditions imposed to types interpreta- tions, called here reducibility families. This paper is about the computational and observational properties underlying untyped reducibility. Our starting point is the comparison of reducibility families w.r.t. their ability to handle rewriting, for which their possible stability by union plays an important role. Indeed, usual saturated sets are generally stable by union, but with rewriting it can be difficult to define a uniform notion of saturated sets. On the other hand, rewriting is more naturally taken into account by reducibility candidates, but they are not always stable by union. It seems that for a given rewrite relation, the stability by union of reducibility candidates should imply the ability to naturally define corresponding saturated sets. In this paper, we seek to devise a general framework in which the above claim can be substantiated. In particular, this framework should be as simple as possible, while allowing the formulation of general notions of reducibility candidates and saturated sets. We present a notion of non-interaction which allows to define neutral terms and reducibility candidates in a generic way. This notion can be formulated in a very simple and general framework, based only on a rewrite relation and a set of contexts, called elimination contexts, required to satisfy some simple properties. This provides a convenient level of abstraction to prove fundamental properties of reducibility candidates, to compare them with biorthogonals, and to study their stability by union. Moreover, we propose a general form of saturated sets, issued from the stability by union of reducibility candidates
    corecore