Results 11  20
of
21
Reasoning about Functions with Effects
 See Gordon and Pitts
, 1997
"... ing and using (Lunif) we have that any two lambdas that are everywhere undefined are equivalent. The classic example of an everywhere undefined lambda is Bot 4 = x:app(x:app(x; x); x:app(x; x)) In f , another example of an everywhere undefined lambda is the "doforever" loop. Do 4 = f:Yv(Dox ..."
Abstract

Cited by 13 (1 self)
 Add to MetaCart
ing and using (Lunif) we have that any two lambdas that are everywhere undefined are equivalent. The classic example of an everywhere undefined lambda is Bot 4 = x:app(x:app(x; x); x:app(x; x)) In f , another example of an everywhere undefined lambda is the "doforever" loop. Do 4 = f:Yv(Dox:Do(f(x)) By the recursive definition, for any lambda ' and value v Do(')(v) \Gamma!Ø Do(')('(v)) Reasoning about Functions with Effects 21 In f , either '(v) \Gamma!Ø v 0 for some v 0 or '(v) is undefined. In the latter case the computation is undefined since the redex is undefined. In the former case, the computation reduces to Do(')(v 0 ) and on we go. The argument for undefinedness of Bot relies only on the (app) rule and will be valid in any uniform semantics. In contrast the argument for undefinedness of Do(') relies on the (fred.isdef) property of f . Functional Streams We now illustrate the use of (Lunifsim) computation to reason about streams represented as functions ...
Reasoning about Programs with Effects
, 1990
"... objects Abstract objects exhibit the noninheritance aspects of objectoriented programming. An abstract object is a function with local store. Abstract objects provide a means of encapsulating features of a structure and controlling access to that structure. The idea is that the local store can on ..."
Abstract

Cited by 11 (6 self)
 Add to MetaCart
objects Abstract objects exhibit the noninheritance aspects of objectoriented programming. An abstract object is a function with local store. Abstract objects provide a means of encapsulating features of a structure and controlling access to that structure. The idea is that the local store can only be changed by sending a message to the object. The operations on the encapsulated structure are determined by the messages accepted by the object. We illustrate these ideas for the special case of accumulators. An accumulator object accumulates a sequence of the things sent to it (via a !put; x? message) and responds to a !get? message by returning the sequence collected. If mkac(y) creates an accumulator object with initial contents the elements of y, then it mus satisfy the following three laws: Specification (Accumulator behavior): (put) letfa := mkac(y)gseq(a(!put; x?); e) 12 ' letfa := mkac(append (y; cons (x; Nil)))ge (get) letfa := mkac(y)gletfz := a(!get?)ge ' letfa := mkac(...
HigherOrder Expression Procedures
 In Proceedings of the ACM SIGPLAN Symposium on Partial Evaluation and SemanticsBased Program Manipulation (PEPM
, 1995
"... We investigate the soundness of a specialisation technique due to Scherlis, expression procedures, in the context of a higherorder nonstrict functional language. An expression procedure is a generalised procedure construct providing a contextually specialised definition. The addition of expression ..."
Abstract

Cited by 8 (2 self)
 Add to MetaCart
We investigate the soundness of a specialisation technique due to Scherlis, expression procedures, in the context of a higherorder nonstrict functional language. An expression procedure is a generalised procedure construct providing a contextually specialised definition. The addition of expression procedures thereby facilitates the manipulation and specialisation of programs. In the expression procedure approach, programs thus generalised are transformed by means of three key transformation rules: composition, application and abstraction. Arguably, the most notable, yet most overlooked feature of the expression procedure approach to transformation, is that the transformation rules always preserve the meaning of programs. This is in contrast to the unfoldfold transformation rules of Burstall and Darlington. In Scherlis' thesis, this distinguishing property was shown to hold for a strict firstorder language. Rules for callbyname evaluation order were stated but not proved correct....
Program Transformations for Configuring Components
 In ACM/IFIP Symposium on Partial Evaluation and Semanticsbased Program Manipulation
, 1991
"... In this paper we report progress in the development of methods for reasoning about the equivalence of objects with memory, and the use of these methods to describe sound operations on objects in terms of formal program transformations. We also formalize three different aspects of objects: their spec ..."
Abstract

Cited by 6 (5 self)
 Add to MetaCart
In this paper we report progress in the development of methods for reasoning about the equivalence of objects with memory, and the use of these methods to describe sound operations on objects in terms of formal program transformations. We also formalize three different aspects of objects: their specification, their behavior, and their canonical representation. Formal connections among these aspects provide methods for optimization and reasoning about systems of objects. To illustrate these ideas we give a formal derivation of an optimized specialized window editor from generic specifications of its components. A new result in this paper enables one to make use of symbolic evaluation (with respect to a set of constraints) to establish the equivalence of objects. This form of evaluation is not only mechanizable, it is also generalizes the conditions under which partial evaluation usually takes place. 1 Overview In [19] a general challenge for partial evaluation technology was presented ...
Names, Equations, Relations: Practical Ways to Reason about new
, 1996
"... The nucalculus of Pitts and Stark is a typed lambdacalculus, extended with state in the form of dynamicallygenerated names. These names can be created locally, passed around, and compared with one another. Through the interaction between names and functions, the language can capture notions of sc ..."
Abstract

Cited by 6 (0 self)
 Add to MetaCart
The nucalculus of Pitts and Stark is a typed lambdacalculus, extended with state in the form of dynamicallygenerated names. These names can be created locally, passed around, and compared with one another. Through the interaction between names and functions, the language can capture notions of scope, visibility and sharing. Originally motivated by the study of references in Standard ML, the nucalculus has connections to other kinds of local declaration, and to the mobile processes of the calculus. This
An Operational Logic of Effects
 In Proceedings of the Australasian Theory Symposium, CATS ’96
, 1996
"... In this paper we describe our progress towards an operational implementation of a modern programming logic. The logic is inspired by the variable type systems of Feferman, and is designed for reasoning about imperative functional programs. The logic goes well beyond traditional programming logics, s ..."
Abstract

Cited by 5 (2 self)
 Add to MetaCart
In this paper we describe our progress towards an operational implementation of a modern programming logic. The logic is inspired by the variable type systems of Feferman, and is designed for reasoning about imperative functional programs. The logic goes well beyond traditional programming logics, such as Hoare's logic and Dynamic logic in its expressibility, yet is less problematic to encode into higherorder logics. The main focus of the paper is too present an axiomatization of the base firstorder theory, and an implementation of the logic into the generic proof assistant Isabelle. We also indicate the directions of our current research to blend these two advances into an operational whole. Keywords semantics, logic, derivation, verification, specification, theorem proving. 1 Introduction In this paper we continue the investigations into a Variable Typed Logic of Effects that began in [20, 11, 21, 23, 12]. In particular we present an axiomatization of the base firstorder theory...
A First Order Logic of Effects
 Theoretical Computer Science
, 1996
"... In this paper we describe some of our progress towards an operational implementation of a modern programming logic. The logic is inspired by the variable type systems of Feferman, and is designed for reasoning about imperative functional programs. The logic goes well beyond traditional programming l ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
In this paper we describe some of our progress towards an operational implementation of a modern programming logic. The logic is inspired by the variable type systems of Feferman, and is designed for reasoning about imperative functional programs. The logic goes well beyond traditional programming logics, such as Hoare's logic and Dynamic logic in its expressibility, yet is less problematic to encode into higher order logics. The main focus of the paper is too present an axiomatization of the base first order theory. 1 Introduction VTLoE [34, 23, 35, 37, 24] is a logic for reasoning about imperative functional programs, inspired by the variable type systems of Feferman. These systems are two sorted theories of operations and classes initially developed for the formalization of constructive mathematics [12, 13] and later applied to the study of purely functional languages [14, 15]. VTLoE builds upon recent advances in the semantics of languages with effects [16, 19, 28, 32, 33] and go...
Sparse Polynomials and Linear Logic
 ACM Sigsam Bulletin
, 1993
"... INTRODUCTION Two early major applications of Lisp are the Reduce and Macsyma symbolic algebra systems. Due to the complexity of algebraic expressions, the Lisp list constructed from "cons" cells provides an elegant and efficient representation for the manipulations that must be performed. Therefore ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
INTRODUCTION Two early major applications of Lisp are the Reduce and Macsyma symbolic algebra systems. Due to the complexity of algebraic expressions, the Lisp list constructed from "cons" cells provides an elegant and efficient representation for the manipulations that must be performed. Therefore, when Richard Gabriel selected a set of programs for benchmarking Lisp systems [Gabriel85], he included the FRPOLY program, which is a fragment of the Macsyma system that adds and multiplies polynomials in several variables. Polynomial manipulations are the heart of any symbolic algebra system, and as polynomial multiplication is both common and expensive, the FRPOLY benchmark raises the simple polynomial r=x+y+z+1 to the powers 2, 5, 10 and 15 by successive squaring. As the size of the answer explodes exponentially with larger powers, this expansion of (x+y+z+1) 15 provides an interesting benchmark. "
Program Verification for Optimized Byte Copy
, 1994
"... We present a program to copy bytes, together with a formal specification and a proof that the code satisfies the specification. The program, which is in the critical path for a network implementation, has been tuned carefully over a period of time; the proof covers the entire program, and is easily ..."
Abstract
 Add to MetaCart
We present a program to copy bytes, together with a formal specification and a proof that the code satisfies the specification. The program, which is in the critical path for a network implementation, has been tuned carefully over a period of time; the proof covers the entire program, and is easily updated if the program is modified. The program is written in the Standard ML programming language and was produced as part of the Fox Project implementation of the TCP/IP protocol suite. The author's electronic mail address is: esb@cs.cmu.edu This research was sponsored by the Defense Advanced Research Projects Agency, CSTO, under the title "The Fox Project: Advanced Development of Systems Software", ARPA Order No. 8313, issued by ESD/AVS under Contract No. F1962891C0168. The views and conclusions contained in this document are those of the author and should not be interpreted as representing official policies, either expressed or implied, of the Defense Advanced Research Projects Agency...
Lisp  notes On Its Past And Future  1980
, 1999
"... LISP has survived for 21 years because it is an approximate local optimum in the space of programming languages. However, it has accumulated some barnacles that should be scraped o, and some longstanding opportunities for improvement have been neglected. It would benet from some cooperative ma ..."
Abstract
 Add to MetaCart
LISP has survived for 21 years because it is an approximate local optimum in the space of programming languages. However, it has accumulated some barnacles that should be scraped o, and some longstanding opportunities for improvement have been neglected. It would benet from some cooperative maintenance especially in creating and maintaining program libraries. Computer checked proofs of program correctness are now possible for pure LISP and some extensions, but more theory and some smoothing of the language itself are required before we can take full advantage of LISP's mathematical basis. 1999 note: This article was included in the 1980 Lisp conference held at Stanford. Since it almost entirely corresponds to my present opinions, I should have asked to have it reprinted in the 1998 Lisp users conference proceedings at which I gave a talk with the same title. 1 1 Introduction On LISP's approximate 21st anniversary, no doubt something could be said about coming of ag...