266 research outputs found
Big Step Normalisation for Type Theory
Big step normalisation is a normalisation method for typed lambda-calculi which relies on a purely syntactic recursive evaluator. Termination of that evaluator is proven using a predicate called strong computability, similar to the techniques used to prove strong normalisation of ?-reduction for typed lambda-calculi. We generalise big step normalisation to a minimalist dependent type theory. Compared to previous presentations of big step normalisation for e.g. the simply-typed lambda-calculus, we use a quotiented syntax of type theory, which crucially reduces the syntactic complexity introduced by dependent types. Most of the proof has been formalised using Agda
New Equations for Neutral Terms: A Sound and Complete Decision Procedure, Formalized
The definitional equality of an intensional type theory is its test of type
compatibility. Today's systems rely on ordinary evaluation semantics to compare
expressions in types, frustrating users with type errors arising when
evaluation fails to identify two `obviously' equal terms. If only the machine
could decide a richer theory! We propose a way to decide theories which
supplement evaluation with `-rules', rearranging the neutral parts of
normal forms, and report a successful initial experiment.
We study a simple -calculus with primitive fold, map and append operations on
lists and develop in Agda a sound and complete decision procedure for an
equational theory enriched with monoid, functor and fusion laws
Kripke Models for Classical Logic
We introduce a notion of Kripke model for classical logic for which we
constructively prove soundness and cut-free completeness. We discuss the
novelty of the notion and its potential applications
Continuation-passing Style Models Complete for Intuitionistic Logic
A class of models is presented, in the form of continuation monads
polymorphic for first-order individuals, that is sound and complete for minimal
intuitionistic predicate logic. The proofs of soundness and completeness are
constructive and the computational content of their composition is, in
particular, a -normalisation-by-evaluation program for simply typed
lambda calculus with sum types. Although the inspiration comes from Danvy's
type-directed partial evaluator for the same lambda calculus, the there
essential use of delimited control operators (i.e. computational effects) is
avoided. The role of polymorphism is crucial -- dropping it allows one to
obtain a notion of model complete for classical predicate logic. The connection
between ours and Kripke models is made through a strengthening of the
Double-negation Shift schema
A Focused Sequent Calculus Framework for Proof Search in Pure Type Systems
Basic proof-search tactics in logic and type theory can be seen as the
root-first applications of rules in an appropriate sequent calculus, preferably
without the redundancies generated by permutation of rules. This paper
addresses the issues of defining such sequent calculi for Pure Type Systems
(PTS, which were originally presented in natural deduction style) and then
organizing their rules for effective proof-search. We introduce the idea of
Pure Type Sequent Calculus with meta-variables (PTSCalpha), by enriching the
syntax of a permutation-free sequent calculus for propositional logic due to
Herbelin, which is strongly related to natural deduction and already well
adapted to proof-search. The operational semantics is adapted from Herbelin's
and is defined by a system of local rewrite rules as in cut-elimination, using
explicit substitutions. We prove confluence for this system. Restricting our
attention to PTSC, a type system for the ground terms of this system, we obtain
the Subject Reduction property and show that each PTSC is logically equivalent
to its corresponding PTS, and the former is strongly normalising iff the latter
is. We show how to make the logical rules of PTSC into a syntax-directed system
PS for proof-search, by incorporating the conversion rules as in
syntax-directed presentations of the PTS rules for type-checking. Finally, we
consider how to use the explicitly scoped meta-variables of PTSCalpha to
represent partial proof-terms, and use them to analyse interactive proof
construction. This sets up a framework PE in which we are able to study
proof-search strategies, type inhabitant enumeration and (higher-order)
unification
Mechanising syntax with binders in Coq
Mechanising binders in general-purpose proof assistants such as Coq is cumbersome and difficult. Yet binders, substitutions, and instantiation of terms with substitutions are a critical ingredient of many programming languages. Any practicable mechanisation of the meta-theory of the latter hence requires a lean formalisation of the former. We investigate the topic from three angles: First, we realise formal systems with binders based on both pure and scoped de Bruijn algebras together with basic syntactic rewriting lemmas and automation. We automate this process in a compiler called Autosubst; our final tool supports many-sorted, variadic, and modular syntax. Second, we justify our choice of realisation and mechanise a proof of convergence of the sigma calculus, a calculus of explicit substitutions that is complete for equality of the de Bruijn algebra corresponding to the lambda calculus. Third, to demonstrate the practical usefulness of our approach, we provide concise, transparent, and accessible mechanised proofs for a variety of case studies refined to de Bruijn substitutions.Die Mechanisierung von Bindern in universellen Beweisassistenten wie Coq ist arbeitsaufwändig und schwierig. Binder, Substitutionen und die Instantiierung von Substitutionen sind jedoch kritischer Bestandteil
vieler Programmiersprachen. Deshalb setzt eine praktikable Mechanisierung der Metatheorie von Programmiersprachen eine elegante Formalisierung von Bindern voraus. Wir nähern uns dem Thema aus drei Richtungen an:
Zuerst realisieren wir formale Systeme mit Bindern mit Hilfe von reinen und indizierten de Bruijn Algebren, zusammen mit grundlegenden syntaktischen Gleichungen und Automatisierung. Wir automatisieren diesen Prozess in
einem Kompilierer namens Autosubst. Unser finaler Kompilierer unterstützt Sortenlogik, variadische Syntax und modulare Syntax. Zweitens rechtfertigen wir unsere Repräsentation und mechanisieren einen Beweis der Konvergenz
des SP-Kalküls, einem Kalkül expliziter Substitutionen der bezüglich der Gleichheit der puren de Bruijn Algebra des -Kalküls vollständig ist. Drittens entwickeln wir kurze, transparente und leicht zugängliche mechanisierte
Beweise für diverse Fallstudien, die wir an de Bruijn Substitutionen angepasst haben. Wir weisen so die praktische Anwendbarkeit unseres Ansatzes nach
POPLMark reloaded: Mechanizing proofs by logical relations
We propose a new collection of benchmark problems in mechanizing the metatheory of programming languages, in order to compare and push the state of the art of proof assistants. In particular, we focus on proofs using logical relations (LRs) and propose establishing strong normalization of a simply typed calculus with a proof by Kripke-style LRs as a benchmark. We give a modern view of this well-understood problem by formulating our LR on well-typed terms. Using this case study, we share some of the lessons learned tackling this problem in different dependently typed proof environments. In particular, we consider the mechanization in Beluga, a proof environment that supports higher-order abstract syntax encodings and contrast it to the development and strategies used in general-purpose proof assistants such as Coq and Agda. The goal of this paper is to engage the community in discussions on what support in proof environments is needed to truly bring mechanized metatheory to the masses and engage said community in the crafting of future benchmarks
Nominal Henkin Semantics: simply-typed lambda-calculus models in nominal sets
We investigate a class of nominal algebraic Henkin-style models for the
simply typed lambda-calculus in which variables map to names in the denotation
and lambda-abstraction maps to a (non-functional) name-abstraction operation.
The resulting denotations are smaller and better-behaved, in ways we make
precise, than functional valuation-based models.
Using these new models, we then develop a generalisation of \lambda-term
syntax enriching them with existential meta-variables, thus yielding a theory
of incomplete functions. This incompleteness is orthogonal to the usual notion
of incompleteness given by function abstraction and application, and
corresponds to holes and incomplete objects.Comment: In Proceedings LFMTP 2011, arXiv:1110.668
- …