Executing temporal logic programs
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.
KeywordsTemporal Logic Digital Circuit Predicate Symbol Boolean Expression Arithmetic Expression
Unable to display preview. Download preview PDF.
- 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
- 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
- E. A. Ashcroft and W. W. Wadge. Lucid, the Data Flow Programming Language, to be published.Google Scholar
- 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
- 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
- D. Harel. First-Order Dynamic Logic. Number 68 in the series Lecture Notes in Computer Science, Springer-Verlag, Berlin, 1979.Google Scholar
- 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
- E. C. R. Hehner. “Predicative programming (parts I and II).” Communications of the ACM 27, 2 (February 1984), pages 134–151.Google Scholar
- C. A. R. Hoare. “An axiomatic basis for computer programming.” Communications of the ACM 12, 10 (October 1969), pages 576–580, 583.Google Scholar
- 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
- C. A. R. Hoare. “Communicating sequential processes.” Communications of the ACM 21, 8 (August 1978), pages 666–677.Google Scholar
- 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
- 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
- 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
- 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
- B. Moszkowski. Reasoning about Digital Circuits. PhD Thesis, Department of Computer Science, Stanford University, 1983.Google Scholar
- 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
- 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
- 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
- N. Rescher and A. Urquart. Temporal Logic. Springer-Verlag, New York, 1971.Google Scholar
- 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