Demo for high-performance type theory elaboration with dependent types
Top 58.2% on sourcepulse
This project provides a high-performance implementation of a dependent type theory elaborator, demonstrating advanced techniques for optimizing type checking and elaboration speed. It is targeted at researchers and developers interested in the performance characteristics of dependently typed languages and offers a fast alternative to existing systems like Agda, Coq, and Lean.
How It Works
The core of smalltt is built upon "semantic elaboration" or "normalization-by-evaluation" (NbE), which contrasts with less efficient term substitution methods. It employs "glued evaluation" to balance the need for efficient evaluation during conversion checking with the desire for minimal term sizes during quoting, achieved by lazily controlling top-level definition unfolding. Contextual metavariables are used, where each metavariable abstracts over its scope, and pattern unification handles meta solutions.
Quick Start & Requirements
stack install
or cabal v2-install
in the project directory.stack install --flag smalltt:llvm
or cabal v2-install -fllvm
if LLVM is installed.$HOME/.local/bin
(stack) or $HOME/.cabal/bin
(cabal).Highlighted Details
Maintenance & Community
Licensing & Compatibility
Limitations & Caveats
1 year ago
1 day