Abstract
In this paper we present steps towards a prototype implementation of a C++ software model checker based on AI planning technology. It parses source code annotated with assertions and translates it into the planning domain description language to invoke recent planners. Lifted back to the source code level, computed plans then serve as counterexamples. As the approach can participate from efficient planner in-built search heuristics, the verification procedure is directed. For the translation process, different aspects like parsing, generation of a dependency graph, slicing, property conversion, and data abstraction are described. The program model checker has been embedded as a plugin in the Eclipse software development environment, resulting in an interactive debugging aid. First empirical findings compare the approach with an existing directed program model checker parses the same input and executes object code.
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
Albarghouthi, A., Baier, J., McIlraith, S.A.: On the use of planning technology for verification. In: Workshop on ICAPS 2009 (2009)
Andrews, T., Qadeer, S., Rajamani, S.K., Rehof, J., Xie, Y.: Zing: Exploiting program structure for model checking concurrent software. In: Gardner, P., Yoshida, N. (eds.) CONCUR 2004. LNCS, vol. 3170, pp. 1–15. Springer, Heidelberg (2004)
Bakera, M., Edelkamp, S., Kissmann, P., Renner, C.D.: Solving μ-calculus parity games by symbolic planning. In: Peled, D.A., Wooldridge, M.J. (eds.) MoChArt 2008. LNCS, vol. 5348, pp. 15–33. Springer, Heidelberg (2009)
Biere, A., Cimatti, A., Clarke, E., Zhu, Y.: Symbolic model checking without bDDs. In: Cleaveland, W.R. (ed.) TACAS 1999. LNCS, vol. 1579, pp. 193–207. Springer, Heidelberg (1999)
Bonet, B., Haslum, P., Hickmott, S.L., Thiébaux, S.: Directed unfolding of Petri nets. T. Petri Nets and Other Models of Concurrency 1, 172–198 (2008)
Bryant, R.E.: Symbolic boolean manipulation with ordered binary-decision diagrams. ACM Computing Surveys 24(3), 142–170 (1992)
Bylander, T.: The computational complexity of propositional STRIPS planning. Artificial Intelligence, 165–204 (1994)
Cimatti, A., Giunchiglia, E., Giunchiglia, F., Traverso, P.: Planning via model checking: A decision procedure for AR. In: Steel, S. (ed.) ECP 1997. LNCS, vol. 1348, pp. 130–142. Springer, Heidelberg (1997)
Cimatti, A., Pistore, M., Roveri, M., Traverso, P.: Weak, strong, and strong cyclic planning via symbolic model checking. Artif. Intell. 147(1-2), 35–84 (2003)
Cimatti, A., Roveri, M., Bertoli, P.: Conformant planning via symbolic model checking and heuristic search. Artif. Intell. 159(1-2), 127–206 (2004)
Clarke, E., Kröning, D., Lerda, F.: A tool for checking ANSI-C programs. In: Jensen, K., Podelski, A. (eds.) TACAS 2004. LNCS, vol. 2988, pp. 168–176. Springer, Heidelberg (2004)
Clarke, E., Kröning, D., Sharygina, N., Yorav, K.: SATABS: SAT-based predicate abstraction for ANSI-C. In: Halbwachs, N., Zuck, L.D. (eds.) TACAS 2005. LNCS, vol. 3440, pp. 570–574. Springer, Heidelberg (2005)
Clarke, E.M., Grumberg, O., Long, D.: Model checking and abstraction. ACM Transactions on Programming Languages and Systems 16(5), 1512–1542 (1994)
Clarke, E.M., Grumberg, O., Peled, D.A.: Model checking. MIT Press, Cambridge (1999)
Cordeiro, L., Fischer, B.: Bounded model checking of multi-threaded software using smt solvers, vol. abs/1003.3830 (2010)
Culberson, J.C., Schaeffer, J.: Pattern databases. Computational Intelligence 14(4), 318–334 (1998)
Dams, D., Namjoshi, K.S.: Orion: High-precision methods for static error analysis of C and C++ programs. In: de Boer, F.S., Bonsangue, M.M., Graf, S., de Roever, W.-P. (eds.) FMCO 2005. LNCS, vol. 4111, pp. 138–160. Springer, Heidelberg (2006)
Aan de Brugh, N.H.M., Nguyen, V.Y., Ruys, T.C.: moonWalker: Verification of.NET programs. In: Kowalewski, S., Philippou, A. (eds.) TACAS 2009. LNCS, vol. 5505, pp. 170–173. Springer, Heidelberg (2009)
Edelkamp, S.: Promela planning. In: Ball, T., Rajamani, S.K. (eds.) SPIN 2003. LNCS, vol. 2648, pp. 197–212. Springer, Heidelberg (2003)
Edelkamp, S., Jabbar, S.: Action planning for directed model checking of Petri nets. Electronic Notes in Theoretical Computer Science (ENTCS) 149(2), 3–18 (2006)
Edelkamp, S., Jabbar, S., Lluch-Lafuente, A.: Action planning for graph transition systems. In: ICAPS 2005-Workshop on Verification and Validation of Model-Based Planning and Scheduling Systems (2005)
Edelkamp, S., Jabbar, S., Midzic, D., Rikowski, D., Sulewski, D.: External memory search for verification of multi-threaded C++ programs. KI 22(2), 44–50 (2008)
Edelkamp, S., Jabbar, S., Sulewski, D.: Distributed verification of multi-threaded C++ programs, vol. 198, pp. 33–46 (2008)
Edelkamp, S., Leue, S., Lluch-Lafuente, A.: Directed explicit-state model checking in the validation of communication protocols. STTT 5(2-3), 247–267 (2004)
Edelkamp, S., Rensink, A.: Graph transformation and AI planning. In: ICAPS 2007-Workshop on the Knowledge Engineering Competition (2007)
Edelkamp, S., Schuppan, V., Bošnački, D., Wijs, A., Fehnker, A., Aljazzar, H.: Survey on directed model checking. In: Peled, D.A., Wooldridge, M.J. (eds.) MoChArt 2008. LNCS, vol. 5348, pp. 65–89. Springer, Heidelberg (2009)
Fox, M., Long, D.: PDDL2.1: An extension of pddl for expressing temporal planning domains. JAIR 20, 61–124 (2003)
Gerevini, A., Haslum, P., Long, D., Saetti, A., Dimopoulos, Y.: Deterministic planning in the fifth international planning competition: 7pddl3
Gleick, J.: Little bug, big bang. New York Times vom 1 (Dezember 1996)
Graf, S., Saidi, H.: Construction of abstract state graphs with PVS. In: Grumberg, O. (ed.) CAV 1997. LNCS, vol. 1254, pp. 72–83. Springer, Heidelberg (1997)
Groce, A., Visser, W.: Heuristics for model checking java programs. STTT 6(4), 260–276 (2004)
Haslum, P., Bonet, B., Geffner, H.: New admissible heuristics for domain-independent planning. In: AAAI, pp. 1163–1168 (2005)
Havelund, K., Pressburger, T.: Model checking java programs using JAVA pathfinder. STTT 2(4), 366–381 (2000)
Havelund, K., Visser, W.: Program model checking as a new trend. STTT 4(1), 8–20 (2002)
Helmert, M.: Decidability and undecidability results for planning with numerical state variables. In: AIPS, pp. 303–312 (2002)
Helmert, M.: A planning heuristic based on causal graph analysis. In: ICAPS, pp. 161–170 (2004)
Helmert, M., Domshlak, C.: Landmarks, critical paths and abstractions: What’s the difference anyway? In: ICAPS (2009)
Helmert, M., Haslum, P., Hoffmann, J.: Flexible abstraction heuristics for optimal sequential planning. In: ICAPS, pp. 176–183 (2007)
Hoffmann, J.: The Metric-FF planning system: Translating ignoring delete lists to numeric state variables. JAIR 20, 291–341 (2003)
Hoffmann, J., Edelkamp, S.: The deterministic part of ipc-4: An overview, vol. 24, pp. 519–579 (2005)
Hoffmann, J., Edelkamp, S., Thiebaux, S., Englert, R., Liporace, F., Trueg, S.: Engineering benchmarks for planning: the domains used in the deterministic part of IPC-4. JAIR 26(2), 453–541 (2006)
Holzmann, G.J.: The Spin Model Checker: Primer and Reference Manual. Addison-Wesley, Reading (2004)
Kautz, H.A., Selman, B.: Pushing the envelope: Planning, propositional logic, and stochastic search. In: AAAI, pp. 1194–1201 (1996)
König, B., Kozioura, V.: Augur - a tool for the analysis of graph transformation systems. Bulletin of the EATCS 87, 126–137 (2005)
Kupferschmid, S., Hoffmann, J., Larsen, K.G.: Fast directed model checking via russian doll abstraction. In: Ramakrishnan, C.R., Rehof, J. (eds.) TACAS 2008. LNCS, vol. 4963, pp. 203–217. Springer, Heidelberg (2008)
Leven, P., Mehler, T., Edelkamp, S.: Directed error detection in C++ with the assembly-level model checker stEAM. In: Graf, S., Mounier, L. (eds.) SPIN 2004. LNCS, vol. 2989, pp. 39–56. Springer, Heidelberg (2004)
McDermott, D.: The 1998 AI Planning Competition. AI Magazine 21(2) (2000)
Mehler, T.: Challenges and Applications of Assembly-Level Software Model Checking. PhD thesis, Dortmund University of Technology (2006)
Merino, P., del Mar Gallardo, M., Martinez, J., Pimentel, E.: αSPIN: Extending SPIN with abstraction. In: Bošnački, D., Leue, S. (eds.) SPIN 2002. LNCS, vol. 2318, pp. 254–258. Springer, Heidelberg (2002)
Rabinovitz, I., Grumberg, O.: Bounded model checking of concurrent programs. In: Etessami, K., Rajamani, S.K. (eds.) CAV 2005. LNCS, vol. 3576, pp. 82–97. Springer, Heidelberg (2005)
Stroustrup, B.: The C++ Programming Language, 2nd edn. Addison-Wesley Publishing Company, Reading (1994)
Visser, W., Havelund, K., Brat, G., Park, S., Lerda, F.: Model checking programs. Automated Software Engineering Journal 10(2), 203–232 (2003)
Visser, W., Mehlitz, P.C.: Model checking programs with Java PathFinder. In: Godefroid, P. (ed.) SPIN 2005. LNCS, vol. 3639, p. 27. Springer, Heidelberg (2005)
Wehrle, M., Helmert, M.: The causal graph revisited for directed model checking. In: Palsberg, J., Su, Z. (eds.) SAS 2009. LNCS, vol. 5673, pp. 86–101. Springer, Heidelberg (2009)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2011 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Edelkamp, S., Kellershoff, M., Sulewski, D. (2011). Program Model Checking via Action Planning. In: van der Meyden, R., Smaus, JG. (eds) Model Checking and Artificial Intelligence. MoChArt 2010. Lecture Notes in Computer Science(), vol 6572. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-20674-0_3
Download citation
DOI: https://doi.org/10.1007/978-3-642-20674-0_3
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-20673-3
Online ISBN: 978-3-642-20674-0
eBook Packages: Computer ScienceComputer Science (R0)