src/
: Source Code for Metatheory.jl
Rules
: This module contains core definition for rewrite rules and patternspatterns.jl
: Pattern type definitions for various pattern matching backends.patterns_syntax.jl
: Julia expressions to Patterns and pretty-printing patterns.rule_types.jl
: Definition ofRule
subtypes for rewrite rules.rule_dsl.jl
: Surface DSL for defining rules.rule_cache.jl
: Contains definition of global dynamic rule function cache.
rgf.jl
: Utility functions for handling and generating Runtime Generated FunctionsEGraphs/
: Code for the e-graphs rewriting backend. See egg paper for an high level overview.enode.jl
: Definition ofENode
type, constructorseclass.jl
: Definition ofEClass
type. EClass unioning, metadata accessegg.jl
: Defintion of EGraphs, adding, merging, rebuildingematch.jl
: Pattern matching functions on egraphsabstractanalysis.jl
: Definition ofAbstractAnalysis
interfaceanalysis.jl
: Core algorithms for analyzing egraphs.extraction.jl
: Core algorithms forExtractionAnalysis
, extracting terms from egraphs.saturation:
:saturation.jl
: Core algorithm for equality saturation, rewriting on e-graphs.search.jl
: Search phase of equality saturation. Uses multiple-dispatch onRule
sapply.jl
: Write phase of equality saturation. Application and instantiation ofPatterns
from matching/search results.params.jl
: Definition ofSaturationParams
type, parameters for equality saturationreport.jl
: Definition of the type for displaying equality saturation execution reports.
equality.jl
: utility functions and macros to check equality of terms in egraphs.Schedulers/
: Module containing definition of Schedulers for equality saturation.
Classic/
: Classical deterministic rewriting backend using MatchCore.jlmatchcore_compiler.jl
: Compiler from Metatheory rules to MatchCore pattern matching blocks, on top of RuntimeGeneratedFunctions.jlrewrite.jl
: Core rewriting algorithm based on fixpoint iteration of rewrite steps.match.jl
: Utility functions and macros for classical pattern matching with Metatheory.jl
Library/
: Utility functions and examples of ready-to-use theories.algebra.jl
: Functions for generating theories from common algebraic structures.
Util/
: Module containing various utilities for metaprogramming, expression walking, quoted code cleaning, fixed point iterators.