Skip to content

Canonical is a performant sound and complete type inhabitation solver for dependent type theory.

Notifications You must be signed in to change notification settings

chasenorman/Canonical

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Canonical

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

Project Structure

  • canonical-compat — The compatiblity layer for Canonical, defining the intermediate representation (IR) of the input format.
  • canonical-core
    • core.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 Lean dynlib

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.

About

Canonical is a performant sound and complete type inhabitation solver for dependent type theory.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published