Skip to content

chasenorman/Canonical

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 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

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •