Results 1 
2 of
2
A Categorical Programming Language
, 1987
"... A theory of data types and a programming language based on category theory are presented. Data types play a crucial role in programming. They enable us to write programs easily and elegantly. Various programming languages have been developed, each of which may use different kinds of data types. Ther ..."
Abstract

Cited by 67 (0 self)
 Add to MetaCart
A theory of data types and a programming language based on category theory are presented. Data types play a crucial role in programming. They enable us to write programs easily and elegantly. Various programming languages have been developed, each of which may use different kinds of data types. Therefore, it becomes important to organize data types systematically so that we can understand the relationship between one data type and another and investigate future directions which lead us to discover exciting new data types. There have been several approaches to systematically organize data types: algebraic specification methods using algebras, domain theory using complete partially ordered sets and type theory using the connection between logics and data types. Here, we use category theory. Category theory has proved to be remarkably good at revealing the nature of mathematical objects, and we use it to understand the true nature of data types in programming.
Induction principles formalized in the Calculus of Constructions
 Programming of Future Generation Computers. Elsevier Science
, 1988
"... The Calculus of Constructions is a higherorder formalism for writing constructive proofs in a natural deduction style, inspired from work of de Bruijn [2, 3], Girard [12], MartinLöf [14] and Scott [18]. The calculus and its syntactic theory were presented in Coquand’s thesis [7], and an implementa ..."
Abstract

Cited by 10 (4 self)
 Add to MetaCart
The Calculus of Constructions is a higherorder formalism for writing constructive proofs in a natural deduction style, inspired from work of de Bruijn [2, 3], Girard [12], MartinLöf [14] and Scott [18]. The calculus and its syntactic theory were presented in Coquand’s thesis [7], and an implementation by the author was used to mechanically verify a substantial number of proofs demonstrating the power of expression of the formalism [9]. The Calculus of Constructions is proposed as a foundation for the design of programming environments where programs are developed consistently with formal specifications. The current paper shows how to define inductive concepts in the calculus. A very general induction schema is obtained by postulating all elements of the type of interest to belong to the standard interpretation associated with a predicate map. This is similar to the treatment of D. Park [16], but the power of expression of the formalism permits a very direct treatment, in a language that is formalized enough to be actually implemented on computer. Special instances of the induction schema specialize to Nœtherian induction and Structural induction over any algebraic type. Computational Induction is treated in an axiomatization of Domain Theory in Constructions. It is argued that the resulting principle is more powerful than LCF’s [13], since the restriction on admissibility is expressible in the object language. Notations We assume the reader is familiar with the Calculus of Constructions, as presented in [7, 9, 10, 11]. More precisely, we shall use in the present paper the extended system defined in Section 11 of [8]. The notation [x: A]B stands for the algorithm with formal parameter x of type A and body B, whereas (x: A)B stands for the product of types B indexed by x ranging over A. Thus square brackets are used for λabstraction, whereas parentheses stand for product formation. The atom P rop is the type of logical propositions. The atom T ype stands for the first level in the predicative hierarchy of types (and thus we have P rop: T ype). We abbreviate (x: A)B into A → B whenever x does not occur in B. When B: P rop, we think of (x: A)B as the universally quantified proposition ∀x: A·B. When x does not occur in B and A: P rop,