Formal Verification of a Java']Java Component Using the RESOLVE Framework

被引:0
作者
Rumreich, Laine [1 ]
Sivilotti, Paolo A. G. [1 ]
机构
[1] Ohio State Univ, Columbus, OH 43210 USA
来源
FRONTIERS OF COMBINING SYSTEMS (FROCOS 2021) | 2021年 / 12941卷
关键词
Formal verification; Value semantics; Modularity; Binary Decision Diagram; CHECKING;
D O I
10.1007/978-3-030-86205-3_16
中图分类号
TP18 [人工智能理论];
学科分类号
081104 ; 0812 ; 0835 ; 1405 ;
摘要
A Binary Decision Diagram (BDD) is an efficient representation of a Boolean formula with many applications in model checking, SAT solving, networking, and artificial intelligence. This paper uses the RESOLVE specification and reasoning framework to formally verify the functional correctness of a Java implementation of a BDD component. RESOLVE uses rich mathematical abstractions and clean value-based semantics for modular reasoning of assertive code. Java, on the other hand, includes many language features that are inconsistent with this notion of clean semantics and modular reasoning. Aliases, in particular, are easily created via assignment, parameter passing, and iterators, so reference-based semantics and points-to analysis are usually necessary when reasoning about Java code. This paper demonstrates the combination of these two paradigms. The implementation uses Java, but in a disciplined way and layered on a component catalog expressly designed to support modular reasoning. The assertional aspects of the code use RESOLVE, but are tailored to Java syntax and language constructs. In the development of the correctness proof for the BDD component, several errors in the original Java implementation were discovered and corrected. These errors were present despite the implementation passing an extensive test suite, exhibiting the value of the proof. The verification also exposed a limitation in the more general component design pattern related to unreachable code.
引用
收藏
页码:287 / 305
页数:19
相关论文
共 40 条
[1]   Alias annotations for program understanding [J].
Aldrich, J ;
Kostadinov, V ;
Chambers, C .
ACM SIGPLAN NOTICES, 2002, 37 (11) :311-330
[2]  
[Anonymous], 1994, SIGSOFT Software Engineering Notes, V19, P21, DOI 10.1145/190679.190681
[3]  
Asim S., 2018, THESIS OHIO STATE U
[4]  
Asim Saad F., 2018, ACM SIGSOFT Software Engineering Notes, V43, DOI 10.1145/3229783.3229801
[5]  
AZIZ A, 1994, ACM IEEE D, P454
[6]   Specification and Verification: The Spec# Experience [J].
Barnett, Mike ;
Faehndrich, Manuel ;
Leino, K. Rustan M. ;
Mueller, Peter ;
Schulte, Wolfram ;
Venter, Herman .
COMMUNICATIONS OF THE ACM, 2011, 54 (06) :81-91
[7]   Advances in Automatic Software Verification: SV-COMP 2020 [J].
Beyer, Dirk .
TOOLS AND ALGORITHMS FOR THE CONSTRUCTION AND ANALYSIS OF SYSTEMS, PT II, TACAS 2020, 2020, 12079 :347-367
[8]  
Brookes S, 2004, LECT NOTES COMPUT SC, V3170, P16
[9]   SYMBOLIC MODEL CHECKING - 1020 STATES AND BEYOND [J].
BURCH, JR ;
CLARKE, EM ;
MCMILLAN, KL ;
DILL, DL ;
HWANG, LJ .
INFORMATION AND COMPUTATION, 1992, 98 (02) :142-170
[10]  
Chaki S., 2018, BDD-Based Symbolic Model Checking, P219