We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Software Verification with PDR: An Implementation of the State of the Art

00:00

Formal Metadata

Title
Software Verification with PDR: An Implementation of the State of the Art
Title of Series
Number of Parts
22
Author
Contributors
License
CC Attribution 3.0 Germany:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
Property-directed reachability (PDR) is a SAT/SMT-based reachability algorithm that incrementally constructs inductive invariants. After it was successfully applied to hardware model checking, several adaptations to software model checking have been proposed. We contribute a replicable and thorough comparative evaluation of the state of the art: We (1) implemented a standalone PDR algorithm and, as improvement, a PDR-based auxiliary-invariant generator for k -induction, and (2) performed an experimental study on the largest publicly available benchmark set of C verification tasks, in which we explore the effectiveness and efficiency of software verification with PDR. The main contribution of our work is to establish a reproducible baseline for ongoing research in the area by providing a well-engineered reference implementation and an experimental evaluation of the existing techniques.
Keywords
SoftwareFormal verificationImplementationInvariantentheorieObservational studyInvariant (mathematics)Inductive reasoningCategory of beingComputer hardwareBefehlsprozessorProof theoryTask (computing)Limit (category theory)Pairwise comparisonCompilation albumComputer programOpen sourceDisintegrationBenchmarkAlgorithmFormal verificationSet (mathematics)Observational studyInvariantentheorieCodeImplementationPresentation of a groupNumberSoftware frameworkElectronic design automationState transition systemComputer programSoftwareTable (information)Invariant (mathematics)QuantilePlotterCASE <Informatik>ResultantComponent-based software engineeringOpen sourceINTEGRALRepository (publishing)Slide ruleWeb pageOpen setDiagram
Transcript: English(auto-generated)
Welcome! This presentation provides an overview over an implementation of the state-of-the-art in software verification with PDR. PDR is short for Property Driven Reachability. This is a verification algorithm that is extremely successful in hardware verification.
And we implement an adoption to software verification. My name is Dirk Bayer. I am from LMU Munich in Germany and this is joint work with Matthias Dangel. The contributions of the paper are the following. We implemented an adoption of PDR to software verification in the open source verification framework CPA Checker.
This makes it possible to thoroughly study the performance of this approach on practical problems. We design and implement the invariant generator KI-PDR, which can be used as an invariant generator, for example in K-induction approaches.
We perform a large experimental study to compare several tools that use PDR as a component. We provide a set of example programs that illustrate the strength of PDR on code that is conveniently small to look at.
Next, I would like to mention some of our background. Our work is based on the seminal work of Aaron Bradley. This algorithm for verification of transition systems received a lot of attention and is extremely successful in hardware verification.
There are several adoptions to software, which are all unfortunately not available or not competitive. We implement and improve the adoption of PDR to software, which is called C-Tiger from TU-VNR.
Our approach for a full verification approach is to integrate PDR into K-induction, where PDR serves as an invariant generation engine. Finally, we compare our approach with the tools VVT and C-Horn, for which the results can be reproduced.
This presentation is too short to explain how PDR works, but there are nice explanations available, for example in our paper or in other presentations. I would like to report about our evaluation. First, we want to know whether our implementation works and is efficient.
We compare our implementation of C-Tiger with the Vienna implementation. The quantile plot shows that our implementation solves more tasks, which is good news.
Second, we compare the PDR-based invariant generator with three other invariant generators. We use small handcrafted examples to illustrate the strengths of PDR. On those examples, K-induction without an auxiliary invariant generator does not succeed.
The table shows that only the PDR-based approach can deliver invariants for all of the examples. Third, we compare with the six verifiers from SVComp that performed best on the examples. We contributed the examples to the benchmark set that is used for SVComp, so the results are available publicly already.
The table shows that PDR is pretty robust, while other approaches struggle for some cases.
Last but not least, we compare the two other available tools that use PDR. Those are VVT and C-Horn. The quantile plots illustrate that C-Horn produces a large number of wrong results,
while our approach with PDR in K-induction is slow but more effective. To conclude, we provide to the research community an implementation of PDR4 software. It is open source, reproducible, competitive, and integrated in the state-of-the-art verification framework, namely CPA Checker.
In sum, this is a reference implementation that can be used by others to study PDR4 software. The invariant generation component is usable also in other contexts.
The results are reproducible because all components are available in the artifact and also in the code repository of CPA Checker. Thank you for your interest in PDR4 software. This ends my presentation. I added the references to the end of the slides and this is the end of my presentation.
The set of slides is available on my webpage.