Department of Computer Science and Technology

Technical reports

Executing temporal logic programs

Ben Moszkowski

August 1984, 27 pages

DOI: 10.48456/tr-55

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 langauge and having imperative constructs such as assignment statements.

The presentation given here first describes the syntax 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.

Full text

PDF (1.8 MB)

BibTeX record

@TechReport{UCAM-CL-TR-55,
  author =	 {Moszkowski, Ben},
  title = 	 {{Executing temporal logic programs}},
  year = 	 1984,
  month = 	 aug,
  url = 	 {https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-55.pdf},
  institution =  {University of Cambridge, Computer Laboratory},
  doi = 	 {10.48456/tr-55},
  number = 	 {UCAM-CL-TR-55}
}