Results 1  10
of
23
Dependently Typed Functional Programs and their Proofs
, 1999
"... Research in dependent type theories [ML71a] has, in the past, concentrated on its use in the presentation of theorems and theoremproving. This thesis is concerned mainly with the exploitation of the computational aspects of type theory for programming, in a context where the properties of programs ..."
Abstract

Cited by 70 (13 self)
 Add to MetaCart
Research in dependent type theories [ML71a] has, in the past, concentrated on its use in the presentation of theorems and theoremproving. This thesis is concerned mainly with the exploitation of the computational aspects of type theory for programming, in a context where the properties of programs may readily be specified and established. In particular, it develops technology for programming with dependent inductive families of datatypes and proving those programs correct. It demonstrates the considerable advantage to be gained by indexing data structures with pertinent characteristic information whose soundness is ensured by typechecking, rather than human effort. Type theory traditionally presents safe and terminating computation on inductive datatypes by means of elimination rules which serve as induction principles and, via their associated reduction behaviour, recursion operators [Dyb91]. In the programming language arena, these appear somewhat cumbersome and give rise to unappealing code, complicated by the inevitable interaction between case analysis on dependent types and equational reasoning on their indices which must appear explicitly in the terms. Thierry Coquand’s proposal [Coq92] to equip type theory directly with the kind of
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...
Set Theory for Verification: II  Induction and Recursion
 Journal of Automated Reasoning
, 2000
"... A theory of recursive definitions has been mechanized in Isabelle's ZermeloFraenkel (ZF) set theory. The objective is to support the formalization of particular recursive definitions for use in verification, semantics proofs and other computational reasoning. ..."
Abstract

Cited by 43 (21 self)
 Add to MetaCart
A theory of recursive definitions has been mechanized in Isabelle's ZermeloFraenkel (ZF) set theory. The objective is to support the formalization of particular recursive definitions for use in verification, semantics proofs and other computational reasoning.
Modelling General Recursion in Type Theory
 Mathematical Structures in Computer Science
, 2002
"... Constructive type theory is an expressive programming language where both algorithms and proofs can be represented. However, general recursive algorithms have no direct formalisation in type theory since they contain recursive calls that satisfy no syntactic condition guaranteeing termination. ..."
Abstract

Cited by 38 (6 self)
 Add to MetaCart
Constructive type theory is an expressive programming language where both algorithms and proofs can be represented. However, general recursive algorithms have no direct formalisation in type theory since they contain recursive calls that satisfy no syntactic condition guaranteeing termination.
General recursion via coinductive types
 Logical Methods in Computer Science
"... Vol. 1 (2:1) 2005, pp. 1–28 ..."
Simple General Recursion in Type Theory
 Nordic Journal of Computing
, 2000
"... General recursive algorithms are such that the recursive calls are performed on arguments satisfying no condition that guarantees termination. Hence, there is no direct way of formalising them in type theory. The standard way of handling general recursion in type theory uses a wellfounded recursion ..."
Abstract

Cited by 10 (2 self)
 Add to MetaCart
General recursive algorithms are such that the recursive calls are performed on arguments satisfying no condition that guarantees termination. Hence, there is no direct way of formalising them in type theory. The standard way of handling general recursion in type theory uses a wellfounded recursion principle. Unfortunately, this way of formalising general recursive algorithms often produces unnecessarily long and complicated codes. On the other hand, functional programming languages like Haskell impose no restrictions on recursive programs, and then writing general recursive algorithms is straightforward. In addition, functional programs are usually short and selfexplanatory. However, the existing frameworks for reasoning about the correctness of Haskelllike programs are weaker than the framework provided by type theory. The goal of this work is to present a method that combines the advantages of both programming styles when writing simple general recursive algorithms....
Integrated Verification in Type Theory (Lecture Notes)
, 1996
"... Contents 1 Introduction 2 2 Type Theory as a Programming Language 3 2.1 Hello World in Type Theory . . . . . . . . . . . . . . . . . . . . . . 3 2.2 Hiding and argument synthesis . . . . . . . . . . . . . . . . . . . . . 4 2.3 Using dependent types in programming . . . . . . . . . . . . . . . . 4 ..."
Abstract

Cited by 6 (0 self)
 Add to MetaCart
Contents 1 Introduction 2 2 Type Theory as a Programming Language 3 2.1 Hello World in Type Theory . . . . . . . . . . . . . . . . . . . . . . 3 2.2 Hiding and argument synthesis . . . . . . . . . . . . . . . . . . . . . 4 2.3 Using dependent types in programming . . . . . . . . . . . . . . . . 4 2.4 Higherorder sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3 Logic for free 8 3.1 Propositional logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.2 Predicate logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.3 Equality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.4 Induction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.5 Inductively defined relations . . . . . . . . . . . . . . . . . . . . . . . 13 4 ALF's Type Theory 14 4.1 Judgements of Type Theory . . . . . . . . . . . . . . . . . . . . . . . 14 4.2 Conventions
A Theory of Program Refinement
, 1998
"... We give a canonical program refinement calculus based on the lambda calculus and classical firstorder predicate logic, and study its proof theory and semantics. The intention is to construct a metalanguage for refinement in which basic principles of program development can be studied. The idea is t ..."
Abstract

Cited by 6 (1 self)
 Add to MetaCart
We give a canonical program refinement calculus based on the lambda calculus and classical firstorder predicate logic, and study its proof theory and semantics. The intention is to construct a metalanguage for refinement in which basic principles of program development can be studied. The idea is that it should be possible to induce a refinement calculus in a generic manner from a programming language and a program logic. For concreteness, we adopt the simplytyped lambda calculus augmented with primitive recursion as a paradigmatic typed functional programming language, and use classical firstorder logic as a simple program logic. A key feature is the construction of the refinement calculus in a modular fashion, as the combination of two orthogonal extensions to the underlying programming language (in this case, the simplytyped lambda calculus). The crucial observation is that a refinement calculus is given by extending a programming language to allow indeterminate expressions (or ‘stubs’) involving the construction ‘some program x such that P ’. Factoring this into ‘some x...’
Hybrid PartialTotal Type Theory
, 1995
"... In this paper a hybrid type theory HTT is defined which combines the programming language notion of partial type with the logical notion of total type into a single theory. A new partial type constructor A is added to the type theory: objects in A may diverge, but if they converge, they must be memb ..."
Abstract

Cited by 5 (0 self)
 Add to MetaCart
In this paper a hybrid type theory HTT is defined which combines the programming language notion of partial type with the logical notion of total type into a single theory. A new partial type constructor A is added to the type theory: objects in A may diverge, but if they converge, they must be members of A. A fixed point typing rule is given to allow for typing of fixed points. The underlying theory is based on ideas from Feferman's Class Theory and Martin Lof's Intuitionistic Type Theory. The extraction paradigm of constructive type theory is extended to allow direct extraction of arbitrary fixed points. Important features of general programming logics such as LCF are preserved, including the typing of all partial functions, a partial ordering ! ¸ on computations, and a fixed point induction principle. The resulting theory is thus intended as a generalpurpose programming logic. Rules are presented and soundness of the theory established. Keywords: Constructive Type Theory, Logics...
Information Loss in the Programming Logic TK
 Programming Concepts and Methods
, 1990
"... this paper we investigate the topic of information loss in the constructive and intensional theory for programming development TK. The term information loss arose during the investigation of MartinLf's Type Theory [Mar 82] (MLTT) as a programming logic and it refers to techniques for removing compu ..."
Abstract

Cited by 3 (2 self)
 Add to MetaCart
this paper we investigate the topic of information loss in the constructive and intensional theory for programming development TK. The term information loss arose during the investigation of MartinLf's Type Theory [Mar 82] (MLTT) as a programming logic and it refers to techniques for removing computationally redundant data from programs which are obtained by formal derivation from specifications. Earlier papers [Hen 89a] [Hen 89b] contain details of the theory TK and [HeT 88] presents a theory of which TK is a restriction. We have taken the opportunity in this paper of describing TK in its entirety and this appears as an appendix. We will devote the rest of this introduction to a motivation for the current work and explain how it is related to similar research which has used MLTT as a basis for a programming logic [Abb 87] [Con 86] [Kha 86] [Bac 89]. The reasons for investigating and using systems like TK and MLTT are, by now, quite well known: program specifications are assertions (in MLTT qua type) and it is possible to prove them within the system. Such proofs show that they are, in principle, satisfiable specifications and it is possible to extract programs that meet them from such proofs. Thus the enterprises of program derivation and specification are unified and one inherits a basic methodology for program derivation from the logical structure governing programs and types. Like MLTT, TK is a constructive theory of sets (sets in TK are types or kinds) but it differs from it in a number of respects, the most important of which, for the purposes of this paper, is that the language of TK separates the assertions or formulae from the types. MLTT, in contrast, makes use of the propositions as types identification [How 80] and so does not make this separation. We have ...