Results 1  10
of
47
Simple unificationbased type inference for GADTs
, 2006
"... Generalized algebraic data types (GADTs), sometimes known as “guarded recursive data types ” or “firstclass phantom types”, are a simple but powerful generalization of the data types of Haskell and ML. Recent works have given compelling examples of the utility of GADTs, although type inference is k ..."
Abstract

Cited by 157 (35 self)
 Add to MetaCart
Generalized algebraic data types (GADTs), sometimes known as “guarded recursive data types ” or “firstclass phantom types”, are a simple but powerful generalization of the data types of Haskell and ML. Recent works have given compelling examples of the utility of GADTs, although type inference is known to be difficult. Our contribution is to show how to exploit programmersupplied type annotations to make the type inference task almost embarrassingly easy. Our main technical innovation is wobbly types, which express in a declarative way the uncertainty caused by the incremental nature of typical typeinference algorithms.
A syntax for linear logic
 Presented at Conference on Mathematical Foundations of Programming Language Semantics
, 1993
"... Abstract. This tutorial paper provides an introduction to intuitionistic logic and linear logic, and shows how they correspond to type systems for functional languages via the notion of ‘Propositions as Types’. The presentation of linear logic is simplified by basing it on the Logic of Unity. An app ..."
Abstract

Cited by 72 (5 self)
 Add to MetaCart
Abstract. This tutorial paper provides an introduction to intuitionistic logic and linear logic, and shows how they correspond to type systems for functional languages via the notion of ‘Propositions as Types’. The presentation of linear logic is simplified by basing it on the Logic of Unity. An application to the array update problem is briefly discussed. 1
Structural Cut Elimination
 Proceedings of the Tenth Annual Symposium on Logic in Computer Science
, 1995
"... We present new proofs of cut elimination for intuitionistic, classical, and linear sequent calculi. In all cases the proofs proceed by three nested structural inductions, avoiding the explicit use of multisets and termination measures on sequent derivations. This makes them amenable to elegant and ..."
Abstract

Cited by 64 (8 self)
 Add to MetaCart
We present new proofs of cut elimination for intuitionistic, classical, and linear sequent calculi. In all cases the proofs proceed by three nested structural inductions, avoiding the explicit use of multisets and termination measures on sequent derivations. This makes them amenable to elegant and concise implementations in Elf, a constraint logic programming language based on the LF logical framework. 1 Introduction Gentzen's sequent calculi [Gen35] for intuitionistic and classical logic have been the central tool in many prooftheoretical investigations and applications of logic in computer science such as logic programming or automated theorem proving. The central property of sequent calculi is cut elimination (Gentzen's Hauptsatz) which yields consistency of the logic as a corollary. The algorithm for cut elimination may be interpreted computationally, similarly to the way normalization for natural deduction may be viewed as functional computation. For the case of linear logic, ...
Structural Cut Elimination  I. Intuitionistic and Classical Logic
 Information and Computation
, 2000
"... this paper we present new proofs of cut elimination for intuitionistic and classical sequent calculi and give their representations in the logical framework LF [HHP93] as implemented in the Elf system [Pfe91]. Multisets are avoided altogether in these proofs, and termination measures are replaced b ..."
Abstract

Cited by 52 (17 self)
 Add to MetaCart
this paper we present new proofs of cut elimination for intuitionistic and classical sequent calculi and give their representations in the logical framework LF [HHP93] as implemented in the Elf system [Pfe91]. Multisets are avoided altogether in these proofs, and termination measures are replaced by three nested structural inductions. Parameters are treated as variables bound in derivations, thus naturally capturing occurrence conditions. A starting point for the proofs is Kleene's sequent system G 3 [Kle52], which we derive systematically from the point of view that a sequent calculus should be a calculus of proof search for natural deductions. It can easily be related to Gentzen's original and other sequent calculi. We augment G 3 with proof terms that are stable under weakening. These proof terms enable the structural induction and furthermore form the basis of the representation of the proof in LF. The most closely related work on cut elimination is MartinLo# f 's proof of admissibility [ML68]. In MartinLo# f 's system the cut rule incorporates aspects of both weakening and contraction which enables a structural induction argument closely related to ours. However, without the introduction of proof terms, the implicit weakening in the cut rule makes it difficult to implement this proof directly. Herbelin [Her95] restates this proof and proceeds by assigning proof terms only to restricted sequent calculi LJT and LKT which correspond more immediately to
Wobbly types: type inference for generalised algebraic data types
, 2004
"... Generalised algebraic data types (GADTs), sometimes known as “guarded recursive data types ” or “firstclass phantom types”, are a simple but powerful generalisation of the data types of Haskell and ML. Recent works have given compelling examples of the utility of GADTs, although type inference is k ..."
Abstract

Cited by 48 (2 self)
 Add to MetaCart
Generalised algebraic data types (GADTs), sometimes known as “guarded recursive data types ” or “firstclass phantom types”, are a simple but powerful generalisation of the data types of Haskell and ML. Recent works have given compelling examples of the utility of GADTs, although type inference is known to be difficult. It is time to pluck the fruit. Can GADTs be added to Haskell, without losing type inference, or requiring unacceptably heavy type annotations? Can this be done without completely rewriting the alreadycomplex Haskell typeinference engine, and without complex interactions with (say) type classes? We answer these questions in the affirmative, giving a type system that explains just what type annotations are required, and a prototype implementation that implements it. Our main technical innovation is wobbly types, which express in a declarative way the uncertainty caused by the incremental nature of typical typeinference algorithms. 1
Pure Pattern Type Systems
 In POPL’03
, 2003
"... We introduce a new framework of algebraic pure type systems in which we consider rewrite rules as lambda terms with patterns and rewrite rule application as abstraction application with builtin matching facilities. This framework, that we call “Pure Pattern Type Systems”, is particularly wellsuite ..."
Abstract

Cited by 43 (20 self)
 Add to MetaCart
We introduce a new framework of algebraic pure type systems in which we consider rewrite rules as lambda terms with patterns and rewrite rule application as abstraction application with builtin matching facilities. This framework, that we call “Pure Pattern Type Systems”, is particularly wellsuited for the foundations of programming (meta)languages and proof assistants since it provides in a fully unified setting higherorder capabilities and pattern matching ability together with powerful type systems. We prove some standard properties like confluence and subject reduction for the case of a syntactic theory and under a syntactical restriction over the shape of patterns. We also conjecture the strong normalization of typable terms. This work should be seen as a contribution to a formal connection between logics and rewriting, and a step towards new proof engines based on the CurryHoward isomorphism.
Practical RefinementType Checking
, 1997
"... Refinement types allow many more properties of programs to be expressed and statically checked than conventional type systems. We present a practical algorithm for refinementtype checking in a calculus enriched with refinementtype annotations. We prove that our basic algorithm is sound and comple ..."
Abstract

Cited by 34 (1 self)
 Add to MetaCart
Refinement types allow many more properties of programs to be expressed and statically checked than conventional type systems. We present a practical algorithm for refinementtype checking in a calculus enriched with refinementtype annotations. We prove that our basic algorithm is sound and complete, and show that every term which has a refinement type can be annotated as required by our algorithm. Our positive experience with an implementation of an extension of this algorithm to the full core language of Standard ML demonstrates that refinement types can be a practical program development tool in a realistic programming language. The required refinement type definitions and annotations are not much of a burden and serve as formal, machinechecked explanations of code invariants which otherwise would remain implicit. 1 Introduction The advantages of staticallytyped programming languages are well known, and have been described many times (e.g. see [Car97]). However, conventional ty...
Rewriting calculus with fixpoints: Untyped and firstorder systems
 In Postproceedings of TYPES, Lecture Notes in Computer Science
, 2003
"... Abstract The rewriting calculus, also called ρcalculus, is a framework embedding λcalculus and rewriting capabilities, by allowing abstraction not only on variables but also on patterns. The higherorder mechanisms of the λcalculus and the pattern matching facilities of the rewriting are then bot ..."
Abstract

Cited by 25 (10 self)
 Add to MetaCart
Abstract The rewriting calculus, also called ρcalculus, is a framework embedding λcalculus and rewriting capabilities, by allowing abstraction not only on variables but also on patterns. The higherorder mechanisms of the λcalculus and the pattern matching facilities of the rewriting are then both available at the same level. Many type systems for the λcalculus can be generalized to the ρcalculus: in this paper, we study extensively a firstorder ρcalculus à la Church, called ρ stk The type system of ρ stk � allows one to type (object oriented flavored) fixpoints, leading to an expressive and safe calculus. In particular, using pattern matching, one can encode and typecheck term rewriting systems in a natural and automatic way. Therefore, we can see our framework as a starting point for the theoretical basis of a powerful typed rewritingbased language.
Adjoint Rewriting
, 1995
"... This thesis concerns rewriting in the typed calculus. Traditional categorical models of typed calculus use concepts such as functor, adjunction and algebra to model type constructors and their associated introduction and elimination rules, with the natural categorical equations inherent in these s ..."
Abstract

Cited by 25 (11 self)
 Add to MetaCart
This thesis concerns rewriting in the typed calculus. Traditional categorical models of typed calculus use concepts such as functor, adjunction and algebra to model type constructors and their associated introduction and elimination rules, with the natural categorical equations inherent in these structures providing an equational theory for terms. One then seeks a rewrite relation which, by transforming terms into canonical forms, provides a decision procedure for this equational theory. Unfortunately the rewrite relations which have been proposed, apart from for the most simple of calculi, either generate the full equational theory but contain no decision procedure, or contain a decision procedure but only for a subtheory of that required. Our proposal is to unify the semantics and reduction theory of the typed calculus by generalising the notion of model from categorical structures based on term equality to categorical structures based on term reduction. This is accomplished via...
Rewriting calculus with(out) types
 Proceedings of the fourth workshop on rewriting logic and applications
, 2002
"... The last few years have seen the development of a new calculus which can be considered as an outcome of the last decade of various researches on (higher order) term rewriting systems, and lambda calculi. In the Rewriting Calculus (or Rho Calculus, ρCal), algebraic rules are considered as sophisticat ..."
Abstract

Cited by 22 (13 self)
 Add to MetaCart
The last few years have seen the development of a new calculus which can be considered as an outcome of the last decade of various researches on (higher order) term rewriting systems, and lambda calculi. In the Rewriting Calculus (or Rho Calculus, ρCal), algebraic rules are considered as sophisticated forms of “lambda terms with patterns”, and rule applications as lambda applications with pattern matching facilities. The calculus can be customized to work modulo sophisticated theories, like commutativity, associativity, associativitycommutativity, etc. This allows us to encode complex structures such as list, sets, and more generally objects. The calculus can either be presented “à la Curry ” or “à la Church ” without sacrificing readability and without complicating too much the metatheory. Many static type systems can be easily pluggedin on top of the calculus in the spirit of the rich typeoriented literature. The Rewriting Calculus could represent a lingua franca to encode many paradigms of computations together with a formal basis used to build powerful theorem provers based on lambda calculus and efficient rewriting, and a step towards new proof engines based on the CurryHoward isomorphism. 1