@@ -74,7 +85,7 @@ There are a good number of (though definitely not %``%#"#many#"#%''%) tools that
</table>
#
Isabelle/HOL,implementedwiththe%``%#"#proof assistant development framework#"#%''%Isabelle,isthemostpopularproofassistantfortheHOLlogic.TheotherimplementationsofHOLcanbeconsideredequivalentforpurposesofthediscussionhere.
Isabelle/HOL,implementedwiththe%``%#"#proof assistant development framework#"#%''%Isabelle%~\cite{Isabelle}%,isthemostpopularproofassistantfortheHOLlogic.TheotherimplementationsofHOLcanbeconsideredequivalentforpurposesofthediscussionhere.
*)
...
...
@@ -102,7 +113,7 @@ A language of %\textit{%#<i>#dependent types#</i>#%}% may include references to
@@ -137,14 +148,14 @@ The critical ingredient for this technique, many of whose instances are referred
*)
(***WhyNotaDifferentDependently-TypedLanguage?*)
(***WhyNotaDifferentDependentlyTypedLanguage?*)
(**
ThelogicandprogramminglanguagebehindCoqbelongstoatype-theoryecosystemwithagoodnumberofotherthrivingmembers.%Agda\footnote{\url{http://appserv.cs.chalmers.se/users/ulfn/wiki/agda.php}}%#<a href="http://appserv.cs.chalmers.se/users/ulfn/wiki/agda.php">Agda</a># and %Epigram\footnote{\url{http://www.e-pig.org/}}%#<a href="http://www.e-pig.org/">Epigram</a># are the most developed tools among the alternatives to Coq, and there are others that are earlier in their lifecycles. All of the languages in this family feel sort of like different historical offshoots of Latin. The hardest conceptual epiphanies are, for the most part, portable among all the languages. Given this, why choose Coq for certified programming?
IbelievethatagoodgraphicalinterfacetoCoqiscrucialforusingitproductively.Iusethe%ProofGeneral\footnote{\url{http://proofgeneral.inf.ed.ac.uk/}}%#<a href="http://proofgeneral.inf.ed.ac.uk/">Proof General</a># mode for Emacs, which supports a number of other proof assistants besides Coq. There is also the standalone CoqIDE program developed by the Coq team. I like being able to combine certified programming and proving with other kinds of work inside the same full-featured editor, and CoqIDE has had a good number of crashes and other annoying bugs in recent history, though I hear that it is improving. In the initial part of this book, I will reference Proof General procedures explicitly, in introducing how to use Coq, but most of the book will be interface-agnostic, so feel free to use CoqIDE if you prefer it. The one issue with CoqIDE, regarding running through the book source, is that I will sometimes begin a proof attempt but cancel it with the Coq [Abort] or [Restart] commands, which CoqIDE does not support. It would be bad form to leave such commands lying around in a real, finished development, but I find these commands helpful in writing single source files that trace a user's thought process in designing a proof.
IbelievethatagoodgraphicalinterfacetoCoqiscrucialforusingitproductively.Iusethe%ProofGeneral\footnote{\url{http://proofgeneral.inf.ed.ac.uk/}}%#<a href="http://proofgeneral.inf.ed.ac.uk/">Proof General</a># mode for Emacs, which supports a number of other proof assistants besides Coq. There is also the standalone CoqIDE program developed by the Coq team. I like being able to combine certified programming and proving with other kinds of work inside the same full-featured editor, and CoqIDE has had a good number of crashes and other annoying bugs in recent history, though I hear that it is improving. In the initial part of this book, I will reference Proof General procedures explicitly, in introducing how to use Coq, but most of the book will be interface-agnostic, so feel free to use CoqIDE if you prefer it. The one issue with CoqIDE, regarding running through the book source, is that I will sometimes begin a proof attempt but cancel it with the Coq [Abort] or #<span class="inlinecode"><span class="id" type="keyword">#%\coqdockw{%Restart%}%#</span></span># commands, which CoqIDE does not support. It would be bad form to leave such commands lying around in a real, finished development, but I find these commands helpful in writing single source files that trace a user's thought process in designing a proof.