Auto-active Verification of Floating-point Programs via Nonlinear Real Provers
Junaid Rasheed, Michal Kone\v{c}n\'y

TL;DR
This paper presents an automated verification process for floating-point programs using nonlinear real provers, successfully verifying error bounds and functions like sine and square root in SPARK.
Contribution
It introduces a novel verification pipeline combining symbolic simplification, interval arithmetic, and nonlinear real provers, enabling fully verified floating-point functions in SPARK.
Findings
Verified sine and square root functions in SPARK
Achieved tight error bounds for numerical programs
Integrated multiple tools into a cohesive verification process
Abstract
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…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsNumerical Methods and Algorithms · Formal Methods in Verification · Logic, programming, and type systems
