Analyzing Math Library Functions via Summarization

Math library functions are widely used in embedded software to implement the complex computations. However, it is difficult for most abstract domains to analyze non-linear math library functions. This paper presents an approach to analyze commonly used math functions based on interval summarization, which abstracts a math library function to an interval based on its mathematical features. Furthermore, this paper studies soundness of interval summarization strategy based on floating-point number, and proposes a sound floating-point method to implement this strategy. Finally, we present a developed tool prototype named CFPAI for analyzing floating-point C programs based on abstract interpretation framework, and use sound floating-point interval summarization strategy to deal with the math library functions in the floating-point benchmarks. The experimental results show that the interval summarization strategy could reduce the number of false positives effectively for programs with math library functions.

[1]  Antoine Miné,et al.  The octagon abstract domain , 2001, High. Order Symb. Comput..

[2]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[3]  Nicolas Halbwachs,et al.  Automatic discovery of linear restraints among variables of a program , 1978, POPL.

[4]  Guillaume Melquiond,et al.  Flocq: A Unified Library for Proving Floating-Point Algorithms in Coq , 2011, 2011 IEEE 20th Symposium on Computer Arithmetic.

[5]  Sebastian Hack,et al.  A dynamic program analysis to find floating-point accuracy problems , 2012, PLDI.

[6]  Bertrand Jeannet,et al.  The APRON library for Numerical Abstract Domains , .

[7]  Antoine Miné,et al.  Relational Abstract Domains for the Detection of Floating-Point Run-Time Errors , 2004, ESOP.

[8]  Xiangyu Zhang,et al.  On-the-fly detection of instability problems in floating-point program execution , 2013, OOPSLA.

[9]  P. Cochat,et al.  Et al , 2008, Archives de pediatrie : organe officiel de la Societe francaise de pediatrie.

[10]  George C. Necula,et al.  CIL: Intermediate Language and Tools for Analysis and Transformation of C Programs , 2002, CC.

[11]  Bertrand Jeannet,et al.  Apron: A Library of Numerical Abstract Domains for Static Analysis , 2009, CAV.

[12]  Patrick Cousot,et al.  Why does Astrée scale up? , 2009, Formal Methods Syst. Des..

[13]  Dirk Beyer,et al.  Competition on Software Verification - (SV-COMP) , 2012, TACAS.

[14]  Patrick Cousot,et al.  A static analyzer for large safety-critical software , 2003, PLDI '03.

[15]  Zhendong Su,et al.  Automatic detection of floating-point exceptions , 2013, POPL.