ABSTRACT
The synchronous model of computation divides the execution of a program into macro steps that consist of finitely many atomic micro steps (like assignments). The micro steps of a macro step are executed within the same variable environment (i.e. in parallel) but all updates to the variables are synchronously performed at the level of macro steps. The availability of a formally defined semantics allows one to use formal methods for the verification of synchronous programs. To this end, model checking is already widely used for synchronous programs, but the use of interactive verification e.g. by using a Hoare calculus, is only in its infancies. One reason for this situation is that the assignment rule of the classic Hoare calculus implicitly defines a sequential programming model which is only a special case of the synchronous model of computation.
In this paper, we therefore suggest a generalization of the classic Hoare calculus to deal with synchronous programs. The main idea is thereby that the assignment rule refers to all assignments made in a macro step so that the synchronous model of computation is axiomatized. It is possible to rewrite all synchronous programs so that the assignments of every macro step are collected in a single tuple assignment. This way, our generalization of the assignment rule is applicable to arbitrary synchronous programs. We present non-trivial case studies that show the feasibility of our approach.
- G. Andrews. Parallel programs: proofs, principles, and practice. Communications of the ACM (CACM), 24(3):140--145, March 1981. Google ScholarDigital Library
- K. Apt. Ten years of Hoare's logic: A survey - part I. ACM Transactions on Programming Languages and Systems (TOPLAS), 3(4):431--483, 1981. Google ScholarDigital Library
- K. Apt and E.-R. Olderog. Verification of Sequential and Concurrent Programs. Springer, 2 edition, 1997. Google ScholarDigital Library
- E. Ashcroft and Z. Manna. The translation of "go to" programs to "while" programs. Technical Report CS-TR-71--188, Department of Computer Science, University of California, Stanford, California, USA, January 1971. Google ScholarDigital Library
- T. Ball, A. Podelski, and S. Rajamani. Relative completeness of abstraction refinement for software model checking. In J.-P. Katoen and P. Stevens, editors, Tools and Algorithms for the Construction and Analysis of Systems (TACAS), volume 2280 of LNCS, pages 158--172, Grenoble, France, 2002. Springer. Google ScholarDigital Library
- A. Benveniste, P. Caspi, S. Edwards, N. Halbwachs, P. Le Guernic, and R. de Simone. The synchronous languages twelve years later. Proceedings of the IEEE, 91(1):64--83, 2003.Google ScholarCross Ref
- G. Berry. The constructive semantics of pure Esterel. http://www-sop.inria.fr/esterel.org/, July 1999.Google Scholar
- C. Boehm and G. Jacopini. Flow diagrams, Turing machines, and languages with only two formation rules. Communications of the ACM (CACM), 9(5):366--371, 1966. Google ScholarDigital Library
- J. Brandt and K. Schneider. Formal reasoning about causality analysis. In O. A. Mohamed, C. Muñoz, and S. Tahar, editors, Theorem Proving in Higher Order Logics (TPHOL), volume 5170 of LNCS, pages 118--133, Montréal, Québec, Canada, 2008. Springer. Google ScholarDigital Library
- J. Brandt and K. Schneider. Round trip to asynchrony and synchrony. In Methoden und Beschreibungssprachen zur Modellierung und Verifikation von Schaltungen und Systemen (MBMV), Oldenburg, Germany, 2011.Google Scholar
- J. Brandt and K. Schneider. Separate translation of synchronous programs to guarded actions. Internal Report 382/11, Department of Computer Science, University of Kaiserslautern, Kaiserslautern, Germany, March 2011.Google Scholar
- S. Brookes. On the axiomatic treatment of concurrency. In S. Brookes, A. Roscoe, and G. Winskel, editors, Seminar on Concurrency (CONCUR), volume 197 of LNCS, pages 1--34, Pittsburgh, Pennsylvania, USA, 1985. Springer. Google ScholarDigital Library
- J. Bruno and K. Steiglitz. The expression of algorithms by charts. Journal of the ACM (JACM), 19(3):517--525, July 1972. Google ScholarDigital Library
- S. Chaki, E. Clarke, A. Groce, J. Ouaknine, O. Strichman, and K. Yorav. Efficient verification of sequential and concurrent C programs. Formal Methods in System Design (FMSD), 25(2--3):129--166, September 2004. Google ScholarDigital Library
- P. Cousot. Methods and logics for proving programs. In J. van Leeuwen, editor, Handbook of Theoretical Computer Science, volume B: Formal Models and Semantics, chapter 15, pages 841--993. Elsevier, 1990. Google ScholarDigital Library
- F. de Boer, U. Hannemann, and W.-P. de Roever. Hoare-style compositional proof systems for reactive shared variable concurrency. In S. Ramesh and G. Sivakumar, editors, Foundations of Software Technology and Theoretical Computer Science (FSTTCS), volume 1346 of LNCS, pages 267--283, Kharagpur, India, 1997. Springer. Google ScholarDigital Library
- W. de Roever. Concurrency Verification. Cambridge University Press, 2001.Google Scholar
- J. Dingel. Towards a unified development methodology for shared-variable parallel and distributed programs. In W. Grieskamp, T. Santen, and B. Stoddart, editors, Integrated Formal Methods (IFM), volume 1945 of LNCS, pages 214--234, Dagstuhl, Germany, 2000. Springer. Google ScholarDigital Library
- C. Elgot. Structured programming with and without "go to" statements. IEEE Transactions on Software Engineering (T-SE), SE-2(1):41--54, March 1976. Google ScholarDigital Library
- R. Floyd. Assigning meanings to programs. In J. Schwartz, editor, Mathematical Aspects of Computer Science, volume 19 of Symposia in Applied Mathematics, pages 19--32, Providence, Rhode Island, USA, 1967. American Mathematical Society.Google Scholar
- P. Godefroid. Software model checking: The VeriSoft approach. Formal Methods in System Design (FMSD), 26(2):77--101, March 2005. Google ScholarDigital Library
- D. Gries. The Science of Programming. Springer, 1981. Google ScholarDigital Library
- N. Halbwachs. Synchronous programming of reactive systems. Kluwer, 1993. Google ScholarDigital Library
- C. Hoare. An axiomatic basis for computer programming. Communications of the ACM (CACM), 12(10):576--580, 1969. Google ScholarDigital Library
- J. Joyce and C.-J. Seger. The HOL-Voss system: Model-checking inside a general-purpose theorem-prover. In J. Joyce and C.-J. Seger, editors, Theorem Proving in Higher Order Logics (TPHOL), volume 780 of LNCS, pages 185--198, Vancouver, British Columbia, Canada, 1994. Springer. Google ScholarDigital Library
- V. Kahlon and C. Wang. Universal causality graphs: A precise happens-before model for detecting bugs in concurrent programs. In T. Touili, B. Cook, and P. Jackson, editors, Computer Aided Verification (CAV), volume 6174 of LNCS, pages 434--449, Edinburgh, Scotland, UK, 2010. Springer. Google ScholarDigital Library
- R. Karp and V. Ramachandran. A survey of parallel algorithms for shared-memory machines. Technical Report UCB/CSD-88--408, EECS Department, University of California, Berkeley, http://www.eecs.berkeley.edu/Pubs/TechRpts/1988/CSD-88--408.pdf, March 1988. Google ScholarDigital Library
- C. Kern and M. Greenstreet. Formal verification in hardware design: A survey. ACM Transactions on Design Automation of Electronic Systems (TODAES), 4(2):123--193, 1999. Google ScholarDigital Library
- L. Lamport. The "Hoare Logic" of concurrent programs. Acta Informatica, 14:21--37, 1980.Google ScholarDigital Library
- L. Lamport and F. Schneider. The "Hoare" logic CSP, and all that. ACM Transactions on Programming Languages and Systems (TOPLAS), 6(2):281--296, April 1984. Google ScholarDigital Library
- A. Martin and J. Tucker. The concurrent assignment representation of synchronous systems. Parallel Computing, 9(2):227--256, 1989.Google Scholar
- P. Metaxas. Thinking and programming in parallel, 1997. Lecture Notes.Google Scholar
- H. Mills. The new math of computer programming. Communications of the ACM (CACM), 18(1):43--48, January 1975. Google ScholarDigital Library
- Nvidia Corporation. NVIDIA CUDA Compute Unified Device Architecture -- Programming Guide. Nvidia Corporation, 2008.Google Scholar
- S. Owicki and D. Gries. An axiomatic proof technique for parallel programs I. Acta Informatica, 6(4):319--340, 1976.Google Scholar
- S. Owicki and D. Gries. Verifying properties of parallel programs: An axiomatic approach. Communications of the ACM (CACM), 19(5):279--284, 1976. Google ScholarDigital Library
- S. Owicki and L. Lamport. Proving liveness properties of concurrent programs. ACM Transactions on Programming Languages and Systems (TOPLAS), 4(3):455--495, July 1982. Google ScholarDigital Library
- D. Potop-Butucaru, S. Edwards, and G. Berry. Compiling Esterel. Springer, 2007. Google ScholarDigital Library
- K. Schneider. The synchronous programming language Quartz. Internal Report 375, Department of Computer Science, University of Kaiserslautern, Kaiserslautern, Germany, December 2009.Google Scholar
- K. Schneider and J. Brandt. Performing causality analysis by bounded model checking. In Application of Concurrency to System Design (ACSD), pages 78--87, Xi'an, China, 2008. IEEE Computer Society.Google Scholar
- K. Schneider, J. Brandt, and T. Schuele. A verified compiler for synchronous programs with local declarations. Electronic Notes in Theoretical Computer Science (ENTCS), 153(4):71--97, 2006. Google ScholarDigital Library
- K. Schneider, J. Brandt, T. Schuele, and T. Tuerk. Maximal causality analysis. In J. Desel and Y. Watanabe, editors, Application of Concurrency to System Design (ACSD), pages 106--115, St. Malo, France, 2005. IEEE Computer Society. Google ScholarDigital Library
- L. Seiler, D. Carmean, E. Sprangle, T. Forsyth, M. Abrash, P. Dubey, S. Junkins, A. Lake, J. Sugerman, R. Cavin, R. Espasa, E. Grochowski, T. Juan, and P. Hanrahan. Larrabee: A many-core x86 architecture for visual computing. ACM Transactions on Graphics (TOG), 27(3):18, August 2008. Google ScholarDigital Library
- C. Stirling. A generalization of Owicki-Gries's Hoare logic for a concurrent while language. Theoretical Computer Science (TCS), 58(1--3):347--359, June 1988. Google ScholarDigital Library
- M. Stokelya, S. Chakia, and J. Ouaknine. Parallel assignments in software model checking. Electronic Notes in Theoretical Computer Science (ENTCS), 157:77--94, 2006. Google ScholarDigital Library
- S. Tini. An axiomatic semantics for Esterel. Theoretical Computer Science (TCS), 269(1--2):231--282, October 2001.Google Scholar
Index Terms
- A hoare calculus for the verification of synchronous languages
Recommendations
A Verification Approach for GALS Integration of Synchronous Components
Starting with modules described in Signal synchronous programming language, we present an approach to verification of GALS systems. Since asynchronous parts of a GALS system can not be described in Signal, we use a mixture of synchronous descriptions in ...
On Hoare Logic and Kleene Algebra with Tests
LICS '99: Proceedings of the 14th Annual IEEE Symposium on Logic in Computer ScienceWe show that Kleene algebra with tests subsumes propositional Hoare logic. Thus the specialized syntax and deductive apparatus of Hoare logic are inessential and can be replaced by ordinary equational reasoning. It follows from the reduction that ...
Reasoning about probabilistic sequential programs
A complete and decidable Hoare-style calculus for iteration-free probabilistic sequential programs is presented using a state logic with truth-functional propositional (not arithmetical) connectives.
Comments