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 66 (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 42 (20 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...
Using structural recursion for corecursion
 In Types for Proofs and Programs, International Conference, TYPES 2008, volume 5497 of LNCS
, 2009
"... Abstract. We propose a (limited) solution to the problem of constructing stream values defined by recursive equations that do not respect the guardedness condition. The guardedness condition is imposed on definitions of corecursive functions in Coq, AGDA, and other higherorder proof assistants. In ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
Abstract. We propose a (limited) solution to the problem of constructing stream values defined by recursive equations that do not respect the guardedness condition. The guardedness condition is imposed on definitions of corecursive functions in Coq, AGDA, and other higherorder proof assistants. In this paper, we concentrate in particular on those nonguarded equations where recursive calls appear under functions. We use a correspondence between streams and functions over natural numbers to show that some classes of nonguarded definitions can be modelled through the encoding as structural recursive functions. In practice, this work extends the class of stream values that can be defined in a constructive type theorybased theorem prover with inductive and coinductive types, structural recursion and guarded corecursion.