Summary
The notion of abstractions in programming is characterized by the distinction between specification and implementation. As far as the specification structures are concerned, hierarchical program development with abstraction mechanisms is naturally regarded as a process of theory extensions in a many-sorted logic. To support such program development, a language called t is proposed with which one can structuredly build up theories and write their program implementation. There, the implementation is regarded as another level of theory extension, and the relation between the specification and the implementation of an abstraction is characterized in terms of a homomorphism between the two theories. On this formalism, a mechanizable proof method is introduced for validation of implementations of both data and procedural abstraction. Finally, a new data type concept is introduced to generalize the so-called type-parametrization mechanism. A justification of this concept within the first order logic is provided as well as its applications to program structuring and verification.
Similar content being viewed by others
References
Ashcroft, E.A., Clint, M., Hoare, C.A.R.: Remarks on ‘Program proving: jumps and functions’ by M. Clint and C.A.R. Hoare. Acta Informat. 6, 317–318 (1976)
Burstall, R., Goguen, J.: Putting theories together to make specifications. Int. Joint Conf. Artificial Intelligence, Boston 1977
Clint, M., Hoare, C.A.R.: Program proving: jumps and functions, Acta Informat. 1, 214–224 (1972)
Constable, R.L.: A constructive programming logic. Proc. of IFIP Congress 77. pp. 733–738, 1977
Goguen, J.A.: Abstract errors for abstract data types. Formal Description of Programming Concepts. (Neuhold, ed.) Amsterdam: North-Holland 1977
Goguen, J.A., Thatcher, J.W., Wagner, E.G.: An initial algebra approach to the specification, correctness, and implementation of abstract data types. Current trends in programming methodology. Vol.4 (R.T. Yeh., ed.) New York: Prentice Hall 1978
Guttag, J.: The specification and application to programming of abstract data types. Ph.D. Thesis, Univ. of Toronto 1975
Guttag, J.V., Horowitz, E., Musser, D.R.: Abstract data types and software validation. CACM 21, 1048–1064 (1978)
Hoare, C.A.R.: Proof of correctness of data representations. Acta Informat. 1, 271–281 (1972)
Honda, M., Nakajima, R.: Interactive theorem proving on hierarchically and modularly structured sets of very many axioms. Int. Joint Conf. Artificial Intelligence, Tokyo 1979
Igarashi. S., London, R.L., Luckham, D.C.: Automatic program verification 1: a logical basis and its implemantation. Acta Informat. 4, 145–182 (1975)
Liskov, B., Zilles, S.: Specification techniques for data abstraction. IEEE. Trans, on Software Engrg. 1, 7–19 (1975)
Liskov, B., Berzin, V.: An appraisal of program specification. Computation Structure Group Memo. 131, MIT 1977
Liskov, B. et al.: Abstraction mechanisms in CLU. Comm. ACM 8, 567–576 (1977)
Nakahara, H.: A logical basis for data abstraction. Master thesis, Kyoto University 1977 (in Japanese)
Nakajima, R., Honda, M., Nakahara, H.: Describing and verifying programs with abstract data types. Formal Description of Programming Concepts. (Neuhold, ed.) Amsterdam: North-Holland 1977
Nakajima, R., Yuasa, T., Kojima, K.: The l programming system — a support system for hierarchical and modular programming —. Proc. IFIP Congress 1980 (to appear)
Shoenfield, J.: Mathematical logic. New York: Addison Wesley 1969
Sokolowski, S.: Axioms for total correctness. Acta Informat. 9, 61–71 (1977)
Wulf, W., London, R., Shaw, M.: An introduction to the construction and verification of Alphard programs. IEEE Trans. Software Engrg. 2, 253–264 (1976)
Yuasa, T.: Separate complication for type-parameterized modules. RIMS-preprint, Research Institute for Mathematical Sciences, Kyoto University. 1979
Yuasa, T.: Supports for hierarchical program development. Master Thesis, Kyoto University, 1979
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Nakajima, R., Honda, M. & Nakahara, H. Hierarchical program specification and verification — a many-sorted logical approach. Acta Informatica 14, 135–155 (1980). https://doi.org/10.1007/BF00288541
Received:
Revised:
Issue Date:
DOI: https://doi.org/10.1007/BF00288541