Expand description
§egglog
egglog is a language specialized for writing equality saturation applications. It is the successor to the rust library egg. egglog is faster and more general than egg.
§Documentation
Documentation for the egglog language can be found
here: Command
§Tutorial
Here is the video tutorial on what egglog is and how to use it. We plan to have a text tutorial here soon, PRs welcome!
Modules§
- ast
- constraint
- extract
- prelude
- This module makes it easier to use
egglog
from Rust. It is intended to be imported fully. - scheduler
- sort
- util
Macros§
- action
- actions
- add_
primitive - This macro lets the user declare custom egglog primitives. It supports a few special features:
- call
- datatype
- Adds sorts and constructor tables to the database.
- expr
- fact
- facts
- lit
- match_
term_ app - sort
- span
- var
- vars
Structs§
- EGraph
- Execution
State - A handle on a database that may be in the process of running a rule.
- Function
- A function in the e-graph.
- Function
Row - A struct representing the content of a row in a function table
- NotFound
Error - Resolved
Schema - RunReport
- Running a schedule produces a report of the results.
This includes rough timing information and whether
the database was updated.
Calling
union
on two run reports adds the timing information together. - Serialize
Config - TermDag
- A hashconsing arena for
Term
s. - Value
- A generic identifier representing an egglog value
Enums§
- Error
- Extract
Report - A report of the results of an extract action.
- RunMode
- Serialized
Node - A node in the serialized egraph.
- Term
- Like
Expr
s but with sharing and deduplication. - Type
Error
Traits§
- Base
Value - A simple data type that can be interned in a database.
- Container
Value - A trait implemented by container types.
- Primitive
- User
Defined Command - A user-defined command allows users to inject custom command that can be called in an egglog program.