Rocq
| The Rocq Prover
| |
|---|---|
| colspan="2" class="notheme" style="text-align:center; background:#Vorlage:Standardfarbe; color:#202122;" | Datei:Rocq logo.svg | |
| Ein Beweiszustand in einer Datei der Standardbibliothek | |
| Basisdaten
| |
| Maintainer | Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value) |
| Entwickler | TypiCal |
| Erscheinungsjahr | Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value) |
| Aktuelle Version | Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value) (Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)) |
| Aktuelle Vorabversion | Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value) (Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)) |
| Betriebssystem | Plattformunabhängig |
| Programmiersprache | Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value) |
| Kategorie | Maschinengestütztes Beweisen |
| Lizenz | LGPL (Freie Software) |
| rocq-prover.org | |
Rocq (früher "Coq") ist eine freie Software zum maschinengestützten Beweisen mathematischer Aussagen.
Übersicht
In Rocq formuliert man Datentypdefinitionen und ausführbare Programmteile sowie mathematische Aussagen und Beweise. Die getroffenen Aussagen beziehen sich gewöhnlich auf die definierten Funktionen. Rocq überprüft die formale Richtigkeit von Beweisen mithilfe seines auch sonst benutzten Typprüfers.
Weiterhin unterstützt Rocq die Suche nach Beweisen und erlaubt es, aus einer formalen Programmspezifikation samt Implementation und Korrektheitsbeweis beispielsweise ein ML-Programm zu extrahieren. Hierbei werden nichtübersetzbare Typinformationen ignoriert. Aus (zwangsläufig konstruktiven) Beweisen von Existenzaussagen lässt sich ebenfalls Zielcode generieren.
Rocq verwendet den Kalkül der induktiven Konstruktion<ref> Coq-Referenzhandbuch – Calculus of Inductive Constructions. Abgerufen am 20. September 2020.</ref>, eine Form des Konstruktionskalküls. Rocq ist kein vollautomatisches Beweissystem, kennt aber einige Beweistaktiken und Entscheidungsfindungsprozeduren.
Entwicklung
Rocq wird in Frankreich im Projekt TypiCal (früher LogiCal) entwickelt, einem Gemeinschaftsprojekt von INRIA (Gérard Huet, Christine Paulin-Mohring und Thierry Coquand), École polytechnique, Universität Paris-Süd und CNRS. Eine weitere Arbeitsgruppe bestand an der ENS Lyon. Teamleiter ist Benjamin Werner.
Rocq wird in Objective CAML entwickelt, einer (im Wesentlichen) funktionalen Programmiersprache.
2013 erhielt Coq den Programming Languages Software Award von ACM SIGPLAN.
Name
Das französische Wort {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) bedeutet Gockel oder Hahn und steht in der französischen Tradition, wissenschaftliche Entwicklungswerkzeuge nach Tieren zu benennen. Außerdem erinnert es an Thierry Coquand, der gemeinsam mit Gérard Huet den Konstruktionskalkül entwickelte.
Am 11. Oktober 2023 gab das Entwicklerteam bekannt, dass Coq zu The Rocq Prover umbenannt werden wird, und begann mit der Aktualisierung des Codes, der Website und zugeordneten Werkzeugen.<ref>Coq roadmap 069. Abgerufen am 14. April 2025.</ref>
Anfang 2025 erschien die erste Version unter dem neuen Namen.<ref>Rocq Changlelog. Abgerufen am 14. April 2025.</ref>
Der Name „The Rocq Prover“ ehrt INRIA Rocquencourt, den ursprünglichen Ort, an dem die Software entwickelt wurde. Er spielt auch auf den mythologischen Vogel Roch an, welcher Stärke symbolisiert und einem Hahn nicht ganz unähnlich ist.<ref>About The Rocq Prover. Abgerufen am 14. April 2025.</ref>
Vier-Farben-Satz
Georges Gonthier (von Microsoft Research, in Cambridge, England) und Benjamin Werner (von INRIA) erzeugten mit Hilfe von Coq einen überschaubaren Beweis des Vier-Farben-Satzes, der 2005 fertiggestellt wurde.<ref>Gonthier: Formal Proof – the Four-Color Theorem, Notices AMS 2008 (PDF; 2,6 MB).</ref>
Als Nebenergebnis dieser Arbeit entstand eine Erweiterung für Coq namens ssreflect („{{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value)“).<ref>The SSReflect proof language</ref> Trotz des Namens sind die meisten Features der Erweiterung allgemein verwendbar, also nicht nur für reflexive Beweise. Die aktuelle Version ssreflect 1.2 ist freie Software (Lizenz CeCILL) und kompatibel zu Coq 8.2.<ref>Announcing Ssreflect version 1.2</ref>
Satz von Feit-Thompson
Der Satz von Feit-Thompson sagt aus, dass jede endliche Gruppe ungerader Ordnung auflösbar ist. Er wurde 1963 von Walter Feit und John Griggs Thompson bewiesen.
Georges Gonthier gelang mit Kollegen nach sechsjähriger Arbeit 2012 die Verifikation des Beweises mit Coq.<ref><templatestyles src="Webarchiv/styles.css" />Feit-Thompson proved in Coq ( vom 19. November 2016 im Internet Archive), Microsoft Research-Inria, 20. September 2012, Web-Archive.</ref>
Literatur
- Yves Bertot, Pierre Castéran: Interactive Theorem Proving and Program Development - Coq'Art: The Calculus of Inductive Constructions, Springer 2004, ISBN 3-540-20854-2
- Adam Chlipala: Certified Programming with Dependent Types: A Pragmatic Introduction to the Coq Proof Assistant, MIT Press 2013, ISBN 978-0-262-02665-9, Online verfügbar per Certified Programming with Dependent Types
- Ilya Sergey: Programs and Proofs: Mechanizing Mathematics with Dependent Types, Lecture notes with exercises, URL ilyasergey.net
- Benjamin C. Pierce et al.: Software Foundations, 4 Bände: Volume 1 Logical Foundations, Volume 2 Programming Language Foundations, Volume 3 Verified Functional Algorithms und Volume 4 QuickChick: Property-Based Testing in Coq, URL Software Foundations
Weblinks
- Offizielle Website (englisch)
- Rocq auf GitHub
Einzelnachweise
<references />