Results 1  10
of
16
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 208 (33 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 120 (29 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.
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 (17 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.
A Categorical Programming Language
, 1987
"... A theory of data types and a programming language based on category theory are presented. Data types play a crucial role in programming. They enable us to write programs easily and elegantly. Various programming languages have been developed, each of which may use different kinds of data types. Ther ..."
Abstract

Cited by 66 (0 self)
 Add to MetaCart
A theory of data types and a programming language based on category theory are presented. Data types play a crucial role in programming. They enable us to write programs easily and elegantly. Various programming languages have been developed, each of which may use different kinds of data types. Therefore, it becomes important to organize data types systematically so that we can understand the relationship between one data type and another and investigate future directions which lead us to discover exciting new data types. There have been several approaches to systematically organize data types: algebraic specification methods using algebras, domain theory using complete partially ordered sets and type theory using the connection between logics and data types. Here, we use category theory. Category theory has proved to be remarkably good at revealing the nature of mathematical objects, and we use it to understand the true nature of data types in programming.
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, vectors, ma ..."
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 ...
Integrated Formal Methods with Richer Methodological Profiles for the Development of MultiPerspective Systems
, 1996
"... The thesis investigates some of the traditional problems with the established formal methods, such as requirements elicitation, the validation problem, divergence from current industrial practice, adverse effects on early problem solving and the incompleteness of perspective. Recent approaches to so ..."
Abstract

Cited by 8 (2 self)
 Add to MetaCart
The thesis investigates some of the traditional problems with the established formal methods, such as requirements elicitation, the validation problem, divergence from current industrial practice, adverse effects on early problem solving and the incompleteness of perspective. Recent approaches to solving some of these problems are reviewed, including structured and formal methods integration, hybrid formal methods and multiparadigmed approaches. The definition of a method first used by Kronlof is adopted and two reasons for integrating methods are hypothesised: ffl The integration of methods which result in a richer methodological profile, such as methods which address different stages of the lifecycle, and; ffl The integration of methods which result in a wider overall perspective, and are thus effective over a wider number of prospective problems, such as methods which consider different orthogonal aspects of requirements. Two pieces of work are then presented, one for each hypot...
Where are the Laws of ObjectOriented Programming?
 In I Brazilian Workshop on Formal Methods
, 1998
"... In this position paper we overview ongoing research work aimed at finding and formalizing laws of objectoriented programming. Rather than formal development, our main interest is to guide, justify and document informal objectoriented programming practices. In particular, we focus on laws that ..."
Abstract

Cited by 6 (3 self)
 Add to MetaCart
In this position paper we overview ongoing research work aimed at finding and formalizing laws of objectoriented programming. Rather than formal development, our main interest is to guide, justify and document informal objectoriented programming practices. In particular, we focus on laws that support software evolution practices such as introducing common analysis and design patterns. Moreover, contrasting with previous work on programming laws, we investigate both universal and methodspecific laws. Keywords: Formal Methods, ObjectOriented Programming, Refinement Calculus, Laws of Programming, Programming Language Semantics. 1 Introduction The laws of imperative programming are well established and have been useful both for assisting software development and for providing precise axiomatic programming language semantic definitions [14, 17]. In fact, besides being used as guidelines to informal programming practices, programming laws establish a sound basis for formal and ...
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 3 (0 self)
 Add to MetaCart
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...
Formal Methods For The ReEngineering of Computing Systems
 In Proceedings of The 21st IEEE International Conference on Computer Software and Application (COMPSAC'97
, 1997
"... We present a short review of formal methods and their use in the reengineering of computing systems. The paper considers five classes of formal notations and theories, namely state/modelbased, logicbased, algebraicbased, process algebra and netbased formalisms together with combined formalisms ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
We present a short review of formal methods and their use in the reengineering of computing systems. The paper considers five classes of formal notations and theories, namely state/modelbased, logicbased, algebraicbased, process algebra and netbased formalisms together with combined formalisms. Keywords : formal methods, reengineering, wide spectrum language, realtime systems, refinement, reverse engineering, logic. Contents 1 INTRODUCTION 2 2 CLASSIFICATION OF FORMAL METHODS 4 2.1 Modelbased Approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2 Logicbased Approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.3 Algebraic Approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.4 Process Algebra Approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.5 NetBased Approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3 CRITERIA AND RESULTS 17 4 DISCUSS...
Proofs of Safety for Untrusted Code
, 1999
"... Proofcarrying code is a technique that can be used to execute untrusted code safely. A code consumer specifies requirements and safety rules which define the safe behavior of a system, and a code producer packages each program with a formal proof that the program satisfies the requirements. The ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
Proofcarrying code is a technique that can be used to execute untrusted code safely. A code consumer specifies requirements and safety rules which define the safe behavior of a system, and a code producer packages each program with a formal proof that the program satisfies the requirements. The consumer uses a fast proof validator to check that the proof is correct, and hence the program is safe. In this report, we discuss applications for which proofcarrying code is appropriate, explain the mechanics of proofcarrying code, compare it with other techniques and suggest two research directions for the method.