Coq
Siirry navigaatioon
Siirry hakuun
Coq on funktionaalisen ohjelmointiin perustuva todistusapuri. Sen avulla voidaan laatia formaaleja matemaattisia todistuksia, jotka tarkistetaan automaattisesti. Todistukset esitetään induktiivisten konstruktioiden kalkyyliin perustuvalla Gallina-ohjelmointikielellä[1].
Coqia käytetään mm. ohjelmistojen verifiointiin ja matematiikan formalisointiin. Coq on toteutettu OCaml-kielellä.
Koodiesimerkkejä
[muokkaa | muokkaa wikitekstiä]Määritellään luonnollisten lukujen tyyppi:
Inductive nat : Type :=
| O : nat
| S : nat -> nat.
Määritellään luonnollisten lukujen yhteenlasku:
Fixpoint plus (n m : nat) : nat :=
match n with
| O => m
| S p => S (plus p m)
end.
Osoitetaan, että määritellylle yhteenlaskufunktiolle pätee kaikilla .
Theorem plus_n_O: forall n: nat, plus n O = n.
Proof.
intros n.
induction n.
- simpl. reflexivity.
- trivial. simpl. rewrite IHn. reflexivity.
Qed.
Merkittäviä sovellutuksia
[muokkaa | muokkaa wikitekstiä]- Neliväriteoreeman Coq-todistus (2005)[2]
- Feitin-Thompsonin lauseen Coq-todistus (2012)[3]
- CompCert: Coqilla toteutettu ja verifioitu C-ohjelmointikielen kääntäjä.
Lähteet
[muokkaa | muokkaa wikitekstiä]- ↑ What is Coq ? | The Coq Proof Assistant coq.inria.fr.
- ↑ Gonthier, Georges: Formal Proof—The Four- Color Theorem. Notices of the American Mathematical Society, 2008.
- ↑ Feit thomson proved in coq - Microsoft Research Inria Joint Centre www.msr-inria.fr. Arkistoitu 19.11.2016. Viitattu 7.12.2015. (englanti)