Litcius/Paper detail

CoVeriTeam: On-Demand Composition of Cooperative Verification Systems

Dirk Beyer, Sudeep Kanav

2022Lecture notes in computer science42 citationsDOIOpen Access PDF

Abstract

Abstract There is no silver bullet for software verification: Different techniques have different strengths. Thus, it is imperative to combine the strengths of verification tools via combinations and cooperation. CoVeriTeam is a language and tool for on-demand composition of cooperative approaches. It provides a systematic and modular way to combine existing tools (without changing them) in order to leverage their full potential. The idea of cooperative verification is that different tools help each other to achieve the goal of correctly solving verification tasks. The language is based on verification artifacts (programs, specifications, witnesses) as basic objects and verification actors (verifiers, validators, testers) as basic operations. We define composition operators that make it possible to easily describe new compositions. Verification artifacts are the interface between the different verification actors. CoVeriTeam consists of a language for composition of verification actors, and its interpreter. As a result of viewing tools as components, we can now create powerful verification engines that are beyond the possibilities of single tools, avoiding to develop certain components repeatedly. We illustrate the abilities of CoVeriTeam on a few case studies. We expect that CoVeriTeam will help verification researchers and practitioners to easily experiment with new tools, and assist them in rapid prototyping of tool combinations.

Topics & Concepts

Computer scienceFunctional verificationInterpreterModular designLeverage (statistics)Software engineeringIntelligent verificationSoftware verificationFormal verificationProgramming languageRuntime verificationVerificationSoftwareSoftware developmentArtificial intelligenceSoftware constructionSoftware Testing and Debugging TechniquesFormal Methods in VerificationSecurity and Verification in Computing