Programming in MODULA-2 (3rd corrected ed.)
Programming in MODULA-2 (3rd corrected ed.)
Direct implementation of abstract data types from abstract specifications
IEEE Transactions on Software Engineering
The C++ programming language
Abstraction and specification in program development
Abstraction and specification in program development
IEEE Transactions on Software Engineering
ANNA: a language for annotating Ada programs
ANNA: a language for annotating Ada programs
Synthesizing implementations of abstract data types from axiomatic specifications
Software—Practice & Experience
A calculus of refinements for program derivations
Acta Informatica
Theoretical Computer Science
Algebraic specification
Acta Informatica
A generalization of Dijkstra's calculus
ACM Transactions on Programming Languages and Systems (TOPLAS)
Modular verification of Ada generics
Computer Languages
Programming Language Constructs for Which It Is Impossible To Obtain Good Hoare Axiom Systems
Journal of the ACM (JACM)
Specification of Abstract Data Types in Modula
ACM Transactions on Programming Languages and Systems (TOPLAS)
Abstract data types and software validation
Communications of the ACM
Communications of the ACM
An axiomatic basis for computer programming
Communications of the ACM
Object-Oriented Software Construction
Object-Oriented Software Construction
On proving inductive properties of abstract data types
POPL '80 Proceedings of the 7th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Smalltalk-80: The Language
Fundamentals of Algebraic Specification I
Fundamentals of Algebraic Specification I
Modular verification of concurrent programs
POPL '82 Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Algebraic Implementation of Abstract Data Types: Concept, Syntax, Semantics and Correctness
Proceedings of the 7th Colloquium on Automata, Languages and Programming
Modular Algebraic Specifications
Proceedings of the International Workshop on Algebraic and Logic Programming
Proving assertions about programs that manipulate data structures
STOC '75 Proceedings of seventh annual ACM symposium on Theory of computing
A practical method of documenting and verifying Ada programs with packages
SIGPLAN '80 Proceedings of the ACM-SIGPLAN symposium on The ADA programming language
Generics and verification in Ada
SIGPLAN '80 Proceedings of the ACM-SIGPLAN symposium on The ADA programming language
ACM SIGPLAN Notices
Report on the programming language Euclid
ACM SIGPLAN Notices
SIMULA 67 common base language, (Norwegian Computing Center. Publication)
SIMULA 67 common base language, (Norwegian Computing Center. Publication)
Reverse engineering of legacy code exposed
Proceedings of the 17th international conference on Software engineering
On the Practical Need for Abstraction Relations to Verify Abstract Data Type Representations
IEEE Transactions on Software Engineering
Performance specification of software components
SSR '01 Proceedings of the 2001 symposium on Software reusability: putting software reuse in context
Data abstraction and information hiding
ACM Transactions on Programming Languages and Systems (TOPLAS)
Design and Specification of Iterators Using the Swapping Paradigm
IEEE Transactions on Software Engineering
Programming methodology
Performance analysis based upon complete profiles
Proceedings of the 2006 conference on Specification and verification of component-based systems
SAVCBS 2006 challenge: specification of iterators
Proceedings of the 2006 conference on Specification and verification of component-based systems
Traditional assignment considered harmful
Proceedings of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applications
Hi-index | 0.00 |
Presents a method for the modular specification and verification of data abstractions in which multiple abstract objects share a common realization level data structure. Such shared realizations are an important implementation technique for data abstractions, because they provide for efficient use of memory; i.e., they allow the amount of memory allocated to the realization of an abstract object to be dynamic, so that only the amount of memory needed for its realization is allocated to it at any one time. To be explicit, an example of this kind of data abstraction is given. Although a number of programming languages provide good support for shared realizations, there has been limited research on its specification and verification. An important property of The authors' method is that it allows data abstractions to be dealt with modularly; i.e., each data abstraction can be specified and verified individually. Its abstract specification is made available for use by other program modules, but all of its implementation details are hidden, which simplifies the verification of code that uses the abstraction. The authors have developed semantics for data abstractions and their method of specification, and have used it to prove that their verification method is logically sound and relatively complete in the sense of Cook (1978). The use of shared realizations impacts specification and verification in several related ways. The manipulation of one abstract object may inadvertently produce a side effect on other abstract objects. Without shared realizations, such unwanted side effects can be prevented by scoping rules, but this is not possible with shared realizations. Instead, the absence of such side effects must be explicitly proven by the verification method. This requires the specification language to provide for quantification over the currently active (allocated) instances of an abstract type that is not necessary for the specification of less advanced implementations of data abstractions.