Results 1  10
of
11
A Calculus of Mobile Processes, Part I
 I AND II. INFORMATION AND COMPUTATION
, 1989
"... We present the ßcalculus, a calculus of communicating systems in which one can naturally express processes which have changing structure. Not only may the component agents of a system be arbitrarily linked, but a communication between neighbours may carry information which changes that linkage. The ..."
Abstract

Cited by 189 (3 self)
 Add to MetaCart
We present the ßcalculus, a calculus of communicating systems in which one can naturally express processes which have changing structure. Not only may the component agents of a system be arbitrarily linked, but a communication between neighbours may carry information which changes that linkage. The calculus is an extension of the process algebra CCS, following work by Engberg and Nielsen who added mobility to CCS while preserving its algebraic properties. The ßcalculus gains simplicity by removing all distinction between variables and constants; communication links are identified by names, and computation is represented purely as the communication of names across links. After an illustrated description of how the ßcalculus generalises conventional process algebras in treating mobility, several examples exploiting mobility are given in some detail. The important examples are the encoding into the ß calculus of higherorder functions (the calculus and combinatory algebra), the tr...
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 131 (4 self)
 Add to MetaCart
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...
The Evaluation Transformer Model of Reduction and Its Correctness
 in TAPSOFT 91
, 1991
"... Lazy evaluation of functional programs incurs time and memory overheads, and restricts parallelism compared with programs that are evaluated strictly. A number of analysis techniques, such as abstract interpretation and projection analysis, have been developed to find out information that can allevi ..."
Abstract

Cited by 11 (4 self)
 Add to MetaCart
Lazy evaluation of functional programs incurs time and memory overheads, and restricts parallelism compared with programs that are evaluated strictly. A number of analysis techniques, such as abstract interpretation and projection analysis, have been developed to find out information that can alleviate these overheads. This paper formalises an evaluation model, the evaluation transformer model of reduction, which can use information from these analysis techniques, and proves that the resulting reduction strategies produce the same answers as those obtained using lazy evaluation.
Partial computations in constructive type theory
 JOURNAL OF LOGIC AND COMPUTATION
, 1991
"... Constructive type theory as conceived by Per MartinLöf has a very rich type system, but partial functions cannot be typed. This also makes it impossible to directly write recursive programs. In this paper a constructive type theory Red is defined which includes a partial type constructor A; objects ..."
Abstract

Cited by 7 (5 self)
 Add to MetaCart
Constructive type theory as conceived by Per MartinLöf has a very rich type system, but partial functions cannot be typed. This also makes it impossible to directly write recursive programs. In this paper a constructive type theory Red is defined which includes a partial type constructor A; objects in the type A may diverge, but if they converge, they must be members of A. A fixed point typing principle is given to allow typing of recursive functions. The extraction paradigm of type theory, whereby programs are automatically extracted from constructive proofs, is extended to allow extraction of fixed points. There is a Scott fixed point induction principle for reasoning about these functions. Soundness of the theory is proven. Type theory becomes a more expressive programming logic as a result.
The CallbyNeed Lambda Calculus (Unabridged)
, 1994
"... We present a calculus that captures the operational semantics of callbyneed. We demonstrate that the calculus is confluent and standardizable and entails the same observational equivalences as callbyname lambda calculus. 1 Introduction Procedure calls come in three styles: callbyvalue, callb ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
We present a calculus that captures the operational semantics of callbyneed. We demonstrate that the calculus is confluent and standardizable and entails the same observational equivalences as callbyname lambda calculus. 1 Introduction Procedure calls come in three styles: callbyvalue, callbyname and callbyneed. The first two of these possess elegant models in the form of corresponding lambda calculi. This paper shows that the third may be equipped with a similar model. The correspondence between callbyvalue lambda calculi and strict functional languages (such as the pure subset of Standard ML) is quite good. The callbyvalue mechanism of evaluating an argument in advance is well suited for practical use. The correspondence between callbyname lambda calculi and lazy functional languages (such as Miranda or Haskell) is not so good. Callbyname reevaluates an argument each time it is used, which is prohibitively expensive. So lazy languages are implemented using the cal...
Lazy Lambda Calculus: Theories, Models and Local Structure Characterisation
 AUTOMATA, LANGUAGES AND PROGRAMMING, LNCS 623
, 1994
"... Lambda Calculus is commonly thought to be the basis for functional programming. However, there is a fundamental mismatch between the "standard" theory of sensible Lambda Calculus (as in e.g. [Bar84]) and the practice of lazy evaluation which is a distinctive feature of functional programming. This ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
Lambda Calculus is commonly thought to be the basis for functional programming. However, there is a fundamental mismatch between the "standard" theory of sensible Lambda Calculus (as in e.g. [Bar84]) and the practice of lazy evaluation which is a distinctive feature of functional programming. This paper proposes modification of a number of key notions in the sensible theory along the lines of laziness. Starting from the strongly unsolvables as the meaningless terms, we define and investigate properties of lazy (or weakly sensible) λtheories, lazy λmodels and a number of lazy behavioural preorders on λterms. In the second part, we show that all these notions have a natural place in a class of lazy psemodels. A major result of this paper is a new local structure theorem for lazy psemodels. This characterizes the ordering between denotations of λterms in the model by a new lazy behavioural preorder.
Mobility in the CcParadigm
, 1992
"... presented at Mathematical Foundations of Computer Science 1992, LNCS 629, pp. 336345, 1992. 1 operation takes a constraint c and adds (conjoins) it to the store (when the store is consistent with c). As a consequence, variables can be linked once and for all to their value, that is cclanguages ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
presented at Mathematical Foundations of Computer Science 1992, LNCS 629, pp. 336345, 1992. 1 operation takes a constraint c and adds (conjoins) it to the store (when the store is consistent with c). As a consequence, variables can be linked once and for all to their value, that is cclanguages are not affected by the previous criticism against process algebras. However, if cclanguages have higher order power or how much of control is described by them (i.e., a comparison with the descriptive power of process algebras) are still open questions. Some phenomena, indeed, suggest a deep relationship between calculus and cclanguages: as an example, mobility of channels is reflected in mobility of variables (giving rise to situations of extrusion and intrusion of the scope). In this paper we will prove that cclanguages yield higher order power even with a very poor underlying system of constraints (the signature through which constraints are defined has a constant and a concatenatio...
LCF Should Be Lifted
, 1988
"... : When observing termination of closed terms at all types in Plotkin's interpreter for PCF [11], the standard cpo model A V is not adequate. We define a new model, A Y , with lifted functional types and prove its adequacy for this notion of observation. We prove that with the addition of a parallel ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
: When observing termination of closed terms at all types in Plotkin's interpreter for PCF [11], the standard cpo model A V is not adequate. We define a new model, A Y , with lifted functional types and prove its adequacy for this notion of observation. We prove that with the addition of a parallel conditional and a convergence testing operator to the language, the model becomes fully abstract; with the addition of an existentiallike operator, the language becomes universal. Using the model as a guide, we develop a sound logic for the language. 1 Introduction The denotational semantics most appropriate for a programming language depends crucially upon the observations one makes about computations. In general, an observation is some important behavior of the interpreter [8]. For example, in the arithmetic, higherorder programming language PCF [11, 13], one usually chooses to observe the results of arithmetic expressionsthat a term of integer type reduces to a numeral. One may also...
Semantic Orthogonality of Type Disciplines
, 1997
"... We consider a version of PCF, and prove, using both syntactic and semantic means, that the operational equivalences of the base language are preserved when the language is extended with sum and product types, with polymorphic types, and with recursive types. These theorems show that the additions to ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
We consider a version of PCF, and prove, using both syntactic and semantic means, that the operational equivalences of the base language are preserved when the language is extended with sum and product types, with polymorphic types, and with recursive types. These theorems show that the additions to the type systems are orthogonal to the original language. 1 Introduction Type systems for programming languages are rarely monolithic: although a type system may be composed of many parts, each part can usually be understood on its own. Consider, for instance, the programming language Standard ML (SML) [22]. SML's type system includes base types of integers, reals, strings, and characters, and type constructors for lists, functions, tuples, references, exceptions, userdefined recursive datatypes, and polymorphism. On a syntactic level, the type rules of the parts do not interfere with one another: the typechecking rule for application, for example, uses only the fact that the operator is...
Nondeterministic Lazy it λcalculus VS it πcalculus
 ECOLE NORMALE SUPERIEURE
, 1993
"... We pursue the study of the embedding of the λcalculus into the πcalculus. Various λ calculi with parallel and convergence testing facilities are examined and their expressiveness compared; λj a lazy calculus augmented with a nondeterministic choice operator and a convergence testing combinator, ..."
Abstract
 Add to MetaCart
We pursue the study of the embedding of the λcalculus into the πcalculus. Various λ calculi with parallel and convergence testing facilities are examined and their expressiveness compared; λj a lazy calculus augmented with a nondeterministic choice operator and a convergence testing combinator, emerges as a suitable language to be encoded in π. Through the use of closures for variables and abstractions, the process of substitution in λj is managed in a semiexplicit way. The semantics associated to both λj and are based on contextual testing preorders. We define an encoding of λj into π; we prove that it is adequate with respect to those semantics. However, the encoding is not fullyadequate; standard examples show that π is still more discriminating than λj .