Abstract
The ability to generate counterexamples for failing properties is often cited as one of the strengths of model checking. However, it is often difficult to interpret long error traces in which many variables appear. Besides, a traditional error trace presents only one possible behavior of the system causing the failure, with no further annotation. Our objective is to identify some structure in the error trace to make debugging easier. We present an enhanced error trace as an alternation of fated (forced) and free segments. The fated segments show unavoidable progress toward the error while the free segments show choices that, if avoided, may have prevented the error. Hence, the demarcation into segments tends to highlight critical events. The segmentation of a trace raises the questions of whether the fated segment should indeed be inevitable and whether the free segments are critical in causing the error. Addressing these questions may help the user to better analyze the failure of the property.
Similar content being viewed by others
References
Alpern B, Schneider FB (1985) Defining liveness. Inf Process Lett 21:181–185
Alur R, Henzinger TA, Kupferman O (1997) Alternating-time temporal logic. In: Proceedings of the IEEE symposium on the foundations of computer science, pp 100–109
Ball T, Naik M, Rajamani SK (2003) From symptom to cause: localizing errors in counterexample traces. In: Proceedings of the 30th symposium on principles of programming languages (POPL 2003), January 2003, pp 97–105
Beer I, Ben-David S, Eisner C, Rodeh Y (1997) Efficient detection of vacuity in ACTL formulas. In: Grumberg O (ed) Proceedings of the 9th conference on computer aided verification (CAV’97). Lecture notes in computer science, vol 1254. Springer, Berlin Heidelberg New York, pp 279–290
Brayton RK, Hachtel GD, Sangiovanni-Vincentelli AL, Somenzi F, Aziz A, Cheng S-T, Edwards SA, Khatri SP, Kukimoto Y, Pardo A, Qadeer S, Ranjan RK, Sarwary S, Shiple TR, Swamy G, Villa T (1996) VIS: A system for verification and synthesis. In: Henzinger T, Alur R (eds) Proceedings of the 8th conference on computer-aided verification (CAV’96), New Brunswick, NJ. Lecture notes in computer science, vol 1102. Springer, Berlin Heidelberg New York, pp 428–432
Bryant RE (1986) Graph-based algorithms for Boolean function manipulation. IEEE Trans Comput C-35(8):677–691
Büchi JR (1962) On a decision method in restricted second order arithmetic. In: Proceedings of the 1960 international congress on logic, methodology, and philosophy of science. Stanford University Press, Stanford, CA, pp 1–11
Choueka Y (1974) Theories of automata on ω-tapes: a simplified approach. J Comput Sys Sci 8:117–141
Clarke E, Grumberg O, McMillan K, Zhao X (1995) Efficient generation of counterexamples and witnesses in symbolic model checking. In: Proceedings of the conference on design automation, San Francisco, June 1995, pp 427–432
Clarke EM, Emerson EA (1981) Design and synthesis of synchronization skeletons using branching time temporal logic. In: Proceedings of the workshop on logics of programs. Lecture notes in computer science, vol 131. Springer, Berlin Heidelberg New York, pp 52–71
Clarke EM, Grumberg O, Peled DA (1999) Model checking. MIT Press, Cambridge, MA
de Alfaro L, Henzinger TA, Mang FYC (2000) Detecting errors before reaching them. In: Emerson EA, Sistla AP (eds) Proceedings of the 12th conference on computer aided verification (CAV’00), July 2000. Lecture notes in computer science, vol 1855. Springer, Berlin Heidelberg New York, pp 186–201
Emerson EA, Halpern JY (1986) ‘Sometimes’ and ‘not never’ revisited: on branching time versus linear time temporal logic. J Assoc Comput Mach 33(1):151–178
Emerson EA, Jutla CS (1991) Tree automata, mu-calculus and determinacy. In Proceedings of the 32nd IEEE symposium on foundations of computer science, October 1991, pp 368–377
Groce A, Visser W (2003) What went wrong: explaining counterexamples. In: Proceedings of the 10th international SPIN workshop: Model Checking of Software, May 2003. Lecture notes in computer science, vol 2648. Springer, Berlin Heidelberg New York, pp 121–135
Kupferman O, Vardi MY (1999) Vacuity detection in temporal model checking. In: Proceedings of the conference on correct hardware design and verification methods (CHARME’99), September 1999. Lecture notes in computer science, vol 1703. Springer, Berlin Heidelberg New York, pp 82–96
Kurshan RP (1994) Computer-aided verification of coordinating processes. Princeton University Press, Princeton, NJ
Lichtenstein O, Pnueli A (1985) Checking that finite state concurrent programs satisfy their linear specification. In: Proceedings of the 12th annual ACM symposium on principles of programming languages, New Orleans, January 1985, pp 97–107
McMillan KL (1994) Symbolic model checking. Kluwer, Boston
Moon I-H, Kukula JH, Ravi K, Somenzi F (2000) To split or to conjoin: the question in image computation. In: Proceedings of the conference on design automation, Los Angeles, June 2000, pp 23–28
Ravi K, Bloem R, Somenzi F (2000) A comparative study of symbolic algorithms for the computation of fair cycles. In: Hunt Jr WA, Johnson SD (eds) Proceedings of the international conference on formal methods in computer-aided design, November 2000. Lecture notes in computer science, vol 1954. Springer, Berlin Heidelberg New York, pp 143–160
Wolper P, Vardi MY, Sistla AP (1983) Reasoning about infinite computation paths. In: Proceedings of the 24th IEEE symposium on foundations of computer science, pp 185–194
Zeller A (2002) Isolating cause-effect chains from computer programs. In: Proceedings of the 10th international symposium on the foundations of software engineering (FSE-10), November 2002, pp 1–10
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Jin, H., Ravi, K. & Somenzi, F. Fate and free will in error traces. Int J Softw Tools Technol Transfer 6, 102–116 (2004). https://doi.org/10.1007/s10009-004-0146-9
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10009-004-0146-9