Automatic generation and verification of test-stable floating-point code
Laura Titolo, Mariano Moscato, Cesar A. Mu\~noz

TL;DR
This paper introduces a toolchain that automatically generates and verifies floating-point programs to ensure test stability, preventing divergence caused by round-off errors in safety-critical numerical applications.
Contribution
It presents a novel integrated approach combining PVS, Frama-C, and PRECiSA to automatically produce and verify test-stable floating-point code from real arithmetic specifications.
Findings
Successfully detects potential test instability in floating-point programs.
Automatically generates C code with ACSL contracts linked to real arithmetic.
Verifies correctness of floating-point code ensuring it follows the real-valued specification.
Abstract
Test instability in a floating-point program occurs when the control flow of the program diverges from its ideal execution assuming real arithmetic. This phenomenon is caused by the presence of round-off errors that affect the evaluation of arithmetic expressions occurring in conditional statements. Unstable tests may lead to significant errors in safety-critical applications that depend on numerical computations. Writing programs that take into consideration test instability is a difficult task that requires expertise on finite precision computations and rounding errors. This paper presents a toolchain to automatically generate and verify a provably correct test-stable floating-point program from a functional specification in real arithmetic. The input is a real-valued program written in the Prototype Verification System (PVS) specification language and the output is a transformed…
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.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsNumerical Methods and Algorithms · Parallel Computing and Optimization Techniques · Logic, programming, and type systems
