Computing Invariants with Transformers: Experimental Scalability and Accuracy

Abstract Using abstract interpretation, invariants are usually obtained by solving iteratively a system of equations linking preconditions according to program statements. However, it is also possible to abstract first the statements as transformers, and then propagate the preconditions using the transformers. The second approach is modular because procedures and loops can be abstracted once and for all, avoiding an iterative resolution over the call graph and all the control flow graphs. However, the transformer approach based on polyhedral abstract domains encurs two penalties: some invariant accuracy may be lost when computing transformers, and the execution time may increase exponentially because the dimension of a transformer is twice the dimension of a precondition. The purposes of this article are 1) to measure the benefits of the modular approach and its drawbacks in terms of execution time and accuracy using significant examples and a newly developed benchmark for loop invariant analysis, ALICe , 2) to present a new technique designed to reduce the accuracy loss when computing transformers, 3) to evaluate experimentally the accuracy gains this new technique and other previously discussed ones provide with ALICe test cases and 4) to compare the executions times and accuracies of different tools, ASPIC , ISL , PAGAI and PIPS . Our results suggest that the transformer-based approach used in PIPS , once improved with transformer lists, is as accurate as the other tools when dealing with the ALICe benchmark. Its modularity nevertheless leads to shorter execution times when dealing with nested loops and procedure calls found in real applications.

[1]  Richard Gerber,et al.  Symbolic Model Checking of Infinite State Systems Using Presburger Arithmetic , 1997, CAV.

[2]  Damien Massé,et al.  Policy Iteration-Based Conditional Termination and Ranking Functions , 2014, VMCAI.

[3]  Sven Verdoolaege,et al.  isl: An Integer Set Library for the Polyhedral Model , 2010, ICMS.

[4]  Wlodzimierz Bielecki,et al.  Transitive Closure of a Union of Dependence Relations for Parameterized Perfectly-Nested Loops , 2013, PaCT.

[5]  Corinne Ancourt,et al.  A Modular Static Analysis Approach to Affine Loop Invariants Detection , 2010, Electron. Notes Theor. Comput. Sci..

[6]  G. Shipman,et al.  Omega Library , 2011, Encyclopedia of Parallel Computing.

[7]  Albert Cohen,et al.  Transitive Closures of Affine Integer Tuple Relations and Their Overapproximations , 2011, SAS.

[8]  Sumit Gulwani,et al.  The reachability-bound problem , 2010, PLDI '10.

[9]  Nicolas Halbwachs,et al.  Combining Widening and Acceleration in Linear Relation Analysis , 2006, SAS.

[10]  David Monniaux,et al.  PAGAI: A Path Sensitive Static Analyser , 2012, Electron. Notes Theor. Comput. Sci..

[11]  François Irigoin Interprocedural analyses for programming environments , 1993 .

[12]  Dounia Khaldi,et al.  Automatic Resource-Constrained Static Task Parallelization : A Generic Approach. (Parallélisation automatique et statique de tâches sous contraintes de ressources : une approche générique) , 2013 .

[13]  François Irigoin,et al.  ALICe: A Framework to Improve Affine Loop Invariant Computation , 2013 .

[14]  Vivien Maisonneuve Convex Invariant Refinement by Control Node Splitting: a Heuristic Approach , 2012, Electron. Notes Theor. Comput. Sci..

[15]  Isil Dillig,et al.  Inductive invariant generation via abductive inference , 2013, OOPSLA.

[16]  Pierre Jouvelot,et al.  Semantical interprocedural parallelization: an overview of the PIPS project , 1991 .

[17]  David G. Wonnacott Extending Scalar Optimizations for Arrays , 2000, LCPC.

[18]  Paul Feautrier,et al.  Accelerated Invariant Generation for C Programs with Aspic and C2fsm , 2010, Electron. Notes Theor. Comput. Sci..

[19]  Thomas A. Henzinger,et al.  SYNERGY: a new algorithm for property checking , 2006, SIGSOFT '06/FSE-14.

[20]  Zahira Ammarguellat,et al.  A Control-Flow Normalization Algorithm and Its Complexity , 1992, IEEE Trans. Software Eng..

[21]  Jack Dongarra,et al.  Environments and Tools for Parallel Scientific Computing , 1993 .

[22]  Alexander K. Petrenko,et al.  Electronic Notes in Theoretical Computer Science , 2009 .

[23]  François Irigoin,et al.  Efficient and effective array bound checking , 2005, TOPL.

[24]  D. K. Arvind,et al.  Languages and Compilers for Parallel Computing , 2014, Lecture Notes in Computer Science.

[25]  F. Bourdoncle Semantiques des langages imperatifs d'ordre superieur et interpretation abstraite , 1992 .

[26]  Wei-Ngan Chin,et al.  Inferring Disjunctive Postconditions , 2006, ASIAN.

[27]  Günther Blaschek The Omega Library , 1994 .

[28]  Nicolas Halbwachs,et al.  When the Decreasing Sequence Fails , 2012, SAS.