Canonical exhaustively searches for terms in dependent type theory.
Canonical.mp4
This respository contains the Rust source code for Canonical. A pre-built version of Canonical is packaged with the canonical Lean tactic
canonical-compat— The compatiblity layer for Canonical, defining the intermediate representation (IR) of the input format.canonical-corecore.rs— The type theory of Canonical, with terms, types, metavariables, and explicit substitutions.heuristic.rs— Functions for calculating the entropy metric and metavariable refinement ordering.prover.rs— Parallelized iterative-deepening DFS.search.rs— Utilities for computing entropy, selecting the next metavariable, and testing assignments.
canonical-lean— Bindings for interfacing with the Lean FFI.
Build the Lean project in the lean directory by opening it in VSCode. This downloads the pre-built Canonical Lean package.
Run python3 build_lean.py to update the dynlib for your platform with a newly compiled version.
For more detailed information about compiling on different platforms, check .github/workflows.