skip to main content
10.1145/1480881.1480899acmconferencesArticle/Chapter ViewAbstractPublication PagespoplConference Proceedingsconference-collections
research-article

Automatic modular abstractions for linear constraints

Published:21 January 2009Publication History

ABSTRACT

We propose a method for automatically generating abstract transformers for static analysis by abstract interpretation. The method focuses on linear constraints on programs operating on rational, real or floating-point variables and containing linear assignments and tests.

In addition to loop-free code, the same method also applies for obtaining least fixed points as functions of the precondition, which permits the analysis of loops and recursive functions. Our algorithms are based on new quantifier elimination and symbolic manipulation techniques.

Given the specification of an abstract domain, and a program block, our method automatically outputs an implementation of the corresponding abstract transformer. It is thus a form of program transformation.

The motivation of our work is data-flow synchronous programming languages, used for building control-command embedded systems, but it also applies to imperative and functional programming.

References

  1. Roberto Bagnara, Patricia M. Hill, Elena Mazzi, and Enea Zaffanella. Widening operators for weakly-relational numeric abstractions. In Static Analysis (SAS), volume 3672 of LNCS, pages 3--18. Springer, 2005. DOI: 10.1007/11547662_3. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Roberto Bagnara, Patricia M. Hill, Elisa Ricci, and Enea Zaffanella. Precise widening operators for convex polyhedra. Sci. Comput. Program., 58 (1-2): 28--56, 2005. DOI: 10.1016/j.scico.2005.02.003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Roberto Bagnara, Patricia M. Hill, and Enea Zaffanella. The Parma Polyhedra Library, version 0.9, 2006. URL http://www.cs.unipr.it/ppl.Google ScholarGoogle Scholar
  4. Gogul Balakrishnan and Thomas Reps. Analyzing memory accesses in x86 executables. In Compiler Construction (CC), volume 2985 of LNCS, pages 5--23. Springer, 2004. DOI: 10.1007/b95956.Google ScholarGoogle ScholarCross RefCross Ref
  5. Miné, Monniaux, and Rival}BlanchetCousotEtAl02-NJ Bruno Blanchet, Patrick Cousot, Radhia Cousot, Jérôme Feret, Laurent Mauborgne, Antoine Miné, David Monniaux, and Xavier Rival. Design and implementation of a special-purpose static programDesign and implementation of a special-purpose static program analyzer for safety-critical real-time embedded software. In The Essence of Computation: Complexity, Analysis, Transformation, number 2566 in LNCS, pages 85--108. Springer, 2002. DOI: 10.1007/3-540-36377-7_5. Google ScholarGoogle Scholar
  6. Miné, Monniaux, and Rival}ASTREE_PLDI03 Bruno Blanchet, Patrick Cousot, Radhia Cousot, Jérôme Feret, Laurent Mauborgne, Antoine Miné, David Monniaux, and Xavier Rival. A static analyzer for large safety-critical software. In Programming Language Design and Implementation (PLDI), pages 196--207. ACM, 2003. DOI: 10.1145/781131.781153. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. François Bourdoncle. Sémantique des langages impératifs d'ordre supérieur et interprétation abstraite. PhD thesis, École polytechnique, Palaiseau, 1992.Google ScholarGoogle Scholar
  8. Aaron R. Bradley and Zohar Manna The Calculus of Computation: Decision Procedures with Applications to Verification Springer, October 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Paul Caspi, Daniel Pilaud, Nicolas Halbwachs, and John A. Plaice. LUSTRE: a declarative language for real-time programming. In Principles of Programming Languages (POPL), pages 178--188. ACM, 1987. DOI: 10.1145/41625.41641. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Paul Caspi, Adrian Curic, Aude Maignan, Christos Sofronis, Stavros Tripakis, and Peter Niebert. From Simulink to Scade/Lustre to TTA: a layered approach for distributed embedded applications. SIGPLAN notices, 38 (7): 153--162, 2003. DOI: 10.1145/780731.780754. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. CAV05. Computer Aided Verification (CAV), number 4590 in LNCS, 2005. Springer. DOI: 10.1007/b138445.Google ScholarGoogle Scholar
  12. Robert Clarisó and Jordi Cortadella. The octahedron abstract domain. In Static Analysis (SAS), number 3148 in LNCS, pages 312--327. Springer, 2004.Google ScholarGoogle Scholar
  13. Michael Colon, Sriram Sankaranarayanan, and Henny Sipma. Linear invariant generation using non-linear constraint solving. Linear invariant generation using non-linear constraint solving. pages 420--433. Springer, 2003.Google ScholarGoogle Scholar
  14. Patrick Cousot. Proving program invariance and termination by parametric abstraction, lagrangian relaxation and semidefinite programming. In VMCAI_2005, pages 1--24. DOI: 10.1007/b105073. Google ScholarGoogle ScholarCross RefCross Ref
  15. Patrick Cousot and Radhia Cousot. Abstract interpretation and application to logic programs. J. of Logic Programming, 13 (2-3): 103--179, 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Patrick Cousot and Radhia Cousot. Static determination of dynamic properties of programs. In Proceedings of the Second International Symposium on Programming, pages 106--130. Dunod, Paris, France, 1976.Google ScholarGoogle Scholar
  17. Patrick Cousot and Nicolas Halbwachs. Automatic discovery of linear restraints among variables of a program.In Principles of Programming Languages (POPL), pages 84--96.ACM, 1978. DOI: 10.1145/512760.512770. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Patrick Cousot, Radhia Cousot, Jérôme Feret, Laurent Mauborgne, Antoine Miné, David Monniaux, and Xavier Rival. The ASTRÉE analyzer. In Programming Languages and Systems (ESOP), number 3444 in LNCS, pages 21--30, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. ESOP07. Programming Languages and Systems (ESOP), volume 4421 of LNCS, 2007. DOI: 10.1007/978-3-540-71316-6.Google ScholarGoogle Scholar
  20. Jeanne Ferrante and Charles Rackoff. A decision procedure for the first order theory of real addition with SIAM Journal of Computation, 4 (1): 69--76, March 1975.Google ScholarGoogle Scholar
  21. Michael J. Fischer and Michael O. Rabin. Super-exponential complexity of Presburger arithmetic. In Complexity of Computation, number 7 in SIAM-AMS proceedings, pages 27--42. American Mathematical Society, 1974.Google ScholarGoogle Scholar
  22. Stéphane Gaubert, Éric Goubault, Ankur Taly, and Sarah Zennou. Static analysis by policy iteration on relational domains. In ESOP_2007, pages 237--252. DOI: 10.1007/978-3-540-71316-6. Google ScholarGoogle Scholar
  23. Thomas Gawlitza and Helmut Seidl. Precise fixpoint computation through strategy iteration. In ESOP_2007, pages 300--315. DOI: 10.1007/978-3-540-71316-6_21. Google ScholarGoogle Scholar
  24. Laure Gonnord and Nicolas Halbwachs. Combining widening and acceleration in linear relation analysis. In Static Analysis (SAS), volume 4134 of LNCS, pages 144--160. Springer, 2006. DOI: 10.1007/11823230_10. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Denis Gopan and Thomas W. Reps. Lookahead widening. In Computer Aided Verification (CAV), volume 4144 of LNCS, pages 452--466. Springer, 2006. DOI: 10.1007/11817963_41. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Denis Gopan and Thomas W. Reps. Low-level library analysis and summarization. In Computer Aided Verification (CAV), volume 4590 of LNCS, pages 68--81. Springer, 2007. DOI: 10.1007/978-3-540-73368-3_10. Google ScholarGoogle ScholarCross RefCross Ref
  27. Venkatesan}Gulwani_PLDI08 Sumit Gulwani, Saurabh Srivastava, and Ramarathnam Venkatesan. Program analysis as constraint solving. In Programming Language Design and Implementation (PLDI). ACM, 2008. DOI: 10.1145/1375581.1375616. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Nicolas Halbwachs. Détermination automatique de relations linéaires vérifiées par les variables d'un programme. PhD thesis, Université scientifique et médicale de Grenoble, 1979.Google ScholarGoogle Scholar
  29. IEEE standard for Binary floating-point arithmetic for microprocessor systems. IEEE, 1985. ANSI/IEEE Std 754--1985.Google ScholarGoogle Scholar
  30. Bertrand Jeannet. Dynamic partitioning in linear relation analysis. application to the verification of reactive systems. Formal Methods in System Design, 23 (1): 5--37, July 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Deepak Kapur. Automatically generating loop invariants using quantifier elimination. In ACA (Applications of Computer Algebra), 2004.Google ScholarGoogle Scholar
  32. Akash Lal, Gogul Balakrishnan, and Thomas Reps. Extended weighted pushdown systems. In CAV_2005, pages 343--357. DOI: 10.1007/11817963_32. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Francesco Logozzo and Manuel Fähndrich. On the relative completeness of bytecode analysis versus source code analysis. In Compiler Construction (CC), volume 4959 of LNCS, pages 197--212. Springer, 2008. DOI: 10.1007/978-3-540-78791-4_14. Google ScholarGoogle Scholar
  34. Zohar Manna and John McCarthy. Properties of programs and partial function logic. In Machine Intelligence, 5, pages 27--38. Edinburgh UniversityGoogle ScholarGoogle Scholar
  35. Zohar Manna and Amir Pnueli. Formalization of properties of functional programs.J. ACM, 17 (3): 555--569, 1970. DOI: 10.1145/321592.321606. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Ferdinand}DBLP:conf/cc/MartinAWF98 Florian Martin, Martin Alt, Reinhard Wilhelm, and Christian Ferdinand. Analysis of loops. In Compiler Construction (CC), volume 1383 of LNCS, pages 80--94. Springer, 1998.Google ScholarGoogle ScholarCross RefCross Ref
  37. Antoine Miné. The octagon abstract domain. In Reverse Engineering (WCRE), pages 310--319. IEEE, 2001. DOI: 10.1109/WCRE.2001.957836. Google ScholarGoogle ScholarCross RefCross Ref
  38. Relational abstract domains for the detection of floating-point run-time errors. In Programming Languages and Systems (ESOP), volume 2986 of LNCS, pages 3--17. Springer, 2004.Google ScholarGoogle ScholarCross RefCross Ref
  39. David Monniaux. Compositional analysis of floating-point linear numerical filters. In CAV_2005, pages 199--212. DOI: 10.1007/b138445. Google ScholarGoogle ScholarCross RefCross Ref
  40. David Monniaux. A quantifier elimination algorithm for linear real arithmetic. In LPAR (Logic for Programming, Artificial Intelligence, and Reasoning), LNCS. Springer, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. David Monniaux. Optimal abstraction on real-valued programs. In Static analysis (SAS), number 4634 in LNCS, pages 104--120. Springer, 2007. DOI: 10.1007/978-3-540-74061-2_7. Google ScholarGoogle Scholar
  42. David Monniaux. The pitfalls of verifying floating-point computations. ACM Transactions on programming languages and systems, ACM Transactions on programming languages and systems, 30 (3): 12, 2008.30 DOI: 10.1145/1353445.1353446. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. George C. Necula, Scott McPeak, Shree P. Rahul, and Westley Weimer. CIL: Intermediate language and tools for analysis and transformation of C programs. In Compiler Construction (CC), volume 2304 of LNCS, pages 209--265. Springer, 2002. DOI: 10.1007/3-540-45937-5_16. Google ScholarGoogle Scholar
  44. Radu Rugina and Martin Rinard. Symbolic bounds analysis for pointers, array indices, and accessed memory regions. ACM Trans. on Programming Languages and Systems (TOPLAS), 27 (2): 185--235, 2005. DOI: 10.1145/349299.349325. Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. Sriram Sankaranarayanan, Henny Sipma, and Zohar Manna. Constraint-based linear-relations analysis. In SAS, number 3148 in LNCS, pages 53--68. Springer, 2004.Google ScholarGoogle Scholar
  46. Sriram Sankaranarayanan, Henny Sipma, and Zohar Manna. Scalable analysis of linear systems using mathematical programming. In VMCAI_2005, pages 21--47. DOI: 10.1007/b105073. Google ScholarGoogle ScholarCross RefCross Ref
  47. Helmut Seidl, Andrea Flexeder, and Michael Petter. Interprocedurally analysing linear inequality relations. In ESOP_2007, pages 284--299. DOI: 10.1007/978-3-540-71316-6_20. Google ScholarGoogle Scholar
  48. Micha Sharir and Amir Pnueli. Two approaches to inter-procedural data-flow analysis. In Program Flow Analysis: Theory and Application. Prentice-Hall, 1981.Google ScholarGoogle Scholar
  49. VMCAI05. Verification, Model Checking and Abstract Interpretation (VMCAI), number 3385 in LNCS, 2005. Springer. DOI: 10.1007/b105073.Google ScholarGoogle Scholar

Index Terms

  1. Automatic modular abstractions for linear constraints

                Recommendations

                Comments

                Login options

                Check if you have access through your login credentials or your institution to get full access on this article.

                Sign in
                • Published in

                  cover image ACM Conferences
                  POPL '09: Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
                  January 2009
                  464 pages
                  ISBN:9781605583792
                  DOI:10.1145/1480881
                  • cover image ACM SIGPLAN Notices
                    ACM SIGPLAN Notices  Volume 44, Issue 1
                    POPL '09
                    January 2009
                    453 pages
                    ISSN:0362-1340
                    EISSN:1558-1160
                    DOI:10.1145/1594834
                    Issue’s Table of Contents

                  Copyright © 2009 ACM

                  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]

                  Publisher

                  Association for Computing Machinery

                  New York, NY, United States

                  Publication History

                  • Published: 21 January 2009

                  Permissions

                  Request permissions about this article.

                  Request Permissions

                  Check for updates

                  Qualifiers

                  • research-article

                  Acceptance Rates

                  Overall Acceptance Rate824of4,130submissions,20%

                  Upcoming Conference

                  POPL '25

                PDF Format

                View or Download as a PDF file.

                PDF

                eReader

                View online with eReader.

                eReader