Abstract
Hierarchical programming is being increasingly recognized as helpful in the construction of large programs. Users of hierarchical techniques claim or predict substantial increases in productivity and in the reliability of the programs produced. In this paper we describe a formal method for hierarchical program specification, implementation, and proof. We apply this method to a significant list processing problem and also discuss a number of extensions to current programming languages that ease hierarchical program design and proof.
- 1 Boyer, R.S., and Moore, JS. Private communication, June 1977.Google Scholar
- 2 Boyer, R.S., and Moore, JS. A lemma driven automatic theorem prover for recursive function theory. Proc. Int. Joint Conf. Artificial Intelligence, Cambridge, Mass., Aug. 1977.Google Scholar
- 3 BurstaU, R.M. Proving properties of programs by structural induction. Comptr. J. 12, 1 (Jan. 1969), 41-48.Google ScholarCross Ref
- 4 Dalai, O.J., Mylirliaug, B., and Nygaard, K. Common base language, S-22. Norwegian Comptng. Ctr., Oslo, Norway, Oct. 1970.Google Scholar
- 5 Dahl, O.J., Dijkstra, E.W., and Hoare, C.A.R. Structured Programming. Academic Press, New York, 1972. Google ScholarDigital Library
- 6 Deutsch, L.P. An interactive program verifier. Ph.D. Th., Dept. of Comptr. Sci., U. of California, Berkeley, 1973.Google Scholar
- 7 Good, D.I. Provable programming. Proc. Int. Conf. Reliable Software, SIGPLAN Notices (ACM) 10, 6 (June 1975), 411-419. Google ScholarDigital Library
- 8 Guttag, J. Abstract data types and the development of data structures. Comm. ACM 20, 6 (June 1977), 396-404. Google ScholarDigital Library
- 9 Hoare, C.A.R. Proof of correctness of data representations. A cta Informatica 1, 4 (1972), 271-281.Google Scholar
- 10 Hoare, C.A.R., and Wirth, N. An axiomatic definition of the programming language PASCAL. Acta lnformatica 2, 4 (1973), 335-355.Google Scholar
- 11 Ichbiah, J.D., et al. The system implementation language LIS. Tech. Rep. 4549, E/EN, Compagnie Internationale pour l'Informatique, Louveciennes, France, Dec. 1974.Google Scholar
- 12 Igarashi, S., London, R.L., and Luckham, D.C. Automatic program verification I: A logical basis and its implementation. Acta Informatica 1, 4 (1975), 145-182.Google Scholar
- 13 An appraisal of program specifications. Computation Structures. Group Memo 141-1, Lab. for Comptr. Sci., M.I.T., Cambridge, Mass., April 1977.Google Scholar
- 14 Liskov, B., and ZiUes, S. Programming with abstract data types. Proc. ACM SIGPLAN Conf. Very High Level Languages, SIGPLAN Notices (ACM) 9, 4 (April 1974), 50-59. Google ScholarDigital Library
- 15 Liskov, B., and Zilles, S. Specification techniques for data abstraction. IEEE Trans. Software Eng. SE-1, 1 (March 1975), 7-19.Google ScholarDigital Library
- 16 McCarthy, J. A basis for a mathematical theory of computation. In Computer Programming and Formal Systems, Braffort and Hirschberg, Eds., North-Holland, Amsterdam, 1963, pp. 33-70.Google Scholar
- 17 McCarthy, J., et al. LISP 1.5 Programmer's Manual M.I.T. Press, Cambridge, Mass., 1962. Google ScholarDigital Library
- 18 Manna, Z., Ness, S., and Vuillemin, J. Inductive methods for proving properties of programs. Comm. A CM 16, 8 (Aug. 1973), 491-502. Google ScholarDigital Library
- 19 Moore, JS. The Interlisp virtual machine specification. Rep. CSL 76-5, Xerox Palo Alto Res. Ctr., Palo Alto, Calif., Sept. 1976.Google Scholar
- 20 -Morris, J. Protection in programming languages. Comm. A CM 16, 1 (Jan. 1973), 15-21. Google ScholarDigital Library
- 21 Morris, J.M. Types are not sets. Proc. ACM Symposium on Principles of Programming Languages, Boston, Mass., Oct. 1973, pp. 120-124. Google ScholarDigital Library
- 22 Neumann, P.G., et al. A provably secure operating'system: The system, its applications, and proofs. Final Rep., SRI Proj. 4332, SRI Int., Menlo Park, Calif., Feb. 1977.Google Scholar
- 23 Palme, J. Protected program modules in Simula 67. Res. Inst. of Nat. Defense, Stockholm, Sweden, July 1973.Google Scholar
- 24 Parnas, D.L. A technique for software module specification with examples. Comm. ACM 15, 5 (May 1972), 330-336. Google ScholarDigital Library
- 25 Parnas, D.L. On the criteria to be used in decomposing systems into modules. Comm. ACM 15, 12 (Dec. 1972), 1053-1058. Google ScholarDigital Library
- 26 Robinson, L., and Levitt, K.N. Proof techniques for hierarchically structured programs. Comm. ACM 20, 4 (April 1977), 271-283. Google ScholarDigital Library
- 27 Robinson, L., et al. On attaining reliable software for a secure operating system. Proc. Int. Conf. Reliable Software, SIGPLAN Notices (ACM) 10, 6 (June 1975), 267-284. Google ScholarDigital Library
- 28 Roubine, O., and Robinson, L. SPECIAL Reference Manual. Tech. Rep. CSL-45, SRI Project 4828, SRI Int., Menlo Park, Calif., 3rd ed., Jan. 1977.Google Scholar
- 29 Weghreit, B. The treatment of data types in EL 1. Comm. A CM 17, 5 (May 1974), 251-264. Google ScholarDigital Library
- 30 Wegbreit, B., and Spitzen, J. M. Proving properties of complex data structures. J. ACM 23, 2 (April 1976), 389-396. Google ScholarDigital Library
- 31 Wirth, N. Modula: A language for modular multiprogramming. Software--Practice and Experience 7 (1977), 3-35.Google ScholarCross Ref
- 32 Wulf, W.A. ALPHARD: Toward a language to support structured programs. Comptr. Sci. Dept., Carnegie-Mellon U., Pittsburgh, Pa., April 1974.Google Scholar
- 33 Yourdon, E., and Constantine, L.L. Structured Design. Yourdon Press, New York, 1975.Google Scholar
Index Terms
- An example of hierarchical design and proof
Recommendations
Model-checking hierarchical structures
Hierarchical graph definitions allow a modular description of structures using modules for the specification of repeated substructures. Beside this modularity, hierarchical graph definitions allow us to specify structures of exponential size using ...
A Formal Framework for ASTRAL Intralevel Proof Obligations
ASTRAL is a formal specification language for real-time systems. It is intended to support formal software development, and therefore has been formally defined. This paper focuses on how to formally prove the mathematical correctness of ASTRAL ...
What Is Object-Oriented Programming?
The meaning of the term 'object oriented' is examined in the context of the general-purpose programming language C++. This choice is made partly to introduce C++ and partly because C++ is one of the few languages that supports data abstraction, object-...
Comments