论文标题
使用预言和历史变量的数据流分析
Dataflow Analysis With Prophecy and History Variables
论文作者
论文摘要
利用状态机改进证明的概念,我们使用预言变量,这些变量可以预测有关未来程序执行的信息,以实现向后数据流分析的转发推理。从与静态程序分析结果相同的晶格中绘制预言和历史变量(来自程序的动态执行的概念),我们需要分析结果来满足基础编程语言的操作语义中的数据流程方程和过渡关系。这种方法消除了明确的抽象和具体化功能,并在分析和程序执行之间促进了更直接的连接,而连接则采用了混凝土执行与增强的操作语义之间的双分解关系的形式,而不是分析结果。我们使用这种方法(实时变量,非常繁忙的表达式,定义变量和达到定义)进行了几个经典数据流分析,以及强调这种方法如何启用更简化的推理的证明。据我们所知,我们是第一个使用预言变量进行数据流分析的人。
Leveraging concepts from state machine refinement proofs, we use prophecy variables, which predict information about the future program execution, to enable forward reasoning for backward dataflow analyses. Drawing prophecy and history variables (concepts from the dynamic execution of the program) from the same lattice as the static program analysis results, we require the analysis results to satisfy both the dataflow equations and the transition relations in the operational semantics of underlying programming language. This approach eliminates explicit abstraction and concretization functions and promotes a more direct connection between the analysis and program executions, with the connection taking the form of a bisimulation relation between concrete executions and an augmented operational semantics over the analysis results. We present several classical dataflow analyses with this approach (live variables, very busy expressions, defined variables, and reaching definitions) along with proofs that highlight how this approach can enable more streamlined reasoning. To the best of our knowledge, we are the first to use prophecy variables for dataflow analysis.