skip to main content
research-article
Open Access
Artifacts Evaluated & Functional

A practical construction for decomposing numerical abstract domains

Published:27 December 2017Publication History
Skip Abstract Section

Abstract

Numerical abstract domains such as Polyhedra, Octahedron, Octagon, Interval, and others are an essential component of static program analysis. The choice of domain offers a performance/precision tradeoff ranging from cheap and imprecise (Interval) to expensive and precise (Polyhedra). Recently, significant speedups were achieved for Octagon and Polyhedra by manually decomposing their transformers to work with the Cartesian product of projections associated with partitions of the variable set. While practically useful, this manual process is time consuming, error-prone, and has to be applied from scratch for every domain.

In this paper, we present a generic approach for decomposing the transformers of sub-polyhedra domains along with conditions for checking whether the decomposed transformers lose precision with respect to the original transformers. These conditions are satisfied by most practical transformers, thus our approach is suitable for increasing the performance of these transformers without compromising their precision. Furthermore, our approach is ``black box:'' it does not require changes to the internals of the original non-decomposed transformers or additional manual effort per domain.

We implemented our approach and applied it to the domains of Zones, Octagon, and Polyhedra. We then compared the performance of the decomposed transformers obtained with our generic method versus the state of the art: the (non-decomposed) PPL for Polyhedra and the much faster ELINA (which uses manual decomposition) for Polyhedra and Octagon. Against ELINA we demonstrate finer partitions and an associated speedup of about 2x on average. Our results indicate that the general construction presented in this work is a viable method for improving the performance of sub-polyhedra domains. It enables designers of abstract domains to benefit from decomposition without re-writing all of their transformers from scratch as required by prior work.

Skip Supplemental Material Section

Supplemental Material

numericalabstractdomains.webm

webm

84.4 MB

References

  1. ELINA: ETH Library for Numerical Analysis. http://elina.ethz.ch.Google ScholarGoogle Scholar
  2. R. Bagnara, P. M. Hill, and E. Zaffanella. The Parma polyhedra library: Toward a complete set of numerical abstractions for the analysis and verification of hardware and software systems. Sci. Comput. Program., 72(1-2):3–21, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. D. Beyer. Reliable and reproducible competition results with benchexec and witnesses (report on sv-comp 2016). In Proc. Tools and Algorithms for the Construction and Analysis of Systems (TACAS), pages 887–904, 2016.Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. B. Blanchet, P. Cousot, R. Cousot, J. Feret, L. Mauborgne, A. Miné, D. Monniaux, and X. Rival. A static analyzer for large safety-critical software. In Proc. Programming Language Design and Implementation (PLDI), pages 196–207, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. N. Chernikova. Algorithm for discovering the set of all the solutions of a linear programming problem. USSR Computational Mathematics and Mathematical Physics, 8(6):282 – 293, 1968. Google ScholarGoogle ScholarCross RefCross Ref
  6. R. ClarisÃş and J. Cortadella. The octahedron abstract domain. Science of Computer Programming, 64:115 – 139, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. P. Cousot and R. Cousot. Static determination of dynamic properties of programs. In Proc. International Symposium on Programming, pages 106–130, 1976.Google ScholarGoogle Scholar
  8. P. Cousot and N. Halbwachs. Automatic discovery of linear restraints among variables of a program. In Proc. Principles of Programming Languages (POPL), pages 84–96, 1978. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. R. Cousot, R. Bagnara, P. M. Hill, E. Ricci, and E. Zaffanella. Precise widening operators for convex polyhedra. Science of Computer Programming, 58(1):28 – 56, 2005.Google ScholarGoogle Scholar
  10. P. Ferrara, F. Logozzo, and M. Fähndrich. Safer unsafe code for .net. SIGPLAN Not., 43:329–346, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. G. Gange, J. A. Navas, P. Schachte, H. Søndergaard, and P. J. Stuckey. Exploiting sparsity in difference-bound matrices. In Proc. Static Analysis Symposium (SAS), pages 189–211, 2016. Google ScholarGoogle ScholarCross RefCross Ref
  12. R. Giacobazzi, F. Ranzato, and F. Scozzari. Making abstract interpretations complete. J. ACM, 47(2):361–416, Mar. 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. A. Gurfinkel, T. Kahsai, A. Komuravelli, and J. A. Navas. The seahorn verification framework. In Proc. Computer Aided Verification (CAV), pages 343–361, 2015. Google ScholarGoogle ScholarCross RefCross Ref
  14. N. Halbwachs, D. Merchat, and C. Parent-Vigouroux. Cartesian factoring of polyhedra in linear relation analysis. In Proc. Static Analysis Symposium (SAS), pages 355–365, 2003. Google ScholarGoogle ScholarCross RefCross Ref
  15. N. Halbwachs, D. Merchat, and L. Gonnord. Some ways to reduce the space dimension in polyhedra computations. Formal Methods in System Design (FMSD), 29(1):79–95, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. K. Heo, H. Oh, and H. Yang. Learning a variable-clustering strategy for octagon from labeled data generated by a static analysis. In Proc. Static Analysis Symposium (SAS), pages 237–256, 2016. Google ScholarGoogle ScholarCross RefCross Ref
  17. J. M. Howe and A. King. Logahedra: A new weakly relational domain. In Proc. Automated Technology for Verification and Analysis (ATVA), pages 306–320, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. J.-H. Jourdan. Sparsity preserving algorithms for octagons. Electronic Notes in Theoretical Computer Science, 331:57 – 70, 2017. Workshop on Numerical and Symbolic Abstract Domains (NSAD). Google ScholarGoogle ScholarCross RefCross Ref
  19. M. Karr. Affine relationships among variables of a program. Acta Informatica, 6:133–151, 1976. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. F. Logozzo and M. Fähndrich. Pentagons: A weakly relational abstract domain for the efficient validation of array accesses. In Proc. Symposium on Applied Computing (SCP), pages 184–188, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. J. louis Imbert. Fourier’s elimination: Which to choose? Principles and Practice of Constraint Programming, pages 117–129, 1993.Google ScholarGoogle Scholar
  22. A. Maréchal and M. Périn. Efficient elimination of redundancies in polyhedra by raytracing. In Proc. Verification, Model Checking, and Abstract Interpretation, (VMCAI), pages 367–385, 2017. Google ScholarGoogle ScholarCross RefCross Ref
  23. A. Maréchal, D. Monniaux, and M. Périn. Scalable minimizing-operators on polyhedra via parametric linear programming. In Proc. Static Analysis Symposium (SAS), pages 212–231, 2017. Google ScholarGoogle ScholarCross RefCross Ref
  24. A. Miné. A few graph-based relational numerical abstract domains. In Proc. Static Analysis Symposium (SAS), pages 117–132, 2002. Google ScholarGoogle ScholarCross RefCross Ref
  25. A. Miné. The octagon abstract domain. Higher Order and Symbolic Computation, 19(1):31–100, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. A. Miné, E. RodrÃŋguez-Carbonell, and A. Simon. Speeding up polyhedral analysis by identifying common constraints. Electronic Notes in Theoretical Computer Science, 267(1):127 – 138, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. F. Ranzato and F. Tapparo. Strong preservation as completeness in abstract interpretation. In Proc. European Symposium on Programming (ESOP), pages 18–32, 2004. Google ScholarGoogle ScholarCross RefCross Ref
  28. A. Simon and A. King. Exploiting sparsity in polyhedral analysis. In Proc. Static Analysis Symposium (SAS), pages 336–351, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. A. Simon and A. King. The two variable per inequality abstract domain. Higher Order Symbolic Computation (HOSC), 23: 87–143, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. G. Singh, M. Püschel, and M. Vechev. Making numerical program analysis fast. In Proc. Programming Language Design and Implementation (PLDI), pages 303–313, 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. G. Singh, M. Püschel, and M. Vechev. Fast polyhedra abstract domain. In Proc. Principles of Programming Languages (POPL), pages 46–59, 2017. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. A. Venet and G. Brat. Precise and efficient static array bound checking for large embedded C programs. In Proc. Programming Language Design and Implementation (PLDI), pages 231–242, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. H. L. Verge. A note on Chernikova’s algorithm. Technical report, 1994.Google ScholarGoogle Scholar

Index Terms

  1. A practical construction for decomposing numerical abstract domains

        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

        Full Access

        • Published in

          cover image Proceedings of the ACM on Programming Languages
          Proceedings of the ACM on Programming Languages  Volume 2, Issue POPL
          January 2018
          1961 pages
          EISSN:2475-1421
          DOI:10.1145/3177123
          Issue’s Table of Contents

          Copyright © 2017 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: 27 December 2017
          Published in pacmpl Volume 2, Issue POPL

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

          • research-article

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader