A Coq library for deductive synthesis of correct-by-construction abstract data types and parsers.
Fiat is a Coq library for deductive synthesis of abstract data types and parsers that are correct-by-construction. It allows developers to specify data structures formally and automatically generates implementations with embedded proofs of correctness. The project focuses on automating the creation of verified software components through proof search in the Coq proof assistant.
Researchers and developers working in formal verification, programming languages, and automated reasoning who need to generate provably correct implementations of data structures or parsers. It's particularly relevant for those using Coq for verified software development.
Fiat provides automated synthesis of verified code directly within a proof assistant, reducing the manual effort required for formal verification. Its integration with Coq ensures that synthesized implementations come with formal correctness proofs, making it valuable for high-assurance software development.
Mostly Automated Synthesis of Correct-by-Construction Programs
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses proof search to automatically generate implementations from formal specifications, reducing manual verification effort as highlighted in the key features.
Produces code with embedded formal proofs, ensuring high assurance for synthesized components, which is core to its value proposition.
Built as a Coq library, it leverages Coq's proof assistant for integrated verification and synthesis, as stated in the dependencies and build instructions.
Includes maintained libraries for synthesizing formally verified parsers, with targets like 'parsers-examples' actively supported for Coq's CI.
The library is described as 'mostly unmaintained' in the README, with only specific targets actively maintained, risking obsolescence for broader use.
Requires specific Coq versions (e.g., 8.4pl6 for some parts), hindering integration with modern Coq ecosystems, as noted in the dependencies.
Dependencies on Coq, Emacs, Proof General, and OCaml make initial configuration non-trivial, especially for users unfamiliar with these tools.
Components like the SQL-like library no longer build ('make querystructures' fails), limiting the range of usable synthesis features.