21 research outputs found
TOOLympics 2019: An Overview of Competitions in Formal Methods
Evaluation of scientific contributions can be done in many different ways. For the various research communities working on the verification of systems (software, hardware, or the underlying involved mechanisms), it is important to bring together the community and to compare the state of the art, in order to identify progress of and new challenges in the research area. Competitions are a suitable way to do that. The first verification competition was created in 1992 (SAT competition), shortly followed by the CASC competition in 1996. Since the year 2000, the number of dedicated verification competitions is steadily increasing. Many of these events now happen regularly, gathering researchers that would like to understand how well their research prototypes work in practice. Scientific results have to be reproducible, and powerful computers are becoming cheaper and cheaper, thus, these competitions are becoming an important means for advancing research in verification technology. TOOLympics 2019 is an event to celebrate the achievements of the various competitions, and to understand their commonalities and differences. This volume is dedicated to the presentation of the 16 competitions that joined TOOLympics as part of the celebration of the 25th anniversary of the TACAS conference
Formal Specification and Verification of JDK’s Identity Hash Map Implementation
Hash maps are a common and important data structure in efficient
algorithm implementations. Despite their wide-spread use, real-world
implementations are not regularly verified.
In this paper, we present the first case study of the \IHM class in
the Java JDK. We specified its behavior using the Java Modeling
Language (JML) and proved correctness for the main insertion and
lookup methods with \key, a semi-interactive theorem prover for
JML-annotated Java programs. Furthermore, we report how unit testing
and bounded model checking can be leveraged to find a suitable
specification more quickly. We also investigated where the
bottlenecks in the verification of hash maps lie for \key by
comparing required automatic proof effort for different hash map
implementations and draw conclusions for the choice of hash map
implementations regarding their verifiability
Structural Resolution with Co-inductive Loop Detection
A way to combine co-SLD style loop detection with structural resolution was
found and is introduced in this work, to extend structural resolution with
co-induction. In particular, we present the operational semantics, called
co-inductive structural resolution, of this novel combination and prove its
soundness with respect to the greatest complete Herbrand model.Comment: In Proceedings CoALP-Ty'16, arXiv:1709.0419
Advancing Deductive Program-Level Verification for Real-World Application: Lessons Learned from an Industrial Case Study
This thesis is concerned with practicability of deductive program verification on source code level. As part of a case study for the verification of real-world software, the specification and verification approach to show correctness of the virtualizing kernel PikeOS is presented. Issues within the verification process using current tools and methodologies are discussed and several aspects of these problems are then addressed in detail to improve the verification process and tool usability
Deductive Verification of Concurrent Programs and its Application to Secure Information Flow for Java
Formal verification of concurrent programs still poses a major challenge in computer science. Our approach is an adaptation of the modular rely/guarantee methodology in dynamic logic. Besides functional properties, we investigate language-based security. Our verification approach extends naturally to multi-threaded Java and we present an implementation in the KeY verification system. We propose natural extensions to JML regarding both confidentiality properties and multi-threaded programs