We identify a basic set of combinators (that constitute the Timed Concurrent Constraint Programming framework, tcc), and provide a constructive operational semantics for which the model is fully abstract. We show that the model is very rich. A basic combinator allows action to be enabled in the future if certain events did not happen in the past, thus incorporating a form of ``safe defaults''. We introduce a combinator, clock, that allows processes to be clocked by certain kinds of other (recursively defined) processes; we show that the pre-emption and abortion constructs of synchronous programming languages can be derived as special cases of clock. We show that clock is itself definable using the basic set of combinators, by providing a complete set of equational laws. More generally, tcc can be seen as providing a natural timed extension of the Kahn framework for data-flow computation (since untimed CCP generalizes the Kahn framework).
Like the synchronous languages, languages in the tcc family enjoy the property of multi-form time - the control constructs do not treat time in a way any more special than any other signal. In addition, tcc programs can be read as logical formulas (in intuitionistic temporal logic, InTL), and tcc computation understood as deriving the ``least'' solution for these formulas. In addition, we show that InTL is sound and complete for reasoning about (in)equivalence of tcc programs.
Like the synchronous languages, tcc programs can be compiled into finite state automata. In addition, the translation can be specified compositionally. This enables separate compilation of tcc programs and run-time tradeoffs between partial compilation and interpretation of the kind not available for these other synchronous languages.
© IEEE, 1994.
@InProceedings{tcc-lics94, title = "Foundations of Timed Concurrent Constraint Programming", author = "Vijay Saraswat and Radha Jagadeesan and Vineet Gupta" pages = "71--80", booktitle = "Proceedings, Ninth Annual {IEEE} Symposium on Logic in Computer Science", year = "1994", month = "4--7 " # jul, address = "Paris, France", organization = "IEEE Computer Society Press" }Postscript file (139K)