Skip to main content
×
Home
    • Aa
    • Aa
  • Access
  • Cited by 1
  • Cited by
    This article has been cited by the following publications. This list is generated based on data provided by CrossRef.

    Kumar, Ramana Arthan, Rob Myreen, Magnus O. and Owens, Scott 2016. Self-Formalisation of Higher-Order Logic. Journal of Automated Reasoning, Vol. 56, Issue. 3, p. 221.


    ×

Proof-producing translation of higher-order logic into pure and stateful ML

  • MAGNUS O. MYREEN (a1) and SCOTT OWENS (a2)
  • DOI: http://dx.doi.org/10.1017/S0956796813000282
  • Published online: 20 January 2014
Abstract
Abstract

The higher-order logic found in proof assistants such as Coq and various HOL systems provides a convenient setting for the development and verification of functional programs. However, to efficiently run these programs, they must be converted (or ‘extracted’) to functional programs in a programming language such as ML or Haskell. With current techniques, this step, which must be trusted, relates similar looking objects that have very different semantic definitions, such as the set-theoretic model of a logic and the operational semantics of a programming language. In this paper, we show how to increase the trustworthiness of this step with an automated technique. Given a functional program expressed in higher-order logic, our technique provides the corresponding program for a functional language defined with an operational semantics, and it provides a mechanically checked theorem relating the two. This theorem can then be used to transfer verified properties of the logical function to the program. We have implemented our technique in the HOL4 theorem prover, translating functions to a subset of Standard ML, and have applied the implementation to examples including functional data structures, a parser generator, cryptographic algorithms, a garbage collector and the 500-line kernel of the HOL light theorem prover. This paper extends our previous conference publication with new material that shows how functions defined in terms of a state-and-exception monad can be translated, with proofs, into stateful ML code. The HOL light example is also new.

    • Send article to Kindle

      To send this article to your Kindle, first ensure coreplatform@cambridge.org is added to your Approved Personal Document E-mail List under your Personal Document Settings on the Manage Your Content and Devices page of your Amazon account. Then enter the ‘name’ part of your Kindle email address below. Find out more about sending to your Kindle.

      Note you can select to send to either the @free.kindle.com or @kindle.com variations. ‘@free.kindle.com’ emails are free but can only be sent to your device when it is connected to wi-fi. ‘@kindle.com’ emails can be delivered even when you are not connected to wi-fi, but note that service fees apply.

      Find out more about the Kindle Personal Document Service.

      Proof-producing translation of higher-order logic into pure and stateful ML
      Your Kindle email address
      Available formats
      ×
      Send article to Dropbox

      To send this article to your Dropbox account, please select one or more formats and confirm that you agree to abide by our usage policies. If this is the first time you use this feature, you will be asked to authorise Cambridge Core to connect with your Dropbox account. Find out more about sending content to Dropbox.

      Proof-producing translation of higher-order logic into pure and stateful ML
      Available formats
      ×
      Send article to Google Drive

      To send this article to your Google Drive account, please select one or more formats and confirm that you agree to abide by our usage policies. If this is the first time you use this feature, you will be asked to authorise Cambridge Core to connect with your Google Drive account. Find out more about sending content to Google Drive.

      Proof-producing translation of higher-order logic into pure and stateful ML
      Available formats
      ×
Copyright
Linked references
Hide All

This list contains references from the content that can be linked to their source. For a full set of references and notes please see the PDF or HTML where available.

R. S. Boyer & J. S. Moore (1975) Proving theorems about LISP functions. J. Assoc. Comput. Mach. 22 (1), 129144.

T. Coquand & G. Huet (1988) The calculus of constructions. Inf. Comput. 76 (2–3), 95120.

J. Hurd (2003) Verification of the Miller-Rabin probabilistic primality test. J. Log. Algebr. Program. 56 (1–2), 321.

X. Leroy (2009) A formally verified compiler back-end. J. Autom. Reasoning 43 (4), 363446.

P. Letouzey (2003) A new extraction for Coq. In Types for Proofs and Programs (TYPES). Berlin: Springer, pp. 200219.

G. Li & K. Slind (2007) Compilation as rewriting in higher order logic. In Automated Deduction (CADE), F. Pfenning (ed), vol. 4603. Berlin: Springer, pp. 1934.

G. Li & K. Slind (2008) Trusted source translation of a total function language. In Tools and Algorithms for the Construction and Analysis of Systems (TACAS), C. R. Ramakrishnan & J. Rehof (eds), vol. 4963. Berlin: Springer, pp. 471485.

M. O. Myreen (2010) Reusable verification of a copying collector. In Verified Software: Theories, Tools, Experiments (VSTTE), G. T. Leavens , P. W. O'Hearn & S. K. Rajamani (eds). Berlin: Springer, pp. 142156.

M. O. Myreen (2012) Functional programs: conversions between deep and shallow embeddings. In Interactive Theorem Proving (ITP), L. Beringer & A. Felty (eds), vol. 7406. Berlin: Springer, pp. 412417.

M. O. Myreen & G. Curello (2013) Proof pearl: A verified bignum implementation in x86-64 machine code. In Certified Programs and Proofs (CPP). Cham, Switzerland: Springer, pp. 6681.

M. O. Myreen & J. Davis (2011) A verified runtime for a verified theorem prover. In Interactive Theorem Proving (ITP), M. C. J. D. van Eekelen , H. Geuvers , J. Schmaltz & F. Wiedijk (eds), vol. 6898. Berlin: Springer, pp. 265280.

M. O. Myreen , S. Owens , & R. Kumar (2013) Steps towards verified implementations of HOL Light. In Interactive Theorem Proving (ITP), S. Blazy , C. Paulin-Mohring , & D. Pichardie (eds). Berlin: Springer, pp. 490495.

M. Norrish & K. Slind (2002) A thread of HOL development. Comput. J. 45 (1), 3745.

C. Okasaki (1998) Purely Functional Data Structures. Cambridge, UK: Cambridge University.

S. Owens & K. Slind (2008) Adapting functional programs to higher-order logic. Higher-order Symb. Comput. 21 (4), 377409.

K. Slind , S. Owens , J. Iyoda & M. Gordon (2007) Proof producing synthesis of arithmetic and cryptographic hardware. Form. Asp. Comput. 19 (3), 343362.

Recommend this journal

Email your librarian or administrator to recommend adding this journal to your organisation's collection.

Journal of Functional Programming
  • ISSN: 0956-7968
  • EISSN: 1469-7653
  • URL: /core/journals/journal-of-functional-programming
Please enter your name
Please enter a valid email address
Who would you like to send this to? *
×