Combining rule- and SMT-based reasoning for verifying floating-point Java programs in KeY

被引:0
|
作者
Rosa Abbasi
Jonas Schiffl
Eva Darulova
Mattias Ulbrich
Wolfgang Ahrendt
机构
[1] MPI-SWS,
[2] Kaiserslautern and Saarbrücken,undefined
[3] Karlsruhe Institute of Technology,undefined
[4] Uppsala University,undefined
[5] Chalmers University of Technology,undefined
关键词
Deductive verification; Floating-point arithmetic; Transcendental functions;
D O I
暂无
中图分类号
学科分类号
摘要
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 article, we present the first floating-point support in a deductive verification tool for the Java programming language. Our support in the KeY verifier handles floating-point arithmetics, transcendental functions, and potentially rounding-type casts. We achieve this with a combination of delegation to external SMT solvers on the one hand, and KeY-internal, rule-based reasoning on the other hand, exploiting the complementary strengths of both worlds. 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 correct programs—as well as functional properties, for realistic benchmarks.
引用
收藏
页码:185 / 204
页数:19
相关论文
共 9 条
  • [1] Combining rule- and SMT-based reasoning for verifying floating-point Java']Java programs in KeY
    Abbasi, Rosa
    Schiffl, Jonas
    Darulova, Eva
    Ulbrich, Mattias
    Ahrendt, Wolfgang
    [J]. INTERNATIONAL JOURNAL ON SOFTWARE TOOLS FOR TECHNOLOGY TRANSFER, 2023, 25 (02) : 185 - 204
  • [2] Verifying (In-)Stability in Floating-point Programs by Increasing Precision, using SMT Solving
    Paganelli, Gabriele
    Ahrendt, Wolfgang
    [J]. 2013 15TH INTERNATIONAL SYMPOSIUM ON SYMBOLIC AND NUMERIC ALGORITHMS FOR SCIENTIFIC COMPUTING (SYNASC 2013), 2014, : 209 - 216
  • [3] Combining Coq and Gappa for Certifying Floating-Point Programs
    Boldo, Sylvie
    Filliatre, Jean-Christophe
    Melquiond, Guillaume
    [J]. INTELLIGENT COMPUTER MATHEMATICS, PROCEEDINGS, 2009, 5625 : 59 - 74
  • [4] Verifying floating-point programs with constraint programming and abstract interpretation techniques
    Olivier Ponsini
    Claude Michel
    Michel Rueher
    [J]. Automated Software Engineering, 2016, 23 : 191 - 217
  • [5] Verifying floating-point programs with constraint programming and abstract interpretation techniques
    Ponsini, Olivier
    Michel, Claude
    Rueher, Michel
    [J]. AUTOMATED SOFTWARE ENGINEERING, 2016, 23 (02) : 191 - 217
  • [6] A Unified Coq Framework for Verifying C Programs with Floating-Point Computations
    Ramananandro, Tahina
    Mountcastle, Paul
    Meister, Benoit
    Lethin, Richard
    [J]. PROCEEDINGS OF THE 5TH ACM SIGPLAN CONFERENCE ON CERTIFIED PROGRAMS AND PROOFS (CPP'16), 2016, : 15 - 26
  • [7] A Three-Tier Strategy for Reasoning About Floating-Point Numbers in SMT
    Conchon, Sylvain
    Iguernlala, Mohamed
    Ji, Kailiang
    Melquiond, Guillaume
    Fumex, Clement
    [J]. COMPUTER AIDED VERIFICATION (CAV 2017), PT II, 2017, 10427 : 419 - 435
  • [8] Accurate ICP-based Floating-Point Reasoning
    Scheibler, Karsten
    Neubauer, Felix
    Mahdi, Ahmed
    Fraenzle, Martin
    Teige, Tino
    Bienmueller, Tom
    Fehrer, Detlef
    Becker, Bernd
    [J]. PROCEEDINGS OF THE 2016 16TH CONFERENCE ON FORMAL METHODS IN COMPUTER-AIDED DESIGN (FMCAD 2016), 2016, : 177 - 184
  • [9] Interpolation-Based Verification of Floating-Point Programs with Abstract CDCL
    Brain, Martin
    D'Silva, Vijay
    Griggio, Alberto
    Haller, Leopold
    Kroening, Daniel
    [J]. STATIC ANALYSIS, SAS 2013, 2013, 7935 : 412 - 432