Standard ML OCaml Haskell Shell PHP Makefile
Latest commit 79bffaf Feb 21, 2017 @myreen myreen committed on GitHub Merge pull request #224 from malyzajko/master
homebrew instruction for installing polyml on macOS
Permalink
Failed to load latest commit information.
basis Update Commandline module name Feb 15, 2017
candle Reorganise basis directory Dec 27, 2016
characteristic Reverse FFI names in export libs more systematically Feb 20, 2017
compiler Reverse FFI names in export libs more systematically Feb 20, 2017
developers Change regression test timeout to 16 hours Jan 24, 2017
documentation Make readme_gen deal with subdirs and lem files Nov 17, 2016
explorer Add missing add_astPP for char type Jan 2, 2017
flame Make readme_gen deal with subdirs and lem files Nov 17, 2016
lem_lib_stub Make readme_gen deal with subdirs and lem files Nov 17, 2016
semantics Merge remote-tracking branch 'origin/master' into issue136 Jan 18, 2017
translator Merge remote-tracking branch 'origin/master' into basis Feb 15, 2017
unverified Make readme_gen deal with subdirs and lem files Nov 17, 2016
.gitignore Automate README generation Nov 15, 2016
.travis.yml add sudo: false to travis, to take advantage of docker Dec 19, 2014
COPYING update copyright years May 22, 2015
Holmakefile Holmake works for translation of lists and options, and fails to tran… Dec 9, 2016
README.md Fix some things after mlstringTheory moved Dec 13, 2016
basicComputeLib.sig Make use of computeLib.extend_compset and computeLib.compset_conv. Mar 15, 2016
basicComputeLib.sml Use of the_def in FFI calculation Dec 13, 2016
build-instructions.sh homebrew instruction for installing polyml on macOS Feb 21, 2017
lib.lem Make readme_gen deal with subdirs and lem files Nov 17, 2016
libScript.sml Make readme_gen deal with subdirs and lem files Nov 17, 2016
miscScript.sml Move a theorem from data_to_word_Props to miscScript Feb 15, 2017
preamble.sml Merge remote-tracking branch 'origin/master' into basis Dec 19, 2016
readmePrefix Edit the readmePrefix for root Nov 15, 2016

README.md

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. We use the latest development version of HOL4, which we build on PolyML 5.6. Example build instructions can be found in build-instructions.sh.

The master branch contains the latest development version of CakeML. See the version1 branch for the previous version.

Directory structure

COPYING: CakeML Copyright Notice, License, and Disclaimer.

basis: Contains the beginnings of a standard basis library for CakeML, similar to the standard basis library of SML.

build-instructions.sh: This script installs Poly/ML, HOL and CakeML.

candle: Verification of a HOL theorem prover, based on HOL Light (http://www.cl.cam.ac.uk/~jrh13/hol-light/), implemented in CakeML.

characteristic: A verified CakeML adaption of Arthur Charguéraud's "Characteristic Formulae for the Verification of Imperative Programs"

compiler: A verified compiler for CakeML, including:

  • parsing: lexer and PEG parser
  • inference: type inferencer
  • backend: compilation to ASM assembly language
  • targets: code generation to x86, ARM, and more

developers: This directory contains scripts for automating routine tasks, e.g. for running regression tests.

documentation: Work-in-progress documentation regarding the CakeML language.

explorer: Tools for stepping through execution of the compiler from one intermediate language to the next, and pretty-printing the intermediate results. An instance is available on the CakeML website.

flame: The start of a set theory formalisation that has net yet been used.

lem_lib_stub: Empty versions of the Lem libraries (which we don't use, but building with Lem requires)

lib.lem: Extensions to Lem's built-in library to target things we need in HOL.

miscScript.sml: Miscellaneous definitions and minor lemmas used throughout the development.

semantics: The definition of the CakeML language. The definition is (mostly) expressed in Lem (http://www.cs.kent.ac.uk/~sao/lem), but the generated HOL is also included. The directory includes definitions of:

  • the concrete syntax
  • the abstract syntax
  • small step semantics
  • big step semantics (both functional and relational)
  • semantics of FFI calls
  • a type system

translator: A proof-producing translator from HOL functions to CakeML.

unverified: Various unverified tools, e.g. tools for converting OCaml to CakeML and an SML version of the CakeML register allocator.