Results 1  10
of
24
OrderSorted Algebra I: Equational Deduction for Multiple Inheritance, Overloading, Exceptions and Partial Operations
 Theoretical Computer Science
, 1992
"... This paper generalizes manysorted algebra (hereafter, MSA) to ordersorted algebra (hereafter, OSA) by allowing a partial ordering relation on the set of sorts. This supports abstract data types with multiple inheritance (in roughly the sense of objectoriented programming), several forms of pol ..."
Abstract

Cited by 232 (35 self)
 Add to MetaCart
This paper generalizes manysorted algebra (hereafter, MSA) to ordersorted algebra (hereafter, OSA) by allowing a partial ordering relation on the set of sorts. This supports abstract data types with multiple inheritance (in roughly the sense of objectoriented programming), several forms of polymorphism and overloading, partial operations (as total on equationally defined subsorts), exception handling, and an operational semantics based on term rewriting. We give the basic algebraic constructions for OSA, including quotient, image, product and term algebra, and we prove their basic properties, including Quotient, Homomorphism, and Initiality Theorems. The paper's major mathematical results include a notion of OSA deduction, a Completeness Theorem for it, and an OSA Birkhoff Variety Theorem. We also develop conditional OSA, including Initiality, Completeness, and McKinseyMalcev Quasivariety Theorems, and we reduce OSA to (conditional) MSA, which allows lifting many known MSA results to OSA. Retracts, which intuitively are left inverses to subsort inclusions, provide relatively inexpensive runtime error handling. We show that it is safe to add retracts to any OSA signature, in the sense that it gives rise to a conservative extension. A final section compares and contrasts many different approaches to OSA. This paper also includes several examples demonstrating the flexibility and applicability of OSA, including some standard benchmarks like STACK and LIST, as well as a much more substantial example, the number hierarchy from the naturals up to the quaternions.
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 135 (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 82 (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.
On Observational Equivalence and Algebraic Specification
, 1987
"... The properties of a simple and natural notion of observational equivalence of algebras and the corresponding specificationbuilding operation are studied. We begin with a defmition of observational equivalence which is adequate to handle reachable algebras only, and show how to extend it to cope wit ..."
Abstract

Cited by 66 (14 self)
 Add to MetaCart
The properties of a simple and natural notion of observational equivalence of algebras and the corresponding specificationbuilding operation are studied. We begin with a defmition of observational equivalence which is adequate to handle reachable algebras only, and show how to extend it to cope with unreachable algebras and also how it may be generalised to make sense under an arbitrary institution. Behavioural equivalence is treated as an important special case of observational equivalence, and its central role in program development is shown by means of an example.
HYPERPROGRAMMING: A Formal Approach to Software Environments
 In Proceedings, Symposium on Formal Approaches to Software Environment Technology. Joint System Development Corporation
, 1990
"... : Hyperprogramming is an emerging semanticsbased technique for the integration of diverse features of programming environments, in particular, rapid prototyping and formal methods. This approach generalizes the notion of module to that of module cluster , which is an association around a central f ..."
Abstract

Cited by 23 (14 self)
 Add to MetaCart
(Show Context)
: Hyperprogramming is an emerging semanticsbased technique for the integration of diverse features of programming environments, in particular, rapid prototyping and formal methods. This approach generalizes the notion of module to that of module cluster , which is an association around a central formal specification of various items of programming information, such as interface, source code, compiled code, rapid prototypes, formal proofs, test cases, performance estimates, documentation, history and accounting information. This allows all information items to be composed at the same time, by evaluating a master text called a module expression, which tells how to compose and transform module clusters. Hyperprogramming thus integrates design, specification, prototyping, coding, configuration, proof, testing, documentation and accounting into a single framework significantly generalizing both Ada generics and Unix 1 make. Hyperprogramming can also support a variety of different progra...
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 14 (0 self)
 Add to MetaCart
(Show Context)
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 ...
Typechecking Revisited: Modular Errorhandling
 In Proceedings of the Workshop on Semantics of Specification Languages
, 1993
"... Staticsemantics determines the validity of a program, while a typechecker provides more specific type error information. Typecheckers are specified based on the static semantics specification, for the purpose of identifying and presenting type errors in invalid programs. We discuss a style of ..."
Abstract

Cited by 8 (5 self)
 Add to MetaCart
Staticsemantics determines the validity of a program, while a typechecker provides more specific type error information. Typecheckers are specified based on the static semantics specification, for the purpose of identifying and presenting type errors in invalid programs. We discuss a style of algebraically specifying the static semantics of a language which facilitates automatic generation of a typechecker and a language specific error reporter. Such a specification can also be extended in a modular manner to yield humanreadable error messages. 1 An Introduction Staticsemantics of a language determines the validity of a program written in that language. Typechecking of a program, to be useful in practice, should not only indicate whether a given program is valid or not, but also summarize the type errors and show the location of the erroneous constructs which caused the errors. Thus, specifying a typechecker that is useful in practice results in (textually) modifying th...
A new semantics for Clear
"... Summary. A semantics for the Clear specification language is given. The language of set theory is employed to present constructions corresponding to Clear's specificationcombining operations, which are then used as the basis for a denotational semantics. This is in contrast to Burstall and Gog ..."
Abstract

Cited by 8 (1 self)
 Add to MetaCart
Summary. A semantics for the Clear specification language is given. The language of set theory is employed to present constructions corresponding to Clear's specificationcombining operations, which are then used as the basis for a denotational semantics. This is in contrast to Burstall and Goguen's 1980 semantics which described the meanings of these operations
The Institution of Multialgebras  a general framework for algebraic software development
, 2002
"... this technicality ..."
Tossing Algebraic Flowers down the Great Divide
 In People and Ideas in Theoretical Computer Science
, 1999
"... Data Types and Algebraic Semantics The history of programming languages, and to a large extent of software engineering as a whole, can be seen as a succession of ever more powerful abstraction mechanisms. The first stored program computers were programmed in binary, which soon gave way to assembly l ..."
Abstract

Cited by 6 (0 self)
 Add to MetaCart
(Show Context)
Data Types and Algebraic Semantics The history of programming languages, and to a large extent of software engineering as a whole, can be seen as a succession of ever more powerful abstraction mechanisms. The first stored program computers were programmed in binary, which soon gave way to assembly languages that allowed symbolic codes for operations and addresses. fortran began the spread of "high level" programming languages, though at the time it was strongly opposed by many assembly programmers; important features that developed later include blocks, recursive procedures, flexible types, classes, inheritance, modules, and genericity. Without going into the philosophical problems raised by abstraction (which in view of the discussion of realism in Section 4 may be considerable), it seems clear that the mathematics used to describe programming concepts should in general get more abstract as the programming concepts get more abstract. Nevertheless, there has been great resistance to u...