Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
research-article
Open access

A practical construction for decomposing numerical abstract domains

Published: 27 December 2017 Publication History

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.

Supplementary Material

WEBM File (numericalabstractdomains.webm)

References

[1]
ELINA: ETH Library for Numerical Analysis. http://elina.ethz.ch.
[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.
[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.
[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.
[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.
[6]
R. ClarisÃş and J. Cortadella. The octahedron abstract domain. Science of Computer Programming, 64:115 – 139, 2007.
[7]
P. Cousot and R. Cousot. Static determination of dynamic properties of programs. In Proc. International Symposium on Programming, pages 106–130, 1976.
[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.
[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.
[10]
P. Ferrara, F. Logozzo, and M. Fähndrich. Safer unsafe code for .net. SIGPLAN Not., 43:329–346, 2008.
[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.
[12]
R. Giacobazzi, F. Ranzato, and F. Scozzari. Making abstract interpretations complete. J. ACM, 47(2):361–416, Mar. 2000.
[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.
[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.
[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.
[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.
[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.
[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).
[19]
M. Karr. Affine relationships among variables of a program. Acta Informatica, 6:133–151, 1976.
[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.
[21]
J. louis Imbert. Fourier’s elimination: Which to choose? Principles and Practice of Constraint Programming, pages 117–129, 1993.
[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.
[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.
[24]
A. Miné. A few graph-based relational numerical abstract domains. In Proc. Static Analysis Symposium (SAS), pages 117–132, 2002.
[25]
A. Miné. The octagon abstract domain. Higher Order and Symbolic Computation, 19(1):31–100, 2006.
[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.
[27]
F. Ranzato and F. Tapparo. Strong preservation as completeness in abstract interpretation. In Proc. European Symposium on Programming (ESOP), pages 18–32, 2004.
[28]
A. Simon and A. King. Exploiting sparsity in polyhedral analysis. In Proc. Static Analysis Symposium (SAS), pages 336–351, 2005.
[29]
A. Simon and A. King. The two variable per inequality abstract domain. Higher Order Symbolic Computation (HOSC), 23: 87–143, 2010.
[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.
[31]
G. Singh, M. Püschel, and M. Vechev. Fast polyhedra abstract domain. In Proc. Principles of Programming Languages (POPL), pages 46–59, 2017.
[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.
[33]
H. L. Verge. A note on Chernikova’s algorithm. Technical report, 1994.

Cited By

View all

Index Terms

  1. A practical construction for decomposing numerical abstract domains

        Recommendations

        Comments

        Information & Contributors

        Information

        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
        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 for this article.

        Check for updates

        Badges

        Author Tags

        1. Abstract Interpretation
        2. Domain Decomposition
        3. Numerical Domains
        4. Performance Optimization

        Qualifiers

        • Research-article

        Funding Sources

        Contributors

        Other Metrics

        Bibliometrics & Citations

        Bibliometrics

        Article Metrics

        • Downloads (Last 12 months)104
        • Downloads (Last 6 weeks)11
        Reflects downloads up to 04 Oct 2024

        Other Metrics

        Citations

        Cited By

        View all
        • (2024)Monotonicity and the Precision of Program AnalysisProceedings of the ACM on Programming Languages10.1145/36328978:POPL(1629-1662)Online publication date: 5-Jan-2024
        • (2023)Abstract Interpretation of Fixpoint Iterators with Applications to Neural NetworksProceedings of the ACM on Programming Languages10.1145/35912527:PLDI(786-810)Online publication date: 6-Jun-2023
        • (2023)Octagons RevisitedStatic Analysis10.1007/978-3-031-44245-2_21(485-507)Online publication date: 22-Oct-2023
        • (2023)Probabilistic Counterexample Guidance for Safer Reinforcement LearningQuantitative Evaluation of Systems10.1007/978-3-031-43835-6_22(311-328)Online publication date: 15-Sep-2023
        • (2023)Clustered Relational Thread-Modular Abstract Interpretation with Local TracesProgramming Languages and Systems10.1007/978-3-031-30044-8_2(28-58)Online publication date: 22-Apr-2023
        • (2022)A general construction for abstract interpretation of higher-order automatic differentiationProceedings of the ACM on Programming Languages10.1145/35633246:OOPSLA2(1007-1035)Online publication date: 31-Oct-2022
        • (2022)Neural termination analysisProceedings of the 30th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3540250.3549120(633-645)Online publication date: 7-Nov-2022
        • (2022)Towards practical robustness analysis for DNNs based on PAC-model learningProceedings of the 44th International Conference on Software Engineering10.1145/3510003.3510143(2189-2201)Online publication date: 21-May-2022
        • (2022)Learning probabilistic models for static analysis alarmsProceedings of the 44th International Conference on Software Engineering10.1145/3510003.3510098(1282-1293)Online publication date: 21-May-2022
        • (2022)Automated Generation of Consistent Graph Models With Multiplicity ReasoningIEEE Transactions on Software Engineering10.1109/TSE.2020.302573248:5(1610-1629)Online publication date: 1-May-2022
        • Show More Cited By

        View Options

        View options

        PDF

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader

        Get Access

        Login options

        Full Access

        Media

        Figures

        Other

        Tables

        Share

        Share

        Share this Publication link

        Share on social media