Skip to main content
Log in

On partial state matching

  • Original Article
  • Published:
Formal Aspects of Computing

Abstract

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. Adámek J et al (2006) Component reliability extensions for fractal component model. http://d3s.mff.cuni.cz/software/ft/

  2. 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–22

  3. 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–178

  4. Christel B, Joost-Pieter K (2008) Principles of model checking. The MIT Press, Cambridge

    MATH  Google Scholar 

  5. 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–448

  6. Concurrency tool comparison repository. https://facwiki.cs.byu.edu/vv-lab/index.php/Concurrency_Tool_Comparison

  7. Dillenseger B (2009) Clif, a framework based on fractal for flexible, distributed load testing. Ann Telecommun 64(1): 101–120

    Article  Google Scholar 

  8. 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–423

  9. Fernandez J-C, Bozga M, Ghirvu L (2003) State space reduction based on live variables analysis. Sci Comput Program 47(2–3): 203–220

    Article  MathSciNet  MATH  Google Scholar 

  10. Holzmann GJ (2004) The SPIN Model Checker—primer and reference manual. Addison-Wesley, Reading

    Google Scholar 

  11. Huffman David A (1952) A method for the construction of minimum-redundancy codes. Proc Inst Radio Eng 9(40): 1098–1101

    MATH  Google Scholar 

  12. Jančík P, Kofroň J (2016) Dead variable analysis for multi-threaded heap manipulating programs. In: Proceedings of 31st ACM Symposium on Applied Computing. ACM

  13. 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–57

  14. Lubomír B et al (2007) CoCoME in fractal. LNCS 5153: 357–387

    Google Scholar 

  15. MURPHI Model Checker. http://formalverification.cs.utah.edu/Murphi/

  16. 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–214

  17. Parallel Java Benchmarks. https://bitbucket.org/pag-lab/pjbench

  18. 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–102

  19. 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–763

    Article  Google Scholar 

  20. 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–36

  21. Run-length encoding. https://en.wikipedia.org/wiki/Run-length_encoding

  22. 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–130

  23. Visser W, Havelund K, Brat GP, Park S, Lerda F (2003) Model checking programs. Autom Softw Eng 10(2): 203–232

    Article  Google Scholar 

  24. Yorav K, Grumberg O (2004) Static analysis for state-space reductions preserving temporal logics. Form Methods Syst Des 25(1): 67–96

    Article  MATH  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Jan Kofroň.

Additional information

Michael Butler

This work was partially supported by the Grant Agency of the Czech Republic Project 14-11384S.

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Jančík, P., Kofroň, J. On partial state matching. Form Asp Comp 29, 777–803 (2017). https://doi.org/10.1007/s00165-016-0413-z

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s00165-016-0413-z

Keywords

Navigation