Expand description
An implementation of egglog-style queries on top of core-relations.
This module translates a well-typed egglog-esque query into the abstractions
from the core-relations crate. The main higher-level functionality that it
implements are seminaive evaluation, default values, and merge functions.
This crate is essentially involved in desugaring: it elaborates the encoding of core egglog functionality, but it does not implement algorithms for joins, union-finds, etc.
Re-exports§
pub use proof_format::EqProofId;pub use proof_format::ProofStore;pub use proof_format::TermProofId;
Modules§
- macros
- proof_
format - A proof format for egglog programs, based on the Rocq format and checker from Tia Vu, Ryan Doegens, and Oliver Flatt.
Macros§
Structs§
- EGraph
- The state associated with an egglog program.
- Function
Config - Properties of a function added to an
EGraph. - Function
Id - An id representing an egglog function
- Function
Row - A struct representing the content of a row in a function table
- Iteration
Report - Running rules produces a report of the results. This includes rough timing information and whether the database was changed.
- Rule
Builder - RuleId
- An egglog-style rule
- Rule
Report - Source
Syntax - A data-structure representing an egglog query. Essentially, multiple
SourceExprs, one per line, along with a backing store accounting for subterms indexed by [`SyntaxId]. - Table
Action - This is an intern-able struct that holds all the data needed
to do table operations with an
ExecutionState, assuming that theFunctionIdfor the table is known ahead of time. - Union
Action - A variant of
TableActionfor the union-find.
Enums§
- Column
Ty - Default
Val - How defaults are computed for the given function.
- Function
- MergeFn
- How to resolve FD conflicts for a table.
- Query
Entry - Source
Expr - Representative source syntax for one line of an egglog query, namely, the left-hand-side of an egglog rule.
- TopLevel
LhsExpr
Type Aliases§
- Result
- Side
Channel - A useful type definition for external functions that need to pass data
to outside code, such as
Panic.