Partial implementations of abstract data types: a dissenting view on errors.
Proc. of the international symposium on Semantics of data types
Writing Larch interface language specifications
ACM Transactions on Programming Languages and Systems (TOPLAS)
Systematic software development using VDM
Systematic software development using VDM
Combining algebraic and predicative specifications in Larch
Proceedings of the International Joint Conference on Theory and Practice of Software Development (TAPSOFT) on Formal Methods and Software, Vol.2: Colloquium on Software Engineering (CSE)
ACM Transactions on Programming Languages and Systems (TOPLAS)
Procedures, parameters, and abstraction: separate concerns
Science of Computer Programming
POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
On the Theory of Specification, Implementation, and Parametrization of Abstract Data Types
Journal of the ACM (JACM)
Fundamentals of Algebraic Specification I
Fundamentals of Algebraic Specification I
The Semantics of CLEAR, A Specification Language
Proceedings of the Abstract Software Specifications, 1979 Copenhagen Winter School
Hi-index | 0.00 |
An implementation of an algebraic specification in an imperative programming language consists of a representation type, together with an invariant and an equivalence relation over it, and a procedure for each operator in the specification. A formal technique is developed to check the correctness of an implementation with respect to its specification. Here “correctness” means that the implementation satisfies the axioms and preserves the behavior of the specification. Within legal representing value space, a correct implementation behaves like a desirable model of the specification. A notion of implementation refinement is also proposed, and it is shown that the correctness relation between implementations and specifications is preserved by implementation refinement. In the extreme case the procedures in an implementation may be pre-post-condition pairs. Such abstract implementations can be refined into executable code by refining the abstract procedures in it. In this way a formal link between the algebraic and the pre- post-condition specification techniques is established.