Results 11 
19 of
19
Decidability Extracted: SYNTHESIZING “CORRECTBYCONSTRUCTION” DECISION PROCEDURES FROM CONSTRUCTIVE PROOFS
, 1998
"... The topic of this thesis is the extraction of efficient and readable programs from formal constructive proofs of decidability. The proof methods employed to generate the efficient code are new and result in clean and readable Nuprl extracts for two nontrivial programs. They are based on the use of ..."
Abstract

Cited by 3 (0 self)
 Add to MetaCart
The topic of this thesis is the extraction of efficient and readable programs from formal constructive proofs of decidability. The proof methods employed to generate the efficient code are new and result in clean and readable Nuprl extracts for two nontrivial programs. They are based on the use of Nuprl’s set type and techniques for extracting efficient programs from induction principles. The constructive formal theories required to express the decidability theorems are of independent interest. They formally circumscribe the mathematical knowledge needed to understand the derived algorithms. The formal theories express concepts that are taught at the senior college level. The decidability proofs themselves, depending on this material, are of interest and are presented in some detail. The proof of decidability of classical propositional logic is relative to a semantics based on Kleene’s strong threevalued logic. The constructive proof of intuitionistic decidability presented here is the first machine formalization of this proof. Theexposition reveals aspects of the Nuprl tactic collection relevant to the creation of readable proofs; clear extracts and efficient code are illustrated in the discussion of the proofs.
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.
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,
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.
An Abstract Program Generation Logic
, 1994
"... We present a system for representing programs as... ..."
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
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...
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
 Add to MetaCart
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'...