Coq -Coq
Deweloperzy | Zespół programistów Coq |
---|---|
Pierwsze wydanie | 1 maja 1989 | (wersja 4.10)
Wersja stabilna | |
Magazyn | github.com/coq/coq |
Napisane w | OCaml |
System operacyjny | Międzyplatformowe |
Dostępne w | język angielski |
Typ | Asystent dowodu |
Licencja | LGPLv2.1 |
Strona internetowa | coq |
Coq to interaktywny program do dowodzenia twierdzeń, wydany po raz pierwszy w 1989 roku. Umożliwia wyrażanie twierdzeń matematycznych , mechanicznie sprawdza dowody tych twierdzeń, pomaga znaleźć dowody formalne i wyodrębnia certyfikowany program z konstruktywnego dowodu jego formalnej specyfikacji . Coq zajmuje się teorią rachunku konstrukcji indukcyjnych , pochodną rachunku konstrukcji . Coq nie jest automatycznym narzędziem do dowodzenia twierdzeń, ale obejmuje automatyczne taktyki ( procedury ) dowodzenia twierdzeń oraz różne procedury decyzyjne .
Association for Computing Machinery przyznało Thierry'emu Coquandowi , Gérardowi Huetowi , Christine Paulin-Mohring , Bruno Barrasowi, Jean-Christophe Filliâtre, Hugo Herbelinowi, Chetanowi Murthy'emu, Yves Bertot i Pierre'owi Castéranowi nagrodę ACM Software System Award 2013 za Coq.
Nazwa „Coq” jest grą słowną imienia Thierry'ego Coquanda, Rachunku Konstrukcji lub „CoC” i jest zgodna z francuską tradycją informatyczną polegającą na nazywaniu oprogramowania na cześć zwierząt (coq po francusku oznacza koguta ) .
Przegląd
Postrzegany jako język programowania, Coq implementuje zależny język programowania funkcjonalnego ; gdy jest postrzegany jako system logiczny, implementuje teorię typów wyższego rzędu . Rozwój Coq jest wspierany od 1984 roku przez INRIA , obecnie we współpracy z École Polytechnique , University of Paris-Sud , Paris Diderot University i CNRS . W latach 90. ENS Lyon był również częścią projektu. Rozwój Coq został zainicjowany przez Gérarda Hueta i Thierry'ego Coquanda, a ponad 40 osób, głównie badaczy, wniosło wkład w podstawowe funkcje systemu od jego powstania. Zespół wdrożeniowy był kolejno koordynowany przez Gérarda Hueta, Christine Paulin-Mohring, Hugo Herbelina i Matthieu Sozeau. Coq jest implementowany głównie w OCamlu z odrobiną C . Podstawowy system można rozszerzyć za pomocą mechanizmu wtykowego .
Nazwa coq oznacza po francusku „ koguta ” i wywodzi się z francuskiej tradycji nazywania narzędzi badawczych i rozwojowych imionami zwierząt. Do 1991 roku Coquand wdrażał język zwany Rachunkiem Konstrukcyjnym , który wtedy nosił po prostu nazwę CoC. W 1991 roku rozpoczęto nową implementację opartą na rozszerzonym rachunku konstrukcji indukcyjnych i zmieniono nazwę z CoC na Coq w pośrednim nawiązaniu do Coquand, który wraz z Gérardem Huetem opracował rachunek konstrukcji i przyczynił się do powstania rachunku konstrukcji indukcyjnych z Christine Paulin-Mohring.
Coq zapewnia język specyfikacji o nazwie Gallina („ kura ” po łacinie, hiszpańsku, włosku i katalońsku). Programy napisane w Gallinie mają słabą właściwość normalizacji , co oznacza, że zawsze się kończą. Jest to charakterystyczna właściwość języka, ponieważ nieskończone pętle (programy niekończące się) są powszechne w innych językach programowania i jest to jeden ze sposobów uniknięcia problemu zatrzymania .
Jako przykład dowód przemienności dodawania na liczbach naturalnych w Coq:
plus_comm =
fun n m : nat =>
nat_ind (fun n0 : nat => n0 + m = m + n0)
(plus_n_0 m)
(fun (y : nat) (H : y + m = m + y) =>
eq_ind (S (m + y))
(fun n0 : nat => S (y + m) = n0)
(f_equal S H)
(m + S y)
(plus_n_Sm m y)) n
: forall n m : nat, n + m = m + n
nat_ind
oznacza indukcję matematyczną , eq_ind
zastępowanie równych i f_equal
przyjmowanie tej samej funkcji po obu stronach równości. Wcześniejsze twierdzenia są odwoływane pokazując i .
Godne uwagi zastosowania
Twierdzenie o czterech kolorach i rozszerzenie SSReflect
Georges Gonthier z Microsoft Research w Cambridge w Anglii i Benjamin Werner z INRIA użyli Coq do stworzenia możliwego do zbadania dowodu twierdzenia o czterech kolorach , który został ukończony w 2002 roku. Ich praca doprowadziła do opracowania pakietu SSReflect („Odbicie w małej skali”) , co było znaczącym rozszerzeniem Coq. Pomimo swojej nazwy, większość funkcji dodanych do Coq przez SSReflect to funkcje ogólnego przeznaczenia i nie ograniczają się do obliczeniowego stylu dowodu. Funkcje te obejmują:
- Dodatkowe wygodne notacje dla niepodważalnego i obalnego dopasowywania wzorców na typach indukcyjnych z jednym lub dwoma konstruktorami
- Niejawne argumenty funkcji stosowane do argumentów zerowych, co jest przydatne podczas programowania z funkcjami wyższego rzędu
- Zwięzłe anonimowe argumenty
- Ulepszona
set
taktyka z silniejszym dopasowaniem - Wsparcie dla refleksji
SSReflect 1.11 jest swobodnie dostępny, posiada podwójną licencję w ramach licencji open source CeCILL-B lub CeCILL-2.0 i jest kompatybilny z Coq 8.11.
Inne aplikacje
- CompCert : kompilator optymalizujący dla prawie wszystkich języków programowania C , który jest w dużej mierze zaprogramowany i sprawdzony w Coq.
- Rozłączna struktura danych : dowód poprawności w Coq został opublikowany w 2007 roku.
- Twierdzenie Feita – Thompsona : formalny dowód przy użyciu Coq zakończono we wrześniu 2012 r.
Zobacz też
- Rachunek konstrukcji
- Korespondencja Curry – Howard
- Intuicjonistyczna teoria typów
- Lista asystentów dowodowych
Bibliografia
Linki zewnętrzne
- Asystent Coq proof – oficjalna strona w języku angielskim
- coq/coq – repozytorium kodu źródłowego projektu w serwisie GitHub
- JsCoq Interactive Online System – umożliwia uruchomienie Coq w przeglądarce internetowej, bez konieczności instalacji jakiegokolwiek oprogramowania
- Alectryon – biblioteka do przetwarzania fragmentów Coq osadzonych w dokumentach, pokazująca cele i komunikaty dla każdego zdania Coq
- Odkrywaj wiki
- Biblioteka Mathematical Components – szeroko stosowana biblioteka struktur matematycznych, której częścią jest język dowodowy SSReflect
- Konstruktywne Repozytorium Coq w Nijmegen
- Zajęcia z matematyki
- Coq w Open Hub
- Podręczniki
- The Coq'Art - książka o Coq autorstwa Yvesa Bertota i Pierre'a Castérana
- Certyfikowane programowanie z typami zależnymi – internetowy i drukowany podręcznik autorstwa Adama Chlipały
- Software Foundations - podręcznik online autorstwa Benjamina C. Pierce'a i in.
- Wprowadzenie do refleksji na małą skalę w Coq – samouczek na temat SSReflect autorstwa Georgesa Gonthiera i Assi Mahboubi
- Samouczki
- Wprowadzenie do programu Coq Proof Assistant — wykład wideo prowadzony przez Andrew Appela w Institute for Advanced Study
- Samouczki wideo dla asystenta Coq Proof autorstwa Andreja Bauera.