Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/CakeML/cakeml
CakeML: A Verified Implementation of ML
https://github.com/CakeML/cakeml
compiler formal-semantics formal-verification hol programming-language sml theorem-proving
Last synced: 3 months ago
JSON representation
CakeML: A Verified Implementation of ML
- Host: GitHub
- URL: https://github.com/CakeML/cakeml
- Owner: CakeML
- License: other
- Created: 2012-10-09T10:13:51.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2024-04-13T16:00:20.000Z (9 months ago)
- Last Synced: 2024-04-14T00:52:09.901Z (9 months ago)
- Topics: compiler, formal-semantics, formal-verification, hol, programming-language, sml, theorem-proving
- Language: Standard ML
- Homepage: https://cakeml.org
- Size: 102 MB
- Stars: 911
- Watchers: 47
- Forks: 81
- Open Issues: 193
-
Metadata Files:
- Readme: README.md
- License: COPYING
- Code of conduct: code-of-conduct.md
Awesome Lists containing this project
- awesome-programming-languages - CakeML - CakeML is a verified implementation of a significant subset of Standard ML. (Uncategorized / Uncategorized)
README
The CakeML project: https://cakeml.org
======================================CakeML is a verified implementation of a significant subset of
Standard ML.The source and proofs for CakeML are developed in the [HOL4 theorem
prover](http://hol-theorem-prover.org). We use the latest development
version of [HOL4](https://github.com/HOL-Theorem-Prover/HOL), which we
build on [PolyML 5.7.1](http://www.polyml.org).
Example build instructions can be found in
[build-instructions.sh](build-instructions.sh).Building all of CakeML (including the bootstrapped compiler and its proofs)
requires significant resources. [Built copies](https://cakeml.org/download) of
the compiler and resource usage for our
[regression tests](https://cakeml.org/regression.cgi) are online.The [master](../../tree/master) branch contains the latest development
version of CakeML. See the [version2](../../tree/version2) or
[version1](../../tree/version1) branch for previous versions.Directory structure
-------------------[COPYING](COPYING):
CakeML Copyright Notice, License, and Disclaimer.[basis](basis):
Contains the beginnings of a standard basis library for CakeML,
similar to the standard basis library of SML.[build-instructions.sh](build-instructions.sh):
This file describes how to install Poly/ML, HOL and CakeML.[candle](candle):
Verification of a HOL theorem prover, based on HOL Light
(http://www.cl.cam.ac.uk/~jrh13/hol-light/), implemented in CakeML.[characteristic](characteristic):
A verified CakeML adaption of Arthur Charguéraud's "Characteristic
Formulae for the Verification of Imperative Programs"[compiler](compiler):
A verified compiler for CakeML, including:
- lexing and PEG parsing,
- type inference,
- compilation to ASM assembly language, and,
- code generation to x86, ARM, and more.[cv_translator](cv_translator):
Translator to cv type used by cv_compute[developers](developers):
This directory contains scripts for automating routine tasks, e.g., for
generating README.md files.[examples](examples):
Examples of verified programs built using CakeML infrastructure.[how-to.md](how-to.md):
This document introduces how to use the CakeML compiler, providing in
particular:- a description of how to invoke the CakeML compiler,
- a list of how CakeML differs from SML and OCaml, and,
- a number of small CakeML code examples.[icing](icing):
Main implementation directory for the RealCake development, presented in
"Verified Compilation and Optimization of Floating-Point Programs"[misc](misc):
Auxiliary files providing glue between a standard HOL installation
and what we want to use for CakeML development.[pancake](pancake):
The Pancake compiler, i.e. a C-like compiler built from the lower
parts of the CakeML compiler.[semantics](semantics):
The definition of the CakeML language.
The directory includes definitions of:
- the concrete syntax,
- the abstract syntax,
- big step semantics (both functional and relational),
- a small step semantics,
- the semantics of FFI calls, and,
- the type system.[translator](translator):
A proof-producing translator from HOL functions to CakeML.[tutorial](tutorial):
An extended worked example on using HOL and CakeML to write verified programs,
that was presented as a tutorial on CakeML at PLDI and ICFP in 2017.[unverified](unverified):
Various unverified tools, e.g. tools for converting OCaml to CakeML
and an SML version of the CakeML register allocator.