A modular and symbolic approach to static program analysis
- This thesis presents novel static analysis techniques for improving the quality of real-world software. The static analysis techniques we describe are immediately useful for uncovering errors in real code bases, as they are fully automatic, report few false alarms, and scale to large applications. The underlying machinery that allows us to develop these analyses is comprised of a symbolic SAT and SMT-based encoding of program states as well as modular, one function-at-a-time reasoning about the program. More specifically, the contributions of this thesis are four-fold: The first contribution is a static inconsistency detection algorithm that uncovers inconsistent assumptions made by the programmer in a semantic way. Second, we present a novel and sound algorithm that performs an interprocedurally path-sensitive analysis that is capable of giving exact answers to may and must queries about the program with respect to a user-provided, finite abstraction. Third, we describe the first fully modular, summary-based pointer analysis that can systematically perform strong updates to abstract memory locations reachable through function arguments. Finally, this thesis describes an on-line constraint simplification algorithm that significantly improves the scalability of constraint-based program analysis techniques, such as the analyses outlined above.
|Type of resource
|electronic; electronic resource; remote
|1 online resource.
|Dillig, Thomas Walter
|Stanford University, Computer Science Department
|Dill, David L
|Dill, David L
|Statement of responsibility
|Submitted to the Department of Computer Science.
|Thesis (Ph. D.)--Stanford University, 2011.
- © 2011 by Thomas Walter Dillig
- This work is licensed under a Creative Commons Attribution Non Commercial 3.0 Unported license (CC BY-NC).
Also listed in
Loading usage metrics...