Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/1040305.1040335acmconferencesArticle/Chapter ViewAbstractPublication PagespoplConference Proceedingsconference-collections
Article

Automated soundness proofs for dataflow analyses and transformations via local rules

Published: 12 January 2005 Publication History

Abstract

We present Rhodium, a new language for writing compiler optimizations that can be automatically proved sound. Unlike our previous work on Cobalt, Rhodium expresses optimizations using explicit dataflow facts manipulated by local propagation and transformation rules. This new style allows Rhodium optimizations to be mutually recursively defined, to be automatically composed, to be interpreted in both flow-sensitive and -insensitive ways, and to be applied interprocedurally given a separate context-sensitivity strategy, all while retaining soundness. Rhodium also supports infinite analysis domains while guaranteeing termination of analysis. We have implemented a soundness checker for Rhodium and have specified and automatically proven the soundness of all of Cobalt's optimizations plus a variety of optimizations not expressible in Cobalt, including Andersen's points-to analysis, arithmetic-invariant detection, loop-induction-variable strength reduction, and redundant array load elimination.

References

[1]
Kamal Aboul-Hosn and Dexter Kozen. KAT-ML: An interactive theorem prover for kleene algebra with tests. In Proceedings of the 4th International Workshop on the Implementation of Logics (WIL'03), University of Manchester, September 2003.]]
[2]
Jonathan Aldrich, Craig Chambers, Emin Gun Sirer, and Susan Eggers. Static analyses for eliminating unnecessary synchronization from java programs. In Proceedings of the sixth International Static Analysis Symposium, pages 19--38, Venice Italy, 1999.]]
[3]
L. O. Andersen. Program Analysis and Specialization for the C Programming Languge. PhD thesis, DIKU, University of Copenhagen, May 1994 (available as DIKU technical report 94-19).]]
[4]
Nick Benton. Simple relational correctness proofs for static analyses and and program transformations. In Proceedings of the 31st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, Venice Itally, January 2004.]]
[5]
Marc Berndl, Ondřej Lhoták, Feng Qian, Laurie Hendren, and Navindra Umanee. Points-to analysis using BDDs. In Proceedings of the ACM SIGPLAN 2003 Conference on Programming Language Design and Implementation, pages 103--114. ACM Press, 2003.]]
[6]
David Cachera, Thomas Jensen, David Pichardie, and Vlad Rusu. Extracting a data flow analyser in constructive logic. In Proceedings of the 13th European Symposium on Programming (ESOP 2004), volume 2986 of Lecture Notes in Computer Science. Springer-Verlag, 2004.]]
[7]
Craig Chambers, Jeffrey Dean, and David Grove. Frameworks for intra- and interprocedural dataflow analysis. Technical Report UW-CSE-96-11-02, University of Washington, November 1996.]]
[8]
Patrick Cousot and Radhia Cousot. Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Proceedings of the Fourth ACM Symposium on Principles of Programming Languages, pages 238--252, Los Angeles CA, January 1977.]]
[9]
Patrick Cousot and Radhia Cousot. Systematic design of program analysis frameworks. In Proceedings of the Sixth ACM Symposium on Principles of Programming Languages, pages 269--282, San Antonio TX, January 1979.]]
[10]
Patrick Cousot and Radhia Cousot. Systematic design of program transformation frameworks by abstract interpretation. In Proceedings of the 29th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, Portland OR, January 2002.]]
[11]
Jeffrey Dean, Greg DeFouw, Dave Grove, Vassily Litvinov, and Craig Chambers. Vortex: An optimizing compiler for object-oriented languages. In Proceedings of the 1996 ACM Conference on Object-Oriented Programming Systems, Languages, and Applications, pages 83--100, San Jose CA, October 1996.]]
[12]
Cormac Flanagan, K. Rustan M. Leino, Mark Lillibridge, Greg Nelson, James B. Saxe, and Raymie Stata. Extended static checking for Java. In Proceedings of the ACM SIGPLAN '02 Conference on Programming Language Design and Implementation, June 2002.]]
[13]
David Grove and Craig Chambers. A framework for call graph construction algorithms. ACM Transactions on Programming Languages and Systems, 23(6):685--746, 2001.]]
[14]
J. Guttman, J. Ramsdell, and M. Wand. VLISP: a verified implementation of Scheme. Lisp and Symbolic Compucation, 8(1-2):33--110, 1995.]]
[15]
M. Kauffmann and R.S. Boyer. The Boyer-Moore theorem prover and its interactive enhancement. Computers and Mathematics with Applications, 29(2):27--62, 1995.]]
[16]
Dexter Kozen. Kleene algebra with tests. ACM Transactions on Programming Langauges and Systems, 19(3):427--443, September 1997.]]
[17]
David Lacey, Neil D. Jones, Eric Van Wyk, and Carl Christian Frederiksen. Proving correctness of compiler optimizations by temporal logic. In Proceedings of the 29th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, Portland OR, January 2002.]]
[18]
Sorin Lerner, David Grove, and Craig Chambers. Composing dataflow analyses and transformations. In Proceedings of the 29th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, Portland OR, January 2002.]]
[19]
Sorin Lerner, Todd Millstein, and Craig Chambers. Automatically proving the correctness of compiler optimizations. In Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation, pages 220--231. ACM Press, 2003.]]
[20]
Sorin Lerner, Todd Millstein, Erika Rice, and Craig Chambers. Automated soundness proofs for dataflow analyses and transformations via local rules. Technical Report UW-CSE-2004-07-04, University of Washington, July 2004.]]
[21]
Greg Morrisett, Karl Crary, Neal Glew, Dan Grossman, Richard Samuels, Frederick Smith, David Walker, Stephanie Weirich, and Steve Zdancewic. TALx86: A realistic typed assembly language. In 1999 ACM SIGPLAN Workshop on Compiler Support for System Software, pages 25--35, Atlanta GA, May 1999.]]
[22]
George C. Necula. Proof-carrying code. In Proceedings of the 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, Paris, France, January 1997.]]
[23]
George C. Necula. Translation validation for an optimizing compiler. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 83--95, Vancouver, Canada, June 2000.]]
[24]
George C. Necula and Peter Lee. The design and implementation of a certifying compiler. In Proceedings of the ACM SIGPLAN '98 Conference on Programming Language Design and Implementation, Montreal, Canada, June 1998.]]
[25]
A. Pnueli, M. Siegel, and E. Singerman. Translation validation. In Tools and Algorithms for Construction and Analysis of Systems, TACAS '98, volume 1384 of Lecture Notes in Computer Science, pages 151--166, 1998.]]
[26]
Martin Rinard and Darko Marinov. Credible compilation. In Proceedings of the FLoC Workshop Run-Time Result Verification, July 1999.]]
[27]
Micha Sharir and Amir Pnueli. Two approaches to interprocedural data flow analysis. In Steven~S. Muchnick and Neil~D. Jones, editors, Program Flow Analysis: Theory and Applications, chapter 7, pages 189--233. Prentice-hall, 1981.]]
[28]
Olin Shivers. Control-flow analysis in Scheme. In Proceedings of the SIGPLAN '88 Conference on Programming Language Design and Implementation, pages 164--174, Atlanta GA, June 1988.]]
[29]
Ganesh Sittampalam, Oege de Moor, and Ken Friis Larsen. Incremental execution of transformation specifications. In Proceedings of the 31st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, Venice Italy, January 2004.]]
[30]
Bernhard Steffen. Data flow analysis as model checking. In T. Ito and A.R. Meyer, editors, Theoretical Aspects of Computer Science (TACS), Sendai (Japan), volume 526 of Lecture Notes in Computer Science (LNCS), pages 346--364. Springer-Verlag, September 1991.]]
[31]
David Tarditi, Greg Morrisett, Perry Cheng, Chris Stone, Robert Harper, and Peter Lee. TIL: A type-directed optimizing compiler for ML. In Proceedings of the ACM SIGPLAN '96 Conference on Programming Language Design and Implementation, Philadelphia PA, May 1996.]]
[32]
Steven W. K. Tjiang and John L. Hennessy. Sharlit -- a tool for building optimizers. In Proceedings of the 5th ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 82--93, July 1992.]]
[33]
Jeffrey D. Ullman. Principles of Database and Knowledge-base Systems, Volume I. Computer Science Press, 1988.]]
[34]
John Whaley and Monica S. Lam. Cloning-based context-sensitive pointer alias analysis using binary decision diagrams. In Proceedings of the Conference on Programming Language Design and Implementation. ACM Press, June 2004.]]
[35]
Deborah L. Whitfield and Mary Lou Soffa. An approach for exploring code improving transformations. ACM Transactions on Programming Languages and Systems, 19(6):1053--1084, November 1997.]]
[36]
Kwangkeun Yi and Williams Ludwell Harrison III. Automatic generation and management of interprocedural program analyses. In Proceedings of the Twentieth ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 246--259, January 1993.]]
[37]
William D. Young. A mechanically verified code generator. Journal of Automated Reasoning, 5(4):493--518, December 1989.]]

Cited By

View all
  • (2024)When to Stop Going Down the Rabbit Hole: Taming Context-Sensitivity on the FlyProceedings of the 13th ACM SIGPLAN International Workshop on the State Of the Art in Program Analysis10.1145/3652588.3663321(35-44)Online publication date: 20-Jun-2024
  • (2023)Pattern-Based Peephole Optimizations with Java JIT TestsProceedings of the 32nd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3597926.3598038(64-75)Online publication date: 12-Jul-2023
  • (2023)Bounded Verification for Finite-Field-BlastingComputer Aided Verification10.1007/978-3-031-37709-9_8(154-175)Online publication date: 17-Jul-2023
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
POPL '05: Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
January 2005
402 pages
ISBN:158113830X
DOI:10.1145/1040305
  • General Chair:
  • Jens Palsberg,
  • Program Chair:
  • Martín Abadi
  • cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 40, Issue 1
    Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
    January 2005
    391 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/1047659
    Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 12 January 2005

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. automated correctness proofs
  2. compiler optimization

Qualifiers

  • Article

Conference

POPL05

Acceptance Rates

Overall Acceptance Rate 824 of 4,130 submissions, 20%

Upcoming Conference

POPL '25

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)14
  • Downloads (Last 6 weeks)2
Reflects downloads up to 01 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2024)When to Stop Going Down the Rabbit Hole: Taming Context-Sensitivity on the FlyProceedings of the 13th ACM SIGPLAN International Workshop on the State Of the Art in Program Analysis10.1145/3652588.3663321(35-44)Online publication date: 20-Jun-2024
  • (2023)Pattern-Based Peephole Optimizations with Java JIT TestsProceedings of the 32nd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3597926.3598038(64-75)Online publication date: 12-Jul-2023
  • (2023)Bounded Verification for Finite-Field-BlastingComputer Aided Verification10.1007/978-3-031-37709-9_8(154-175)Online publication date: 17-Jul-2023
  • (2022)Relational compilation for performance-critical applications: extensible proof-producing translation of functional models into low-level codeProceedings of the 43rd ACM SIGPLAN International Conference on Programming Language Design and Implementation10.1145/3519939.3523706(918-933)Online publication date: 9-Jun-2022
  • (2021)Alive2: bounded translation validation for LLVMProceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation10.1145/3453483.3454030(65-79)Online publication date: 19-Jun-2021
  • (2020)Towards a verified range analysis for JavaScript JITsProceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3385412.3385968(135-150)Online publication date: 11-Jun-2020
  • (2020)Extensible Extraction of Efficient Imperative Programs with Foreign Functions, Manually Managed Memory, and ProofsAutomated Reasoning10.1007/978-3-030-51054-1_7(119-137)Online publication date: 24-Jun-2020
  • (2019)GPU-accelerated fixpoint algorithms for faster compiler analysesProceedings of the 28th International Conference on Compiler Construction10.1145/3302516.3307352(122-134)Online publication date: 16-Feb-2019
  • (2018)Incremental inference for probabilistic programsACM SIGPLAN Notices10.1145/3296979.319239953:4(571-585)Online publication date: 11-Jun-2018
  • (2018)Inferring type rules for syntactic sugarACM SIGPLAN Notices10.1145/3296979.319239853:4(812-825)Online publication date: 11-Jun-2018
  • Show More Cited By

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media