Possible Value Analysis based on Symbolic Lattice
Qi Zhan
TL;DR
This work tackles static reasoning about program behavior without executing code, proposing program behavior analysis that merges symbolic execution with abstract interpretation to derive possible symbolic expressions for every variable and memory cell at each program point. A novel symbolic lattice $\\mathcal{L}$ with a top element $\\top$ and a widening operator is designed to handle infinite-height constructs, and the analysis is formulated over a simple SSA-like language to support both intraprocedural and interprocedural analyses. Key contributions include the design of the infinite-height lattice interleaved with expressions, a depth-based widening scheme $\\nabla_i$, and a formal transfer-function framework that handles memory via a pointer-analysis component $\\Downarrow_{pa}$. The approach yields safe over-approximations of program behavior and enables comparisons of code semantics (e.g., code diffs) at the function and program level, with practical applicability to bug and vulnerability detection and program understanding; future work points to stronger pointer/control-flow analyses to improve precision and broader interprocedural handling.
Abstract
We propose a new static program analysis called program behavior analysis. The analysis aims to calculate possible symbolic expressions for every variable at each program point. We design a new lattice, transfer function, and widening operator to accommodate the analysis. Furthermore, we extend the analysis to interprocedural.
