Skip to main content

Executing temporal logic programs

preliminary version

  • Conference paper
  • First Online:

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 197))

Abstract

Over the last few years, temporal logic has been investigated as a tool for reasoning about computer programs, digital circuits and message-passing systems. In the case of programs, the general feeling has been that temporal logic is an adjunct to existing languages. For example, one might use temporal logic to specify and prove properties about a program written in, say, CSP. This leads to the annoyance of having to simultaneously use two separate notations.

In earlier work we proposed that temporal logic itself directly serve as the basis for a programming language. Since then we have implemented an interpreter for such a language called Tempura. We are developing Tempura as a tool for directly executing suitable temporal logic specifications of digital circuits and other discrete-time systems. Since every Tempura statement is also a temporal formula, we can use the entire temporal logic formalism for our assertion language and semantics. Tempura has the two seemingly contradictory properties of being a logic programming language and having imperative constructs such as assignment statements.

The presentation given here first describes the syntax and semantics of a first-order temporal logic having the operators ⊗ (next) and □ (always). This serves as the basis for the Tempura programming language. The lesser known temporal operator chop is subsequently introduced, resulting in Interval Temporal Logic. We then show how to incorporate chop and related constructs into Tempura.

This is a preview of subscription content, log in via an institution.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

9. References

  1. E. A. Ashcroft and W. W. Wadge. Lucid: A formal system for writing and proving programs. SIAM Journal of Computing 5, 3 (September 1976), 336–354.

    Google Scholar 

  2. E. A. Ashcroft and W. W. Wadge. “Lucid, a nonprocedural language with iteration.” Communications of the ACM 20, 7 (July 1977), 519–526.

    Google Scholar 

  3. E. A. Ashcroft and W. W. Wadge. Lucid, the Data Flow Programming Language, to be published.

    Google Scholar 

  4. A. Chandra, J. Halpern, A. Meyer, and R. Parikh. Equations between regular terms and an application to process logic. Proceedings of the 13-th Annual ACM Symposium on Theory of Computing, Milwaukee, Wisconsin, May, 1981, pages 384–390.

    Google Scholar 

  5. J. Halpern, Z. Manna and B. Moszkowski. A hardware semantics based on temporal intervals. Proceedings of the 10-th International Colloquium on Automata, Languages and Programming, Barcelona, Spain, July, 1983.

    Google Scholar 

  6. D. Harel. First-Order Dynamic Logic. Number 68 in the series Lecture Notes in Computer Science, Springer-Verlag, Berlin, 1979.

    Google Scholar 

  7. D. Harel, D. Kozen, and R. Parikh. “Process logic: Expressiveness, decidability, completeness.” Journal of Computer and System Sciences 25, 2 (October 1982), pages 144–170.

    Google Scholar 

  8. E. C. R. Hehner. “Predicative programming (parts I and II).” Communications of the ACM 27, 2 (February 1984), pages 134–151.

    Google Scholar 

  9. C. A. R. Hoare. “An axiomatic basis for computer programming.” Communications of the ACM 12, 10 (October 1969), pages 576–580, 583.

    Google Scholar 

  10. C. A. R. Hoare. Towards a theory of parallel programming. In C. A. R. Hoare and R. H. Perrott, editors, Operating Systems Techniques, pages 61–71. Academic Press, London, 1972.

    Google Scholar 

  11. C. A. R. Hoare. “Communicating sequential processes.” Communications of the ACM 21, 8 (August 1978), pages 666–677.

    Google Scholar 

  12. Z. Manna and A. Pnueli. Verification of concurrent programs: The temporal framework. In R. S. Boyer and J. S. Moore, editors, The Correctness Problem in Computer Science, pages 215–273, Academic Press, New York, 1981.

    Google Scholar 

  13. Z. Manna and A. Pnueli. How to cook your favorite programming language in temporal logic. Proceedings of the Tenth Annual ACM Symposium on Principles of Programming Languages, Austin, Texas, January, 1983, pages 141–154.

    Google Scholar 

  14. Z. Manna and P. L. Wolper. “Synthesis of computing processes from temporal logic specifications.” ACM Transactions on Programming Languages and Systems 6, 1 (January 1984), pages 68–93.

    Google Scholar 

  15. B. Mishra and E. M. Clarke, Automatic and hierarchical verification of asynchronous circuits using temporal logic. Technical report CMU-CS-83-155, Department of Computer Science, Carnegie-Mellon University, September, 1983.

    Google Scholar 

  16. B. Moszkowski. Reasoning about Digital Circuits. PhD Thesis, Department of Computer Science, Stanford University, 1983.

    Google Scholar 

  17. B. Moszkowski. A temporal analysis of some concurrent systems. To appear in the proceedings of the STL Workshop on Concurrency, Cambridge, England, September, 1983.

    Google Scholar 

  18. B. Moszkowski and Z. Manna. Reasoning in interval temporal logic. Technical report STAN-CS-83-969, Department of Computer Science, Stanford University, July, 1983.

    Google Scholar 

  19. V. R. Pratt, Semantical considerations on Floyd-Hoare logic. Proceedings of the 17-th Annual IEEE Symposium on Foundations of Computer Science, Houston, Texas, October, 1976, pages 109–121.

    Google Scholar 

  20. N. Rescher and A. Urquart. Temporal Logic. Springer-Verlag, New York, 1971.

    Google Scholar 

  21. C. Tang. Toward a unified logic basis for programming languages. Proceedings of IFIP Congress 83, Elsevier Science Publishers B.V. (North-Holland), Amsterdam, 1983, pages 425–429.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Stephen D. Brookes Andrew William Roscoe Glynn Winskel

Rights and permissions

Reprints and permissions

Copyright information

© 1985 Springer-Verlag

About this paper

Cite this paper

Moszkowski, B. (1985). Executing temporal logic programs. In: Brookes, S.D., Roscoe, A.W., Winskel, G. (eds) Seminar on Concurrency. CONCURRENCY 1984. Lecture Notes in Computer Science, vol 197. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-15670-4_6

Download citation

  • DOI: https://doi.org/10.1007/3-540-15670-4_6

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-15670-3

  • Online ISBN: 978-3-540-39593-5

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics