Abstract
A recent trend in program development is to derive correct implementations from program specifications by the application of a formal calculus, a ‘programming methodology’. The application of formal rules lends itself to automation. We investigate the automation of one part of a methodology for programming with concurrency. In this methodology, concurrency is derived by transforming the sequential execution of a program into an equivalent concurrent execution on the basis of formal transformation rules. Such rules can be interpreted as theorems of semantic equivalences. The mechanical certification of these theorems would significantly enhance the reliability of the methodology. The following is an initial exploration of this problem applied to a certain class of programs: sorting networks. We present an implementation of a part of the underlying semantic theory in Boyer and Moore's mechanized logic, and report on the mechanical proof of a transformation that derives concurrency for an insertion sort.
Similar content being viewed by others
References
Ackerman, W. B., ‘Data-flow languages’, Computer 15, 15–25 (1982).
Bates, J. L. and Constable, R. L., ‘Proofs as programs’, Tech. Rept. TR 82-530, Cornell University (1982).
Boyer, R. S. and Moore, J S., A Computational Logic, Academic Press, New York (1979).
Boyer, R. S. and Moore, J S., ‘A theorem prover for recursive functions, a user's manual’, Computer Science Laboratory, SRI International (1979).
Chang, C. and Lee, R. C., Symbolic Logic and Mechanical Theorem Proving, Series in Computer Science and Applied Mathematics, Academic Press, New York (1973).
Dahl, O.-J., Dijkstra, E. W., and Hoare, C. A. R., Structured Programming, A.P.I.C. Studies in Data Processing, Vol. 8, Academic Press, New York (1972).
Dijkstra, E. W., A Discipline of Programming, Series in Automatic Computation, Prentice-Hall, Englewood Cliffs (1976).
Floyd, R. W., ‘Assigning meanings to programs’, Proc. Amer. Math. Soc. Symposia in Applied Mathematics, Vol. 19, pp. 19–32 (1967).
Good, D. I., ‘The proof of a distributed system in Gypsy’, Tech. Rept. #30, Institute for Computing Science, The University of Texas at Austin (1982).
Gries, D., The Science of Programming, Texts and Monographs in Computer Science, Springer-Verlag, New York (1981).
Hehner, E. C. R., ‘do considered od: A contribution to the programming calculus’, Acta Informatica 11, 287–304 (1979).
Hoare, C. A. R., ‘An axiomatic basis for computer programming’, Comm. ACM 17, 576–580, 583 (1969).
Huang, C.-H. and Lengauer, C., ‘The automated proof of a trace transformation for a bitonic sort’, Tech. Rept. TR-84-30, Department of Computer Sciences, The University of Texas at Austin (1984).
Johnson, S. and Nagle, J., ‘Automatic program proving for real-time embedded software’, Proc. 10th Ann. ACM Symp. on Principles of Programming Languages, Association for Computing Machinery, pp. 48–58 (1983).
Knuth, D. E. and Bendix, P., ‘Simple word problems in universal algebras, in Computational Problems in Abstract Algebra, (ed. J. Leech), Pergamon Press, London (1970).
Knuth, D. E., The Art of Computer Programming, Vol. 3: Sorting and Searching, Addison-Wesley, Reading, Mass., Sect. 5.3.4 (1973).
Kuck, D. J., ‘A survey of parallel machine organization and programming’, Computing Surveys 9, 29–59 (1977).
Lamport, L., ‘The “Hoare logic” of concurrent programs’, Acta Informatica 14, 21–37 (1980).
Lengauer, C. and Hehner, E. C. R., ‘A methodology for programming with concurrency: an informal presentation’, Science of Computer Programming 2, 1–18 (1982).
Lengauer, C., ‘A methodology for programming with concurrency: the formalism’, Science of Computer Programming 2, 19–52 (1982).
Lengauer, C., ‘A methodology for programming with concurrency’, Tech. Rept. CSRG-142, Computer Systems Research Group, University of Toronto (1982).
Lengauer, C. and Huang, C.-H., ‘The static derivation of concurrency and its mechanized certification’, Proc. NSF-SERC Seminar on Concurrency, Lecture Notes in Computer Science, Springer-Verlag, New York (1984). To appear.
Manna, Z. and Pnueli, A., ‘Temporal verification of concurrent programs: the temporal framework for concurrent programs’, in The Correctness Problem in Computer Science, (eds. R. S. Boyer and J S. Moore), International Lecture Series in Computer Science, Academic Press, New York (1981), pp. 215–273.
Manna, Z. and Waldinger, R., ‘A deductive approach to program synthesis’, ACM TOPLAS 2, 90–121 (1980).
Owicki, S. S. and Gries, D., ‘An axiomatic proof technique for parallel programs’, Acta Informatica 6, 319–340 (1976).
Russinoff, D. M., An experiment with the Boyer-Moore program verification system: a proof of Wilson's theorem’, Tech. Rept. #38, Institute for Computing Science, The University of Texas at Austin (1983).
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Lengauer, C. On the role of automated theorem proving in the compile-time derivation of concurrency. J Autom Reasoning 1, 75–101 (1985). https://doi.org/10.1007/BF00244290
Received:
Issue Date:
DOI: https://doi.org/10.1007/BF00244290