1978
DOI: 10.1145/359657.359666
|View full text |Cite
|
Sign up to set email alerts
|

Abstract data types and software validation

Abstract: A data abstraction can be naturally specified using algebraic axioms. The virtue of these axioms is that they permit a representation-independent formal specification of a data type. An example is given which shows how to employ algebraic axioms at successive levels of implementation. The major thrust of the paper is twofold. First, it is shown how the use of algebraic axiomatizations can simplify the process of proving the correctness of an implementation of an abstract data type. Second, semi-automatic tools… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
30
0

Year Published

1981
1981
2014
2014

Publication Types

Select...
4
3
3

Relationship

0
10

Authors

Journals

citations
Cited by 319 publications
(30 citation statements)
references
References 16 publications
0
30
0
Order By: Relevance
“…(1) We reason about the correctness of linearizable object implementations using new techniques that generalize the notions of representation invariant and abstraction function [18,251 to the concurrent domain. (2) We reason about computations that use linearizable objects by transforming assertions about concurrent computations into simpler assertions about their sequential counterparts.…”
Section: Introduction 1 L Overviewmentioning
confidence: 99%
“…(1) We reason about the correctness of linearizable object implementations using new techniques that generalize the notions of representation invariant and abstraction function [18,251 to the concurrent domain. (2) We reason about computations that use linearizable objects by transforming assertions about concurrent computations into simpler assertions about their sequential counterparts.…”
Section: Introduction 1 L Overviewmentioning
confidence: 99%
“…What is unique is the simplicity of the method and the freedom it offers the practitioner to choose for each problem an appropriate combination of concepts, notations and techniques, which are integrated by the framework in a coherent way as elements of a uniform mathematical background. Among the examples we will discuss are the following: abstract states, which can be richly structured, possibly unbounded or even infinite, as known from the theory of abstract data types and algebraic specifications [85,78,61,9,10], VDM [66], Z [103], COLD [65], abstract instructions for changing states (high-level operational definition of state changes by guarded assingments), as familiar from pseudo-code notation, Virtual Machines 2 and later RAISE [73], synchronous parallel execution model, including conditional multiple assignments as present also in UNITY [86] and COLD [64], locality principle as known from programming languages, functional definitions, as in mathematics and functional programming, declarative (axiomatic) definitions, as known from logic and declarative programming and specification languages, refinement concept, generalizing the method which has been introduced by Wirth [112] and Dijkstra [58] and adapted to numerous formal specification methods [11,89,12,53], including Z [113,57] and B [1], decomposition and hierarchy concepts, as familiar from automata theory and layered architectures, function classification into monitored, controlled, shared etc., as known from programming and Parnas' SCR method [94,80], verification of model properties by proofs at the needed level of precision: sketched, detailed, machine assisted (interactive or fully automated), simulation by model execution, e.g. for model checking invariants, runtime verification of properties, testing of runs (scenarios).…”
Section: Introductionmentioning
confidence: 99%
“…Generic programming uses abstract data types, which are formal tools that allow an objective evaluation of computer representations [3]. Abstract data type definitions have an externally viewable set of operations and a set of axioms applicable to them [17]. The operations are generic, so they work for di↵erent data structures and di↵erent implementations.…”
Section: Generic Programming and Generic Typesmentioning
confidence: 99%