2012/01/23 by Jiří Slabý, Slabý, Jiří, Jan Strejček +3
Computer Science · #FOS: Computer and information sciences #Programming Languages (cs.PL) #Software Engineering Research #Software Reliability and Analysis Research #Software Testing and Debugging Techniques #cs.PL
paper · pdf · doi:10.48550/arxiv.1201.4715
This is a full version of the paper accepted to ATVA 2013
openalex publication_date 2012/01/23 · arxiv created 2013/09/17 · arxiv updated 2013/09/18 · openalex created_date 2025/10/10 · openalex updated_date 2026/07/28
We present a generalisation of King's symbolic execution technique called compact symbolic execution. It proceeds in two steps. First, we analyse cyclic paths in the control flow graph of a given program, independently from the rest of the program. Our goal is to compute a so called template for each such a cyclic path. A template is a declarative parametric description of all possible program states, which may leave the analysed cyclic path after any number of iterations along it. In the second step, we execute the program symbolically with the templates in hand. The result is a compact symbolic execution tree. A compact tree always carry the same information in all its leaves as the corresponding classic symbolic execution tree. Nevertheless, a compact tree is typically substantially smaller than the corresponding classic tree. There are even programs for which compact symbolic execution trees are finite while classic symbolic execution trees are infinite.