Results 1  10
of
23
Linearizability: a correctness condition for concurrent objects
, 1990
"... A concurrent object is a data object shared by concurrent processes. Linearizability is a correctness condition for concurrent objects that exploits the semantics of abstract data types. It permits a high degree of concurrency, yet it permits programmers to specify and reason about concurrent object ..."
Abstract

Cited by 938 (26 self)
 Add to MetaCart
A concurrent object is a data object shared by concurrent processes. Linearizability is a correctness condition for concurrent objects that exploits the semantics of abstract data types. It permits a high degree of concurrency, yet it permits programmers to specify and reason about concurrent objects using known techniques from the sequential domain. Linearizability provides the illusion that each operation applied by concurrent processes takes effect instantaneously at some point between its invocation and its response, implying that the meaning of a concurrent objectâ€™s operations can be given by pre and postconditions. This paper defines linearizability, compares it to other correctness conditions, presents and demonstrates a method for proving the correctness of implementations, and shows how to reason about concurrent objects, given they are linearizable.
Introducing OBJ
, 1993
"... This is an introduction to the philosophy and use of OBJ, emphasizing its operational semantics, with aspects of its history and its logical semantics. Release 2 of OBJ3 is described in detail, with many examples. OBJ is a wide spectrum firstorder functional language that is rigorously based on ..."
Abstract

Cited by 121 (30 self)
 Add to MetaCart
This is an introduction to the philosophy and use of OBJ, emphasizing its operational semantics, with aspects of its history and its logical semantics. Release 2 of OBJ3 is described in detail, with many examples. OBJ is a wide spectrum firstorder functional language that is rigorously based on (order sorted) equational logic and parameterized programming, supporting a declarative style that facilitates verification and allows OBJ to be used as a theorem prover.
Writing Larch Interface Language Specifications
 ACM Transactions on Programming Languages and Systems
, 1987
"... Current research in specifications is emphasizing the practical use of formal specifications in program design. One way to encourage their use in practice is to provide specification languages that are accessible to both designers and programmers. With this goal in mind, the Larch family of formal s ..."
Abstract

Cited by 75 (2 self)
 Add to MetaCart
Current research in specifications is emphasizing the practical use of formal specifications in program design. One way to encourage their use in practice is to provide specification languages that are accessible to both designers and programmers. With this goal in mind, the Larch family of formal specification languages has evolved to support a twotiered approach to writing specifications. This approach separates the specification of state transformations and programming language dependencies from the specification of underlying abstractions. Thus, each member of the Larch family has a subset derived from a programming language and another subset independent of any programming languages. We call the former interface languages, and the latter the Larch Shared Language. This paper focuses on Larch interface language specifications. Through examples, we illustrate some salient features of Larch/CLU, a Larch interface language for the programming language CLU. We give an example of writing an interface specification following the twotiered approach and discuss in detail issues involved in writing interface specifications and their interaction with their Shared Language components.
Categorybased Semantics for Equational and Constraint Logic Programming
, 1994
"... This thesis proposes a general framework for equational logic programming, called categorybased equational logic by placing the general principles underlying the design of the programming language Eqlog and formulated by Goguen and Meseguer into an abstract form. This framework generalises equation ..."
Abstract

Cited by 25 (10 self)
 Add to MetaCart
This thesis proposes a general framework for equational logic programming, called categorybased equational logic by placing the general principles underlying the design of the programming language Eqlog and formulated by Goguen and Meseguer into an abstract form. This framework generalises equational deduction to an arbitrary category satisfying certain natural conditions; completeness is proved under a hypothesis of quantifier projectivity, using a semantic treatment that regards quantifiers as models rather than variables, and regards valuations as model morphisms rather than functions. This is used as a basis for a model theoretic categorybased approach to a paramodulationbased operational semantics for equational logic programming languages. Categorybased equational logic in conjunction with the theory of institutions is used to give mathematical foundations for modularisation in equational logic programming. We study the soundness and completeness problem for module imports i...
Hidden Algebra for Software Engineering
 PROCEEDINGS COMBINATORICS, COMPUTATION AND LOGIC
, 1999
"... This paper is an introduction to recent research on hidden algebra and its application to software engineering; it is intended to be informal and friendly, but still precise. We first review classical algebraic specification for traditional "Platonic" abstract data types like integers, ve ..."
Abstract

Cited by 10 (0 self)
 Add to MetaCart
This paper is an introduction to recent research on hidden algebra and its application to software engineering; it is intended to be informal and friendly, but still precise. We first review classical algebraic specification for traditional "Platonic" abstract data types like integers, vectors, matrices, and lists. Software engineering also needs changeable "abstract machines," recently called "objects," that can communicate concurrently with other objects through visible "attributes" and statechanging "methods." Hidden algebra is a new development in algebraic semantics designed to handle such systems. Equational theories are used in both cases, but the notion of satisfaction for hidden algebra is behavioral, in the sense that equations need only appear to be true under all possible experiments; this extra flexibility is needed to accommodate the clever implementations that software engineers often use to conserve space and/or time. The most important results in hidden algebra are ...
Constructors Can Be Partial, Too
, 1997
"... this article that regularity should be exploited while reasoning about specifications based on regular data structures (see also [20]). That does not seem to be possible if regular data structures are modeled using subsorts, perhaps because of incompatibility between regularity and subsorts. Instead ..."
Abstract

Cited by 9 (1 self)
 Add to MetaCart
this article that regularity should be exploited while reasoning about specifications based on regular data structures (see also [20]). That does not seem to be possible if regular data structures are modeled using subsorts, perhaps because of incompatibility between regularity and subsorts. Instead of being a benefit, regularity becomes a burden. This situation is somewhat similar to an experience one would have in expressing a specification involving many data types in an unsorted (singlesorted) notation. Different types would have to be characterized by different unary predicates, and conditions expressed using these unary predicates would have to be carried around wherever terms of particular data types are used. A multisorted notation and logic are instead preferred.
Constructing a theory of a data structure as an aid to program development
 Acta Informatica
, 1979
"... Summary. This paper illustrates an extension to the method of developing programs via abstract data types. In order to make the proofs shorter and more intuitive a collection of lemmas (theory) is constructed for the main data types (trees). The problem used as an example is the recording of equival ..."
Abstract

Cited by 7 (5 self)
 Add to MetaCart
Summary. This paper illustrates an extension to the method of developing programs via abstract data types. In order to make the proofs shorter and more intuitive a collection of lemmas (theory) is constructed for the main data types (trees). The problem used as an example is the recording of equivalence relations, one of the programs given is based on the FischerGaller algorithm.
An Overview of Cafe Project
 In First CafeOBJ workshop
, 1997
"... Cafe is the name of an environment for systematic development of formal specifications based on algebraic specification techniques. The concept of Cafe was conceived by the first author around 1990 at ETL 1 as a successor of the OBJ language system. The development of Cafe has been supported by ..."
Abstract

Cited by 5 (0 self)
 Add to MetaCart
Cafe is the name of an environment for systematic development of formal specifications based on algebraic specification techniques. The concept of Cafe was conceived by the first author around 1990 at ETL 1 as a successor of the OBJ language system. The development of Cafe has been supported by IPA 2 from 1992, and the first version of CafeOBJ (a main specification language of Cafe ) was released in December 1995. Cafe is designed to support semantic representations of problems and reasoning methods which current generation of CASE tools are lacking. CafeOBJ is a new member of OBJ [3, 9, 16] language family. One of the the most important features of CafeOBJ is its constructs for objectoriented modeling (OOM). A larger scale project for developing a netwark based unified evnironment for CafeOBJ including verifier/checker, browser/editor, and library/cases is promised to be supported by IPA. This paper gives an overview of the new Cafe project. 1 Background In these day...
Complexity theory and the operational structure of algebraic programming systems
 Acta Informatica
, 1982
"... Summary. An algebraic programming system is a language built from a fixed algebraic data abstraction and a selection of deterministic, and nondeterministic, assignment and control constructs. First, we give a detailed analysis of the operational structure of an algebraic data type, one which is desi ..."
Abstract

Cited by 4 (2 self)
 Add to MetaCart
Summary. An algebraic programming system is a language built from a fixed algebraic data abstraction and a selection of deterministic, and nondeterministic, assignment and control constructs. First, we give a detailed analysis of the operational structure of an algebraic data type, one which is designed to classify programming systems in terms of the complexity of their implementations. Secondly, we test our operational description by comparing the computations in deterministic and nondeterministic programming systems under certain space and time restrictions. O.