We develop a static analysis which distills first-order computational structure from higher-order functional programs. The analysis condenses higher-order programs into a first-order rule-based system, a nugget, that characterizes all value bindings that may arise from program execution. Theorem provers are limited in their ability to automatically reason about higher-order programs; nuggets address this problem, being inductively defined structures that can be simply and directly encoded in a theorem prover. The theorem prover can then prove non-trivial program properties, such as the range of values assignable to particular variables at runtime. Our analysis is flow- and path-sensitive, and incorporates a novel prune-rerun analysis technique to approximate higher-order recursive computations. © Springer-Verlag Berlin Heidelberg 2007.
CITATION STYLE
Shroff, P., Skalka, C., & Smith, S. F. (2007). The nuggetizer: Abstracting away higher-orderness for program verification. In Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) (Vol. 4807 LNCS, pp. 2–18). Springer Verlag. https://doi.org/10.1007/978-3-540-76637-7_2
Mendeley helps you to discover research relevant for your work.