Auto-active Verification of Floating-point Programs via Nonlinear Real Provers

07/02/2022
by   Junaid Rasheed, et al.
0

We give a process for verifying numerical programs against their functional specifications. Our implementation is capable of automatically verifying programs against tight error bounds featuring common elementary functions. We demonstrate and evaluate our implementation on several examples, yielding the first fully verified SPARK implementations of the sine and square root functions. The process integrates existing tools using a series of transformations and derivations, building on the proving process in SPARK where Why3 produces Verification Conditions (VCs) and tools such as SMT solvers attempt to verify them. We add steps aimed specifically at VCs that contain inequalities with both floating-point operations and exact real functions. PropaFP is our open-source implementation of these steps. The steps include symbolic simplifications, deriving bounds via interval arithmetic, and safely replacing floating-point operations with exact operations, utilizing tools such as FPTaylor or Gappa to bound the compound rounding errors of expressions. Finally, the VCs are passed to provers such as dReal, MetiTarski or LPPaver which attempt to complete the proof or suggest possible counter-examples.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
04/27/2020

An Efficient Floating-Point Bit-Blasting API for Verifying C Programs

We describe a new SMT bit-blasting API for floating-points and evaluate ...
research
03/30/2021

How to hunt wild constants

There are now several comprehensive web applications, stand-alone comput...
research
02/28/2020

Criteria for the numerical constant recognition

The need for recognition/approximation of functions in terms of elementa...
research
02/27/2020

Bringing freedom in variable choice when searching counter-examples in floating point programs

Program verification techniques typically focus on finding counter-examp...
research
03/26/2020

Benchmarking Software Model Checkers on Automotive Code

This paper reports on our experiences with verifying automotive C code b...
research
05/11/2021

Proving LTL Properties of Bitvector Programs and Decompiled Binaries (Extended)

There is increasing interest in applying verification tools to programs ...
research
03/24/2020

Computer-Assisted Verification of Four Interval Arithmetic Operators

Interval arithmetic libraries provide the four elementary arithmetic ope...

Please sign up or login with your details

Forgot password? Click here to reset