Abstract
A method for describing and structuring programs that simplifies proofs of their correctness is presented. The method formally represents a program in terms of levels of abstraction, each level of which can be described by a self-contained nonprocedural specification. The proofs, like the programs, are structured by levels. Although only manual proofs are described in the paper, the method is also applicable to semi-automatic and automatic proofs. Preliminary results are encouraging, indicating that the method can be applied to large programs, such as operating systems.
- 1 Dahl, O.J., et al. The SIMULA 67 common base language. Norwegian Comptng. Ctr., Oslo, 1968.]] Google ScholarDigital Library
- 2 Deutsch, L.P. An interactive program verifier. Ph.D. Th., U. of California, Berkeley, June 1973.]]Google Scholar
- 3 Dijkstra, E.W. Notes on structured programming. In Structured Programming, C.A.R. Hoare, Ed., Academic Press, New York, 1972.]] Google ScholarDigital Library
- 4 Dijkstra, E.W. Guarded commands, nondeterminacy, and formal derivation of programs. Comm. ACM 18, 8 (Aug. 1975), 453--457.]] Google ScholarDigital Library
- 5 Elspas, B., Levitt, K.N., and Waldinger, R.J. An interactive system for the verification of computer programs. Final Report, SRI Proj. 1891, Stanford Research Institute, Menlo Park, Calif., 1973.]]Google Scholar
- 6 Floyd, R.W. Algorithm 245. TREESORT 3. Comm. ACM, 7, 12 (Dec. 1964), 701.]] Google ScholarDigital Library
- 7 Floyd, R.W. Assigning meanings to programs. Mathematical Aspects of Computer Science 19, J.T. Schwartz, Ed., Amer. Math. Soc., Providence, R.I., 1967, pp. 19-32.]]Google Scholar
- 8 Good, D.I. Provable programming. Proc. Int. Conf. on Reliable Software, April 1975, pp. 411-419.]] Google ScholarDigital Library
- 9 Good, D.I., London, R.L., and Bledsoe, W.W. An interactive program verification system. IEEE Trans. Software Eng. 1, 1 March 1975, 59-67.]]Google ScholarDigital Library
- 10 Hamilton, M., and Zeldin, S. Higher order software--a methodology for defining software. To appear in IEEE Trans. Software Eng.]]Google Scholar
- 11 Henderson, P., and Snowden, R.A. A tool for structured program development. Information Processing 74, North-Holland Pub. Co., Amsterdam, Aug. 1974, pp. 204-207.]]Google Scholar
- 12 Hoare, C.A.R. Procedures and parameters: an axiomatic approach. Symposium on Semantics of Algorithmic Languages, E. Engler, Ed., Springer-Verlag, 1971, pp. 102-116.]]Google ScholarCross Ref
- 13 Hoare, C.A.R. Proof of correctness of data representations. ACTA lnformatica 1 (1972), 271-281.]]Google Scholar
- 14 Hoare, C.A.R. Monitors: An operating system structuring concept. Comm. ACM 15, 10 (Oct. 1974), 549-557.]] Google ScholarDigital Library
- 15 Hoare, C.A.R., and Wirth, N. An axiomatic definition of the programming language PASCAL. Acta lnformatica 2 (1973), 335-355.]]Google Scholar
- 16 Ichbiah, J.D., Rissen, J.P., and H61iard, J.C. The two-level approach to data independent programming in the LIS system implementation language. Machine Oriented Higher Level Languages, B. van der Poel and H. Maarsen, Eds., North-Holland Pub. Co., Amsterdam, 1974.]]Google Scholar
- 17 Igarashi, S., London, R.L., and Luckham, D.C. Automatic program verification I: A logical basis and implementation. Acta Informatica 1, 4 (1975), 145-182.]]Google Scholar
- 18 King, J.C. A program verifier. Ph.D. Th., Carnegie-Mellon U., Pittsburgh, Pa., Sept. 1969.]] Google ScholarDigital Library
- 19 Knuth, D. The Art of Computer Programming, Vol. 1: Fundamental Algorithms. Addison-Wesley, Reading, Mass., 1968.]] Google ScholarDigital Library
- 20 Laventhal, M.S. Verifying programs which operate on data structures. Proc. 1975 Int. Conf. on Reliable Software, April 1975, pp. 420-426.]] Google ScholarDigital Library
- 21 Liskov, B. Presentation in Toronto Workshop on Software Reliability, June 14-16, 1974.]]Google Scholar
- 22 Liskov, B., and Zilles, S. An approach to abstraction. Group Memo 88, MIT project MAC, Computation Structures, MIT, Cambridge, Mass., Sept. 1973.]]Google Scholar
- 23 London, R.L. Proof of algorithms: A new kind of certification (certification of algorithm 245, TREESORT 3). Comm. ACM 13, 6 (June 1970), 371-373.]] Google ScholarDigital Library
- 24 Manna, Z., and Pnueli, A. Axiomatic approach to total correctness of programs. Acta Informatica 3, 3 (1974), 243-264.]]Google ScholarDigital Library
- 25 Millen, J.K. Security kernel validation in practice. Presented at Proc. 5th Symp. on Operating Systems Principles, November 1975.]]Google Scholar
- 26 Mont-Reynaud, B., and Robinson, L. Documentation for specification handler. SRI Memo, Stanford Research Institute, Menlo Park, Calif., Nov. 1975.]]Google Scholar
- 27 Morse, A.P. A Theory of Sets. Academic Press, New York, 1965.]]Google Scholar
- 28 Naur, P., Ed. Revised report on the algorithmic language Algol 60. In Programming Languages and Systems, S. Rosen, Ed., McGraw-Hill, Englewood Cliffs, N.J., 1967, pp. 79-117.]]Google Scholar
- 29 Parnas, D.L. Information distribution aspects of design methodology. Information Processing 71, North-Holland Pub. Co., Amsterdam, 1972, pp. 339-344.]]Google Scholar
- 30 Parnas, D.L. A technique for module specification with examples. Comm. ACM 15, 5 (May 1972), 330-336.]] Google ScholarDigital Library
- 31 Parnas, D.L. Response to detected errors in well-structured programs. Tech. Rep., Dept. of Comptr. Sci., Carnegie-Mellon U., Pittsburgh, Pa., July 1973.]]Google Scholar
- 32 Parnas, D.L., and Siewiorek, D.P. Use of the concept of transparency in the design of hierarchically structured systems. Comm. ACM 18, 7 (July 1975), 401-408.]] Google ScholarDigital Library
- 33 Price, W.R. Implications of a vertical memory mechanism for implementing protection in a family of operating systems. Ph.D. Th., Dept. of Comptr, Sci., Carnegie-Mellon U., Pittsburgh, Pa., June 1973.]] Google ScholarDigital Library
- 34 Robinson, L. Hierarchical proof of TREESORT. SRI unpublished paper, Stanford Research Institute, Menlo Park, Calif., Nov. 1973.]]Google Scholar
- 35 Robinson, L. Specification and proof in problems of concurrency. Proc. Meeting on 20 years of Computer Science, Pisa, June 1975, pp. 69-83.]]Google Scholar
- 36 Robinson, L., and Holt, R.C. Formal specifications for solutions to synchronization problems. SRI Rep., Comptr. Sci. Group, Stanford Research Institute, Menlo Park, Calif., Nov. 1973.]]Google Scholar
- 37 Robinson, L., Levitt, K.N., Neumann, P.G., and Saxena, A.R. On attaining reliable software for a secure operating system. Proc. 1975 Int. Conf. on Reliable Software, April 1975, pp. 267- 284.]] Google ScholarDigital Library
- 38 Schorre, D.V. Example of a module specification and implementation for automatic verification. Working Paper TM-5310, Systems Development Corp., Santa Monica, Calif., May 1974.]]Google Scholar
- 39 Spitzen, J.M., Levitt, K.N. and Robinson, L. An example of hierarchical design and proof. Submitted for publication.]] Google ScholarDigital Library
- 40 Waldinger, R.J., and Levitt, K.N. Reasoning about programs. Artif. Intel. 5, 3 (Fall 1974), 235-316.]]Google ScholarCross Ref
- 41 Wegbreit, B. The treatment of data types in EL1. Comm. ACM 17, 5 (May 1974), 251-264.]] Google ScholarDigital Library
- 42 Wirth, N. Program development by stepwise refinement. Comm. ACM 14 4 (April 1971), 221-227.]] Google ScholarDigital Library
- 43 Wirth, N. The programming language PASCAL. Acta Informatica 1, 1 (1971), 35-63.]]Google ScholarDigital Library
- 44 Wulf, W.A. ALPHARD: Toward a language to support structured programs. Unpublished paper, April 1974.]]Google Scholar
Index Terms
- Proof techniques for hierarchically structured programs
Recommendations
An Introduction to the Construction and Verification of Alphard Programs
The programming language Alphard is designed to provide support for both the methodologies of "well-structured" programming and the techniques of formal program verification. Language constructs allow a programmer to isolate an abstraction, specifying ...
Automatic numeric abstractions for heap-manipulating programs
POPL '10We present a logic for relating heap-manipulating programs to numeric abstractions. These numeric abstractions are expressed as simple imperative programs over integer variables and have the property that termination and safety of the numeric program ...
Proving structured programs correct, level by level
International Conference on Reliable SoftwareStructured programs are developed and documented using levels of “virtual machines”. Problem-oriented data structures and primitives, at each level, are programmed in terms of those at the immediately lower level, until available programming constructs ...
Comments