Results 1 
8 of
8
Pure versus Impure Lisp
, 1996
"... : The aspect of purity versus impurity that we address involves the absence versus presence of mutation: the use of primitives (RPLACA and RPLACD in Lisp, setcar! and setcdr! in Scheme) that change the state of pairs without creating new pairs. It is well known that cyclic list structures can be c ..."
Abstract

Cited by 17 (0 self)
 Add to MetaCart
: The aspect of purity versus impurity that we address involves the absence versus presence of mutation: the use of primitives (RPLACA and RPLACD in Lisp, setcar! and setcdr! in Scheme) that change the state of pairs without creating new pairs. It is well known that cyclic list structures can be created by impure programs, but not by pure ones. In this sense, impure Lisp is "more powerful" than pure Lisp. If the inputs and outputs of programs are restricted to be sequences of atomic symbols, however, this difference in computability disappears. We shall show that if the temporal sequence of input and output operations must be maintained (that is, if computations must be "online "), then a difference in complexity remains: for a pure program to do what an impure program does in n steps, O(n log n) steps are sufficient, and in some cases\Omega\Gamma n log n) steps are necessary. * This research was partially supported by an NSERC Operating Grant. 1. Introduction The programming la...
What is a "Pointer Machine"?
 Science of Computer Programming
, 1995
"... A "Pointer Machine" is many things. Authors who consider referring to this term are invited to read the following note first. 1 Introduction In a 1992 paper by Galil and the author we referred to a "pointer machine " model of computation. A subsequent survey of related literature has produced over ..."
Abstract

Cited by 16 (1 self)
 Add to MetaCart
A "Pointer Machine" is many things. Authors who consider referring to this term are invited to read the following note first. 1 Introduction In a 1992 paper by Galil and the author we referred to a "pointer machine " model of computation. A subsequent survey of related literature has produced over twenty references to papers having to do with "pointer machines", naturally containing a large number of crossreferences. These papers address a range of subjects that range from the model considered in the above paper to some other ones which are barely comparable. The fact that such different notions have been discussed under the heading of "pointer machines" has produced the regrettable effect that cross references are sometimes found to be misleading. Clearly, it is easy for a reader who does not follow a paper carefully to misinterpret its claims when a term that is so illdefined is used. This note is an attempt to rectify the situation. We start with a survey of the different notions...
Reasoning About Concurrent Objects
 In: Proc. AsiaPacific Software Engineering Conf. (APSEC '95), IEEE, Los Alamitos, Cal
, 1995
"... Embedded specifications in objectoriented (OO) languages such as Eiffel and Sather are based on a rigorous approach towards validation, compatibility and reusability of sequential programs. The underlying method of "designbycontract" is based on Hoare logic for which concurrency extensions exist. ..."
Abstract

Cited by 16 (7 self)
 Add to MetaCart
Embedded specifications in objectoriented (OO) languages such as Eiffel and Sather are based on a rigorous approach towards validation, compatibility and reusability of sequential programs. The underlying method of "designbycontract" is based on Hoare logic for which concurrency extensions exist. However concurrent OO languages are still in their infancy. They have inherently imperative facets, such as object identity, sharing, and synchronisation, which cannot be ignored in the semantics. Any marriage of objects and concurrency requires a tradeoff in a space of intertwined qualities. This paper summarises our work on a type system, calculus and an operational model for concurrent objects in a minimal extension of the Eiffel and Sather languages (cSather). We omit concurrency control constructs and instead use assertions as synchronisation constraints for asynchronous functions. We show that this provides a framework in which subtyping and concurrency can coexist. 1 Introduction C...
Type Analysis and Data Structure Selection
, 1991
"... Schwartz et al. described an optimization to implement builtin abstract types such as sets and maps with efficient data structures. Their transformation rests on the discovery of finite universal sets, called bases, to be used for avoiding data replication and for creating aggregate data structures ..."
Abstract

Cited by 15 (0 self)
 Add to MetaCart
Schwartz et al. described an optimization to implement builtin abstract types such as sets and maps with efficient data structures. Their transformation rests on the discovery of finite universal sets, called bases, to be used for avoiding data replication and for creating aggregate data structures that implement associative access by simpler cursor or pointer access. The SETL implementation used global analysis similar to classical dataflow for typings and for set inclusion and membership relationships to determine bases. However, the optimized data structures selected by this optmization did not include a primitive linked list or array, and all optimized data structures retained some degree of hashing. Hence, this heuristic approach did not guarantee a uniform improvement in performance over the use of default representations. The analysis was complicated by SETL's imperative style, weak typing, and low level control structures. The implemented optimizer was large (about 20,000 line...
Pointers versus Arithmetic in PRAMs
 Journal of Computer and System Sciences
, 1996
"... Manipulation of pointers in shared data structures is an important communication mechanism used in many parallel algorithms. Indeed, many fundamental algorithms do essentially nothing else. A Parallel Pointer Machine, (or PPM ) is a parallel model having pointers as its principal data type. PPMs hav ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
Manipulation of pointers in shared data structures is an important communication mechanism used in many parallel algorithms. Indeed, many fundamental algorithms do essentially nothing else. A Parallel Pointer Machine, (or PPM ) is a parallel model having pointers as its principal data type. PPMs have been characterized as PRAMs obeying two restrictions  first, restricted arithmetic capabilities, and second, the CROW memory access restriction (Concurrent Read, Owner Write, a commonly occurring special case of CREW). We present results concerning the relative power of PPMs (and other arithmetically restricted PRAMs) versus CROW PRAMs having ordinary arithmetic capabilities. First, we prove lower bounds separating PPMs from CROW PRAMs. For example, any stepbystep simulation of an nprocessor CROW PRAM by a PPM requires time \Omega# log log n) per step. Second, we show that this lower bound is tight  we give such a stepbystep simulation using O(log log n) time per step. As a coro...
D.: Computational Issues in Exploiting Dependent AndParallelism
 in Logic Programming: Leftness Detection in Dynamic Search Trees. In: LPAR. (2005) 79–94
"... Abstract. We present efficient Pure Pointer Machine (PPM) algorithms to test for “leftness ” in dynamic search trees and related problems. In particular, we show that the problem of testing if a node x is in the leftmost branch of the subtree rooted in node y, in a dynamic tree that grows and shrink ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
Abstract. We present efficient Pure Pointer Machine (PPM) algorithms to test for “leftness ” in dynamic search trees and related problems. In particular, we show that the problem of testing if a node x is in the leftmost branch of the subtree rooted in node y, in a dynamic tree that grows and shrinks at the leaves, can be solved on PPMs in worstcase O((lg lg n) 2) time per operation in the semidynamic case—i.e.,all the operations that add leaves to the tree are performed before any other operations—where n is the number of operations that affect the structure of the tree. We also show that the problem can be solved on PPMs in amortized O((lg lg n) 2) time per operation in the fully dynamic case. 1
Transparent Data Structures, Or How to Make Search Trees Robust in a Distributed Environment
 In Proc. of the 8th International Symposium on Parallel Architectures, Algorithms, and Networks (ISPAN
, 2005
"... In this paper we propose a new class of memory models, called transparent memory models, for implementing data structures so that they can be emulated in a distributed environment in a scalable, efficient and robust way. Transparent memory models aim at combining the advantages of the pointer model ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
In this paper we propose a new class of memory models, called transparent memory models, for implementing data structures so that they can be emulated in a distributed environment in a scalable, efficient and robust way. Transparent memory models aim at combining the advantages of the pointer model and the linear addressable memory model without inheriting their disadvantages. We demonstrate the effectiveness of our approach by looking at a specific memory model, called the hypertree memory model, and by implementing a search tree in it that matches, in an amortized sense, the performance of the best search trees in the pointer model yet can efficiently recover from arbitrary memory faults. 1.
Backtracking
"... Contents 1 Introduction 3 2 Models of computation 6 3 The Set Union Problem 9 4 The WorstCase Time Complexity of a Single Operation 15 5 The Set Union Problem with Deunions 18 6 Split and the Set Union Problem on Intervals 22 7 The Set Union Problem with Unlimited Backtracking 26 1 Introduction A ..."
Abstract
 Add to MetaCart
Contents 1 Introduction 3 2 Models of computation 6 3 The Set Union Problem 9 4 The WorstCase Time Complexity of a Single Operation 15 5 The Set Union Problem with Deunions 18 6 Split and the Set Union Problem on Intervals 22 7 The Set Union Problem with Unlimited Backtracking 26 1 Introduction An equivalence relation on a finite set S is a binary relation that is reflexive symmetric and transitive. That is, for s; t and u in S, we have that sRs, if sRt then tRs, and if sRt and tRu then sRu. Set S is partitioned by R into equivalence classes where each class cointains all and only the elements that obey R pairwise. Many computational problems involve representing, modifying and tracking the evolution of equivalenc