Deductive Verification of Floating-Point Java Programs in KeY
Paper in proceeding, 2021

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 Num-ber’ (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 functional properties for realistic benchmarks.

Floating-point Arithmetic

Transcendental Functions

Deductive Verification

Author

Rosa Abbasi

Max Planck Society

Jonas Schiffl

Karlsruhe Institute of Technology (KIT)

Eva Darulova

Max Planck Society

M. Ulbrich

Karlsruhe Institute of Technology (KIT)

Wolfgang Ahrendt

Chalmers, Computer Science and Engineering (Chalmers)

Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)

03029743 (ISSN) 16113349 (eISSN)

Vol. 12652 LNCS 242-261
9783030720124 (ISBN)

27th International Conference on Tools and Algorithms for the Construction and Analysis of Systems, TACAS 2021 Held as Part of 24th European Joint Conferences on Theory and Practice of Software, ETAPS 2021
Virtual, Online, ,

Subject Categories

Embedded Systems

Computer Science

Computer Systems

DOI

10.1007/978-3-030-72013-1_13

More information

Latest update

8/15/2022