Results 11  20
of
23
Programming Language Semantics in Foundational Type Theory
 In Proc. the IFIP TC2/WG2.2,2.3 International Conference on Programming Concepts and Methods (PROCOMET’98
, 1996
"... There are compelling benefits to using foundational type theory as a framework for programming language semantics. I give a semantics of an expressive programming calculus in the foundational type theory of Nuprl. Previous typetheoretic semantics have used less expressive type theories, or have sacr ..."
Abstract

Cited by 5 (1 self)
 Add to MetaCart
There are compelling benefits to using foundational type theory as a framework for programming language semantics. I give a semantics of an expressive programming calculus in the foundational type theory of Nuprl. Previous typetheoretic semantics have used less expressive type theories, or have sacrificed important programming constructs such as recursion and modules. The primary mechanisms of this semantics are partial types, for typing recursion, set types, for encoding power and singleton kinds, which are used for subtyping and module programming, and very dependent function types, for encoding signatures. Keywords Semantics, program verification, type theory, functional programming 1 INTRODUCTION Type theory has become a popular framework for formal reasoning in computer science and has formed the basis for a number of automated deduction systems, including Automath, Nuprl, HOL and Coq, among others. In addition to formalizing mathematics, these systems are widely used for the a...
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.
The Triumph of Types: Principia Mathematica’s Impact on Computer Science
"... Types now play an essential role in computer science; their ascent originates from Principia Mathematica. Type checking and type inference algorithms are used to prevent semantic errors in programs, and type theories are the native language of several major interactive theorem provers. Some of these ..."
Abstract
 Add to MetaCart
(Show Context)
Types now play an essential role in computer science; their ascent originates from Principia Mathematica. Type checking and type inference algorithms are used to prevent semantic errors in programs, and type theories are the native language of several major interactive theorem provers. Some of these trace key features back to Principia. This lecture examines the influence of Principia Mathematica on modern type theories implemented in software systems known as interactive proof assistants. These proof assistants advance daily the goal for which Principia was designed: to provide a comprehensive formalization of mathematics. For instance, the definitive formal proof of the Four Color Theorem was done in type theory. Type theory is considered seriously now more than ever as an adequate foundation for both classical and constructive mathematics as well as for computer science. Moreover, the seminal work in the history of formalized mathematics is the Automath project of N.G. de Bruijn whose formalism is type theory. In addition we explain how type theories have enabled the use of formalized mathematics as a practical programming language, a connection entirely unanticipated at the time of Principia Mathematica’s creation.
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.
A Foundation for Verified Software Development Systems
"... We describe a formalization of the metamathematics of programming in a higherorder calculus as a means to create verifiably correct implementations of program synthesis tools. Formal definitions and lemmata are used to raise the level of abstraction in formal reasoning to one comprehensible for pr ..."
Abstract
 Add to MetaCart
We describe a formalization of the metamathematics of programming in a higherorder calculus as a means to create verifiably correct implementations of program synthesis tools. Formal definitions and lemmata are used to raise the level of abstraction in formal reasoning to one comprehensible for programmers. Formal metatheorems make explicit the semantic knowledge contained in program derivation methods and serve as kernel of derived inference rules implementing these methods. By an example formalization of a strategy deriving global search algorithms we demonstrate the advantages of combining formal mathematics with an interactive theorem proving environment to develop powerful, flexible, and reliable systems for knowledgebased software development.
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
(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'...
Formalizing the Halting Problem in a Constructive Type Theory
"... Abstract. We present a formalization of the halting problem in Agda, a language based on MartinLöf’s intuitionistic type theory. The key features are: – We give a constructive proof of the halting problem. The “constructive halting problem ” is a natural reformulation of the classic variant. – A ne ..."
Abstract
 Add to MetaCart
Abstract. We present a formalization of the halting problem in Agda, a language based on MartinLöf’s intuitionistic type theory. The key features are: – We give a constructive proof of the halting problem. The “constructive halting problem ” is a natural reformulation of the classic variant. – A new abstract model of computation is introduced, in type theory. – The undecidability of the halting problem is proved via a theorem similar to Rice’s theorem. The central idea of the formalization is to abstract from the details of specific models of computation. This is accomplished by formulating a number of axioms which describe an abstract model of computation, and proving that the halting problem is undecidable in any model described by these axioms. 1