An Incremental Algorithm for Algebraic Program Analysis
Open Access
- 7 January 2025
- journal article
- Published by Association for Computing Machinery (ACM) in Proceedings of the ACM on Programming Languages
- Vol. 9 (POPL) , 1934-1961
Abstract
We propose a method for conducting algebraic program analysis (APA) incrementally in response to changes of the program under analysis. APA is a program analysis paradigm that consists of two distinct steps: computing a path expression that succinctly summarizes the set of program paths of interest, and interpreting the path expression using a properly-defined semantic algebra to obtain program properties of interest. In this context, the goal of an incremental algorithm is to reduce the analysis time by leveraging the intermediate results computed before the program changes. We have made two main contributions. First, we propose a data structure for efficiently representing path expression as a tree together with a tree-based interpreting method. Second, we propose techniques for efficiently updating the program properties in response to changes of the path expression. We have implemented our method and evaluated it on thirteen Java applications from the DaCapo benchmark suite. The experimental results show that both our method for incrementally computing path expression and our method for incrementally interpreting path expression are effective in speeding up the analysis. Compared to the baseline APA and two state-of-the-art APA methods, the speedup of our method ranges from 160× to 4761× depending on the types of program analyses performed.Keywords
All Related Versions
This publication has 34 references indexed in Scilit:
- Algebraic Program Analysis2021
- Data-Driven Synthesis of Provably Sound Side Channel Analyses2021
- Debreach: Mitigating Compression Side Channels via Static Analysis and Transformation2019
- Numerical Invariants via Abstract Machines2018
- Modular verification of interrupt-driven software2017
- Compositional recurrence analysis2016
- On kleene algebras and closed semirings2005
- Context-sensitive program analysis as database queries2005
- On the computational complexity of dynamic graph problemsTheoretical Computer Science, 1996
- An incremental version of iterative data flow analysisIEEE Transactions on Software Engineering, 1989