Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
article
Free access

Abstract data types and software validation

Published: 01 December 1978 Publication History

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 are described which can be used both to automate such proofs of correctness and to derive an immediate implementation from the axioms. This implementation allows for limited testing of programs at design time, before a conventional implementation is accomplished.

References

[1]
Bayer, R.S., and Moore, J.S. Proving theorems about LISP functions. J. ACM 22, 1 (January 1975), 129-144.
[2]
DaM, O.-J. The SIMULA 67 common base language. Norwegian Comput. Ctr., Oslo, 1968.
[3]
Goguen, J.A., Thatcher, J.W., Wagner, E.G., and Wright, J.B. Abstract data-types as initial algebras and correctness of data representations. Proc. Conf. on Comptr. Graphics, Pattern Recognition and Data Structure, May 1975.
[4]
Good, D.I., London, R.L, and Bledsoe, W.W. An interactive program verification system. IEEE Trans. Software Eng. SE-1, 1 (March 1975), 56-67.
[5]
Guttag, J.V., Horowitz, E., and Musser, D. The design of data type specifications. In Current Trends in Programming Methodology, R.T. Yah, Ed., Prentice-Hall, Englewood Cliffs, N.J., 1978, pp. 60-79.
[6]
Guttag, J.V., Horowitz, E., and Musser, D.R. Some extensions to algebraic specifications. Proc. Language Design for Reliable Software, March 1977.
[7]
Guttag, J.V. Abstract data types and the development of data structures. Comm. ACM 20, 6 (June 1977), 396-404.
[8]
Guttag, J.V., and Homing, J.J. The algebraic specification of abstract data types. Acta lnformatica 10, 1 (1978), 27-52.
[9]
Hoare, C.A.R. Proof of correctness of data representations. Acta Informatica 4 (1972), 271-281.
[10]
Hoare, C.A.R., and Wirth, N. An axiomatic definition of the programming language PASCAL. Acta Informatica 2 (1973), 335-355.
[11]
Hoare, C.A.R. Recursive data structures, lnt. J. Comptr. and Inform. Sci. 4, 2 (June 1975), 105-132.
[12]
Horowitz, E., and Salmi, S. Fundamentals of Data Structures. Computer Science Press, June 1976.
[13]
Jenks, R.D. The SCRATCHPAD language. Proc. of ACM SIGPLAN Symp. on Very High Level Languages. S1GPLAN Notices 9, 4 (April 1974), 101-111.
[14]
Liskov, B.H., Snyder, A., Atkinson, R., and Shaffert, C. Abstraction mechanisms in CLU. Comm. ACM 20, 8 (Aug. 1977), 564-576.
[15]
Manna, Z. Mathematical Theory of Computation. McGraw-Hill, New York, 1974.
[16]
McCarthy, J. Basis for a mathematical theory of computation. In Computer Programming and Formal Systems, P. Braffort and D. Hirchberg, Eds., North-Holland Publ. Co., Amsterdam, 1963, pp. 33-70.
[17]
Musser, D.R. A data type verification system based on rewrite rules. Proc. of Sixth Texas Conf. of Comput. Syst., Austin, Tex., Nov. 1977.
[18]
Palme, J. Protected program modules in SIMULA 67. FOAP Rep. No. C8372-M3(E5), Research Inst. of National Defense, Stockholm, 1973.
[19]
Parnas, D. L. Information distribution aspects of design methodology. Information Processing 71, 1 (1972), North-Holland Pub. Co., Amsterdam, 339-344.
[20]
Spitzen, J., and Wegbreit, B. The verification and synthesis of data structures. Acta Informatica 4 (1975), 127-144.
[21]
Standish, T.A. Data structures: an axiomatic approach. BBN Rep. No. 2639, Bolt Beranek and Newmann, Cambridge, Mass., 1973.
[22]
Suzuki, N. Automatic verification of programs with complex data structures. Ph.D. Th., Comptr. Sci. Dept., Stanford, U., Rep. No. STAN-CS-76-552, Feb. 1976.
[23]
Wegbreit, B., and Spitzen, J. Proving properties of complex data structures. J. ACM 23, 2 (April 1976), 389-396.
[24]
Wulf, W.A., London, R.L., and Shaw, M. An introduction to the construction and verification of Alphard programs. IEEE Trans. Software Eng. SE-2, 4 (December 1976), 253-265.
[25]
Zilles, S. N. Abstract specifications for data types. IBM Res. Lab., San Jose, Calif., 1975.

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Communications of the ACM
Communications of the ACM  Volume 21, Issue 12
Dec. 1978
89 pages
ISSN:0001-0782
EISSN:1557-7317
DOI:10.1145/359657
Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 December 1978
Published in CACM Volume 21, Issue 12

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. abstract data type
  2. correctness proof
  3. data structure
  4. data type
  5. specification

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)286
  • Downloads (Last 6 weeks)47
Reflects downloads up to 12 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Semantic Code Refactoring for Abstract Data TypesProceedings of the ACM on Programming Languages10.1145/36328708:POPL(816-847)Online publication date: 5-Jan-2024
  • (2024)Comprehending Object State via Dynamic Class Invariant LearningFundamental Approaches to Software Engineering10.1007/978-3-031-57259-3_7(143-164)Online publication date: 6-Apr-2024
  • (2022)Quantifiability: a concurrent correctness condition modeled in vector spaceComputing10.1007/s00607-022-01092-3105:5(955-978)Online publication date: 7-Jun-2022
  • (2021)Quantifiability: Correctness of Concurrent Programs in Vector Space2021 29th Euromicro International Conference on Parallel, Distributed and Network-Based Processing (PDP)10.1109/PDP52278.2021.00023(94-98)Online publication date: Mar-2021
  • (2021)Design and Implementation of Highly Scalable Quantifiable Data StructuresParallel Computing Technologies10.1007/978-3-030-86359-3_28(371-385)Online publication date: 13-Sep-2021
  • (2019)Unification Modulo Lists with Reverse Relation with Certain Word EquationsAutomated Deduction – CADE 2710.1007/978-3-030-29436-6_1(1-17)Online publication date: 27-Aug-2019
  • (2017)Monadic DecompositionJournal of the ACM10.1145/304048864:2(1-28)Online publication date: 30-Apr-2017
  • (2015)Verifying Interaction between Methods in ClassesProceedings of the 2015 International Symposium on Theoretical Aspects of Software Engineering10.1109/TASE.2015.24(119-126)Online publication date: 12-Sep-2015
  • (2014)Inductive verification of data model invariants for web applicationsProceedings of the 36th International Conference on Software Engineering10.1145/2568225.2568281(620-631)Online publication date: 31-May-2014
  • (2014)Fields as a Generic Data Type for Big Spatial DataGeographic Information Science10.1007/978-3-319-11593-1_11(159-172)Online publication date: 2014
  • Show More Cited By

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Get Access

Login options

Full Access

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media