Deductive Verification of Floating-Point Java Programs in KeY
Rosa Abbasi Boroujeni, Jonas Schiffl, Eva Darulova, Mattias Ulbrich,, Wolfgang Ahrendt

TL;DR
This paper introduces the first support for floating-point reasoning in a Java deductive verification tool, KeY, enabling verification of properties involving floating-point arithmetic and special values.
Contribution
It extends KeY with floating-point decision procedures and axiomatization, allowing for more comprehensive verification of Java programs with floating-point computations.
Findings
Successfully proves absence of floating-point special values in benchmarks
Verifies functional properties of realistic Java programs involving floating-point
Demonstrates the effectiveness of SMT-based decision procedures in verification
Abstract
Deductive verification has been successful in verifying interesting properties of real-world programs. One notable gap is the limited support for floating-point reasoning. This is unfortunate, as floating-point arithmetic is particularly unintuitive to reason about due to rounding as well as the presence of the special values infinity and `Not a Number' (NaN). In this paper, we present the first floating-point support in a deductive verification tool for the Java programming language. Our support in the KeY verifier handles arithmetic via floating-point decision procedures inside SMT solvers and transcendental functions via axiomatization. We evaluate this integration on new benchmarks, and show that this approach is powerful enough to prove the absence of floating-point special values -- often a prerequisite for further reasoning about numerical computations -- as well as certain…
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 · Formal Methods in Verification · Logic, programming, and type systems
