2,302 research outputs found

    A Case Study on Logical Relations using Contextual Types

    Full text link
    Proofs by logical relations play a key role to establish rich properties such as normalization or contextual equivalence. They are also challenging to mechanize. In this paper, we describe the completeness proof of algorithmic equality for simply typed lambda-terms by Crary where we reason about logically equivalent terms in the proof environment Beluga. There are three key aspects we rely upon: 1) we encode lambda-terms together with their operational semantics and algorithmic equality using higher-order abstract syntax 2) we directly encode the corresponding logical equivalence of well-typed lambda-terms using recursive types and higher-order functions 3) we exploit Beluga's support for contexts and the equational theory of simultaneous substitutions. This leads to a direct and compact mechanization, demonstrating Beluga's strength at formalizing logical relations proofs.Comment: In Proceedings LFMTP 2015, arXiv:1507.0759

    Nominal Logic Programming

    Full text link
    Nominal logic is an extension of first-order logic which provides a simple foundation for formalizing and reasoning about abstract syntax modulo consistent renaming of bound names (that is, alpha-equivalence). This article investigates logic programming based on nominal logic. We describe some typical nominal logic programs, and develop the model-theoretic, proof-theoretic, and operational semantics of such programs. Besides being of interest for ensuring the correct behavior of implementations, these results provide a rigorous foundation for techniques for analysis and reasoning about nominal logic programs, as we illustrate via examples.Comment: 46 pages; 19 page appendix; 13 figures. Revised journal submission as of July 23, 200

    Multi-level Contextual Type Theory

    Full text link
    Contextual type theory distinguishes between bound variables and meta-variables to write potentially incomplete terms in the presence of binders. It has found good use as a framework for concise explanations of higher-order unification, characterize holes in proofs, and in developing a foundation for programming with higher-order abstract syntax, as embodied by the programming and reasoning environment Beluga. However, to reason about these applications, we need to introduce meta^2-variables to characterize the dependency on meta-variables and bound variables. In other words, we must go beyond a two-level system granting only bound variables and meta-variables. In this paper we generalize contextual type theory to n levels for arbitrary n, so as to obtain a formal system offering bound variables, meta-variables and so on all the way to meta^n-variables. We obtain a uniform account by collapsing all these different kinds of variables into a single notion of variabe indexed by some level k. We give a decidable bi-directional type system which characterizes beta-eta-normal forms together with a generalized substitution operation.Comment: In Proceedings LFMTP 2011, arXiv:1110.668

    Lincx: A Linear Logical Framework with First-class Contexts

    Get PDF
    Linear logic provides an elegant framework for modelling stateful, imperative and con- current systems by viewing a context of assumptions as a set of resources. However, mech- anizing the meta-theory of such systems remains a challenge, as we need to manage and reason about mixed contexts of linear and intuitionistic assumptions. We present Lincx, a contextual linear logical framework with first-class mixed contexts. Lincx allows us to model (linear) abstract syntax trees as syntactic structures that may depend on intuitionistic and linear assumptions. It can also serve as a foundation for reasoning about such structures. Lincx extends the linear logical framework LLF with first-class (linear) contexts and an equational theory of context joins that can otherwise be very tedious and intricate to develop. This work may be also viewed as a generalization of contextual LF that supports both intuitionistic and linear variables, functions, and assumptions. We describe a decidable type-theoretic foundation for Lincx that only characterizes canonical forms and show that our equational theory of context joins is associative and commu- tative. Finally, we outline how Lincx may serve as a practical foundation for mechanizing the meta-theory of stateful systems.La logique lineĢaire represente une structure eĢleĢgante pour modeler des systeĢ€mes im- peĢratifs, concurrents et avec des systeĢ€mes a eĢtats, en repreĢsentant un contexte d'hypotheĢ€ses comme une collection de ressources. Cependant, la meĢcanisation de la meĢtatheĢorie de ces systeĢ€mes demeure un deĢfi, puisque nous devons geĢrer et raisonner aĢ€ propos de contextes d'hypotheĢ€ses mixtes lineĢaires et intuitionistiques. Nous preĢsentons Lincx, une structure logique lineĢaire et contextuelle avec des contextes mixtes de premieĢ€re classe. Lincx nous permet d'eĢtablir des modeĢ€les (lineĢaires) d'arbres de syntaxe abstraits en tant que structures syntactiques qui peuvent dependre d'hypotheĢ€ses intuitionistiques et lineĢaires. Lincx peut eĢgalement servir de fondation pour raisonner aĢ€ propos de telles structures. Lincx eĢtend la structure logique lineĢaire LLF avec des contextes (lineĢaires) de premier ordre et une theĢorie d'equations d'assemblage de contextes qui peut autrement eĢ‚tre treĢ€s fastidieux et complexe aĢ€ deĢvelopper. Cet oeuvre peut eĢgalement eĢ‚tre percĢ§u comme une geĢneĢralisation du LF contextuel qui supporte les fonctions, les hypotheĢses et les variables intuitionistiques et lineĢaires. Nous deĢcrivons une fondation de la theĢorie des types deĢcidable pour Lincx qui ne deĢcrit que les formes canoniques et montrons que notre theorie d'eĢquations d'assemblage de contextes est associative et commutative. Finalement, nous donnons un apercĢ§u de comment Lincx peut servir de fondation pratique pour la meĢcanisation de la meĢtatheĢorie de systeĢ€mes aĢ€ eĢtats

    Cut Elimination for a Logic with Induction and Co-induction

    Full text link
    Proof search has been used to specify a wide range of computation systems. In order to build a framework for reasoning about such specifications, we make use of a sequent calculus involving induction and co-induction. These proof principles are based on a proof theoretic (rather than set-theoretic) notion of definition. Definitions are akin to logic programs, where the left and right rules for defined atoms allow one to view theories as "closed" or defining fixed points. The use of definitions and free equality makes it possible to reason intentionally about syntax. We add in a consistent way rules for pre and post fixed points, thus allowing the user to reason inductively and co-inductively about properties of computational system making full use of higher-order abstract syntax. Consistency is guaranteed via cut-elimination, where we give the first, to our knowledge, cut-elimination procedure in the presence of general inductive and co-inductive definitions.Comment: 42 pages, submitted to the Journal of Applied Logi
    • ā€¦
    corecore