Results 1  10
of
43
ParameterPassing and the Lambda Calculus
, 1991
"... The choice of a parameterpassing technique is an important decision in the design of a highlevel programming language. To clarify some of the semantic aspects of the decision, we develop, analyze, and compare modifications of the calculus for the most common parameterpassing techniques, i.e., ca ..."
Abstract

Cited by 214 (23 self)
 Add to MetaCart
(Show Context)
The choice of a parameterpassing technique is an important decision in the design of a highlevel programming language. To clarify some of the semantic aspects of the decision, we develop, analyze, and compare modifications of the calculus for the most common parameterpassing techniques, i.e., callbyvalue and callbyname combined with passbyworth and passby reference, respectively. More specifically, for each parameterpassing technique we provide 1. a program rewriting semantics for a language with sideeffects and firstclass procedures based on the respective parameterpassing technique; 2. an equational theory that is derived from the rewriting semantics in a uniform manner; 3. a formal analysis of the correspondence between the calculus and the semantics; and 4. a strong normalization theorem for the imperative fragment of the theory (when applicable). A comparison of the various systems reveals that Algol's callbyname indeed satisfies the wellknown fi rule of the orig...
Term Graph Rewriting
, 1998
"... Term graph rewriting is concerned with the representation of functional expressions as graphs, and the evaluation of these expressions by rulebased graph transformation. Representing expressions as graphs allows to share common subexpressions, improving the efficiency of term rewriting in space ..."
Abstract

Cited by 89 (5 self)
 Add to MetaCart
Term graph rewriting is concerned with the representation of functional expressions as graphs, and the evaluation of these expressions by rulebased graph transformation. Representing expressions as graphs allows to share common subexpressions, improving the efficiency of term rewriting in space and time. Besides efficiency, term graph rewriting differs from term rewriting in properties like termination and confluence. This paper is a survey of (acyclic) term graph rewriting, where emphasis is given to the relations between term and term graph rewriting. We focus on soundness of term graph rewriting with respect to term rewriting, on completeness for proving validity of equations and for computing term normal forms, on termination and confluence, and on term graph narrowing. Keywords: term graph rewriting, termination, confluence, term rewriting, narrowing Classification: 68Q05, 68Q40, 68Q42 (AMS '91); D.1.1, F.1.1, F.4.2, I.1.1 (CR '98) Note: This paper will appear in H...
Improvement in a Lazy Context: An Operational Theory for CallByNeed
 Proc. POPL'99, ACM
, 1999
"... Machine The semantics presented in this section is essentially Sestoft's \mark 1" abstract machine for laziness [Sestoft 1997]. In that paper, he proves his abstract machine 6 A. K. Moran and D. Sands h fx = Mg; x; S i ! h ; M; #x : S i (Lookup) h ; V; #x : S i ! h fx = V g; V; S i (Up ..."
Abstract

Cited by 46 (8 self)
 Add to MetaCart
Machine The semantics presented in this section is essentially Sestoft's \mark 1" abstract machine for laziness [Sestoft 1997]. In that paper, he proves his abstract machine 6 A. K. Moran and D. Sands h fx = Mg; x; S i ! h ; M; #x : S i (Lookup) h ; V; #x : S i ! h fx = V g; V; S i (Update) h ; M x; S i ! h ; M; x : S i (Unwind) h ; x:M; y : S i ! h ; M [ y = x ]; S i (Subst) h ; case M of alts ; S i ! h ; M; alts : S i (Case) h ; c j ~y; fc i ~x i N i g : S i ! h ; N j [ ~y = ~x j ]; S i (Branch) h ; let f~x = ~ Mg in N; S i ! h f~x = ~ Mg; N; S i ~x dom(;S) (Letrec) Fig. 1. The abstract machine semantics for callbyneed. semantics sound and complete with respect to Launchbury's natural semantics, and we will not repeat those proofs here. Transitions are over congurations consisting of a heap, containing bindings, the expression currently being evaluated, and a stack. The heap is a partial function from variables to terms, and denoted in an identical manner to a coll...
Cyclic Lambda Calculi
, 1997
"... . We precisely characterize a class of cyclic lambdagraphs, and then give a sound and complete axiomatization of the terms that represent a given graph. The equational axiom system is an extension of lambda calculus with the letrec construct. In contrast to current theories, which impose restrictio ..."
Abstract

Cited by 43 (5 self)
 Add to MetaCart
. We precisely characterize a class of cyclic lambdagraphs, and then give a sound and complete axiomatization of the terms that represent a given graph. The equational axiom system is an extension of lambda calculus with the letrec construct. In contrast to current theories, which impose restrictions on where the rewriting can take place, our theory is very liberal, e.g., it allows rewriting under lambdaabstractions and on cycles. As shown previously, the reduction theory is nonconfluent. We thus introduce an approximate notion of confluence. Using this notion we define the infinite normal form or L'evyLongo tree of a cyclic term. We show that the infinite normal form defines a congruence on the set of terms. We relate our cyclic lambda calculus to the traditional lambda calculus and to the infinitary lambda calculus. Since most implementations of nonstrict functional languages rely on sharing to avoid repeating computations, we develop a variant of our calculus that enforces the ...
A Concurrent Lambda Calculus with Futures
 THEORETICAL COMPUTER SCIENCE
, 2006
"... We introduce a new lambda calculus with futures, λ(fut), to model the operational semantics of concurrent extensions of ML. λ(fut) can safely express a variety of highlevel concurrency constructs, including channels, semaphores, or ports. Safe implementations of these constructs in (fut) cannot be ..."
Abstract

Cited by 39 (7 self)
 Add to MetaCart
We introduce a new lambda calculus with futures, λ(fut), to model the operational semantics of concurrent extensions of ML. λ(fut) can safely express a variety of highlevel concurrency constructs, including channels, semaphores, or ports. Safe implementations of these constructs in (fut) cannot be corrupted in any welltyped context. We prove safety on basis of a linear type system.
Equational Reasoning for Linking with FirstClass Primitive Modules
 In European Symposium on Programming
, 2000
"... . Modules and linking are usually formalized by encodings which use the calculus, records (possibly dependent), and possibly some construct for recursion. In contrast, we introduce the mcalculus, a calculus where the primitive constructs are modules, linking, and the selection and hiding of mo ..."
Abstract

Cited by 27 (5 self)
 Add to MetaCart
(Show Context)
. Modules and linking are usually formalized by encodings which use the calculus, records (possibly dependent), and possibly some construct for recursion. In contrast, we introduce the mcalculus, a calculus where the primitive constructs are modules, linking, and the selection and hiding of module components. The mcalculus supports smooth encodings of software structuring tools such as functions ( calculus), records, objects (&calculus), and mutually recursive definitions. The mcalculus can also express widely varying kinds of module systems as used in languages like C, Haskell, and ML. We prove the mcalculus is confluent, thereby showing that equational reasoning via the mcalculus is sensible and well behaved. 1 Introduction A long version of this paper [43] which contains full proofs, more details and explanations, and comparisons with more calculi (including the calculus of Ancona and Zucca [4]), is available at http://www.cee.hw.ac.uk/~jbw/papers/. 1.1 Support f...
A rewriting calculus for cyclic higherorder term graphs
 IN &QUOT;2ND INTERNATIONAL WORKSHOP ON TERM GRAPH REWRITING  TERMGRAPH’2004
, 2004
"... ..."
A calculus for linktime compilation
, 2000
"... Abstract. We present a module calculus for studying a simple model of linktime compilation. The calculus is stratified into a term calculus, a core module calculus, and a linking calculus. At each level, we show that the calculus enjoys a computational soundness property: iftwo terms are equivalent ..."
Abstract

Cited by 22 (4 self)
 Add to MetaCart
(Show Context)
Abstract. We present a module calculus for studying a simple model of linktime compilation. The calculus is stratified into a term calculus, a core module calculus, and a linking calculus. At each level, we show that the calculus enjoys a computational soundness property: iftwo terms are equivalent in the calculus, then they have the same outcome in a smallstep operational semantics. This implies that any module transformation justified by the calculus is meaning preserving. This result is interesting because recursive module bindings thwart confluence at two levels ofour calculus, and prohibit application ofthe traditional technique for showing computational soundness, which requires confluence. We introduce a new technique, based on properties we call lift and project, thatusesa weaker notion of confluence with respect to evaluation to establish computational soundness for our module calculus. We also introduce the weak distributivity property for a transformation T operating on modules D1 and D2 linked by ⊕: T (D1 ⊕ D2) =T (T (D1) ⊕ T (D2)). We argue that this property finds promising candidates for linktime optimizations. 1
Correctness of Monadic State: An Imperative CallbyNeed Calculus
 In Proc. 25th ACM Symposium on Principles of Programming Languages
, 1998
"... The extension of Haskell with a builtin state monad combines mathematical elegance with operational efficiency: ffl Semantically, at the source language level, constructs that act on the state are viewed as functions that pass an explicit store data structure around. ffl Operationally, at the imp ..."
Abstract

Cited by 19 (2 self)
 Add to MetaCart
The extension of Haskell with a builtin state monad combines mathematical elegance with operational efficiency: ffl Semantically, at the source language level, constructs that act on the state are viewed as functions that pass an explicit store data structure around. ffl Operationally, at the implementation level, constructs that act on the state are viewed as statements whose evaluation has the sideeffect of updating the implicit global store in place. There are several unproven conjectures that the two views are consistent. Recently, we have noted that the consistency of the two views is far from obvious: all it takes for the implementation to become unsound is one judiciouslyplaced betastep in the optimization phase of the compiler. This discovery motivates the current paper in which we formalize and show the correctness of the implementation of monadic state. For the proof, we first design a typed callbyneed language that models the intermediate language of the compiler, to...
Confluent Equational Reasoning for Linking with FirstClass Primitive Modules
 In ESOP 2000  European Symposium on Programming 2000, number 1782 in Lecture Notes in Computer Science
, 1999
"... Modules and linking are usually formalized by encodings which use the lambda calculus, records (possibly dependent), and possibly some construct for recursion. In contrast, we present the mcalculus, a calculus where the primitive constructs are modules, linking, and the selection and hiding of modu ..."
Abstract

Cited by 17 (3 self)
 Add to MetaCart
Modules and linking are usually formalized by encodings which use the lambda calculus, records (possibly dependent), and possibly some construct for recursion. In contrast, we present the mcalculus, a calculus where the primitive constructs are modules, linking, and the selection and hiding of module components. In addition to supporting equational reasoning about modules and linking, the mcalculus allows smooth encodings of software structuring tools such as the lambda calculus, mutually recursive definitions, records (including operations like extension and concatenation), and objects. The mcalculus is extremely well behaved  we show not only that the mcalculus is confluent but also that it satisfies the strong finite developments property.