Programming and Proving with Classical Types [chapter]

Cristina Matache, Victor B. F. Gomes, Dominic P. Mulligan
<span title="">2017</span> <i title="Springer International Publishing"> <a target="_blank" rel="noopener" href="https://fatcat.wiki/container/2w3awgokqne6te4nvlofavy5a4" style="color: black;">Lecture Notes in Computer Science</a> </i> &nbsp;
The propositions-as-types correspondence is ordinarily presented as linking the metatheory of typed λ-calculi and the proof theory of intuitionistic logic. Griffin observed that this correspondence could be extended to classical logic through the use of control operators. This observation set off a flurry of further research, leading to the development of Parigot's λµ-calculus. In this work, we use the λµ-calculus as the foundation for a system of proof terms for classical first-order logic. In
more &raquo; ... particular, we define an extended call-by-value λµ-calculus with a type system in correspondence with full classical logic. We extend the language with polymorphic types, add a host of data types in 'direct style', and prove several metatheoretical properties. All of our proofs and definitions are mechanised in Isabelle/HOL, and we automatically obtain an interpreter for a system of proof terms cum programming language-called µML-using Isabelle's code generation mechanism. Atop our proof terms, we build a prototype LCF-style interactive theorem prover-called µTPfor classical first-order logic, capable of synthesising µML programs from completed tactic-driven proofs. We present example closed µML programs with classical tautologies for types, including some inexpressible as closed programs in the original λµ-calculus, and some example tactic-driven µTP proofs of classical tautologies. 4. Proof terms are used to extract the 'computational content' of proofs, which has important applications in computer science (e.g. in extracting verified software from mechanised proofs), and in mathematical logic (e.g. in explorations of the Curry-Howard correspondence, and in realisability theory [Kri16]).
<span class="external-identifiers"> <a target="_blank" rel="external noopener noreferrer" href="https://doi.org/10.1007/978-3-319-71237-6_11">doi:10.1007/978-3-319-71237-6_11</a> <a target="_blank" rel="external noopener" href="https://fatcat.wiki/release/2dz6qias4vbmpp3qggznclk3ee">fatcat:2dz6qias4vbmpp3qggznclk3ee</a> </span>
<a target="_blank" rel="noopener" href="https://web.archive.org/web/20200310135027/https://www.repository.cam.ac.uk/bitstream/handle/1810/277225/aplas-2017.pdf;jsessionid=FA35873496BF59707DFA20A518CEF8EC?sequence=1" title="fulltext PDF download" data-goatcounter-click="serp-fulltext" data-goatcounter-title="serp-fulltext"> <button class="ui simple right pointing dropdown compact black labeled icon button serp-button"> <i class="icon ia-icon"></i> Web Archive [PDF] <div class="menu fulltext-thumbnail"> <img src="https://blobs.fatcat.wiki/thumbnail/pdf/f2/1e/f21eb668e0564c0c564689028c77a1a2f69a9067.180px.jpg" alt="fulltext thumbnail" loading="lazy"> </div> </button> </a> <a target="_blank" rel="external noopener noreferrer" href="https://doi.org/10.1007/978-3-319-71237-6_11"> <button class="ui left aligned compact blue labeled icon button serp-button"> <i class="external alternate icon"></i> springer.com </button> </a>