Certifying floating-point implementations using Gappa
Florent De Dinechin (LIP), Christoph Quirin Lauter (LIP), Guillaume, Melquiond (LIP)

TL;DR
This paper presents the use of the Gappa proof assistant to certify floating-point programs, automating error bounds and proofs with a format close to C code, thus improving confidence and ease of verification.
Contribution
It introduces Gappa as a practical tool for certifying floating-point code, enabling incremental proofs and formal verification with minimal specialized knowledge.
Findings
Gappa automates error evaluation and propagation.
It can generate formal proofs checked by Coq.
Successfully applied to certify a correctly rounded elementary function.
Abstract
High confidence in floating-point programs requires proving numerical properties of final and intermediate values. One may need to guarantee that a value stays within some range, or that the error relative to some ideal value is well bounded. Such work may require several lines of proof for each line of code, and will usually be broken by the smallest change to the code (e.g. for maintenance or optimization purpose). Certifying these programs by hand is therefore very tedious and error-prone. This article discusses the use of the Gappa proof assistant in this context. Gappa has two main advantages over previous approaches: Its input format is very close to the actual C code to validate, and it automates error evaluation and propagation using interval arithmetic. Besides, it can be used to incrementally prove complex mathematical properties pertaining to the C code. Yet it does not…
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 · Digital Filter Design and Implementation · Low-power high-performance VLSI design
