pub trait Searcher<L, N> where
    L: Language,
    N: Analysis<L>, 
{ fn search_eclass(
        &self,
        egraph: &EGraph<L, N>,
        eclass: Id
    ) -> Option<SearchMatches<'_, L>>; fn vars(&self) -> Vec<Var>; fn search(&self, egraph: &EGraph<L, N>) -> Vec<SearchMatches<'_, L>> { ... } fn n_matches(&self, egraph: &EGraph<L, N>) -> usize { ... } fn get_pattern_ast(&self) -> Option<&PatternAst<L>> { ... } }
Expand description

The lefthand side of a Rewrite.

A Searcher is something that can search the egraph and find matching substititions. Right now the only significant Searcher is Pattern.

Required Methods

Search one eclass, returning None if no matches can be found. This should not return a SearchMatches with no substs.

Returns a list of the variables bound by this Searcher

Provided Methods

Search the whole EGraph, returning a list of all the SearchMatches where something was found. This just calls search_eclass on each eclass.

Returns the number of matches in the e-graph

For patterns, return the ast directly as a reference

Implementors