Distributed data structures with Coq
christophermeiklejohn.com
christophermeiklejohn.com
Generate OCaml code from Coq: https://github.com/msgpack/msgpack-ocaml/tree/master/proof
Proof algorithms written in OCaml using Coq: http://www.chargueraud.org/softs/cfml/
Write program specification and use multiple provers (including Coq): http://why3.lri.fr/
Write certified programs, and verify proofs using Coq: http://focalize.inria.fr/
Language semantics / type system proofs of languages: http://www.cl.cam.ac.uk/~so294/ocaml/ (for a subset of OCaml)
http://gallium.inria.fr/~protzenk/mezzo-lang/
Books on Coq: http://adam.chlipala.net/cpdt/ http://www.cis.upenn.edu/~bcpierce/sf/
I just wish HN were more about this and less about "iOS7". Sometimes the amount of Apple zealots around here frightens me, who would support a company like that, and the NSA stuff sharing space with their stuff is quite a fit.
SLAM basically models the NT kernel and the Win32 API and checks for loads of bugs.
[1] http://msdn.microsoft.com/en-us/library/windows/hardware/gg4... [2] Satisfiability Modulo Theories
http://blogs.msdn.com/b/dsyme/archive/2007/09/19/f-ocaml-job...
This took person-years of time from people who already were Coq experts.
Apparently the version of CompCert from 2007 (before any optimizations) took 2 person-years to write[2]. But some of those persons were pretty impressive.
[1] http://www.sigops.org/sosp/sosp09/papers/klein-sosp09.pdf
[2] http://memocode.irisa.fr/2007/leroy-compcert-memocode07.pdf
http://www.youtube.com/watch?v=CmPw7eo3nQI
The core of the xmonad window manager was verified with Coq (PDF):
http://www.staff.science.uu.nl/~swier004/Publications/Xmonad...
There are a bunch of examples in the Archive of Formal Proofs: http://afp.sourceforge.net
And some tutorials:
http://isabelle.in.tum.de/doc/prog-prove.pdf http://www-madlener.informatik.uni-kl.de/teaching/ss2011/svh... http://www.cse.unsw.edu.au/~cs4161/08s2/
Coq and TLA+ obviously solve different problems, so comparing them directly isn't possible. For a first step into formal methods for distributed systems engineers, however, I'd recommend TLA+ based on my experiences.
What on earth were you thinking naming it "Coq"?
"The word coq means "rooster" in French, and stems from a tradition of naming French research development tools with animal names.[4] It is also a reference to Thierry Coquand, who developed the aforementioned calculus of constructions along with Gérard Huet. Also, at first it was simply called Coc, the acronym of calculus of construction."
> At this stage of the chicks' development, the cocks usually has begun to enter the nest to help his hen in caring and feeding the chicks.
http://greatbudgies.webs.com/aboutbudgies.htm
"Cock" as a word is no different from "bitch" or "stud:"
https://en.wikipedia.org/wiki/Cock_%28bird%29
http://classic.akc.org/breeders/resp_breeding/Articles/carea...
We should perhaps invade them and teach a thing or two about American culture.