Polynomial function intervals for floating-point software verification

The focus of our work is the verification of tight functional properties of numerical programs, such as showing that a floating-point implementation of Riemann integration computes a close approximation of the exact integral. Programmers and engineers writing such programs will benefit from verification tools that support an expressive specification language and that are highly automated. Our work provides a new method for verification of numerical software, supporting a substantially more expressive language for specifications than other publicly available automated tools. The additional expressivity in the specification language is provided by two constructs. First, the specification can feature inclusions between interval arithmetic expressions. Second, the integral operator from classical analysis can be used in the specifications, where the integration bounds can be arbitrary expressions over real variables. To support our claim of expressivity, we outline the verification of four example programs, including the integration example mentioned earlier. A key component of our method is an algorithm for proving numerical theorems. This algorithm is based on automatic polynomial approximation of non-linear real and real-interval functions defined by expressions. The PolyPaver tool is our implementation of the algorithm and its source code is publicly available. In this paper we report on experiments using PolyPaver that indicate that the additional expressivity does not come at a performance cost when comparing with other publicly available state-of-the-art provers. We also include a scalability study that explores the limits of PolyPaver in proving tight functional specifications of progressively larger randomly generated programs.

[1]  Peter Amey,et al.  Correctness By Construction: Better Can Also Be Cheaper , 2002 .

[2]  Nedialko S. Nedialkov,et al.  On Taylor Model Based Integration of ODEs , 2007, SIAM J. Numer. Anal..

[3]  Stefan Ratschan,et al.  Efficient solving of quantified inequality constraints over the real numbers , 2002, TOCL.

[4]  Eric Goubault,et al.  Static Analysis of Numerical Algorithms , 2006, SAS.

[5]  Randy Johnson,et al.  Engineering the Tokeneer Enclave Protection Software , 2006 .

[6]  Flemming Nielson,et al.  Principles of Program Analysis , 1999, Springer Berlin Heidelberg.

[7]  Guillaume Melquiond,et al.  Certification of bounds on expressions involving rounded operators , 2007, TOMS.

[8]  Marcel Toussaint Ada in Europe , 1994, Lecture Notes in Computer Science.

[9]  Guillaume Melquiond,et al.  Improving Real Analysis in Coq: A User-Friendly Approach to Integrals and Derivatives , 2012, CPP.

[10]  Nikolai Kosmatov,et al.  Frama-C: A software analysis perspective , 2015, Formal Aspects of Computing.

[11]  T. J. Rivlin The Chebyshev polynomials , 1974 .

[12]  Frédéric Benhamou,et al.  Algorithm 852: RealPaver: an interval solver using constraint satisfaction techniques , 2006, TOMS.

[13]  John G. P. Barnes,et al.  High Integrity Software - The SPARK Approach to Safety and Security , 2003 .

[14]  Milton Abramowitz,et al.  Handbook of Mathematical Functions with Formulas, Graphs, and Mathematical Tables , 1964 .

[15]  John Barnes The SPARK way to correctness is via abstraction , 2000, ALET.

[16]  E. Kaucher Interval Analysis in the Extended Interval Space IR , 1980 .

[17]  Lawrence C. Paulson,et al.  MetiTarski: An Automatic Theorem Prover for Real-Valued Special Functions , 2010, Journal of Automated Reasoning.

[18]  Jean-Christophe Filliâtre,et al.  Why3 - Where Programs Meet Provers , 2013, ESOP.

[19]  Eric Goubault,et al.  Static Analysis-Based Validation of Floating-Point Computations , 2003, Numerical Software with Result Verification.

[20]  Sylvie Boldo Floats & Ropes : a case study for formal numerical program veri cation ? , 2009 .

[21]  Patrick Cousot,et al.  The ASTREÉ Analyzer , 2005, ESOP.

[22]  Sylvie Boldo How to Compute the Area of a Triangle: A Formal Revisit , 2013, 2013 IEEE 21st Symposium on Computer Arithmetic.

[23]  Martin Berz,et al.  Efficient Control of the Dependency Problem Based on Taylor Model Methods , 1999, Reliab. Comput..

[24]  Eric Goubault,et al.  Towards an Industrial Use of FLUCTUAT on Safety-Critical Avionics Software , 2009, FMICS.

[25]  Guillaume Melquiond,et al.  Combining Coq and Gappa for Certifying Floating-Point Programs , 2009, Calculemus/MKM.

[26]  M. Abramowitz,et al.  Handbook of Mathematical Functions With Formulas, Graphs and Mathematical Tables (National Bureau of Standards Applied Mathematics Series No. 55) , 1965 .

[27]  Martin Fränzle,et al.  Efficient Solving of Large Non-linear Arithmetic Constraint Systems with Complex Boolean Structure , 2007, J. Satisf. Boolean Model. Comput..

[28]  Natarajan Shankar,et al.  PVS: A Prototype Verification System , 1992, CADE.

[29]  J. Dicapua Chebyshev Polynomials , 2019, Fibonacci and Lucas Numbers With Applications.

[30]  Arnold Neumaier,et al.  Taylor Forms—Use and Limits , 2003, Reliab. Comput..

[31]  A Davis Timothy,et al.  アルゴリズム907: 回路シミュレーション問題のための直接疎ソルバ,KLU , 2011 .

[32]  Michal Konečný,et al.  Polynomial Function Enclosures and Floating Point Software Verification ? , 2008 .

[33]  Sylvie Boldo,et al.  Floats and Ropes: A Case Study for Formal Numerical Program Verification , 2009, ICALP.