Dataflow Analysis With Prophecy and History Variables

07/23/2020
by   Martin Rinard, et al.
0

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.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
11/30/2018

Parametric Denotational Semantics for Extensible Language Definition and Program Analysis

We present a novel approach to construction of a formal semantics for a ...
research
08/27/2018

Reversing Parallel Programs with Blocks and Procedures

We show how to reverse a while language extended with blocks, local vari...
research
07/12/2019

Verified Self-Explaining Computation

Common programming tools, like compilers, debuggers, and IDEs, crucially...
research
05/13/2019

Operational semantics and program verification using many-sorted hybrid modal logic

We propose a general framework to allow: (a) specifying the operational ...
research
04/10/2017

ROSA: R Optimizations with Static Analysis

R is a popular language and programming environment for data scientists....
research
07/11/2019

R Melts Brains -- An IR for First-Class Environments and Lazy Effectful Arguments

The R programming language combines a number of features considered hard...
research
01/20/2020

Probabilistic Output Analyses for Deterministic Programs — Reusing Existing Non-probabilistic Analyses

We consider reusing established non-probabilistic output analyses (eithe...

Please sign up or login with your details

Forgot password? Click here to reset