Fiat

Abstract

We present Fiat, a library for the Coq proof assistant supporting refinement of declarative specifications into efficient functional programs with a high degree of automation. Each refinement process leaves a proof trail, checkable by the normal Coq kernel, justifying its soundness. We focus on the synthesis of abstract data types that package methods with private data. We demonstrate the utility of our framework by applying it to the synthesis of query structures -- abstract data types with SQL-like query and insert operations. Fiat includes a library for writing specifications of query structures in SQL-inspired notation, expressing operations over relations (tables) in terms of mathematical sets. This library includes a suite of tactics for automating the refinement of specifications into efficient, correct-by-construction OCaml code. Using these tactics, a programmer can generate such an implementation completely automatically by only specifying the equivalent of SQL indexes, data structures capturing useful views of the abstract data. Throughout we speculate on the new programming modularity possibilities enabled by an automated refinement system with proved-correct rules.

Document Details

Document Type
Pub Defense Publication
Publication Date
Jan 14, 2015
Source ID
10.1145/2775051.2677006

Entities

People

  • Adam Chlipala
  • Benjamin Delaware
  • ClĂ©ment Pit-Claudel
  • Jason Gross

Organizations

  • Defense Advanced Research Projects Agency
  • Division of Computing and Communication Foundations
  • Massachusetts Institute of Technology

Tags

Fields of Study

  • Computer science

Readers

  • Database Systems and Applications
  • Mathematical Modeling and Probability Theory.
  • Systems Analysis and Design