ACM Home Page
Please provide us with feedback. Feedback
The evolution of list-copying algorithms and the need for structured program verification
Full text PdfPdf (1.36 MB)
Source Annual Symposium on Principles of Programming Languages archive
Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages table of contents
San Antonio, Texas
Pages: 53 - 67  
Year of Publication: 1979
Authors
Stanley Lee  University of California, Berkeley CA
Willem P. deRoever  University of California, Berkeley CA and Univ. of Utrecht, Budapestlaan 8, Postbus 80-012, 3508TA Utrecht, The Netherlands
Susan L. Gerhart  USC/Information Sciences Inst., Marina del Rey CA
Sponsors
SIGPLAN: ACM Special Interest Group on Programming Languages
SIGACT: ACM Special Interest Group on Algorithms and Computation Theory
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 2,   Downloads (12 Months): 14,   Citation Count: 7
Additional Information:

abstract   references   cited by   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/567752.567758
What is a DOI?

ABSTRACT

How can one organize the understanding of complex algorithms? People have been thinking about this issue at least since Euclid first tried to explain his innovative greatest common divisor algorithm to his colleagues, but for current research into verifying state-of-the-art programs, some precise answers to the question are needed. Over the past decade the various verification methods which have been introduced (inductive assertions, structural induction, least-fixedpoint semantics, etc.) have established many basic principles of program verification (which we define as: establishing that a program text satisfies a given pair of input-output specifications). However, it is no coincidence that most published examples of the application of these methods have dealt with "toy programs" of carefully considered simplicity.Experience indicates that these "first generation" principles, with which one can easily verify a three-line greatest common divisor algorithm, do not directly enable one to verify a 10,000 line operating system (or even a 50 line list-processing algorithm) in complete detail. To verify complex programs, additional techniques of organization, analysis and manipulation are required. (That a similar situation exists in the writing of large, correct programs has long been recognized -- structured programming being one solution.)This paper examines the usefulness of correctness-preserving program transformations (see [6]) in structuring fairly complex correctness proofs. Using our approach one starts with a simple, high-level (or "abstract") algorithm which can be easily verified, then successively refines it by implementing the abstractions of the initial algorithm to obtain various final, detailed algorithms. In Section 2 we introduce the technique by deriving the Deutsch-Schorr-Waite list-marking algorithm [14]. Our main example is the more complex problem of verifying bounded-workspace list-copying algorithms: Section 3 defines the issues, Section 4 presents the key intermediate algorithm in detail and Section 5 considers three of the most complex (published) implementations of list-copying, one of which is discussed in detail. In Section 6 we make some general remarks on program verification and the relevance of our results to the (larger) field of program correctness; Section 7 mentions some related work.


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
Blikle, A. Towards Mathematical Structured Programming, in Formal Descriptions of Programming Concepts, E. J. Neuhold (ed.), North-Holland Publishing Co., 1978.
2
3
 
4
Dijkstra, E. W. Finding the Correctness Proof of a Concurrent Program. Proc. Koninklijke Nederlandse Akademie van Wetenschappen, Amsterdam, A 81 (June 9, 1978), pp. 207-15.
5
6
 
7
Gerhart, S. L. Proof Theory of Partial Correctness Verification Systems. SIAM J. Comp. 5 (Sept. 1976), pp. 355-77.
 
8
Gerhart, S. L. Two Proof Techniques for Transferral of Program Correctness, (forthcoming).
 
9
 
10
11
 
12
 
13
deRoever, W. P. An Essay on Trees and Iteration. Report RUU-CS-78-6, Dept. of Comp. Sci., University of Utrecht, 1978.
14
 
15
Topor, R. Correctness of the Schorr-Waite List Marking Algorithm. Memo MIP-R-104, School of Artificial Intelligence, Univ. of Edinburgh, 1974.
16

Collaborative Colleagues:
Stanley Lee: colleagues
Willem P. deRoever: colleagues
Susan L. Gerhart: colleagues