Results 11  20
of
21
A Computational Induction Principle
, 1991
"... It is critical to have an induction method for reasoning about recursive programs expressed as fixed points, for otherwise our reasoning ability is severely impaired. The fixed point induction rule developed by deBakker and Scott is one such well known principle. Here we propose a new induction meth ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
(Show Context)
It is critical to have an induction method for reasoning about recursive programs expressed as fixed points, for otherwise our reasoning ability is severely impaired. The fixed point induction rule developed by deBakker and Scott is one such well known principle. Here we propose a new induction method, computational induction, which is an induction on the computation process. Computational induction is founded on different principles than the fixed point induction principleit can only be defined in deterministic settings, and it cannot be modeled denotationally. Fixed point induction and computational induction prove many of the same facts; the relation between the two is examined in detail. 1 Introduction In a theory for reasoning about programs, in particular recursive functions defined via fixed points, there must exist induction principles if interesting results are to be proven. A number of different induction principles have been developed; for a review, see [Man74]. Author'...
CC+: An extension of the Calculus of Constructions with fixpoints
, 1993
"... We follow an original idea suggested by Constable and Smith [6, 7] providing a way for reasoning about non terminating computations in a typed framework. A former study has been worked out within NuPrl by Smith [21]. We investigate how these ideas can be developed within the Calculus of Construct ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
We follow an original idea suggested by Constable and Smith [6, 7] providing a way for reasoning about non terminating computations in a typed framework. A former study has been worked out within NuPrl by Smith [21]. We investigate how these ideas can be developed within the Calculus of Constructions (CC). The adaptation provides an conservative extension, denoted CC+. Strong normalisation for fireductions is preserved. We recover the alternate "recursive" coding for integers introduced in AF2 by Parigot [12, 13]. Thus, the computational behaviour for terms coding integers is improved. Moreover, as expected, all partial recursive functions are now definable. Relationships with primitive coding through "Church" integers within the pure Calculus is studied, giving some insights into logical expressiveness issue. All these results easily generalize to all the usual data structures.
Church’s Thesis and Functional Programming
 JOURNAL OF UNIVERSAL COMPUTER SCIENCE
, 2004
"... The earliest statement of Church’s Thesis, from Church (1936) p356 is
We now define the notion, already discussed, of an effectively calculable function of positive integers by identifying it with the notion of a recursive function of positive integers (or of a lambda definable function of positiv ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
The earliest statement of Church’s Thesis, from Church (1936) p356 is
We now define the notion, already discussed, of an effectively calculable function of positive integers by identifying it with the notion of a recursive function of positive integers (or of a lambda definable function of positive integers).
The phrase in parentheses refers to the apparatus which Church had developed to investigate this and other problems in the foundations of mathematics: the calculus of lambda conversion. Both the Thesis and the lambda calculus have been of seminal influence on the development of Computing Science. The main subject of this article is the lambda calculus but I will begin with a brief sketch of the emergence of the Thesis.
Reflecting the computation system of constructive type theory in itself ∗
"... The computation system of constructive type theory is openended so that theorems about computation will hold for a broad class of extensions to the system. We show that despite this openness it is possible to completely reflect the computation system into itself in a clear way by adding simple prim ..."
Abstract
 Add to MetaCart
The computation system of constructive type theory is openended so that theorems about computation will hold for a broad class of extensions to the system. We show that despite this openness it is possible to completely reflect the computation system into itself in a clear way by adding simple primitive concepts that anticipate the reflection. This work provides a method to modify the builtin evaluator and to treat the issues of intensionality and computational complexity in programming logics and provides a basis for reflecting the deductive apparatus of type theory. In this abstract we use the term “reflection ” to refer to grammatical constructions which allow a language to talk about itself. This capability is important in natural language, and in fact was used in the first sentence of this abstract (as well as in this sentence). Reflection is also an important mechanism in formal languages. In Lisp it is used to provide an extensible syntax. Formal logical calculi also use it to provide an extensible inference system [DS79], by allowing users to state new rules of inference and prove that they are sound. Reflection need not be explicitly provided because it can sometimes be achieved be a technique known as gödelization,
An Abstract Program Generation Logic
, 1994
"... We present a system for representing programs as... ..."
Acknowledgments
"... The most thanks for this thesis go to Stephanie Weirich, who has been a fantastic research advisor and mentor. Stephanie always has time for her students—whenever I ran into technical difficulties she seemed genuinely happy to drop everything else to work together on the whiteboard (where her skills ..."
Abstract
 Add to MetaCart
(Show Context)
The most thanks for this thesis go to Stephanie Weirich, who has been a fantastic research advisor and mentor. Stephanie always has time for her students—whenever I ran into technical difficulties she seemed genuinely happy to drop everything else to work together on the whiteboard (where her skills are very impressive). Her enthusiasm is contagious, and I always leave her office happy and full of energy. All in all I could not wish for a better phd advisor. The work described in this thesis came out of the Trellys project, and I benefitted very much from cooperation with the rest of the Trellys team. Their contributions are described in more detail in Section 1.2. Here I would like to particularly thank two of them. Chris Casinghino was my closest collaborator at Penn. Both our research (on two different parts of the same programming language) was improved by having someone to bounce ideas with. Aaron Stump was a constant source of new ideas and insights. I would also like to thank him for inviting me to spend a very enjoyable summer visiting the University of Iowa. The University of Pennsylvania is a great place to be a programming languages student. The Penn PL Club is a vibrant and tightlyknit place, the faculty (Benjamin Pierce and Steve Zdancewic) are very helpful to everyone in the group, and the students and postdocs always have interesting research projects to talk about. Special thanks to the plclub people who I shared my office with over the years—it was lots of fun chatting with you all the time! When typesetting this document, two very helpful tools were Ott by Sewell et al. [115], and pulp by Daniel Wagner.1
Abstract FINAL PREPRINT
"... This paper develops machinery necessary to mechanically import arbitrary functional programs into Coq’s type theory, manually strengthen their specifications with additional proofs, and then mechanicaly reextract the newlycertified program in a form which is as efficient as the original program. I ..."
Abstract
 Add to MetaCart
This paper develops machinery necessary to mechanically import arbitrary functional programs into Coq’s type theory, manually strengthen their specifications with additional proofs, and then mechanicaly reextract the newlycertified program in a form which is as efficient as the original program. In order to facilitate this goal, the coinductive technique of [Cap05] is modified to form a monad whose operators are the constructors of a coinductive type rather than functions defined over the type. The inductive invariant technique of [KM03] is extended to allow optional “after the fact ” termination proofs. These proofs inhabit members of Prop, and therefore do not affect extracted code. Compared to [Cap05], the new monad makes it possible to directly represent unrestricted recursion without violating productivity requirements [Gim95], and it produces efficient code via Coq’s extraction mechanism. The disadvantages of this technique include reliance on the JMeq axiom [McB00] and a significantly more complex notion of equality. The resulting technique is packaged as a Coq library, and is suitable for formalizing programs written in any sideeffectfree functional language with callbyvalue semantics.
Modules With Proofs
"... The ML module system provides proven mechanisms for organizing and maintaining large programs through the use of structures, to implement program units, and signatures, that give an abstract specification of structures. A signature is a partial specification: it simply lists the components of the st ..."
Abstract
 Add to MetaCart
The ML module system provides proven mechanisms for organizing and maintaining large programs through the use of structures, to implement program units, and signatures, that give an abstract specification of structures. A signature is a partial specification: it simply lists the components of the structure together with their types. For domains with security or timing requirements, it is important to give stronger guarantees about program behavior. We address this issue by augmenting program signatures with formal specifications, and structures with proofs. Security specifications are given in terms of a type theoretic interpretation of the program implementation. The type theory required to support this extension is the translucent sum calculus of Harper and Lillibridge extended with equality and constraint types. The CurryHoward isomorphism provides a correspondence between executable programs and their proofs, allowing control over the degree of security desired.
Extracting Recursive Programs in Type Theory
"... MartinLof's constructive type theory is a foundational theory of mathematics and programming. The key to using type theory as a logic is the formulas as types principle, whereby propositional assertions are directly expressed by types. Furthermore, using the extraction method programs can aut ..."
Abstract
 Add to MetaCart
(Show Context)
MartinLof's constructive type theory is a foundational theory of mathematics and programming. The key to using type theory as a logic is the formulas as types principle, whereby propositional assertions are directly expressed by types. Furthermore, using the extraction method programs can automatically be extracted from proofs. One weakness of the use of the extraction method to date, however, is that it is impossible to extract arbitrary recursively defined programs from proofs, because all functions in type theory must be total. We show that under some extensions to type theory extraction of recursive programs is direct and useful. 1 Introduction We believe the motivations and directions of this work are best seen in the light of historical development, and will thus take a short historical digression into intuitionism, realizability, proofs as programs, and formulas as types. The most basic tenet of the philosophy of intuitionism, as set forth by Brouwer, is that a mathematical p...