Results 1 
8 of
8
Inductive Definitions in the System Coq Rules and Properties
, 1992
"... In the pure Calculus of Constructions, it is possible to represent data structures and predicates using higherorder quantification. However, this representation is not satisfactory, from the point of view of both the efficiency of the underlying programs and the power of the logical system. For ..."
Abstract

Cited by 163 (1 self)
 Add to MetaCart
In the pure Calculus of Constructions, it is possible to represent data structures and predicates using higherorder quantification. However, this representation is not satisfactory, from the point of view of both the efficiency of the underlying programs and the power of the logical system. For these reasons, the calculus was extended with a primitive notion of inductive definitions [8]. This paper describes the rules for inductive definitions in the system Coq. They are general enough to be seen as one formulation of adding inductive definitions to a typed lambdacalculus. We prove strong normalization for a subsystem of Coq corresponding to the pure Calculus of Constructions plus Inductive Definitions with only weak nondependent eliminations.
Inductive Families
 Formal Aspects of Computing
, 1997
"... A general formulation of inductive and recursive definitions in MartinLof's type theory is presented. It extends Backhouse's `DoItYourself Type Theory' to include inductive definitions of families of sets and definitions of functions by recursion on the way elements of such sets are generated. Th ..."
Abstract

Cited by 65 (13 self)
 Add to MetaCart
A general formulation of inductive and recursive definitions in MartinLof's type theory is presented. It extends Backhouse's `DoItYourself Type Theory' to include inductive definitions of families of sets and definitions of functions by recursion on the way elements of such sets are generated. The formulation is in natural deduction and is intended to be a natural generalization to type theory of MartinLof's theory of iterated inductive definitions in predicate logic. Formal criteria are given for correct formation and introduction rules of a new set former capturing definition by strictly positive, iterated, generalized induction. Moreover, there is an inversion principle for deriving elimination and equality rules from the formation and introduction rules. Finally, there is an alternative schematic presentation of definition by recursion. The resulting theory is a flexible and powerful language for programming and constructive mathematics. We hint at the wealth of possible applic...
A proof of Higman's lemma by structural induction
, 1993
"... This paper gives an example of such an inductive proof for a combinatorial problem. While there exist other constructive proofs of Higman's lemma (see for instance [10, 14]), the present argument has been recorded for its extreme formal simplicity. This simplicity allows us to give a complete descri ..."
Abstract

Cited by 9 (1 self)
 Add to MetaCart
This paper gives an example of such an inductive proof for a combinatorial problem. While there exist other constructive proofs of Higman's lemma (see for instance [10, 14]), the present argument has been recorded for its extreme formal simplicity. This simplicity allows us to give a complete description of the computational content of the proof, first in term of a functional program, which follows closely the structure of the proof, and then in term of a program with state. The second program has an intuitive algorithmic meaning. In order to show that these two programs are equivalent, we introduce an intermediary program, which is a firstorder operational interpretation of the functional program. The relation between this program and the program with state is simple to establish. We can thus claim that we understand completely the computational behaviour of the proof. It is possible to give still another description of this algorithm, in term of process computing in parallel. In this form, the connection with NashWilliams non constructive argument is quite clear (though this algorithm was found first only as an alternative description of the computational content of the inductive proof). This inductive proof was actually found from the usual non constructive argument by using the technique described in [3]. These two facts give strong indication that this algorithm can be considered as the computational content of the NashWilliams argument.
Integrated Development of Algebra in Type Theory
, 1998
"... We present the project of developing computational algebra inside type theory in an integrated way. As a first step towards this, we present direct constructive proofs of Dickson's lemma and Hilbert's basis theorem, and use this to prove the constructive existence of Grobner bases. This can be se ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
We present the project of developing computational algebra inside type theory in an integrated way. As a first step towards this, we present direct constructive proofs of Dickson's lemma and Hilbert's basis theorem, and use this to prove the constructive existence of Grobner bases. This can be seen as an integrated development of the Buchberger algorithm, and so far we have a concise formalisation of Dickson's lemma in Half, a type checker for a variant of MartinLof's type theory. We then present work in progress on understanding commutative algebra constructively in type theory using formal topology. Currently we are interested in interpreting existence proofs of prime and maximal ideals, and valuation rings. We give two casestudies: a proof that certain a are nilpotent which uses prime ideals, and a proof of Dedekind's Prague theorem which uses valuation rings. 1 Introduction For the development and formal verification of algorithms, there are essentially two methods [...
Towards A Theory Of Specifications, Programs And Proofs
 In Proceedings of the 7th. Nordic Workshop on Programming Theory, PMG report 86, Goteborg
, 1995
"... this paper we investigate a theory in which the notion of program as method of computation is singled out. As a first step towards a theory of specifications, we separate the notions of datatype and proposition and define a calculus for program verification, where programs can be written and then pr ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
this paper we investigate a theory in which the notion of program as method of computation is singled out. As a first step towards a theory of specifications, we separate the notions of datatype and proposition and define a calculus for program verification, where programs can be written and then proved correct. On top of this calculus, the theory of specifications is built. A specification of a problem consists of a pair: a type for a program (datatype) and a predicate on the program. Such a specification is implemented by constructing a program of the given datatype and proving that the predicate holds for that program. We are interested in a calculus of program derivation, i.e. a calculus with rules that allow the simultaneous construction of the components of implementations, rather than the separate construction of programs and proofs. The theory of specifications is built in such a way that the "program extraction" process is immediate. We present the main ideas of the theory of specifications, and show how rules for constructing implementations to specifications can be formulated and used. We do this by showing a programming example: we solve the problem of dividing a natural number by two. As a motivation to the theory of specifications, we present three versions of the same solution, each one expressed using a different logic. The first solution is developed in MartinLof's set theory. For the second solution, we introduce the calculus for program verification, where sets and propositions are no longer identified, and the notion of set is split into two: the datatypes and the propositions. We write a program performing the desired task using the datatypes (as in an ordinary functional programming language), and then we use the logic of propositions as an extern...
Inductive Data Type Systems: Strong Normalization
, 1997
"... : This paper is concerned with the foundations of Inductive Data Type Systems, an extension of pure type systems by inductive data types. IDTS generalize (inductive) types equipped with primitive recursion of highertype, by providing definitions of functions by pattern matching of a form which is g ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
: This paper is concerned with the foundations of Inductive Data Type Systems, an extension of pure type systems by inductive data types. IDTS generalize (inductive) types equipped with primitive recursion of highertype, by providing definitions of functions by pattern matching of a form which is general enough to capture recursor definitions for strictly positive inductive types. IDTS also generalize the firstorder framework of abstract data types by providing function types and higherorder rewrite rules. The main result of the paper is the strong normalization property of inductive data type systems, in case of a simple type discipline. 1 Introduction The recent years have seen a proliferation of formalisms for programming and proof development. The present paper is a contribution towards their unification in the lines of [6, 17]. Our goal is to argue in favor of a language which borrows from algebraic languages like OBJ their structuring mechanisms as well as functional definit...
Extracting Propositional Decidability: A proof of propositional decidability in constructive type theory and its extracted program.
, 1997
"... This paper describes a formal constructive proof of the decidability of a sequent calculus presentation of classical propositional logic. The Nuprl theories and proofs reported on here are part of a larger program to safely incorporate formally justified decision procedures into theorem provers. ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
This paper describes a formal constructive proof of the decidability of a sequent calculus presentation of classical propositional logic. The Nuprl theories and proofs reported on here are part of a larger program to safely incorporate formally justified decision procedures into theorem provers. The proof is implemented in the Nuprl system and the resulting proof object yields a "correctbyconstruction" program for deciding propositional sequents. In the case the sequent is valid, the program reports that fact; in the case the sequent is falsifiable, the program returns a falsifying assignment. Also, the semantics of the propositional sequents is formulated here in Kleene's strong threevalued logic which both: agrees with the standard two valued semantics; and gives finer information in case the proposition is falsifiable. Contents 1 Introduction 2 1.1 Related Work : : : : : : : : : : : : : : : : : : : : : : : : : : : 3 1.2 Overview of the Approach : : : : : : : : : : : :...
Formal Neighbourhoods, Combinatory Böhm Trees, and Untyped Normalization by Evaluation
, 2008
"... We prove the correctness of an algorithm for normalizing untyped combinator terms by evaluation. The algorithm is written in the functional programming language Haskell, and we prove that it lazily computes the combinatory Böhm tree of the term. The notion of combinatory Böhm tree is analogous to th ..."
Abstract
 Add to MetaCart
We prove the correctness of an algorithm for normalizing untyped combinator terms by evaluation. The algorithm is written in the functional programming language Haskell, and we prove that it lazily computes the combinatory Böhm tree of the term. The notion of combinatory Böhm tree is analogous to the usual notion of Böhm tree for the untyped lambda calculus. It is defined operationally by repeated head reduction of terms to head normal forms. We use formal neighbourhoods to characterize finite, partial information about data, and define a Böhm tree as a filter of such formal neighbourhoods. We also define formal topology style denotational semantics of a fragment of Haskell following MartinLöf, and let each closed program denote a filter of formal neighbourhoods. We prove that the denotation of the output of our algorithm is the Böhm tree of the input term. The key construction in the proof is a ”glueing ” relation between terms and semantic neighbourhoods which is defined by induction on the latter. This relation is related to the glueing relation which was earlier used for proving the correctness of a normalization by evaluation algorithm for typed combinatory logic. 1