  The goal of cooperative verification is to combine verification approaches in
such a way that they work together to verify a system model. In particular,
cooperative verifiers provide exchangeable information (verification artifacts)
to other verifiers or consume such information from other verifiers with the
goal of increasing the overall effectiveness and efficiency of the verification
process. This paper first gives an overview over approaches for leveraging
strengths of different techniques, algorithms, and tools in order to increase
the power and abilities of the state of the art in software verification.
Second, we specifically outline cooperative verification approaches and discuss
their employed verification artifacts. We formalize all artifacts in a uniform
way, thereby fixing their semantics and providing verifiers with a precise
meaning of the exchanged information.
