Symbolic execution, originally introduced as a method for program testing and debugging, is usually incomplete because of infinite symbolic execution paths. In this work, we adapt some well-known notions from partial evaluation in order to have a complete symbolic execution scheme which can then be used to check liveness properties like program termination. We also introduce a representation of the symbolic transitions as a term rewrite system so that existing termination provers for these systems can be used to verify the termination of the original program.
Published in:
Source Code Analysis and Manipulation (SCAM), 2012 IEEE 12th International Working Conference on
Date of Conference: 23-24 Sept. 2012