Crate egglog

Source
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
ExecutionState
A handle on a database that may be in the process of running a rule.
Function
A function in the e-graph.
FunctionRow
A struct representing the content of a row in a function table
NotFoundError
ResolvedSchema
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.
SerializeConfig
TermDag
A hashconsing arena for Terms.
Value
A generic identifier representing an egglog value

Enums§

Error
ExtractReport
A report of the results of an extract action.
RunMode
SerializedNode
A node in the serialized egraph.
Term
Like Exprs but with sharing and deduplication.
TypeError

Traits§

BaseValue
A simple data type that can be interned in a database.
ContainerValue
A trait implemented by container types.
Primitive
UserDefinedCommand
A user-defined command allows users to inject custom command that can be called in an egglog program.

Functions§

cli

Type Aliases§

ArcSort
TermId