Giter Site home page Giter Site logo

xdrr / cakeml Goto Github PK

View Code? Open in Web Editor NEW

This project forked from cakeml/cakeml

0.0 0.0 1.0 94.31 MB

CakeML: A Verified Implementation of ML

Home Page: https://cakeml.org

License: Other

Shell 0.02% Python 0.11% C 0.11% OCaml 1.10% Haskell 0.40% Standard ML 98.23% Makefile 0.02% sed 0.01%

cakeml's Introduction

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.

icing: Main implementation directory for the RealCake development, presented in "Verified Compilation and Optimization of Floating-Point Programs"

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

pancake: The Pancake compiler, i.e. a C-like compiler built from the lower parts of the CakeML compiler.

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: 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's People

Contributors

abxy avatar aceawan avatar acjf3 avatar adamse avatar agomezl avatar andreasloow avatar arolle avatar connorcashman avatar fogity avatar gordon-sau avatar heikobecker avatar hferee avatar hirataqdees avatar hjorthjort avatar hrutvik avatar ilmarireissumies avatar lamudri avatar matthieurodet avatar mktnk3 avatar mn200 avatar myreen avatar oskarabrahamsson avatar remyjck avatar sonmarcho avatar sowens avatar swaziguy123 avatar talsewell avatar tanyongkiam avatar twal avatar xrchz avatar

Forkers

plisp

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.