Results 1  10
of
221
The Revised Report on the Syntactic Theories of Sequential Control and State
 THEORETICAL COMPUTER SCIENCE
, 1992
"... The syntactic theories of control and state are conservative extensions of the v calculus for equational reasoning about imperative programming facilities in higherorder languages. Unlike the simple v calculus, the extended theories are mixtures of equivalence relations and compatible congruen ..."
Abstract

Cited by 293 (38 self)
 Add to MetaCart
The syntactic theories of control and state are conservative extensions of the v calculus for equational reasoning about imperative programming facilities in higherorder languages. Unlike the simple v calculus, the extended theories are mixtures of equivalence relations and compatible congruence relations on the term language, which significantly complicates the reasoning process. In this paper we develop fully compatible equational theories of the same imperative higherorder programming languages. The new theories subsume the original calculi of control and state and satisfy the usual ChurchRosser and Standardization Theorems. With the new calculi, equational reasoning about imperative programs becomes as simple as reasoning about functional programs.
On the Expressive Power of Programming Languages
 Science of Computer Programming
, 1990
"... The literature on programming languages contains an abundance of informal claims on the relative expressive power of programming languages, but there is no framework for formalizing such statements nor for deriving interesting consequences. As a first step in this direction, we develop a formal noti ..."
Abstract

Cited by 161 (8 self)
 Add to MetaCart
(Show Context)
The literature on programming languages contains an abundance of informal claims on the relative expressive power of programming languages, but there is no framework for formalizing such statements nor for deriving interesting consequences. As a first step in this direction, we develop a formal notion of expressiveness and investigate its properties. To validate the theory, we analyze some widely held beliefs about the expressive power of several extensions of functional languages. Based on these results, we believe that our system correctly captures many of the informal ideas on expressiveness, and that it constitutes a foundation for further research in this direction. 1 Comparing Programming Languages The literature on programming languages contains an abundance of informal claims on the expressive power of programming languages. Arguments in these contexts typically assert the expressibility or nonexpressibility of programming constructs relative to a language. Unfortunately, pro...
A Practical Soft Type System for Scheme
 In Proceedings of the 1994 ACM Conference on LISP and Functional Programming
, 1993
"... Soft type systems provide the benefits of static type checking for dynamically typed languages without rejecting untypable programs. A soft type checker infers types for variables and expressions and inserts explicit runtime checks to transform untypable programs to typable form. We describe a prac ..."
Abstract

Cited by 119 (4 self)
 Add to MetaCart
Soft type systems provide the benefits of static type checking for dynamically typed languages without rejecting untypable programs. A soft type checker infers types for variables and expressions and inserts explicit runtime checks to transform untypable programs to typable form. We describe a practical soft type system for R4RS Scheme. Our type checker uses a representation for types that is expressive, easy to interpret, and supports efficient type inference. Soft Scheme supports all of R4RS Scheme, including procedures of fixed and variable arity, assignment, continuations, and toplevel definitions. Our implementation is available by anonymous FTP. The first author was supported in part by the United States Department of Defense under a National Defense Science and Engineering Graduate Fellowship. y The second author was supported by NSF grant CCR9122518 and the Texas Advanced Technology Program under grant 003604014. 1 Introduction Dynamically typed languages like Scheme...
Relational Properties of Domains
 Information and Computation
, 1996
"... New tools are presented for reasoning about properties of recursively defined domains. We work within a general, categorytheoretic framework for various notions of `relation' on domains and for actions of domain constructors on relations. Freyd's analysis of recursive types in terms of a ..."
Abstract

Cited by 114 (6 self)
 Add to MetaCart
(Show Context)
New tools are presented for reasoning about properties of recursively defined domains. We work within a general, categorytheoretic framework for various notions of `relation' on domains and for actions of domain constructors on relations. Freyd's analysis of recursive types in terms of a property of mixed initiality/finality is transferred to a corresponding property of invariant relations. The existence of invariant relations is proved under completeness assumptions about the notion of relation. We show how this leads to simpler proofs of the computational adequacy of denotational semantics for functional programming languages with userdeclared datatypes. We show how the initiality/finality property of invariant relations can be specialized to yield an induction principle for admissible subsets of recursively defined domains, generalizing the principle of structural induction for inductively defined sets. We also show how the initiality /finality property gives rise to the coinduct...
A New Approach to Generic Functional Programming
 In The 27th Annual ACM SIGPLANSIGACT Symposium on Principles of Programming Languages
, 1999
"... This paper describes a new approach to generic functional programming, which allows us to define functions generically for all datatypes expressible in Haskell. A generic function is one that is defined by induction on the structure of types. Typical examples include pretty printers, parsers, and co ..."
Abstract

Cited by 99 (13 self)
 Add to MetaCart
This paper describes a new approach to generic functional programming, which allows us to define functions generically for all datatypes expressible in Haskell. A generic function is one that is defined by induction on the structure of types. Typical examples include pretty printers, parsers, and comparison functions. The advanced type system of Haskell presents a real challenge: datatypes may be parameterized not only by types but also by type constructors, type definitions may involve mutual recursion, and recursive calls of type constructors can be arbitrarily nested. We show that despite this complexitya generic function is uniquely defined by giving cases for primitive types and type constructors (such as disjoint unions and cartesian products). Given this information a generic function can be specialized to arbitrary Haskell datatypes. The key idea of the approach is to model types by terms of the simply typed calculus augmented by a family of recursion operators. While co...
Logics and Type Systems
, 1993
"... from the last declaration in \Delta (which is p:'). (oeE) In fact the ([\Theta]) is not exactly the ([\Theta]) that is found by induction. Possibly some of the free variables in ([\Theta]) are renamed. What happens is the following: 1. Consider the proofcontext \Delta 1 ] \Delta 2 and especi ..."
Abstract

Cited by 99 (7 self)
 Add to MetaCart
from the last declaration in \Delta (which is p:'). (oeE) In fact the ([\Theta]) is not exactly the ([\Theta]) that is found by induction. Possibly some of the free variables in ([\Theta]) are renamed. What happens is the following: 1. Consider the proofcontext \Delta 1 ] \Delta 2 and especially the renaming of the declared variables in \Delta 2 that has been caused by the operation ]. 2. Rename the free proofvariables in ([\Theta]) accordingly, obtaining say, ([\Theta 0 ]). 3. Apply ([\Sigma]) to ([\Theta 0 ]). (There will in practice be no confusion if we just write ([\Theta]) instead.) Of course the intended meaning is that the judgement below the double lines is derivable if the judgement above the lines is. This will be proved later in Theorem 3.2.8. It should be clear at this point however that there is a onetoone correspondence between the occurrences of ' as a (nondischarged) premise in the deduction and declarations p:' in \Delta. Notation. If for \Sigma a deducti...
MultiStage Programming: Its Theory and Applications
, 1999
"... MetaML is a statically typed functional programming language with special support for program generation. In addition to providing the standard features of contemporary programming languages such as Standard ML, MetaML provides three staging annotations. These staging annotations allow the construct ..."
Abstract

Cited by 98 (21 self)
 Add to MetaCart
MetaML is a statically typed functional programming language with special support for program generation. In addition to providing the standard features of contemporary programming languages such as Standard ML, MetaML provides three staging annotations. These staging annotations allow the construction, combination, and execution of objectprograms. Our thesis is that MetaML's three staging annotations provide a useful, theoretically sound basis for building program generators. This dissertation reports on our study of MetaML's staging constructs, their use, their implementation, and their formal semantics. Our results include an extended example of where MetaML allows us to produce efficient programs, an explanation of why implementing these constructs in traditional ways can be challenging, two formulations of MetaML's semantics, a type system for MetaML, and a proposal for extending ...
A lambdacalculus à la de Bruijn with explicit substitutions
, 1995
"... The aim of this paper is to present the scalculus which is a very simple calculus with explicit substitutions and to prove its confluence on closed terms and the preservation of strong normalisation of terms. We shall prove strong normalisation of the corresponding calculus of substitution by tra ..."
Abstract

Cited by 94 (35 self)
 Add to MetaCart
(Show Context)
The aim of this paper is to present the scalculus which is a very simple calculus with explicit substitutions and to prove its confluence on closed terms and the preservation of strong normalisation of terms. We shall prove strong normalisation of the corresponding calculus of substitution by translating it into the oecalculus [ACCL91], and therefore the relation between both calculi will be made explicit. The confluence of the scalculus is obtained by the "interpretation method" ([Har89], [CHL92]). The proof of the preservation of normalisation follows the lines of an analogous result for the AEcalculus (cf. [BBLRD95]). The relation between s and AE is also studied.
Using Typed Lambda Calculus to Implement Formal Systems on a Machine
 Journal of Automated Reasoning
, 1992
"... this paper and the LF. In particular the idea of having an operator T : Prop ! Type appears already in De Bruijn's earlier work, as does the idea of having several judgements. The paper [24] describes the basic features of the LF. In this paper we are going to provide a broader illustration of ..."
Abstract

Cited by 92 (16 self)
 Add to MetaCart
(Show Context)
this paper and the LF. In particular the idea of having an operator T : Prop ! Type appears already in De Bruijn's earlier work, as does the idea of having several judgements. The paper [24] describes the basic features of the LF. In this paper we are going to provide a broader illustration of its applicability and discuss to what extent it is successful. The analysis (of the formal presentation) of a system carried out through encoding often illuminates the system itself. This paper will also deal with this phenomenon.