Coq (software)

Coq (software)
Developer(s)The Coq development team
Initial release1 May 1989; 35 years ago (1989-05-01) (version 4.10)
Stable release
8.20.0[1] Edit this on Wikidata / 3 September 2024; 41 days ago (3 September 2024)
Repositorygithub.com/coq/coq
Written inOCaml
Operating systemCross-platform
Available inEnglish
TypeProof assistant
LicenseLGPLv2.1
Websitecoq.inria.fr
An interactive proof session in CoqIDE, showing the proof script on the left and the proof state on the right.

Coq is an interactive theorem prover first released in 1989. It allows for expressing mathematical assertions, mechanically checks proofs of these assertions, helps find formal proofs, and extracts a certified program from the constructive proof of its formal specification. Coq works within the theory of the calculus of inductive constructions, a derivative of the calculus of constructions. Coq is not an automated theorem prover but includes automatic theorem proving tactics (procedures) and various decision procedures.

The Association for Computing Machinery awarded Thierry Coquand, Gérard Huet, Christine Paulin-Mohring, Bruno Barras, Jean-Christophe Filliâtre, Hugo Herbelin, Chetan Murthy, Yves Bertot, and Pierre Castéran with the 2013 ACM Software System Award for Coq.

The name "Coq" is a wordplay on the name of Thierry Coquand, Calculus of Constructions or "CoC" and follows the French computer science tradition of naming software after animals (coq in French meaning rooster).[2] On October 11th, 2023, the development team announced that Coq will be renamed "The Rocq Prover" in the coming months, and has started updating the code base, website and associated tools.[3]

Overview

When viewed as a programming language, Coq implements a dependently typed functional programming language;[4] when viewed as a logical system, it implements a higher-order type theory. The development of Coq has been supported since 1984 by INRIA, now in collaboration with École Polytechnique, University of Paris-Sud, Paris Diderot University, and CNRS. In the 1990s, ENS Lyon was also part of the project. The development of Coq was initiated by Gérard Huet and Thierry Coquand, and more than 40 people, mainly researchers, have contributed features to the core system since its inception. The implementation team has successively been coordinated by Gérard Huet, Christine Paulin-Mohring, Hugo Herbelin, and Matthieu Sozeau. Coq is mainly implemented in OCaml with a bit of C. The core system can be extended by way of a plug-in mechanism.[5]

The name coq means 'rooster' in French and stems from a French tradition of naming research development tools after animals.[6] Up until 1991, Coquand was implementing a language called the Calculus of Constructions and it was simply called CoC at this time. In 1991, a new implementation based on the extended Calculus of Inductive Constructions was started and the name was changed from CoC to Coq in an indirect reference to Coquand, who developed the Calculus of Constructions along with Gérard Huet and contributed to the Calculus of Inductive Constructions with Christine Paulin-Mohring.[7]

Coq provides a specification language called Gallina[8] ("hen" in Latin, Spanish, Italian and Catalan). Programs written in Gallina have the weak normalization property, implying that they always terminate. This is a distinctive property of the language, since infinite loops (non-terminating programs) are common in other programming languages,[9] and is one way to avoid the halting problem.

As an example, consider a proof of a lemma that taking the successor of a natural number flips its parity. The fold-unfold tactic introduced by Danvy[10] is used to help keep the proof simple.

Ltac fold_unfold_tactic name := intros; unfold name; fold name; reflexivity.

Require Import Arith Nat Bool.

Fixpoint is_even (n : nat) : bool :=
  match n with
  | 0 =>
    true
  | S n' =>
    eqb (is_even n') false
  end.

Lemma fold_unfold_is_even_0:
  is_even 0 = true.

Proof.
  fold_unfold_tactic is_even.
Qed.

Lemma fold_unfold_is_even_S:
  forall n' : nat,
    is_even (S n') = eqb (is_even n') false.

Proof.
  fold_unfold_tactic is_even.
Qed.

Lemma successor_flips_evenness:
  forall n : nat,
    is_even n = negb (is_even (S n)).

Proof.
  intro n.
  rewrite -> (fold_unfold_is_even_S n).
  destruct (is_even n).

  * simpl.
    reflexivity.

  * simpl.
    reflexivity.
Qed.

Notable uses

Four color theorem and SSReflect extension

Georges Gonthier of Microsoft Research in Cambridge, England and Benjamin Werner of INRIA used Coq to create a surveyable proof of the four color theorem, which was completed in 2002.[11] Their work led to the development of the SSReflect ("Small Scale Reflection") package, which was a significant extension to Coq.[12] Despite its name, most of the features added to Coq by SSReflect are general-purpose features and are not limited to the computational reflection style of proof. These features include:

  • Additional convenient notations for irrefutable and refutable pattern matching, on inductive types with one or two constructors
  • Implicit arguments for functions applied to zero arguments, which is useful when programming with higher-order functions
  • Concise anonymous arguments
  • An improved set tactic with more powerful matching
  • Support for reflection

SSReflect 1.11 is freely available, dual-licensed under the open source CeCILL-B or CeCILL-2.0 license, and compatible with Coq 8.11.[13]

Other applications

Tactic language

In addition to constructing Gallina terms explicitly, Coq supports the use of tactics written in the built-in language Ltac or in OCaml. These tactics automate the construction of proofs, carrying out trivial or obvious steps in proofs.[18] Several tactics implement decision procedures for various theories. For example, the "ring" tactic decides the theory of equality modulo ring or semiring axioms via associative-commutative rewriting.[19] For example, the following proof establishes a complex equality in the ring of integers in just one line of proof:[20]

Require Import ZArith.
Open Scope Z_scope.
Goal forall a b c:Z,
    (a + b + c) ^ 2 =
     a * a + b ^ 2 + c * c + 2 * a * b + 2 * a * c + 2 * b * c.
  intros; ring.
Qed.

Built-in decision procedures are also available for the empty theory ("congruence"), propositional logic ("tauto"), quantifier-free linear integer arithmetic ("lia"), and linear rational/real arithmetic ("lra").[21][22] Further decision procedures have been developed as libraries, including one for Kleene algebras[23] and another for certain geometric goals.[24]

See also

References

  1. ^ "Release Coq 8.20.0". 3 September 2024.
  2. ^ "Alternative names · coq/coq Wiki". GitHub. Retrieved 3 March 2023.
  3. ^ "Coq roadmap 069". GitHub.
  4. ^ A short introduction to Coq
  5. ^ Avigad, Jeremy; Mahboubi, Assia (3 July 2018). Interactive Theorem Proving: 9th International Conference, ITP 2018, Held as ... Springer. ISBN 9783319948218. Retrieved 21 October 2018.
  6. ^ "Frequently Asked Questions". GitHub. Retrieved 2019-05-08.
  7. ^ "Introduction to the Calculus of Inductive Constructions". Retrieved 21 May 2019.
  8. ^ Adam Chlipala. "Certified Programming with Dependent Types": "Library Universes".
  9. ^ Adam Chlipala. "Certified Programming with Dependent Types": "Library GeneralRec". "Library InductiveTypes".
  10. ^ Danvy, Olivier (2022). "Fold–unfold lemmas for reasoning about recursive programs using the Coq proof assistant". Journal of Functional Programming. 32. doi:10.1017/S0956796822000107. ISSN 0956-7968.
  11. ^ Gonthier, Georges (2008). "Formal Proof—The Four-Color Theorem" (PDF). Notices of the American Mathematical Society. 55 (11): 1382–1393. MR 2463991.
  12. ^ Gonthier, Georges; Mahboubi, Assia (2010). "An introduction to small scale reflection in Coq". Journal of Formalized Reasoning. 3 (2): 95–152. doi:10.6092/ISSN.1972-5787/1979.
  13. ^ "The Mathematical Components Library 1.11.0". GitHub.
  14. ^ Conchon, Sylvain; Filliâtre, Jean-Christophe (2007). "A persistent union-find data structure". In Russo, Claudio V.; Dreyer, Derek (eds.). Proceedings of the ACM Workshop on ML, 2007, Freiburg, Germany, October 5, 2007. Association for Computing Machinery. pp. 37–46. doi:10.1145/1292535.1292541.
  15. ^ "Feit-Thompson theorem has been totally checked in Coq". Msr-inria.inria.fr. 2012-09-20. Archived from the original on 2016-11-19. Retrieved 2012-09-25.
  16. ^ "[July 2nd 2024] We have proved "BB(5) = 47,176,870"". The Busy Beaver Challenge. 2024-07-02. Retrieved 2024-07-02.
  17. ^ "The Busy Beaver Challenge". bbchallenge.org. Retrieved 2024-07-02.
  18. ^ Kaiser, Jan-Oliver; Ziliani, Beta; Krebbers, Robbert; Régis-Gianas, Yann; Dreyer, Derek (2018-07-30). "Mtac2: typed tactics for backward reasoning in Coq". Proceedings of the ACM on Programming Languages. 2 (ICFP): 78:1–78:31. doi:10.1145/3236773. hdl:21.11116/0000-0003-2E8E-B.
  19. ^ Grégoire, Benjamin; Mahboubi, Assia (2005). "Proving Equalities in a Commutative Ring Done Right in Coq". In Hurd, Joe; Melham, Tom (eds.). Theorem Proving in Higher Order Logics: 18th International Conference, TPHOLs 2005, Oxford, UK, August 22–25, 2005, Proceedings. Lecture Notes in Computer Science. Berlin, Heidelberg: Springer. pp. 98–113. doi:10.1007/11541868_7. ISBN 978-3-540-31820-0.
  20. ^ "The ring and field tactic families — Coq 8.11.1 documentation". coq.inria.fr. Retrieved 2023-12-04.
  21. ^ Besson, Frédéric (2007). "Fast Reflexive Arithmetic Tactics the Linear Case and Beyond". In Altenkirch, Thorsten; McBride, Conor (eds.). Types for Proofs and Programs: International Workshop, TYPES 2006, Nottingham, UK, April 18–21, 2006, Revised Selected Papers. Lecture Notes in Computer Science. Vol. 4502. Berlin, Heidelberg: Springer. pp. 48–62. doi:10.1007/978-3-540-74464-1_4. ISBN 978-3-540-74464-1.
  22. ^ "Micromega: solvers for arithmetic goals over ordered rings — Coq 8.18.0 documentation". coq.inria.fr. Retrieved 2023-12-04.
  23. ^ Braibant, Thomas; Pous, Damien (2010). Kaufmann, Matt; Paulson, Lawrence C. (eds.). An Efficient Coq Tactic for Deciding Kleene Algebras. Interactive Theorem Proving: First International Conference, ITP 2010 Edinburgh, UK, July 11-14, 2010, Proceedings. Lecture Notes in Computer Science. Berlin, Heidelberg: Springer. pp. 163–178. doi:10.1007/978-3-642-14052-5_13. ISBN 978-3-642-14052-5. S2CID 3566183.
  24. ^ Narboux, Julien (2004). "A Decision Procedure for Geometry in Coq". In Slind, Konrad; Bunker, Annette; Gopalakrishnan, Ganesh (eds.). Theorem Proving in Higher Order Logics: 17th International Conference, TPHOLS 2004, Park City, Utah, USA, September 14–17, 2004, Proceedings. Lecture Notes in Computer Science. Vol. 3223. Berlin, Heidelberg: Springer. pp. 225–240. doi:10.1007/978-3-540-30142-4_17. ISBN 978-3-540-30142-4. S2CID 11238876.
Textbooks
Tutorials

Read other articles:

بابي يار   المعلومات البلد أوكرانيا  الإحداثيات 50°28′17″N 30°26′56″E / 50.471388888889°N 30.448888888889°E / 50.471388888889; 30.448888888889  التاريخ 30 سبتمبر 1941  الخسائر تعديل مصدري - تعديل   بابي يار (بالأوكرانية: Бабин Яр)‏, Babyn Yar; (بالروسية: Бабий Яр)‏ هي إفجيج في العاصمة الأوكراني

У Вікіпедії є статті про інші значення цього терміна: Санта-Крус. Санта-Крус-де-БоедоSanta Cruz de BoedoМуніципалітетКраїна  ІспаніяАвтономна спільнота Кастилія-і-ЛеонПровінція ПаленсіяКоординати 42°31′59″ пн. ш. 4°22′01″ зх. д. / 42.533° пн. ш. 4.367° зх. д....

Stadio Riviera delle PalmeLocationSan Benedetto del Tronto,ItalyOwnerMunicipality of San Bendettodel TrontoCapacity13,708[2]SurfaceGrass105 × 68 mConstructionOpened1985[1]ArchitectLuigi CorradiTenantsS.S. Sambenedettese Calcio The Stadio Riviera delle Palme is a multi-use stadium in San Benedetto del Tronto, Italy. It is currently used mostly for football matches and is the home ground of S.S. Sambenedettese Calcio. The stadium has a capacity of 13,708 and it lies between San...

2014 video gameMonty Python's The Ministry of Silly WalksDeveloper(s)Boondoggle StudiosPublisher(s)Boondoggle StudiosPlatform(s)Android,[1] iOS[1]Release2014Genre(s)Endless runner[2]Monty Python's The Ministry of Silly Walks is a 2014 mobile game from Boondoggle Studios. The game is based on the famous Monty Python sketch known by the same name.[3] Development The game was voiced by John Cleese.[4] Reception ReceptionReview scoresPublicationScorePocket ...

1955 studio album by Peggy LeeSongs from Pete Kelly's BluesStudio album by Peggy LeeReleased1955 (1955)GenreVocal jazzLength38:27LabelDeccaProducerMilt GablerPeggy Lee chronology Songs in an Intimate Style(1954) Songs from Pete Kelly's Blues(1955) Black Coffee(1956) Professional ratingsReview scoresSourceRatingAllmusic[1] Songs from Pete Kelly's Blues is an album by jazz singer Peggy Lee that contains songs from the film Pete Kelly's Blues (1955). Lee starred in the film ...

Kabupaten JenepontoKabupatenDari kiri ke kanan, atas ke bawah: Lomba pacuan kuda tradisional di Kampala, Patung Kuda Jeneponto, Coto Kuda khas Jeneponto, Persawahan di Jeneponto, Danau Butta Barakka, Ladang garam di Jeneponto LambangJulukan: Makassar: Butta Turateatanah orang-orang Turatea/bangsawan[1]PetaKabupaten JenepontoPetaTampilkan peta SulawesiKabupaten JenepontoKabupaten Jeneponto (Indonesia)Tampilkan peta IndonesiaKoordinat: 5°38′00″S 119°44′00″E / ...

Baseball stadium in Fresno, California; home of the Fresno Grizzlies Chukchansi ParkFormer namesGrizzlies Stadium (2002–2006)Location1800 Tulare StreetFresno, CaliforniaUnited StatesCoordinates36°43′56″N 119°47′26″W / 36.7321°N 119.7905°W / 36.7321; -119.7905Public transit Fresno Fresno Area Express (FAX)OwnerCity of FresnoOperatorFresno Sports Management, LLC.[2]Executive suites33Capacity10,650Record attendance16,000+ (2012)Field sizeLef...

1999 video gameGuwangeDeveloper(s)CavePublisher(s)Atlus (Arcade)cave (Xbox 360)Designer(s)Kenichi TakanoJunya InoueComposer(s)Masahiro KusunokiPlatform(s)Arcade, i-mode, Yahoo! Mobile, Xbox 360ReleaseArcadeJP: June 24, 1999Mobile PhonesJP: 2003Xbox 360WW: November 10, 2010Genre(s)Manic shooterMode(s)Single-player, 2 player co-opArcade systemCAVE 68000 Guwange (ぐわんげ, Guwange, [ɡɯwaŋɡe]) is a vertical scrolling shooter developed by Cave and published by Atlus in 1999. Gamepl...

Національний авангард Тип організація політичнаЗасновник Стефано Делле КьяйеЗасновано 1960Розпущено 1970Ідеологія неофашизм і неонацизмСфера Правий тероризмКраїна  ІталіяМісце діяльності ІталіяКерівник Стефано Делле Кьяйе і Adriano Tilgherd Прапор Національног...

Overview of child labour in Bangladesh This article needs to be updated. Please help update this article to reflect recent events or newly available information. (March 2023) Child labour in Bangladesh. Child labour in Bangladesh is significant, with 4.7 million children aged 5 to 14 in the work force in 2002-03.[1] Out of the child labourers engaged in the work force, 83% are employed in rural areas and 17% are employed in urban areas.[2] Child labour can be found in agricult...

علي شير النوائي معلومات شخصية الميلاد 18 فبراير 1441(1441-02-18)هراة الوفاة 13 يناير 1501 (59 سنة)هراة مواطنة الدولة التيموريةخراسان الكبرى  الحياة العملية المهنة شاعر  اللغات الفارسية،  والجغطائية  مجال العمل فلسفة،  وشعر  التيار صوفية،  وأهل السنة والجماعة  تعدي...

Ekosistem padang rumput adalah contoh ekosistem terestrial Bagian dari seriBiologiIlmu yang mempelajari kehidupan Garis besar Sejarah Komponen kunci Teori sel Ekosistem Evolusi Filogeni Sifat-sifat kehidupan Adaptasi Metabolisme Pengaturan Pertumbuhan Reproduksi Respons terhadap lingkungan Susunan Domain dan Kerajaan Arkea Bakteri Eukariota (Hewan, Fungi, Tumbuhan, Protista) Subdisiplin Anatomi Biologi evolusioner Biologi kelautan Biologi molekuler Biologi sel Bioteknologi Botani Ekologi Fiko...

2010 film directed by Carlos Augusto de Oliveira Rosa MorenaDirected byCarlos Augusto de OliveiraWritten byCarlos Augusto de Oliveira Morten KirkskovProduced byHank LevineIvan TeixeiraThomas GammeltoftStarringAnders W. BerthelsenBárbara GarciaDavid DencikVivianne PasmanterPablo RodriguesIben HjejleCinematographyPhilippe KressMusic byFrithjof ToksvigProductioncompaniesFine & Mellow Productions Ginga ElevenDistributed byVinny FilmesRelease dates 22 October 2010 (2010-10-22)&...

Archeological site in the West Bank The neutrality of this article is disputed. Relevant discussion may be found on the talk page. Please do not remove this message until conditions to do so are met. (June 2022) (Learn how and when to remove this template message) Khirbet el-'OrmehShown within the West BankAlternative nameMount Arumah, Mount Al-Arma, Mount Al-UrmaLocationWest BankCoordinates32°08′52″N 35°19′17″E / 32.14778°N 35.32139°E / 32.14778; 35.3...

ميتالالشعارمعلومات عامةنوع واجهة برمجة التطبيقات نظام التشغيل آي أو إسماك أو إس تعديل - تعديل مصدري - تعديل ويكي بيانات ميتال هي واجهة برمجية ذات مستوى منخفض لإنتاج بموارد أقل رسومات حاسوبية ثلاثية الأبعاد ولمعالجة العمليات بشكل منفصل عن التطبيق الأساسي، قامت �...

Six issue war comic set in an alternative contemporary timeline by Mark Miller War HeroesCover of War Heroes #1. July 2008. Art by Tony Harris and J. D. Mettler.Publication informationPublisherImage ComicsScheduleErraticFormatLimited seriesGenre SuperheroWar Publication dateAugust 2008 – presentNo. of issues6Creative teamCreated byMark MillarTony HarrisWritten byMark MillarPenciller(s)Tony HarrisInker(s)Cliff RathburnLetterer(s)Clem RobinsColorist(s)J. D. MettlerEditor(s)Drew Gill War Heroe...

1966 British film by Daniel Petrie This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: The Idol 1966 film – news · newspapers · books · scholar · JSTOR (September 2017) (Learn how and when to remove this message) The IdolDirected byDaniel PetrieWritten byUgo Liberatore (story)Millard LampellProduced byLeona...

American television producer Laurie ZaksZaks at the 2010 San Diego Comic-ConBornPlainview, New York, U.S.OccupationTelevision producerYears active1982–presentSpouse(s)Marc Robinson (divorced)Jeff HornChildrenZachary Robinson Laurie Ann Zaks is an American television producer. She has been the President of Television at Mandeville Films since 2013.[1] From 1981 to 1984, she worked at NBC's Saturday Night Live. She served as an executive producer on ABC's drama series Castle (200...

Paghimo ni bot Lsjbot. 7°48′03″N 11°55′30″E / 7.8008°N 11.9250°E / 7.8008; 11.9250 Chappal Mahabe Bukid Nasod  Nigyeriya Estado Adamawa State Distrito Teungo Gitas-on 1,049 m (3,442 ft) Tiganos 7°48′03″N 11°55′30″E / 7.8008°N 11.9250°E / 7.8008; 11.9250 [saysay 1] Highest point  - elevation 1,126 m (3,694 ft) Width 1.3 km (1 mi) Height 77 m (253 ft) Timezone WAT (UTC+1) GeoNames 2331517 Buk...

 凡例寒河江 孝広 菩提寺の陽春院時代 戦国時代生誕 文亀3年6月1日[1](1503年6月24日)死没 大永7年2月1日(1527年3月3日)改名 法名:陽春院大運永公大居士別名 高広、童名国松丸、太郎四郎墓所 陽春院(山形県寒河江市)幕府 室町幕府氏族 大江氏親広流寒河江氏父母 父:寒河江宗広、母:高松寺高月桂公大禅定尼兄弟 孝賢、祥真、男、男、広種、孝広、高屋�...