Why3 is a platform for deductive program verification. It provides a rich
language for specification and programming, called WhyML, and relies
on external theorem provers, both automated and interactive, to
discharge verification conditions.

Why3 comes with a standard library of logical theories (integer and
real arithmetic, Boolean operations, sets and maps, etc.) and basic
programming data structures (arrays, queues, hash tables, etc.). A
user can write WhyML programs directly and get correct-by-construction
OCaml programs through an automated extraction mechanism. WhyML is
also used as an intermediate language for the verification of C, Java,
or Ada programs.
