Formal Aspects of Computing

, Volume 29, Issue 5, pp 777–803 | Cite as

On partial state matching

  • Pavel Jančík
  • Jan KofroňEmail author
Original Article


During explicit software model checking, the tools spend a lot of time in state matching. This is implied not only by processing a huge number of states, but also by the fact that state representation is usually not small either. In this article, we present two dead variable analyses; applying them during the code-model-checking process results in size reduction of both state representation and explored state space itself. We implemented the analyses inside Java PathFinder and evaluate their impact in terms of memory and time reduction using several non-trivial benchmarks.


Explicit model checking dead variable analysis optimization performance 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. A+06.
    Adámek J et al (2006) Component reliability extensions for fractal component model.
  2. B+04.
    Bruneton E et al (2004) An open component model and its support in java. In: Crnkovic I, Stafford JA, Schmidt HW, Wallnau KC (eds) CBSE, LNCS, vol 3054. Springer, Berlin, pp 7–22Google Scholar
  3. BFG99.
    Bozga M, Fernandez J-C, Ghirvu L (1999) State space reduction based on live variables analysis. In: Cortesi A, Filé G (eds) Static analysis, 6th international symposium, SAS ’99, Venice, Italy, September 22–24, 1999, Proceedings. Lecture Notes in Computer Science, vol 1694. Springer, pp 164–178Google Scholar
  4. CJ08.
    Christel B, Joost-Pieter K (2008) Principles of model checking. The MIT Press, CambridgezbMATHGoogle Scholar
  5. C+00.
    Corbett JC et al (2000) Bandera: extracting finite-state models from java source code. In: Ghezzi C, Jazayeri M, Wolf AL (eds) Proceedings of the 22nd International Conference on on Software Engineering, ICSE 2000, Limerick Ireland, June 4–11, 2000. ACM, pp 439–448Google Scholar
  6. CTC.
  7. Dil09.
    Dillenseger B (2009) Clif, a framework based on fractal for flexible, distributed load testing. Ann Telecommun 64(1): 101–120CrossRefGoogle Scholar
  8. Dor93.
    Doron P (1993) All from one, one for all: on model checking using representatives. In: Proceedings of the 5th International Conference on Computer Aided Verification, CAV ’93. Springer-Verlag, London, pp 409–423Google Scholar
  9. FBG03.
    Fernandez J-C, Bozga M, Ghirvu L (2003) State space reduction based on live variables analysis. Sci Comput Program 47(2–3): 203–220MathSciNetCrossRefzbMATHGoogle Scholar
  10. Hol04.
    Holzmann GJ (2004) The SPIN Model Checker—primer and reference manual. Addison-Wesley, ReadingGoogle Scholar
  11. Huf52.
    Huffman David A (1952) A method for the construction of minimum-redundancy codes. Proc Inst Radio Eng 9(40): 1098–1101zbMATHGoogle Scholar
  12. JK16.
    Jančík P, Kofroň J (2016) Dead variable analysis for multi-threaded heap manipulating programs. In: Proceedings of 31st ACM Symposium on Applied Computing. ACMGoogle Scholar
  13. LJ06.
    Lewis M, Jones M (2006) A dead variable analysis for explicit model checking. In: Hatcliff J, Tip F (eds) Proceedings of the 2006 ACM SIGPLAN Workshop on Partial Evaluation and Semantics-based Program Manipulation, Charleston, South Carolina, USA, January 9–10, 2006. ACM, pp 48–57Google Scholar
  14. L+07.
    Lubomír B et al (2007) CoCoME in fractal. LNCS 5153: 357–387Google Scholar
  15. mur.
  16. NR09.
    Nguyen VY, Ruys TC (2009) Memoised garbage collection for software model checking. In: Proceedings of Tools and Algorithms for the Construction and Analysis of Systems. Springer, Berlin, pp 201–214Google Scholar
  17. PJB.
    Parallel Java Benchmarks.
  18. PL11.
    Parízek P, Lhoták O (2011) Identifying future field accesses in exhaustive state space traversal. In: Alexander P, Pasareanu CS, Hosking JG (eds) 26th IEEE/ACM International Conference on Automated Software Engineering (ASE 2011), Lawrence, KS, USA, November 6–10, 2011. IEEE Computer Society, pp 93–102Google Scholar
  19. PL15.
    Parízek P, Lhoták O (2015) Model checking of concurrent programs with static analysis of field accesses. Sci Comput Program 98(Part 4): 735–763CrossRefGoogle Scholar
  20. PPJ12.
    Pavel J, Pavel P, Jan K (2012) BeJC: checking compliance between java implementation and behavior specification. In: Proceedings of the 17th international doctoral symposium on components and architecture, WCOP ’12. ACM, New York, pp 31–36Google Scholar
  21. rle.
  22. SM07.
    Self JP, Mercer EG (2007) On-the-fly dynamic dead variable analysis. In: Bosnacki D, Edelkamp S (eds) Model Checking Software, 14th International SPIN Workshop, Berlin, Germany, July 1–3, 2007, Proceedings. Lecture Notes in Computer Science, vol 4595. Springer, pp 113–130Google Scholar
  23. VHB+03.
    Visser W, Havelund K, Brat GP, Park S, Lerda F (2003) Model checking programs. Autom Softw Eng 10(2): 203–232CrossRefGoogle Scholar
  24. YG04.
    Yorav K, Grumberg O (2004) Static analysis for state-space reductions preserving temporal logics. Form Methods Syst Des 25(1): 67–96CrossRefzbMATHGoogle Scholar

Copyright information

© British Computer Society 2017

Authors and Affiliations

  1. 1.Faculty of Mathematics and PhysicsCharles UniversityPraha 1Czech Republic

Personalised recommendations