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.
9. References
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.
E. A. Ashcroft and W. W. Wadge. “Lucid, a nonprocedural language with iteration.” Communications of the ACM 20, 7 (July 1977), 519–526.
E. A. Ashcroft and W. W. Wadge. Lucid, the Data Flow Programming Language, to be published.
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.
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.
D. Harel. First-Order Dynamic Logic. Number 68 in the series Lecture Notes in Computer Science, Springer-Verlag, Berlin, 1979.
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.
E. C. R. Hehner. “Predicative programming (parts I and II).” Communications of the ACM 27, 2 (February 1984), pages 134–151.
C. A. R. Hoare. “An axiomatic basis for computer programming.” Communications of the ACM 12, 10 (October 1969), pages 576–580, 583.
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.
C. A. R. Hoare. “Communicating sequential processes.” Communications of the ACM 21, 8 (August 1978), pages 666–677.
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.
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.
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.
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.
B. Moszkowski. Reasoning about Digital Circuits. PhD Thesis, Department of Computer Science, Stanford University, 1983.
B. Moszkowski. A temporal analysis of some concurrent systems. To appear in the proceedings of the STL Workshop on Concurrency, Cambridge, England, September, 1983.
B. Moszkowski and Z. Manna. Reasoning in interval temporal logic. Technical report STAN-CS-83-969, Department of Computer Science, Stanford University, July, 1983.
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.
N. Rescher and A. Urquart. Temporal Logic. Springer-Verlag, New York, 1971.
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.
Author information
Authors and Affiliations
Editor information
Rights 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