Repository logo
Log in(current)
Repository logoMIT Open ScholarshipDSpace@MIT
  1. Home
  2. MIT Open Access Articles
  3. MIT Open Access Articles
  4. Extensible Extraction of Efficient Imperative Programs with Foreign Functions, Manually Managed Memory, and Proofs
This is not the latest version of this item. The latest version can be found here.

Extensible Extraction of Efficient Imperative Programs with Foreign Functions, Manually Managed Memory, and Proofs

Thumbnail Image
Download
Name

FiatIJCAR20.pdf

Description
Accepted version
Size

1.2 MB

Format

Adobe PDF

Checksum (MD5)

070334f0d194de42080cb9722b632f5a

sword-2021-07-12T18:08:57.original.xml (130 B)
Original SWORD entry document
Author(s)
Pit-Claudel, Clement Francois
•
Wang, Peng
•
Delaware, Benjamin
•
Gross, Jason S.
•
Chlipala, Adam
Date Issued
June 2020
Journal
IJCAR: International Joint Conference on Automated Reasoning
Publisher
Springer International Publishing
Citation
Pit-Claudel, Clément et al. "Extensible Extraction of Efficient Imperative Programs with Foreign Functions, Manually Managed Memory, and Proofs." IJCAR: International Joint Conference on Automated Reasoning, 12167, Springer International Publishing, 2020, 119-137. © 2020 Springer Nature Switzerland
Version
Author's final manuscript
Abstract
We present an original approach to sound program extraction in a proof assistant, using syntax-driven automation to derive correct-by-construction imperative programs from nondeterministic functional source code. Our approach does not require committing to a single inflexible compilation strategy and instead makes it straightforward to create domain-specific code translators. In addition to a small set of core definitions, our framework is a large, user-extensible collection of compilation rules each phrased to handle specific language constructs, code patterns, or data manipulations. By mixing and matching these pieces of logic, users can easily tailor extraction to their own domains and programs, getting maximum performance and ensuring correctness of the resulting assembly code. Using this approach, we complete the first proof-generating pipeline that goes automatically from high-level specifications to assembly code. In our main case study, the original specifications are phrased to resemble SQL-style queries, while the final assembly code does manual memory management, calls out to foreign data structures and functions, and is suitable to deploy on resource-constrained platforms. The pipeline runs entirely within the Coq proof assistant, leading to final, linked assembly code with overall full-functional-correctness proofs in separation logic.
Description
Part of the Lecture Notes in Computer Science book series (LNCS, volume 12167).
MIT Department
Massachusetts Institute of Technology. Computer Science and Artificial Intelligence Laboratory
Terms of Use
Creative Commons Attribution-Noncommercial-Share Alike
http://creativecommons.org/licenses/by-nc-sa/4.0/
Persistent DSpace Link
https://hdl.handle.net/1721.1/131096
DOI of Published Version
http://dx.doi.org/10.1007/978-3-030-51054-1_7
Repository logo
PrivacyPermissionsAccessibilityContact us
Repository logo
Notify us about copyright concerns.