ACM Home Page
Please provide us with feedback. Feedback
A constructive alternative to axiomatic data type definitions
Full text PdfPdf (1.03 MB)
Source Conference on LISP and Functional Programming archive
Proceedings of the 1980 ACM conference on LISP and functional programming table of contents
Stanford University, California, United States
Pages: 46 - 55  
Year of Publication: 1980
Author
Sponsor
SIGPLAN: ACM Special Interest Group on Programming Languages
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 5,   Downloads (12 Months): 25,   Citation Count: 12
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/800087.802789
What is a DOI?

ABSTRACT

Many computer scientists advocate using axiomatic methods (such as algebraic specification) to specify a program data domain—the universe of abstract data objects and operations manipulated by a program. Unfortunately, correct axiomatizations are difficult to write and to understand. Furthermore, their non-constructive nature precludes automatic implementation by a language processor. In this paper, we present a more disciplined, purely constructive alternative to axiomatic data domain specification. Instead of axiomatizing the program data domain, the programmer explicitly constructs it by using four type construction mechanisms: constructor generation, union generation, subset generation, and quotient generation. These mechanisms are rich enough to define all of the abstract data objects that programmers commonly use: integers, sequences, trees, sets, arrays, functions, etc. In contrast to axiomatic definitions, constructive definitions are easy to write and to understand. An unexpected advantage of the constructive approach is a limited capacity to support non-deterministic operations. As an illustration, we define a non-deterministic “choose” operation on sets.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
ADJ (J. Goguen, J. Thatcher, E. Wagner) (1976) An Initial Algebra Approach to the Specification, Correctness, and Implementation of Abstract Data Types, IBM Research Report RC 6487.
2
3
 
4
Cartwright, R. (1976): User-Defined Data Types as Aid to Verifying LISP Programs, in S. Michaelson and R. Milner (eds.), Automata Languages, and Programming, pp. 228-256, Edinburgh Press, Edinburgh.
5
 
6
Enderton, H. B. (1972): A Mathematical Introduction to Logic, Academic Press, New York.
 
7
Guttag, J. V. et. al. (1976): Abstract Data Types and Software Validation, USC Information Sciences Institute Technical Report ISI/RR-76-48.
 
8
Guttag, J. V. (1977): Abstract Data Types and the Development of of Data Types, Acta Informatica 10, 27-52.
 
9
Guttag, J. V. and J. J. Horning (1978): The Algebraic Specification of Data Structures, Comm. ACM 20, 396-404.
 
10
 
11
Hoare, C. A. R. (1972): Proofs of Correctness of Data Representation, Acta Informatica 1, 271-281.
 
12
Hoare, C. A. R. (1973): Recursive Data Types, Stanford Artificial Intelligence Project Memo AIM-223.
 
13
McCarthy, J. (1963): A Basis for a Mathematical Theory of Computation, in P. Braffort and D. Hirschberg (eds.), Computer Programming and Formal Systems), pp. 33-70. North-Holland Publishing Company, Amsterdam.
14
 
15
Scott, D. (1976): Data Types as Lattices, SIAM J. Comput. 5, 522-586.
 
16
Spitzen, J. and B. Wegbreit (1975): The Verification and Synthesis of Data Structures, Acta Informatica 4, 127-144.

CITED BY  12