Abstract
Formal verification of reactive concurrent systems is important since many hardware and software components of our computing environment can be modeled as reactive concurrent systems. Algorithmic techniques for verifying concurrent systems such as model checking can be applied to finite state systems only. This chapter investigates the verification of a common class of infinite state systems, namely parameterized systems. Such systems are parameterized by the number of component processes, for example an n-process token ring for any n. Verifying the entire infinite family represented by a parameterized system lies beyond the reach of traditional model checking. On the other hand, deductive techniques to verify infinite state systems often require substantial user guidance.
The goal of this work is to integrate algorithmic and deductive techniques for automating proofs of temporal properties of parameterized concurrent systems. Here, the parameterized system to be verified and the temporal property are encoded together as a logic program. The problem of verifying the temporal property is then reduced to the problem of determining equivalence of predicates in this logic program. These predicate equivalences are established by transforming the program such that the semantic equivalence of the predicates can be inferred from the structure of their clauses in the transformed program.
For transforming the predicates, we use the well-established unfold/fold transformations of logic programs. Unfolding represents a step of resolution and can be used to evaluate the base case and the finite part of the induction step in an induction proof. Folding and other transformations represent deductive reasoning and can be used to recognize the induction hypothesis. Together these transformations are used to construct induction proofs of temporal properties. Strategies are developed to help guide the application of the transformation rules. The transformation rules and strategies have been implemented to yield an automatic and programmable first order theorem prover for parameterized systems. Case studies include multi-processor cache coherence protocols and the Java Meta-Locking protocol from Sun Microsystems. The program transformation based prover has been used to automatically prove various safety properties of these protocols.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Agesen, O., Detlefs, D., Garthwaite, A., Knippel, R., Ramakrishna, Y.S., White, D.: An efficient meta-lock for implementing ubiquitous synchronization. In: ACM SIGPLAN International Conference on Object-Oriented Programming Systems, Languages and Applications, OOPSLA (1999)
Alur, R., Henzinger, T.A. (eds.): CAV 1996. LNCS, vol. 1102. Springer, Heidelberg (1996)
Apt, K., Kozen, D.: Limits for automatic verification of finite-state systems. Information Processing Letters 15, 307–309 (1986)
Archibald, J., Baer, J.-L.: Cache coherence protocols: Evaluation using a multiprocessor simulation model. ACM Transactions on Computer Systems 4(4), 273–298 (1986)
Basu, S., Smolka, S.A., Ward, O.R.: Model checking the Java meta-locking algorithm. In: IEEE International Conference on the Engineering of Computer Based Systems, April 2000, IEEE Press, Los Alamitos (2000)
Bundy, A.: The Automation of Proof by Mathematical Induction. Handbook of Automated Reasoning, vol. 1, pp. 845–911. Elsevier and MIT Press (2001)
Chen, W., Warren, D.S.: Tabled evaluation with delaying for general logic programs. Journal of the ACM 43(1), 20–74 (1996)
Clarke, E.M., Emerson, E.A., Sistla, A.P.: Automatic verification of finitestate concurrent systems using temporal logic specifications. ACM Transactions on Programming Languages and Systems (TOPLAS) 8(2) (1986)
Clarke, E.M., Grumberg, O., Peled, D.: Model Checking. MIT Press, Cambridge (1999)
Das, S.K.: Deductive Databases and Logic Programming. Addison-Wesley, Reading (1992)
De Schreye, D., Glück, R., Jørgensen, J., Leuschel, M., Martens, B., Sørensen, M.H.: Conjunctive partial deduction: Foundations, control, algorithms, and experiments. Journal of Logic Programming 41(2-3), 231–277 (1999)
Delzanno, G.: Automatic verification of parameterized cache coherence protocols. In: Emerson, E.A., Sistla, A.P. (eds.) CAV 2000. LNCS, vol. 1855, Springer, Heidelberg (2000)
Delzanno, G., Podelski, A.: Model checking in CLP. In: Cleaveland, W.R. (ed.) TACAS 1999. LNCS, vol. 1579, pp. 74–88. Springer, Heidelberg (1999)
Emerson, E., Namjoshi, K.S.: Reasoning about rings. In: ACM SIGPLAN International Conference on Principles of Programming Languages (POPL), pp. 85–94 (1995)
Emerson, E., Namjoshi, K.S.: On model checking for non-deterministic infinite state systems. In: IEEE Annual Symposium on Logic in Computer Science (LICS), pp. 70–80 (1998)
Emerson, E.A.: Temporal and Modal Logic. Handbook of Theoretical Computer Science, vol. B, pp. 995–1072. Elsevier/North-Holland (1990)
Emerson, E.A., Namjoshi, K.S.: Automated verification of parameterized synchronous systems. In: Alur and Henzinger [2]
Esparza, J., Finkel, A., Mayr, R.: On the verification of broadcast protocols. In: IEEE Annual Symposium on Logic in Computer Science (LICS), pp. 352–359 (1999)
Fioravanti, F., Pettorossi, A., Proietti, M.: Verifying CTL properties of infinite state systems by specializing constraint logic programs. In: Pettorossi, A. (ed.) LOPSTR 2001. LNCS, vol. 2372, Springer, Heidelberg (2002)
Gergatsoulis, M., Katzouraki, M.: Unfold/fold transformations for definite clause programs. In: Penjam, J. (ed.) PLILP 1994. LNCS, vol. 844, pp. 340–354. Springer, Heidelberg (1994)
German, S., Sistla, A.: Reasoning about systems with many processes. Journal of the ACM 39, 675–735 (1992)
Holzmann, G.J.: The model checker SPIN. IEEE Transactions on Software Engineering 23(5), 279–295 (1997)
Hsiang, J., Srivas, M.: Automatic inductive theorem proving using Prolog. Theoretical Computer Science 54, 3–28 (1987)
INRIA Rocquencourt, Paris, France. The Coq Proof Assistant: Reference Manual (1999), http://pauillac.inria.fr/coq/doc/main.html
Kanamori, T., Fujita, H.: Formulation of Induction Formulas in Verification of Prolog Programs. In: Siekmann, J.H. (ed.) CADE 1986. LNCS, vol. 230, pp. 281–299. Springer, Heidelberg (1986)
Kanamori, T., Fujita, H.: Unfold/fold transformation of logic programs with counters. In: USA-Japan Seminar on Logics of Programs (1987)
Kanamori, T., Seki, H.: Verification of prolog programs using an extension of execution. In: Shapiro, E. (ed.) ICLP 1986. LNCS, vol. 225, Springer, Heidelberg (1986)
Leuschel, M., Bruynooghe, M.: Logic program specialisation through partial deduction: Control issues. Theory and Practice of Logic Programming 2(4&5), 461–515 (2002)
Leuschel, M., Massart, T.: Infinite state model checking by abstract interpretation and program specialisation. In: Bossi, A. (ed.) LOPSTR 1999. LNCS, vol. 1817, pp. 63–82. Springer, Heidelberg (2000)
Lloyd, J.W.: Foundations of Logic Programming, 2nd edn. Springer, Heidelberg (1993)
Manna, Z., Pnueli, A.: The Temporal Logic of Reactive and Concurrent Systems. Springer, Heidelberg (1991)
Martens, B., De Schreye, D., Horváth, T.: Sound and complete partial deduction with unfolding based on well-founded measures. Theoretical Computer Science 122, 97–117 (1994)
Namjoshi, K.S.: Ameliorating the State Explosion Problem. PhD thesis, University of Texas at Austin (1998)
Nilsson, U., Lubcke, J.: Constraint logic programming for local and symbolic model checking. In: Palamidessi, C., Moniz Pereira, L., Lloyd, J.W., Dahl, V., Furbach, U., Kerber, M., Lau, K.-K., Sagiv, Y., Stuckey, P.J. (eds.) CL 2000. LNCS (LNAI), vol. 1861, p. 384. Springer, Heidelberg (2000)
Pettorossi, A., Proietti, M.: Transformation of logic programs. Handbook of Logic in Artificial Intelligence, vol. 5, pp. 697–787. Oxford University Press, Oxford (1998)
Pettorossi, A., Proietti, M.: Synthesis and transformation of logic programs using unfold/fold proofs. Journal of Logic Programming 41(2-3), 197–230 (1999)
Pettorossi, A., Proietti, M.: Perfect model checking via unfold/fold transformations. In: Palamidessi, C., Moniz Pereira, L., Lloyd, J.W., Dahl, V., Furbach, U., Kerber, M., Lau, K.-K., Sagiv, Y., Stuckey, P.J. (eds.) CL 2000. LNCS (LNAI), vol. 1861, p. 613. Springer, Heidelberg (2000)
Pettorossi, A., Proietti, M., Renault, S.: Reducing nondeterminism while specializing logic programs. In: ACM SIGPLAN International Conference on Principles of Programming Languages (POPL), pp. 414–427 (1997)
Rajan, S., Shankar, N., Srivas, M.K.: An integration of model checking with automated proof checking. In: Wolper, P. (ed.) CAV 1995. LNCS, vol. 939, Springer, Heidelberg (1995)
Ramakrishna, Y.S., Ramakrishnan, C.R., Ramakrishnan, I.V., Smolka, S.A., Swift, T.L., Warren, D.S.: Efficient model checking using tabled resolution. In: Grumberg, O. (ed.) CAV 1997. LNCS, vol. 1254, Springer, Heidelberg (1997)
Roychoudhury, A.: Program Transformations for Verifying Parameterized Systems. PhD thesis, State University of New York at Stony Brook (2000), Available from http://www.comp.nus.edu.sg/~abhik/papers.html
Roychoudhury, K., Narayan Kumar, C.R., Ramakrishnan, I.V.: Verification of parameterized systems using logic program transformations. In: Schwartzbach, M.I., Graf, S. (eds.) TACAS 2000. LNCS, vol. 1785, pp. 172–187. Springer, Heidelberg (2000)
Roychoudhury, A., Narayan Kumar, K., Ramakrishnan, C.R., Ramakrishnan, I.V.: An unfold/fold transformation framework for definite logic programs. ACM Transactions on Programming Languages and Systems (TOPLAS) (to appear); Preliminary version appeared in Nadathur, G. (ed.) PPDP 1999. LNCS, vol. 1702, Springer, Heidelberg (1999)
Roychoudhury, A., Ramakrishnan, I.V.: Inductively verifying invariant properties of parameterized systems. Automated Software Engineering Journal (2004); Preliminary version appeared in Berry, G., Comon, H., Finkel, A. (eds.): CAV 2001. LNCS, vol. 2102. Springer, Heidelberg (2001)
Seger, C.: Combining functional programming and hardware verification. In: ACM SIGPLAN International Conference on International Conference on Functional Programming (2000) (Invited Talk)
Tamaki, H., Sato, T.: Unfold/fold transformations of logic programs. In: Proceedings of International Conference on Logic Programming, pp. 127–138 (1984)
Tamaki, H., Sato, T.: A generalized correctness proof of the unfold/ fold logic program transformation. Technical report, Ibaraki University, Japan (1986)
Tamaki, H., Sato, T.: OLDT resolution with tabulation. In: Third International Conference on Logic Programming, pp. 84–98 (1986)
Urbina, L.: Analysis of hybrid systems in CLP(R). In: Alur, R., Henzinger, T.A. (eds.) CAV 1996. LNCS, vol. 1102, Springer, Heidelberg (1996)
XSB. The XSB logic programming system v2.2 (2000), Available for downloading from http://xsb.sourceforge.net/
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2004 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Roychoudhury, A., Ramakrishnan, C.R. (2004). Unfold/Fold Transformations for Automated Verification of Parameterized Concurrent Systems. In: Bruynooghe, M., Lau, KK. (eds) Program Development in Computational Logic. Lecture Notes in Computer Science, vol 3049. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-25951-0_9
Download citation
DOI: https://doi.org/10.1007/978-3-540-25951-0_9
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-22152-4
Online ISBN: 978-3-540-25951-0
eBook Packages: Springer Book Archive