Introduction
============

The DIVINE project aims to develop a general-purpose, fast, reliable and
easy-to-use model checker. The roots of the project go back to a
special-purpose, explicit-state, asynchronous system model checking tool for
LTL properties. However, the landscape of software development is changing, and
rigorous, inflexible development processes are in a steady decline, being
displaced by more agile, flexible and dynamic methods. In the agile world,
there is little place for large-scale, long-term planning and pondering on
"paper only" designs, which would favour the use of a traditional model
checker.

A new incarnation of DIVINE strives to keep up with this dynamic world,
bringing "heavy-duty" model checking technology much closer to daily
programming routine. However, DIVINE is not abandoning traditional modelling
formalisms; in fact, our support for dedicated modelling languages is better
and broader than ever. Nevertheless, our major goal is to express model
checking problems in a language which every developer is fluent with: the
programming language of their own project. Even if you don't apply model
checking to your resulting program directly, writing throwaway models makes
much more sense in a language you understand well and use daily.

Current versions of DIVINE provide out-of-the box support for the C programming
language (C99), including most of the standard library, and for C++
(C++11). Additionally, users can compile and use other libraries, including the
standard C++ library.

