The (very) small kernel of the LaTTe proof assistant in Clojure(script)
_.--'"'.
( ( ( )
(o)_ ) )
(o)_.'
_.--'"'.
( ( ( )
(o)_ ) )
(o)_.'
)/
.-.--.
( ( ).
(o)_ ) )
(o)_.'
)/
lgbeard
LaTTe is a proof assistant based on a type theory (a dependently-typed proof theory). This repository contains the source code of its small trusted kernel, developed as a Clojure(script) library. Its design has been driven by the following criterion:
A Mathematical Assistant satisfying the possibility of independent checking by a small program is said to satisfy the de Bruijn criterion.
see: "The Challenge of Computer Mathematics", http://www.cs.ru.nl/~freek/notes/RSpaper.pdf
It is also optimized for readability rather than efficiency, but it has been tested heavily and performs quite "acceptably".
Each source file (extension .cljc
) in the source directory src/latter_kernel
is accompanied by its literate programming companion (extension .cljc.md
).
The following files compose the kernel:
presyntax.cljc[.md]
: the user-facing syntax and the translation (parsing) to the internal syntaxsyntax.cljc[.md]
: the internal syntax of lambda-terms plus syntax-level utilities (term substitution, alpha-normalization, alph-equivalence)norm.cljc[.md]
: the (beta/delta)-reduction rules, normal forms and equivalencestyping.cljc[.md]
: the type inference algorithmproof.cljc[.md]
: the internal representation of declarative proofs, and the proof checker implementationSome auxiliary files are also used (in non-literate forms):
utils.cljc
: misc. utilitiesdefenv.cljc
: the representation of named abstractions (mathematical definitions, theorems, etc.)unparser.cljc
: the regeneration of surface syntax for (proof) debugging purposeThe kernel is a basis to develop proof assistants, not to be "consumed" directly. The literate files also explain how to develop such a kernel.
The (several) unit tests (in test/latte_kernel
) can be executed using the following command:
lein test
This software is Copyright (C) 2018 Frederic Peschanski, under the MIT License (cf. LICENSE
file)
Can you improve this documentation? These fine people already did:
fredokun & Frederic PeschanskiEdit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close