A common semantic framework for the representation of the source code and the generated target code.
A formalization of the notion of “correct implementation” as a refinement relation.
A syntactic simulation-based proof method which allows to automatically verify that one model of the semantic framework, representing the produced target code, correctly implements another model which represents the source.
These, and other ingredients are elaborated in this paper, in which we illustrate the new approach in a most challenging case. We consider a translation (compilation) from the synchronous multi-clock data-flow language Signal to asynchronous (sequential) C-code.
- [AL91]M. Abadi and L. Lamport. The existence of refinement mappings. Theoretical Computer Science, 82(2), 1991.Google Scholar
- [BG]G. Berry and G. Gonthier. The Synchronous Programming Language Esterel, Design, Semantics, Implementation. Technical Report 327, INRIA.Google Scholar
- [BGJ91]A. Benviniste, P. Le Guernic, and C. Jacquemot. Synchronous programming with event and relations: the SIGNAL language and its semantics. Science of Computer Programming, 16, 1991.Google Scholar
- [C97]A. Cimatti, F. Giunchiglia, P. Pecchiari, B. Pietra, J. Profeta, D. Romano, P. Traverso, and B. Yu. A Provably Correct Embedded Verifier for the Certification of Safety Critical Software. In O. Grumberg, editor, Proc. 9th Intl. Conference on Computer Aided Verification (CAV'97), Lect. Notes in Comp. Sci., vol. 1254, pages 202–213. Springer-Verlag, 1997.Google Scholar
- [CHPP87]P. Caspi, N. Halbwachs, D. Pilaud, and J. Plaice. LUSTRE, a Declarative Language for Programming Synchronous Systems. POPL '87, ACM Press, pages 178–188, 1987.Google Scholar
- [CMB88]K. M. Chandy and J. Misra. Parallel Program Design. Addison-Wesley, 1988.Google Scholar
- [Jon91]B. Jonsson. Simulations between specifications of distributed systems. In J. C. M. Baeten and J. F. Groote, editors, CONCUR '91, volume 527 of LNCS, 1991.Google Scholar
- [KMP94]Y. Kesten, Z. Manna, and A. Pnueli. Temporal verification of simulation and refinement. In J.W. de Bakker, W.-P. de Roever, and G. Rozenberg, editors, A Decade of Concurrency, volume 803 of Lect. Notes in Comp. Sci. Springer-Verlag, 1994.Google Scholar
- [Lam91]L. Lamport. The temporal logic of actions. Technical Report 79, DEC, Systems Research Center, December 1991. To appear in Transactions on programming Languages and Systems.Google Scholar
- [LV91]N. Lynch and F. Vaandrager. Forward and backward simulations for timing based systems. In Real-Time: Theory in Practice, volume 600 of LNCS, 1991.Google Scholar
- [MP91]Z. Manna and A. Pnueli. The Temporal Logic of Reactive and Concurrent Systems. Springer Verlag, 1991.Google Scholar
- [MP95]Z. Manna and A. Pnueli. Temporal Verification of Reactive Systems: Safety. Springer-Verlag, New York, 1995.Google Scholar
- [N97]G. C. Necula. Proof-Carrying Code. In POPL'97, ACM press, pages 106–119, 1997.Google Scholar
- [NL96]G. C. Necula and P. Lee. Safe kernel extensions without run-time checking. In Second Symposium on Operating Systems Design and Implementations, Usenix, 1996.Google Scholar
- [PS96]A. Pnueli and E. Shahar. A platform for combining deductive with algorithmic verification. In R. Alur and T. Henzinger, editors, Proc. 8th Intl. Conference on Computer Aided Verification (CAV'96), Lect. Notes in Comp. Sci., pages 184–195. Springer-Verlag, 1996.Google Scholar
- [PS97]A. Pnueli and E. Singerman. Fair synchronous transition systems and their liveness proofs. Technical report, Weizmann Institute of Science, 1997. Sacres Report.Google Scholar