chalk
A Prolog-ish interpreter written in Rust, intended perhaps for use in the compiler, but also for experimentation.
Origin of the name
chalk
is named after Chalkidiki, the area where Aristotle was
born. Since Prolog is a logic programming language, this seemed a
suitable reference.
Blog posts
Here are some blog posts talking about chalk:
- Lowering Rust Traits to Logic
- Explains the basic concepts at play
- Unification in Chalk, Part 1
- An introduction to unification
- Unification in Chalk, Part 2
- Extending the system for associated types
- Negative reasoning in Chalk
- How to prove that something is not true
- Query structure in chalk
- The basic chalk query structure, with pointers into the chalk implementation
- Cyclic queries in chalk
- Handling cyclic relations and enabling the implementation of implied bounds and other long-desired features in an elegant way
Contributing
If you are interested in contributing to chalk, please take a look at the Contribution guide. You might also want to take a look at the glossary.