kirancodes.me
To Proof Maintenance & Beyond!

Enhancing symbolic execution with built-in term rewriting and constrained lazy initialization

Pietro Braione, Giovanni Denaro, Mauro Pezzè

Abstract

Symbolic execution suffers from problems when analyzing programs that handle complex data structures as their inputs and take decisions over non-linear expressions. For these programs, symbolic execution may incur invalid inputs or unidentified infeasible traces, and may raise large amounts of false alarms. Some symbolic executors tackle these problems by introducing executable preconditions to exclude invalid inputs, and some solvers exploit rewrite rules to address non linear problems. In this paper, we discuss the core limitations of executable preconditions, and address these limitations by proposing invariants specifically designed to harmonize with the lazy initialization algorithm. We exploit rewrite rules applied within the symbolic executor, to address simplifications of inverse relationships fostered from either program-specific calculations or the logic of the verification tasks. We present a symbolic executor that integrates the two techniques, and validate our approach against the verification of a relevant set of properties of the Tactical Separation Assisted Flight Environment. The empirical data show that the integrated approach can improve the effectiveness of symbolic execution.

BibTeX
@inproceedings{Braione-al:FSE13,
  author    = {Pietro Braione and
               Giovanni Denaro and
               Mauro Pezz{\`{e}}},
  title     = {Enhancing symbolic execution with built-in term rewriting and constrained lazy initialization},
  booktitle = {{ESEC/SIGSOFT} {FSE}},
  pages     = {411--421},
  publisher = {{ACM}},
  year      = {2013},
}

Related papers