In previous work, we presented a language called Rhodium for writing program analyses and transformations that could be checked for soundness automatically. In this work, we present an algorithm for automatically inferring sound flow functions given only a set of dataflow fact schemas. By generating the flow functions mechanically, our approach reduces the burden on compiler writers. This paper presents a detailed description of our algorithm and shows how it works on several examples. We have run our algorithm by hand on all the statements of a simple C-like intermediate language for an is-constant fact schema, a points-to fact schema, and a variable-equality fact schema. Our algorithm generated a total of 71 rules for these cases. It generated all but one of the rules we had written by hand for these dataflow fact schemas, and it also generated new useful rules that we had not thought of previously.
[1]
Sorin Lerner,et al.
Automatically proving the correctness of compiler optimizations
,
2003,
PLDI '03.
[2]
Thomas W. Reps,et al.
Symbolic Implementation of the Best Transformer
,
2004,
VMCAI.
[3]
Thomas W. Reps,et al.
Symbolically Computing Most-Precise Abstract Operations for Shape Analysis
,
2004,
TACAS.
[4]
David L. Dill,et al.
Experience with Predicate Abstraction
,
1999,
CAV.
[5]
Sorin Lerner,et al.
Automated soundness proofs for dataflow analyses and transformations via local rules
,
2005,
POPL '05.
[6]
John Regehr,et al.
HOIST: a system for automatically deriving static analyzers for embedded systems
,
2004,
ASPLOS XI.