cakeml

CakeML: A Verified Implementation of ML

Github星跟蹤圖

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.7.1.
Example build instructions can be found in
build-instructions.sh.

Building all of CakeML (including the bootstrapped compiler and its proofs)
requires significant resources. Built copies of
the compiler and resource usage for our
regression tests are online.

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

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 file describes how to install 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:

  • lexing and PEG parsing,
  • type inference,
  • compilation to ASM assembly language, and,
  • code generation to x86, ARM, and more.

developers:
This directory contains scripts for automating routine tasks, e.g., for
generating README.md files.

examples:
Examples of verified programs built using CakeML infrastructure.

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.

misc:
Auxiliary files providing glue between a standard HOL installation
and what we want to use for CakeML development.

semantics:
The definition of the CakeML language. The definition is (mostly) expressed in
Lem, but the generated HOL is included.
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:
A proof-producing translator from HOL functions to CakeML.

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:
Various unverified tools, e.g. tools for converting OCaml to CakeML
and an SML version of the CakeML register allocator.

主要指標

概覽
名稱與所有者CakeML/cakeml
主編程語言Standard ML
編程語言Standard ML (語言數: 9)
平台
許可證BSD 3-Clause "New" or "Revised" License
所有者活动
創建於2012-10-09 10:13:51
推送於2025-06-11 13:39:05
最后一次提交2025-05-31 02:07:55
發布數57
最新版本名稱v2807 (發布於 )
第一版名稱v1.0 (發布於 2018-03-18 17:30:36)
用户参与
星數1.1k
關注者數42
派生數87
提交數24.1k
已啟用問題?
問題數533
打開的問題數194
拉請求數594
打開的拉請求數1
關閉的拉請求數55
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?