Executing temporal logic programs

preliminary version
  • Ben Moszkowski
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 197)


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.


Temporal Logic Digital Circuit Predicate Symbol Boolean Expression Arithmetic Expression 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

9. References

  1. [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. [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. [3]
    E. A. Ashcroft and W. W. Wadge. Lucid, the Data Flow Programming Language, to be published.Google Scholar
  4. [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. [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. [6]
    D. Harel. First-Order Dynamic Logic. Number 68 in the series Lecture Notes in Computer Science, Springer-Verlag, Berlin, 1979.Google Scholar
  7. [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. [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. [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. [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. [11]
    C. A. R. Hoare. “Communicating sequential processes.” Communications of the ACM 21, 8 (August 1978), pages 666–677.Google Scholar
  12. [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. [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. [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. [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. [16]
    B. Moszkowski. Reasoning about Digital Circuits. PhD Thesis, Department of Computer Science, Stanford University, 1983.Google Scholar
  17. [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. [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. [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. [20]
    N. Rescher and A. Urquart. Temporal Logic. Springer-Verlag, New York, 1971.Google Scholar
  21. [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

Copyright information

© Springer-Verlag 1985

Authors and Affiliations

  • Ben Moszkowski
    • 1
  1. 1.Computer LaboratoryUniversity of CambridgeCambridgeEngland

Personalised recommendations