Why3 ist eine Software-Verifikationsplattform, die am französischen Forschungsinstitut INRIA und der Université Paris-Sud entstanden ist (Jean-Christophe Filliâtre, Andrei Paskevich, Claude Marché, Guillaume Melquiond, François Bobot). Die Idee hinter Why3 fasst der Slogan „Shepherd your herd of provers" zusammen: Man schreibt ein Programm mit Spezifikation in der ML-artigen Sprache WhyML, und Why3 erzeugt daraus automatisch Proof Obligations (Beweisverpflichtungen), die an eine „Herde" verschiedener Beweiser verteilt werden.

Erste Schritte

why3 config                  # installierte Beweiser erkennen (Alt-Ergo, Z3, CVC4/CVC5, E)
why3 prove datei.mlw         # alle Proof Obligations auf der Kommandozeile beweisen
why3 ide datei.mlw           # grafische Oberfläche: Ziele, Beweisversuche, Strategien
why3 replay datei.mlw        # gespeicherte Beweise erneut ausführen (nach Änderungen)
why3 session html datei.mlw  # HTML-Bericht über den Beweisstand

Warum „Herde von Beweisern"?

  • Automatische Beweiser wie Alt-Ergo, Z3 oder CVC5 lösen viele Ziele allein; der Aufruf erfolgt pro Ziel über why3 prove -P <beweiser> datei.mlw.
  • Schwierige Ziele gehen an interaktive Assistenten wie Coq, Isabelle oder PVS — Why3 verwaltet die Beweisstrategien für alle.
  • WhyML-Spezifikationen stehen in geschweiften Klammern, z. B. let f (x: int) : int ensures { result > 0 } = ....

Einordnung

Why3 ist das Verifikations-Backend hinter Frama-C: Das WP-Plugin übersetzt ACSL-Annotationen in WhyML und delegiert die Beweisverpflichtungen an dieselben Beweiser. Interaktive Assistenten wie HOL können in dieser Kette als Beweis-Backend für besonders anspruchsvolle Ziele dienen. Formale Methoden wie VDM verfolgen dieselbe Idee — Spezifikation vor Implementierung — mit anderer Werkzeugkette.

Verwandte Grundlagen: Frama-C-Befehle, ACSL, Coq-Befehle.