Results 1  10
of
33
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 159 (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.
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
Proofassistants using Dependent Type Systems
, 2001
"... this article we will not attempt to describe all the dierent possible choices of type theories. Instead we want to discuss the main underlying ideas, with a special focus on the use of type theory as the formalism for the description of theories including proofs ..."
Abstract

Cited by 47 (4 self)
 Add to MetaCart
this article we will not attempt to describe all the dierent possible choices of type theories. Instead we want to discuss the main underlying ideas, with a special focus on the use of type theory as the formalism for the description of theories including proofs
Structured Type Theory
, 1999
"... Introduction We present our implementation AGDA of type theory. We limit ourselves in this presentation to a rather primitive form of type theory (dependent product with a simple notion of sorts) that we extend to structure facility we find in most programming language: let expressions (local defin ..."
Abstract

Cited by 38 (4 self)
 Add to MetaCart
Introduction We present our implementation AGDA of type theory. We limit ourselves in this presentation to a rather primitive form of type theory (dependent product with a simple notion of sorts) that we extend to structure facility we find in most programming language: let expressions (local definition) and a package mechanism. We call this language Structured Type Theory. The first part describes the syntax of the language and an informal description of the typechecking. The second part contains a detailed description of a core language, which is used to implement Strutured Type Theory. We give a realisability semantics, and typechecking rules are proved correct with respect to this semantics. The notion of metavariables is explained at this level. The third part explains how to interpret Structured Type Theory in this core language. The main contributions are: ffl use of explicit substitution to simplify and make
An extensible proof text editor
 In Logic for Programming and Automated Reasoning, volume 1955 of LNCS
, 2000
"... ..."
Open Proofs and Open Terms: A Basis for Interactive Logic
 COMPUTER SCIENCE LOGIC: 16TH INTERNATIONAL WORKSHOP, CLS 2002, LECTURE NOTES IN COMPUTER SCIENCE 2471 (2002
, 2002
"... When proving a theorem, one makes intermediate claims, leaving parts temporarily unspecified. These `open' parts may be proofs but also terms. In interactive theorem proving systems, one prominently deals with these `unfinished proofs' and `open terms'. We study these `open phenomena' from the point ..."
Abstract

Cited by 12 (1 self)
 Add to MetaCart
When proving a theorem, one makes intermediate claims, leaving parts temporarily unspecified. These `open' parts may be proofs but also terms. In interactive theorem proving systems, one prominently deals with these `unfinished proofs' and `open terms'. We study these `open phenomena' from the point of view of logic. This amounts to finding a correctness criterion for `unfinished proofs' (where some parts may be left open, but the logical steps that have been made are still correct). Furthermore we want to capture the notion of `proof state'. Proof states are the objects that interactive theorem provers operate on and we want to understand them in terms of logic. In this paper we define `open higher order predicate logic', an extension of higher order logic with unfinished (open) proofs and open terms. Then we define a type theoretic variant of this open higher order logic together with a formulasastypes embedding from open higher order logic to this type theory. We show how this type theory nicely captures the notion of `proof state', which is now a typetheoretic context.
Comparing and Implementing Calculi of Explicit Substitutions with Eta Reduction
 Annals of Pure and Applied Logic
, 2005
"... The past decade has seen an explosion of work on calculi of explicit substitutions. Numerous work has illustrated the usefulness of these calculi for practical notions like the implementation of typed functional programming languages and higher order proof assistants. It has also been shown that e ..."
Abstract

Cited by 10 (8 self)
 Add to MetaCart
The past decade has seen an explosion of work on calculi of explicit substitutions. Numerous work has illustrated the usefulness of these calculi for practical notions like the implementation of typed functional programming languages and higher order proof assistants. It has also been shown that eta reduction is useful for adapting substitution calculi for practical problems like higher order uni cation. This paper concentrates on rewrite rules for eta reduction in three dierent styles of explicit substitution calculi: , se and the suspension calculus. Both and se when extended with eta reduction, have proved useful for solving higher order uni cation. We enlarge the suspension calculus with an adequate etareduction which we show to preserve termination and conuence of the associated substitution calculus and to correspond to the etareductions of the other two calculi. We prove that and se as well as and the suspension calculus are non comparable while se is more adequate than the suspension calculus in simulating one step of betacontraction.
Confluence and Preservation of Strong Normalisation in an Explicit Substitutions Calculus
, 1995
"... Explicit substitutions calculi are formal systems that implement fireduction by means of an internal substitution operator. Thus, in that calculi it is possible to delay the application of a substitution to a term or to consider terms with partially applied substitutions. This feature is useful, f ..."
Abstract

Cited by 10 (0 self)
 Add to MetaCart
Explicit substitutions calculi are formal systems that implement fireduction by means of an internal substitution operator. Thus, in that calculi it is possible to delay the application of a substitution to a term or to consider terms with partially applied substitutions. This feature is useful, for instance, to represent incomplete proofs in type based proof systems. The oe calculus of explicit substitutions proposed by Abadi, Cardelli, Curien and L'evy gives an elegant way to deal with management of variable names and substitutions of calculus. However, oe does not preserve strong normalisation of calculus and it is not a confluent system. Typed variants of oe without composition are strongly normalising but not confluent, while variants with composition are confluent but do not preserve strong normalisation. Neither of them enjoys both properties. In this paper we propose the i  calculus an we present the full proofs of its main properties. This is, as far as we know, the...
A Constructive Proof of the HeineBorel Covering Theorem for Formal Reals
, 1996
"... The continuum is here presented as a formal space by means of a finitary inductive definition. In this setting a constructive proof of the HeineBorel covering theorem is given. 1 Introduction It is well known that the usual classical proofs of the HeineBorel covering theorem are not acceptable fr ..."
Abstract

Cited by 9 (4 self)
 Add to MetaCart
The continuum is here presented as a formal space by means of a finitary inductive definition. In this setting a constructive proof of the HeineBorel covering theorem is given. 1 Introduction It is well known that the usual classical proofs of the HeineBorel covering theorem are not acceptable from a constructive point of view (cf. [vS, F]). An intuitionistic alternative proof that relies on the fan theorem was given by Brouwer (cf. [B, H]). In view of the relevance of constructive mathematics for computer science, relying on the connection between constructive proofs and computations, it is natural to look for a completely constructive proof of the theorem in its most general form, namely for intervals with realvalued endpoints. By using formal topology the continuum, as well as the closed intervals of the real line, can be defined by means of finitary inductive definitions. This approach allows a proof of the HeineBorel theorem that, besides being constructive, can also be compl...