diff --git a/implementors/core/clone/trait.Clone.js b/implementors/core/clone/trait.Clone.js
index d051ab1f..985e00cc 100644
--- a/implementors/core/clone/trait.Clone.js
+++ b/implementors/core/clone/trait.Clone.js
@@ -1,3 +1,3 @@
(function() {var implementors = {};
-implementors["plat_egg"] = [{"text":"impl<L: Clone, D: Clone> Clone for EClassData<L, D>","synthetic":false,"types":["plat_egg::eclass::EClassData"]},{"text":"impl<L: Clone + Language, N: Clone + Analysis<L>> Clone for EGraph<L, N> where
N::Data: Clone,
L::Discriminant: Clone,
N::Data: Clone, ","synthetic":false,"types":["plat_egg::egraph::EGraph"]},{"text":"impl Clone for Justification","synthetic":false,"types":["plat_egg::explain::Justification"]},{"text":"impl<L: Clone + Language> Clone for TreeTerm<L>","synthetic":false,"types":["plat_egg::explain::TreeTerm"]},{"text":"impl<L: Clone + Language> Clone for FlatTerm<L>","synthetic":false,"types":["plat_egg::explain::FlatTerm"]},{"text":"impl Clone for SymbolLang","synthetic":false,"types":["plat_egg::language::SymbolLang"]},{"text":"impl<L: Clone> Clone for MultiPattern<L>","synthetic":false,"types":["plat_egg::multipattern::MultiPattern"]},{"text":"impl<L: Clone> Clone for Pattern<L>","synthetic":false,"types":["plat_egg::pattern::Pattern"]},{"text":"impl<L: Clone> Clone for ENodeOrVar<L>","synthetic":false,"types":["plat_egg::pattern::ENodeOrVar"]},{"text":"impl<D: Clone> Clone for RawEClass<D>","synthetic":false,"types":["plat_egg::raw::eclass::RawEClass"]},{"text":"impl<L: Clone + Language> Clone for EGraphResidual<L>","synthetic":false,"types":["plat_egg::raw::egraph::EGraphResidual"]},{"text":"impl<L: Clone + Language, D: Clone, U: Clone> Clone for RawEGraph<L, D, U>","synthetic":false,"types":["plat_egg::raw::egraph::RawEGraph"]},{"text":"impl Clone for PushInfo","synthetic":false,"types":["plat_egg::raw::semi_persistent1::PushInfo"]},{"text":"impl Clone for UndoLog","synthetic":false,"types":["plat_egg::raw::semi_persistent1::UndoLog"]},{"text":"impl<T: Clone> Clone for DefaultVec<T>","synthetic":false,"types":["plat_egg::raw::bitset::DefaultVec"]},{"text":"impl Clone for BitSet","synthetic":false,"types":["plat_egg::raw::bitset::BitSet"]},{"text":"impl<L: Clone> Clone for RecExpr<L>","synthetic":false,"types":["plat_egg::raw::language::RecExpr"]},{"text":"impl Clone for PushInfo","synthetic":false,"types":["plat_egg::raw::semi_persistent2::PushInfo"]},{"text":"impl Clone for UndoLog","synthetic":false,"types":["plat_egg::raw::semi_persistent2::UndoLog"]},{"text":"impl<'a, L> Clone for UndoCtx<'a, L>","synthetic":false,"types":["plat_egg::raw::semi_persistent2::UndoCtx"]},{"text":"impl Clone for UnionFind","synthetic":false,"types":["plat_egg::raw::unionfind::UnionFind"]},{"text":"impl<L: Clone, N: Clone> Clone for Rewrite<L, N>","synthetic":false,"types":["plat_egg::rewrite::Rewrite"]},{"text":"impl<C: Clone, A: Clone> Clone for ConditionalApplier<C, A>","synthetic":false,"types":["plat_egg::rewrite::ConditionalApplier"]},{"text":"impl Clone for StopReason","synthetic":false,"types":["plat_egg::run::StopReason"]},{"text":"impl Clone for Report","synthetic":false,"types":["plat_egg::run::Report"]},{"text":"impl<IterData: Clone> Clone for Iteration<IterData>","synthetic":false,"types":["plat_egg::run::Iteration"]},{"text":"impl Clone for Var","synthetic":false,"types":["plat_egg::subst::Var"]},{"text":"impl Clone for Subst","synthetic":false,"types":["plat_egg::subst::Subst"]},{"text":"impl Clone for Id","synthetic":false,"types":["plat_egg::Id"]}];
+implementors["plat_egg"] = [{"text":"impl<L: Clone, D: Clone> Clone for EClassData<L, D>","synthetic":false,"types":["plat_egg::eclass::EClassData"]},{"text":"impl<L: Clone + Language, N: Clone + Analysis<L>> Clone for EGraph<L, N> where
N::Data: Clone,
L::Discriminant: Clone,
N::Data: Clone, ","synthetic":false,"types":["plat_egg::egraph::EGraph"]},{"text":"impl Clone for Justification","synthetic":false,"types":["plat_egg::explain::Justification"]},{"text":"impl<L: Clone + Language> Clone for TreeTerm<L>","synthetic":false,"types":["plat_egg::explain::TreeTerm"]},{"text":"impl<L: Clone + Language> Clone for FlatTerm<L>","synthetic":false,"types":["plat_egg::explain::FlatTerm"]},{"text":"impl Clone for SymbolLang","synthetic":false,"types":["plat_egg::language::SymbolLang"]},{"text":"impl<L: Clone> Clone for MultiPattern<L>","synthetic":false,"types":["plat_egg::multipattern::MultiPattern"]},{"text":"impl<L: Clone> Clone for Pattern<L>","synthetic":false,"types":["plat_egg::pattern::Pattern"]},{"text":"impl<L: Clone> Clone for ENodeOrVar<L>","synthetic":false,"types":["plat_egg::pattern::ENodeOrVar"]},{"text":"impl<D: Clone> Clone for RawEClass<D>","synthetic":false,"types":["plat_egg::raw::eclass::RawEClass"]},{"text":"impl<L: Clone + Language, P: Clone + PathCompressT> Clone for EGraphResidual<L, P>","synthetic":false,"types":["plat_egg::raw::egraph::EGraphResidual"]},{"text":"impl<L: Clone + Language, D: Clone, U: Clone + UndoLogT<L, D>> Clone for RawEGraph<L, D, U> where
U::AllowPathCompress: Clone, ","synthetic":false,"types":["plat_egg::raw::egraph::RawEGraph"]},{"text":"impl Clone for PushInfo","synthetic":false,"types":["plat_egg::raw::semi_persistent1::PushInfo"]},{"text":"impl Clone for UndoLog","synthetic":false,"types":["plat_egg::raw::semi_persistent1::UndoLog"]},{"text":"impl<L: Clone> Clone for RecExpr<L>","synthetic":false,"types":["plat_egg::raw::language::RecExpr"]},{"text":"impl Clone for PushInfo","synthetic":false,"types":["plat_egg::raw::semi_persistent2::PushInfo"]},{"text":"impl Clone for UndoLog","synthetic":false,"types":["plat_egg::raw::semi_persistent2::UndoLog"]},{"text":"impl<'a, L> Clone for UndoCtx<'a, L>","synthetic":false,"types":["plat_egg::raw::semi_persistent2::UndoCtx"]},{"text":"impl<P: Clone + PathCompressT> Clone for UnionFind<P>","synthetic":false,"types":["plat_egg::raw::unionfind::UnionFind"]},{"text":"impl<const B: bool> Clone for PathCompress<B>","synthetic":false,"types":["plat_egg::raw::reflect_const::PathCompress"]},{"text":"impl<L: Clone, N: Clone> Clone for Rewrite<L, N>","synthetic":false,"types":["plat_egg::rewrite::Rewrite"]},{"text":"impl<C: Clone, A: Clone> Clone for ConditionalApplier<C, A>","synthetic":false,"types":["plat_egg::rewrite::ConditionalApplier"]},{"text":"impl Clone for StopReason","synthetic":false,"types":["plat_egg::run::StopReason"]},{"text":"impl Clone for Report","synthetic":false,"types":["plat_egg::run::Report"]},{"text":"impl<IterData: Clone> Clone for Iteration<IterData>","synthetic":false,"types":["plat_egg::run::Iteration"]},{"text":"impl Clone for Var","synthetic":false,"types":["plat_egg::subst::Var"]},{"text":"impl Clone for Subst","synthetic":false,"types":["plat_egg::subst::Subst"]},{"text":"impl Clone for Id","synthetic":false,"types":["plat_egg::Id"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/cmp/trait.Eq.js b/implementors/core/cmp/trait.Eq.js
index c3e3876b..0e8c6142 100644
--- a/implementors/core/cmp/trait.Eq.js
+++ b/implementors/core/cmp/trait.Eq.js
@@ -1,3 +1,3 @@
(function() {var implementors = {};
-implementors["plat_egg"] = [{"text":"impl Eq for Justification","synthetic":false,"types":["plat_egg::explain::Justification"]},{"text":"impl<L: Eq + Language> Eq for FlatTerm<L>","synthetic":false,"types":["plat_egg::explain::FlatTerm"]},{"text":"impl Eq for SymbolLang","synthetic":false,"types":["plat_egg::language::SymbolLang"]},{"text":"impl<L: Eq> Eq for MultiPattern<L>","synthetic":false,"types":["plat_egg::multipattern::MultiPattern"]},{"text":"impl<L: Eq> Eq for Pattern<L>","synthetic":false,"types":["plat_egg::pattern::Pattern"]},{"text":"impl<L: Eq> Eq for ENodeOrVar<L>","synthetic":false,"types":["plat_egg::pattern::ENodeOrVar"]},{"text":"impl<L: Eq> Eq for RecExpr<L>","synthetic":false,"types":["plat_egg::raw::language::RecExpr"]},{"text":"impl Eq for Var","synthetic":false,"types":["plat_egg::subst::Var"]},{"text":"impl Eq for Subst","synthetic":false,"types":["plat_egg::subst::Subst"]},{"text":"impl Eq for Id","synthetic":false,"types":["plat_egg::Id"]}];
+implementors["plat_egg"] = [{"text":"impl Eq for Justification","synthetic":false,"types":["plat_egg::explain::Justification"]},{"text":"impl<L: Eq + Language> Eq for FlatTerm<L>","synthetic":false,"types":["plat_egg::explain::FlatTerm"]},{"text":"impl Eq for SymbolLang","synthetic":false,"types":["plat_egg::language::SymbolLang"]},{"text":"impl<L: Eq> Eq for MultiPattern<L>","synthetic":false,"types":["plat_egg::multipattern::MultiPattern"]},{"text":"impl<L: Eq> Eq for Pattern<L>","synthetic":false,"types":["plat_egg::pattern::Pattern"]},{"text":"impl<L: Eq> Eq for ENodeOrVar<L>","synthetic":false,"types":["plat_egg::pattern::ENodeOrVar"]},{"text":"impl<L: Eq> Eq for RecExpr<L>","synthetic":false,"types":["plat_egg::raw::language::RecExpr"]},{"text":"impl<const B: bool> Eq for PathCompress<B>","synthetic":false,"types":["plat_egg::raw::reflect_const::PathCompress"]},{"text":"impl Eq for Var","synthetic":false,"types":["plat_egg::subst::Var"]},{"text":"impl Eq for Subst","synthetic":false,"types":["plat_egg::subst::Subst"]},{"text":"impl Eq for Id","synthetic":false,"types":["plat_egg::Id"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/cmp/trait.PartialEq.js b/implementors/core/cmp/trait.PartialEq.js
index a2e5ac7b..0ef301e4 100644
--- a/implementors/core/cmp/trait.PartialEq.js
+++ b/implementors/core/cmp/trait.PartialEq.js
@@ -1,3 +1,3 @@
(function() {var implementors = {};
-implementors["plat_egg"] = [{"text":"impl PartialEq<Justification> for Justification","synthetic":false,"types":["plat_egg::explain::Justification"]},{"text":"impl<L: Language> PartialEq<FlatTerm<L>> for FlatTerm<L>","synthetic":false,"types":["plat_egg::explain::FlatTerm"]},{"text":"impl PartialEq<SymbolLang> for SymbolLang","synthetic":false,"types":["plat_egg::language::SymbolLang"]},{"text":"impl<L: PartialEq> PartialEq<MultiPattern<L>> for MultiPattern<L>","synthetic":false,"types":["plat_egg::multipattern::MultiPattern"]},{"text":"impl<L: PartialEq> PartialEq<Pattern<L>> for Pattern<L>","synthetic":false,"types":["plat_egg::pattern::Pattern"]},{"text":"impl<L: PartialEq> PartialEq<ENodeOrVar<L>> for ENodeOrVar<L>","synthetic":false,"types":["plat_egg::pattern::ENodeOrVar"]},{"text":"impl<L: PartialEq> PartialEq<RecExpr<L>> for RecExpr<L>","synthetic":false,"types":["plat_egg::raw::language::RecExpr"]},{"text":"impl PartialEq<Var> for Var","synthetic":false,"types":["plat_egg::subst::Var"]},{"text":"impl PartialEq<Subst> for Subst","synthetic":false,"types":["plat_egg::subst::Subst"]},{"text":"impl PartialEq<Id> for Id","synthetic":false,"types":["plat_egg::Id"]}];
+implementors["plat_egg"] = [{"text":"impl PartialEq<Justification> for Justification","synthetic":false,"types":["plat_egg::explain::Justification"]},{"text":"impl<L: Language> PartialEq<FlatTerm<L>> for FlatTerm<L>","synthetic":false,"types":["plat_egg::explain::FlatTerm"]},{"text":"impl PartialEq<SymbolLang> for SymbolLang","synthetic":false,"types":["plat_egg::language::SymbolLang"]},{"text":"impl<L: PartialEq> PartialEq<MultiPattern<L>> for MultiPattern<L>","synthetic":false,"types":["plat_egg::multipattern::MultiPattern"]},{"text":"impl<L: PartialEq> PartialEq<Pattern<L>> for Pattern<L>","synthetic":false,"types":["plat_egg::pattern::Pattern"]},{"text":"impl<L: PartialEq> PartialEq<ENodeOrVar<L>> for ENodeOrVar<L>","synthetic":false,"types":["plat_egg::pattern::ENodeOrVar"]},{"text":"impl<L: PartialEq> PartialEq<RecExpr<L>> for RecExpr<L>","synthetic":false,"types":["plat_egg::raw::language::RecExpr"]},{"text":"impl<const B: bool> PartialEq<PathCompress<B>> for PathCompress<B>","synthetic":false,"types":["plat_egg::raw::reflect_const::PathCompress"]},{"text":"impl PartialEq<Var> for Var","synthetic":false,"types":["plat_egg::subst::Var"]},{"text":"impl PartialEq<Subst> for Subst","synthetic":false,"types":["plat_egg::subst::Subst"]},{"text":"impl PartialEq<Id> for Id","synthetic":false,"types":["plat_egg::Id"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/default/trait.Default.js b/implementors/core/default/trait.Default.js
index 878077d0..ad8f1929 100644
--- a/implementors/core/default/trait.Default.js
+++ b/implementors/core/default/trait.Default.js
@@ -1,3 +1,3 @@
(function() {var implementors = {};
-implementors["plat_egg"] = [{"text":"impl<L: Language, N: Analysis<L> + Default> Default for EGraph<L, N>","synthetic":false,"types":["plat_egg::egraph::EGraph"]},{"text":"impl<L: Language, D, U: Default> Default for RawEGraph<L, D, U>","synthetic":false,"types":["plat_egg::raw::egraph::RawEGraph"]},{"text":"impl Default for UndoLog","synthetic":false,"types":["plat_egg::raw::semi_persistent1::UndoLog"]},{"text":"impl<T: Default> Default for DefaultVec<T>","synthetic":false,"types":["plat_egg::raw::bitset::DefaultVec"]},{"text":"impl Default for BitSet","synthetic":false,"types":["plat_egg::raw::bitset::BitSet"]},{"text":"impl<L> Default for RecExpr<L>","synthetic":false,"types":["plat_egg::raw::language::RecExpr"]},{"text":"impl Default for UndoLog","synthetic":false,"types":["plat_egg::raw::semi_persistent2::UndoLog"]},{"text":"impl Default for UnionFind","synthetic":false,"types":["plat_egg::raw::unionfind::UnionFind"]},{"text":"impl<L, N> Default for Runner<L, N, ()> where
L: Language,
N: Analysis<L> + Default, ","synthetic":false,"types":["plat_egg::run::Runner"]},{"text":"impl Default for BackoffScheduler","synthetic":false,"types":["plat_egg::run::BackoffScheduler"]},{"text":"impl Default for Subst","synthetic":false,"types":["plat_egg::subst::Subst"]},{"text":"impl Default for Id","synthetic":false,"types":["plat_egg::Id"]}];
+implementors["plat_egg"] = [{"text":"impl<L: Language, N: Analysis<L> + Default> Default for EGraph<L, N>","synthetic":false,"types":["plat_egg::egraph::EGraph"]},{"text":"impl<L: Language, D, U: Default + UndoLogT<L, D>> Default for RawEGraph<L, D, U>","synthetic":false,"types":["plat_egg::raw::egraph::RawEGraph"]},{"text":"impl Default for UndoLog","synthetic":false,"types":["plat_egg::raw::semi_persistent1::UndoLog"]},{"text":"impl<L> Default for RecExpr<L>","synthetic":false,"types":["plat_egg::raw::language::RecExpr"]},{"text":"impl Default for UndoLog","synthetic":false,"types":["plat_egg::raw::semi_persistent2::UndoLog"]},{"text":"impl<P: Default + PathCompressT> Default for UnionFind<P>","synthetic":false,"types":["plat_egg::raw::unionfind::UnionFind"]},{"text":"impl<const B: bool> Default for PathCompress<B>","synthetic":false,"types":["plat_egg::raw::reflect_const::PathCompress"]},{"text":"impl<L, N> Default for Runner<L, N, ()> where
L: Language,
N: Analysis<L> + Default, ","synthetic":false,"types":["plat_egg::run::Runner"]},{"text":"impl Default for BackoffScheduler","synthetic":false,"types":["plat_egg::run::BackoffScheduler"]},{"text":"impl Default for Subst","synthetic":false,"types":["plat_egg::subst::Subst"]},{"text":"impl Default for Id","synthetic":false,"types":["plat_egg::Id"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/fmt/trait.Debug.js b/implementors/core/fmt/trait.Debug.js
index f9bdc704..f1f4cf50 100644
--- a/implementors/core/fmt/trait.Debug.js
+++ b/implementors/core/fmt/trait.Debug.js
@@ -1,3 +1,3 @@
(function() {var implementors = {};
-implementors["plat_egg"] = [{"text":"impl<'a, L: Language> Debug for Dot<'a, L>","synthetic":false,"types":["plat_egg::dot::Dot"]},{"text":"impl<L: Language, D: Debug> Debug for EClassData<L, D>","synthetic":false,"types":["plat_egg::eclass::EClassData"]},{"text":"impl<L: Language, N: Analysis<L>> Debug for EGraph<L, N>","synthetic":false,"types":["plat_egg::egraph::EGraph"]},{"text":"impl Debug for Justification","synthetic":false,"types":["plat_egg::explain::Justification"]},{"text":"impl<L: Debug + Language> Debug for TreeTerm<L>","synthetic":false,"types":["plat_egg::explain::TreeTerm"]},{"text":"impl<L: Debug + Language> Debug for FlatTerm<L>","synthetic":false,"types":["plat_egg::explain::FlatTerm"]},{"text":"impl<'a, CF: Debug + CostFunction<L>, L: Debug + Language, N: Debug + Analysis<L>> Debug for Extractor<'a, CF, L, N> where
CF::Cost: Debug, ","synthetic":false,"types":["plat_egg::extract::Extractor"]},{"text":"impl Debug for AstSize","synthetic":false,"types":["plat_egg::extract::AstSize"]},{"text":"impl Debug for AstDepth","synthetic":false,"types":["plat_egg::extract::AstDepth"]},{"text":"impl Debug for FromOpError","synthetic":false,"types":["plat_egg::language::FromOpError"]},{"text":"impl<E: Debug> Debug for RecExprParseError<E>","synthetic":false,"types":["plat_egg::language::RecExprParseError"]},{"text":"impl Debug for SymbolLang","synthetic":false,"types":["plat_egg::language::SymbolLang"]},{"text":"impl<L: Debug> Debug for MultiPattern<L>","synthetic":false,"types":["plat_egg::multipattern::MultiPattern"]},{"text":"impl<E: Debug> Debug for MultiPatternParseError<E>","synthetic":false,"types":["plat_egg::multipattern::MultiPatternParseError"]},{"text":"impl<L: Debug> Debug for Pattern<L>","synthetic":false,"types":["plat_egg::pattern::Pattern"]},{"text":"impl<L: Debug> Debug for ENodeOrVar<L>","synthetic":false,"types":["plat_egg::pattern::ENodeOrVar"]},{"text":"impl<'a, L: Debug + Language> Debug for SearchMatches<'a, L>","synthetic":false,"types":["plat_egg::pattern::SearchMatches"]},{"text":"impl<D: Debug> Debug for RawEClass<D>","synthetic":false,"types":["plat_egg::raw::eclass::RawEClass"]},{"text":"impl<L: Language> Debug for EGraphResidual<L>","synthetic":false,"types":["plat_egg::raw::egraph::EGraphResidual"]},{"text":"impl<L: Language, D: Debug, U> Debug for RawEGraph<L, D, U>","synthetic":false,"types":["plat_egg::raw::egraph::RawEGraph"]},{"text":"impl Debug for PushInfo","synthetic":false,"types":["plat_egg::raw::semi_persistent1::PushInfo"]},{"text":"impl Debug for UndoLog","synthetic":false,"types":["plat_egg::raw::semi_persistent1::UndoLog"]},{"text":"impl<T: Debug> Debug for DefaultVec<T>","synthetic":false,"types":["plat_egg::raw::bitset::DefaultVec"]},{"text":"impl Debug for BitSet","synthetic":false,"types":["plat_egg::raw::bitset::BitSet"]},{"text":"impl<L: Debug> Debug for RecExpr<L>","synthetic":false,"types":["plat_egg::raw::language::RecExpr"]},{"text":"impl Debug for PushInfo","synthetic":false,"types":["plat_egg::raw::semi_persistent2::PushInfo"]},{"text":"impl Debug for UndoLog","synthetic":false,"types":["plat_egg::raw::semi_persistent2::UndoLog"]},{"text":"impl Debug for UnionFind","synthetic":false,"types":["plat_egg::raw::unionfind::UnionFind"]},{"text":"impl<L, N> Debug for Rewrite<L, N> where
L: Language + Display + 'static,
N: Analysis<L> + 'static, ","synthetic":false,"types":["plat_egg::rewrite::Rewrite"]},{"text":"impl<C: Debug, A: Debug> Debug for ConditionalApplier<C, A>","synthetic":false,"types":["plat_egg::rewrite::ConditionalApplier"]},{"text":"impl<L: Debug> Debug for ConditionEqual<L>","synthetic":false,"types":["plat_egg::rewrite::ConditionEqual"]},{"text":"impl<L, N, IterData> Debug for Runner<L, N, IterData> where
L: Language,
N: Analysis<L>,
IterData: Debug, ","synthetic":false,"types":["plat_egg::run::Runner"]},{"text":"impl Debug for StopReason","synthetic":false,"types":["plat_egg::run::StopReason"]},{"text":"impl Debug for Report","synthetic":false,"types":["plat_egg::run::Report"]},{"text":"impl<IterData: Debug> Debug for Iteration<IterData>","synthetic":false,"types":["plat_egg::run::Iteration"]},{"text":"impl Debug for SimpleScheduler","synthetic":false,"types":["plat_egg::run::SimpleScheduler"]},{"text":"impl Debug for BackoffScheduler","synthetic":false,"types":["plat_egg::run::BackoffScheduler"]},{"text":"impl Debug for Var","synthetic":false,"types":["plat_egg::subst::Var"]},{"text":"impl Debug for Subst","synthetic":false,"types":["plat_egg::subst::Subst"]},{"text":"impl Debug for Id","synthetic":false,"types":["plat_egg::Id"]}];
+implementors["plat_egg"] = [{"text":"impl<'a, L: Language, P: PathCompressT> Debug for Dot<'a, L, P>","synthetic":false,"types":["plat_egg::dot::Dot"]},{"text":"impl<L: Language, D: Debug> Debug for EClassData<L, D>","synthetic":false,"types":["plat_egg::eclass::EClassData"]},{"text":"impl<L: Language, N: Analysis<L>> Debug for EGraph<L, N>","synthetic":false,"types":["plat_egg::egraph::EGraph"]},{"text":"impl Debug for Justification","synthetic":false,"types":["plat_egg::explain::Justification"]},{"text":"impl<L: Debug + Language> Debug for TreeTerm<L>","synthetic":false,"types":["plat_egg::explain::TreeTerm"]},{"text":"impl<L: Debug + Language> Debug for FlatTerm<L>","synthetic":false,"types":["plat_egg::explain::FlatTerm"]},{"text":"impl<'a, CF: Debug + CostFunction<L>, L: Debug + Language, N: Debug + Analysis<L>> Debug for Extractor<'a, CF, L, N> where
CF::Cost: Debug, ","synthetic":false,"types":["plat_egg::extract::Extractor"]},{"text":"impl Debug for AstSize","synthetic":false,"types":["plat_egg::extract::AstSize"]},{"text":"impl Debug for AstDepth","synthetic":false,"types":["plat_egg::extract::AstDepth"]},{"text":"impl Debug for FromOpError","synthetic":false,"types":["plat_egg::language::FromOpError"]},{"text":"impl<E: Debug> Debug for RecExprParseError<E>","synthetic":false,"types":["plat_egg::language::RecExprParseError"]},{"text":"impl Debug for SymbolLang","synthetic":false,"types":["plat_egg::language::SymbolLang"]},{"text":"impl<L: Debug> Debug for MultiPattern<L>","synthetic":false,"types":["plat_egg::multipattern::MultiPattern"]},{"text":"impl<E: Debug> Debug for MultiPatternParseError<E>","synthetic":false,"types":["plat_egg::multipattern::MultiPatternParseError"]},{"text":"impl<L: Debug> Debug for Pattern<L>","synthetic":false,"types":["plat_egg::pattern::Pattern"]},{"text":"impl<L: Debug> Debug for ENodeOrVar<L>","synthetic":false,"types":["plat_egg::pattern::ENodeOrVar"]},{"text":"impl<'a, L: Debug + Language> Debug for SearchMatches<'a, L>","synthetic":false,"types":["plat_egg::pattern::SearchMatches"]},{"text":"impl<D: Debug> Debug for RawEClass<D>","synthetic":false,"types":["plat_egg::raw::eclass::RawEClass"]},{"text":"impl<L: Language, P: PathCompressT> Debug for EGraphResidual<L, P>","synthetic":false,"types":["plat_egg::raw::egraph::EGraphResidual"]},{"text":"impl<L: Language, D: Debug, U: UndoLogT<L, D>> Debug for RawEGraph<L, D, U>","synthetic":false,"types":["plat_egg::raw::egraph::RawEGraph"]},{"text":"impl Debug for PushInfo","synthetic":false,"types":["plat_egg::raw::semi_persistent1::PushInfo"]},{"text":"impl Debug for UndoLog","synthetic":false,"types":["plat_egg::raw::semi_persistent1::UndoLog"]},{"text":"impl<L: Debug> Debug for RecExpr<L>","synthetic":false,"types":["plat_egg::raw::language::RecExpr"]},{"text":"impl Debug for PushInfo","synthetic":false,"types":["plat_egg::raw::semi_persistent2::PushInfo"]},{"text":"impl Debug for UndoLog","synthetic":false,"types":["plat_egg::raw::semi_persistent2::UndoLog"]},{"text":"impl<P: Debug + PathCompressT> Debug for UnionFind<P>","synthetic":false,"types":["plat_egg::raw::unionfind::UnionFind"]},{"text":"impl<const B: bool> Debug for PathCompress<B>","synthetic":false,"types":["plat_egg::raw::reflect_const::PathCompress"]},{"text":"impl<L, N> Debug for Rewrite<L, N> where
L: Language + Display + 'static,
N: Analysis<L> + 'static, ","synthetic":false,"types":["plat_egg::rewrite::Rewrite"]},{"text":"impl<C: Debug, A: Debug> Debug for ConditionalApplier<C, A>","synthetic":false,"types":["plat_egg::rewrite::ConditionalApplier"]},{"text":"impl<L: Debug> Debug for ConditionEqual<L>","synthetic":false,"types":["plat_egg::rewrite::ConditionEqual"]},{"text":"impl<L, N, IterData> Debug for Runner<L, N, IterData> where
L: Language,
N: Analysis<L>,
IterData: Debug, ","synthetic":false,"types":["plat_egg::run::Runner"]},{"text":"impl Debug for StopReason","synthetic":false,"types":["plat_egg::run::StopReason"]},{"text":"impl Debug for Report","synthetic":false,"types":["plat_egg::run::Report"]},{"text":"impl<IterData: Debug> Debug for Iteration<IterData>","synthetic":false,"types":["plat_egg::run::Iteration"]},{"text":"impl Debug for SimpleScheduler","synthetic":false,"types":["plat_egg::run::SimpleScheduler"]},{"text":"impl Debug for BackoffScheduler","synthetic":false,"types":["plat_egg::run::BackoffScheduler"]},{"text":"impl Debug for Var","synthetic":false,"types":["plat_egg::subst::Var"]},{"text":"impl Debug for Subst","synthetic":false,"types":["plat_egg::subst::Subst"]},{"text":"impl Debug for Id","synthetic":false,"types":["plat_egg::Id"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/fmt/trait.Display.js b/implementors/core/fmt/trait.Display.js
index d73708f2..5dc63a9e 100644
--- a/implementors/core/fmt/trait.Display.js
+++ b/implementors/core/fmt/trait.Display.js
@@ -1,3 +1,3 @@
(function() {var implementors = {};
-implementors["plat_egg"] = [{"text":"impl<'a, L> Display for Dot<'a, L> where
L: Language + Display, ","synthetic":false,"types":["plat_egg::dot::Dot"]},{"text":"impl<L: Language + Display + FromOp> Display for Explanation<L>","synthetic":false,"types":["plat_egg::explain::Explanation"]},{"text":"impl<L: Language + Display + FromOp> Display for FlatTerm<L>","synthetic":false,"types":["plat_egg::explain::FlatTerm"]},{"text":"impl<L: Language + Display + FromOp> Display for TreeTerm<L>","synthetic":false,"types":["plat_egg::explain::TreeTerm"]},{"text":"impl Display for FromOpError","synthetic":false,"types":["plat_egg::language::FromOpError"]},{"text":"impl<L: Language + Display> Display for RecExpr<L>","synthetic":false,"types":["plat_egg::raw::language::RecExpr"]},{"text":"impl<E> Display for RecExprParseError<E> where
E: Display, ","synthetic":false,"types":["plat_egg::language::RecExprParseError"]},{"text":"impl Display for SymbolLang","synthetic":false,"types":["plat_egg::language::SymbolLang"]},{"text":"impl<E> Display for MultiPatternParseError<E> where
E: Display, ","synthetic":false,"types":["plat_egg::multipattern::MultiPatternParseError"]},{"text":"impl<L: Language + Display> Display for ENodeOrVar<L>","synthetic":false,"types":["plat_egg::pattern::ENodeOrVar"]},{"text":"impl<L: Language + Display> Display for Pattern<L>","synthetic":false,"types":["plat_egg::pattern::Pattern"]},{"text":"impl Display for Report","synthetic":false,"types":["plat_egg::run::Report"]},{"text":"impl Display for Var","synthetic":false,"types":["plat_egg::subst::Var"]},{"text":"impl Display for Id","synthetic":false,"types":["plat_egg::Id"]}];
+implementors["plat_egg"] = [{"text":"impl<'a, L, P: PathCompressT> Display for Dot<'a, L, P> where
L: Language + Display, ","synthetic":false,"types":["plat_egg::dot::Dot"]},{"text":"impl<L: Language + Display + FromOp> Display for Explanation<L>","synthetic":false,"types":["plat_egg::explain::Explanation"]},{"text":"impl<L: Language + Display + FromOp> Display for FlatTerm<L>","synthetic":false,"types":["plat_egg::explain::FlatTerm"]},{"text":"impl<L: Language + Display + FromOp> Display for TreeTerm<L>","synthetic":false,"types":["plat_egg::explain::TreeTerm"]},{"text":"impl Display for FromOpError","synthetic":false,"types":["plat_egg::language::FromOpError"]},{"text":"impl<L: Language + Display> Display for RecExpr<L>","synthetic":false,"types":["plat_egg::raw::language::RecExpr"]},{"text":"impl<E> Display for RecExprParseError<E> where
E: Display, ","synthetic":false,"types":["plat_egg::language::RecExprParseError"]},{"text":"impl Display for SymbolLang","synthetic":false,"types":["plat_egg::language::SymbolLang"]},{"text":"impl<E> Display for MultiPatternParseError<E> where
E: Display, ","synthetic":false,"types":["plat_egg::multipattern::MultiPatternParseError"]},{"text":"impl<L: Language + Display> Display for ENodeOrVar<L>","synthetic":false,"types":["plat_egg::pattern::ENodeOrVar"]},{"text":"impl<L: Language + Display> Display for Pattern<L>","synthetic":false,"types":["plat_egg::pattern::Pattern"]},{"text":"impl Display for Report","synthetic":false,"types":["plat_egg::run::Report"]},{"text":"impl Display for Var","synthetic":false,"types":["plat_egg::subst::Var"]},{"text":"impl Display for Id","synthetic":false,"types":["plat_egg::Id"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/marker/trait.Copy.js b/implementors/core/marker/trait.Copy.js
index e0cd77e3..a4c04681 100644
--- a/implementors/core/marker/trait.Copy.js
+++ b/implementors/core/marker/trait.Copy.js
@@ -1,3 +1,3 @@
(function() {var implementors = {};
-implementors["plat_egg"] = [{"text":"impl<'a, L> Copy for UndoCtx<'a, L>","synthetic":false,"types":["plat_egg::raw::semi_persistent2::UndoCtx"]},{"text":"impl Copy for Var","synthetic":false,"types":["plat_egg::subst::Var"]},{"text":"impl Copy for Id","synthetic":false,"types":["plat_egg::Id"]}];
+implementors["plat_egg"] = [{"text":"impl<'a, L> Copy for UndoCtx<'a, L>","synthetic":false,"types":["plat_egg::raw::semi_persistent2::UndoCtx"]},{"text":"impl<const B: bool> Copy for PathCompress<B>","synthetic":false,"types":["plat_egg::raw::reflect_const::PathCompress"]},{"text":"impl Copy for Var","synthetic":false,"types":["plat_egg::subst::Var"]},{"text":"impl Copy for Id","synthetic":false,"types":["plat_egg::Id"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/marker/trait.Freeze.js b/implementors/core/marker/trait.Freeze.js
index cf062477..592143f6 100644
--- a/implementors/core/marker/trait.Freeze.js
+++ b/implementors/core/marker/trait.Freeze.js
@@ -1,3 +1,3 @@
(function() {var implementors = {};
-implementors["plat_egg"] = [{"text":"impl<'a, L> Freeze for Dot<'a, L>","synthetic":true,"types":["plat_egg::dot::Dot"]},{"text":"impl<L, D> Freeze for EClassData<L, D> where
D: Freeze, ","synthetic":true,"types":["plat_egg::eclass::EClassData"]},{"text":"impl<L, N> Freeze for EGraph<L, N> where
N: Freeze, ","synthetic":true,"types":["plat_egg::egraph::EGraph"]},{"text":"impl Freeze for Justification","synthetic":true,"types":["plat_egg::explain::Justification"]},{"text":"impl<L> Freeze for Explanation<L>","synthetic":true,"types":["plat_egg::explain::Explanation"]},{"text":"impl<L> Freeze for TreeTerm<L> where
L: Freeze, ","synthetic":true,"types":["plat_egg::explain::TreeTerm"]},{"text":"impl<L> Freeze for FlatTerm<L> where
L: Freeze, ","synthetic":true,"types":["plat_egg::explain::FlatTerm"]},{"text":"impl<'a, CF, L, N> Freeze for Extractor<'a, CF, L, N> where
CF: Freeze, ","synthetic":true,"types":["plat_egg::extract::Extractor"]},{"text":"impl Freeze for AstSize","synthetic":true,"types":["plat_egg::extract::AstSize"]},{"text":"impl Freeze for AstDepth","synthetic":true,"types":["plat_egg::extract::AstDepth"]},{"text":"impl Freeze for FromOpError","synthetic":true,"types":["plat_egg::language::FromOpError"]},{"text":"impl<E> Freeze for RecExprParseError<E> where
E: Freeze, ","synthetic":true,"types":["plat_egg::language::RecExprParseError"]},{"text":"impl Freeze for DidMerge","synthetic":true,"types":["plat_egg::language::DidMerge"]},{"text":"impl Freeze for SymbolLang","synthetic":true,"types":["plat_egg::language::SymbolLang"]},{"text":"impl<'a, L, N> Freeze for LpExtractor<'a, L, N>","synthetic":true,"types":["plat_egg::lp_extract::LpExtractor"]},{"text":"impl<L> Freeze for MultiPattern<L>","synthetic":true,"types":["plat_egg::multipattern::MultiPattern"]},{"text":"impl<E> Freeze for MultiPatternParseError<E> where
E: Freeze, ","synthetic":true,"types":["plat_egg::multipattern::MultiPatternParseError"]},{"text":"impl<L> Freeze for Pattern<L>","synthetic":true,"types":["plat_egg::pattern::Pattern"]},{"text":"impl<L> Freeze for ENodeOrVar<L> where
L: Freeze, ","synthetic":true,"types":["plat_egg::pattern::ENodeOrVar"]},{"text":"impl<'a, L> Freeze for SearchMatches<'a, L>","synthetic":true,"types":["plat_egg::pattern::SearchMatches"]},{"text":"impl<D> Freeze for RawEClass<D> where
D: Freeze, ","synthetic":true,"types":["plat_egg::raw::eclass::RawEClass"]},{"text":"impl<L> Freeze for EGraphResidual<L>","synthetic":true,"types":["plat_egg::raw::egraph::EGraphResidual"]},{"text":"impl<L, D, U> Freeze for RawEGraph<L, D, U> where
U: Freeze, ","synthetic":true,"types":["plat_egg::raw::egraph::RawEGraph"]},{"text":"impl<D> Freeze for UnionInfo<D> where
D: Freeze, ","synthetic":true,"types":["plat_egg::raw::egraph::UnionInfo"]},{"text":"impl Freeze for PushInfo","synthetic":true,"types":["plat_egg::raw::semi_persistent1::PushInfo"]},{"text":"impl Freeze for UndoLog","synthetic":true,"types":["plat_egg::raw::semi_persistent1::UndoLog"]},{"text":"impl<T> Freeze for DefaultVec<T>","synthetic":true,"types":["plat_egg::raw::bitset::DefaultVec"]},{"text":"impl Freeze for BitSet","synthetic":true,"types":["plat_egg::raw::bitset::BitSet"]},{"text":"impl<L> Freeze for RecExpr<L>","synthetic":true,"types":["plat_egg::raw::language::RecExpr"]},{"text":"impl Freeze for PushInfo","synthetic":true,"types":["plat_egg::raw::semi_persistent2::PushInfo"]},{"text":"impl Freeze for UndoLog","synthetic":true,"types":["plat_egg::raw::semi_persistent2::UndoLog"]},{"text":"impl<'a, L> Freeze for UndoCtx<'a, L>","synthetic":true,"types":["plat_egg::raw::semi_persistent2::UndoCtx"]},{"text":"impl Freeze for UnionFind","synthetic":true,"types":["plat_egg::raw::unionfind::UnionFind"]},{"text":"impl<L, N> Freeze for Rewrite<L, N>","synthetic":true,"types":["plat_egg::rewrite::Rewrite"]},{"text":"impl<C, A> Freeze for ConditionalApplier<C, A> where
A: Freeze,
C: Freeze, ","synthetic":true,"types":["plat_egg::rewrite::ConditionalApplier"]},{"text":"impl<L> Freeze for ConditionEqual<L>","synthetic":true,"types":["plat_egg::rewrite::ConditionEqual"]},{"text":"impl<L, N, IterData> Freeze for Runner<L, N, IterData> where
N: Freeze, ","synthetic":true,"types":["plat_egg::run::Runner"]},{"text":"impl Freeze for StopReason","synthetic":true,"types":["plat_egg::run::StopReason"]},{"text":"impl Freeze for Report","synthetic":true,"types":["plat_egg::run::Report"]},{"text":"impl<IterData> Freeze for Iteration<IterData> where
IterData: Freeze, ","synthetic":true,"types":["plat_egg::run::Iteration"]},{"text":"impl Freeze for SimpleScheduler","synthetic":true,"types":["plat_egg::run::SimpleScheduler"]},{"text":"impl Freeze for BackoffScheduler","synthetic":true,"types":["plat_egg::run::BackoffScheduler"]},{"text":"impl Freeze for Var","synthetic":true,"types":["plat_egg::subst::Var"]},{"text":"impl Freeze for Subst","synthetic":true,"types":["plat_egg::subst::Subst"]},{"text":"impl Freeze for Id","synthetic":true,"types":["plat_egg::Id"]}];
+implementors["plat_egg"] = [{"text":"impl<'a, L, P> Freeze for Dot<'a, L, P>","synthetic":true,"types":["plat_egg::dot::Dot"]},{"text":"impl<L, D> Freeze for EClassData<L, D> where
D: Freeze, ","synthetic":true,"types":["plat_egg::eclass::EClassData"]},{"text":"impl<L, N> Freeze for EGraph<L, N> where
N: Freeze, ","synthetic":true,"types":["plat_egg::egraph::EGraph"]},{"text":"impl Freeze for Justification","synthetic":true,"types":["plat_egg::explain::Justification"]},{"text":"impl<L> Freeze for Explanation<L>","synthetic":true,"types":["plat_egg::explain::Explanation"]},{"text":"impl<L> Freeze for TreeTerm<L> where
L: Freeze, ","synthetic":true,"types":["plat_egg::explain::TreeTerm"]},{"text":"impl<L> Freeze for FlatTerm<L> where
L: Freeze, ","synthetic":true,"types":["plat_egg::explain::FlatTerm"]},{"text":"impl<'a, CF, L, N> Freeze for Extractor<'a, CF, L, N> where
CF: Freeze, ","synthetic":true,"types":["plat_egg::extract::Extractor"]},{"text":"impl Freeze for AstSize","synthetic":true,"types":["plat_egg::extract::AstSize"]},{"text":"impl Freeze for AstDepth","synthetic":true,"types":["plat_egg::extract::AstDepth"]},{"text":"impl Freeze for FromOpError","synthetic":true,"types":["plat_egg::language::FromOpError"]},{"text":"impl<E> Freeze for RecExprParseError<E> where
E: Freeze, ","synthetic":true,"types":["plat_egg::language::RecExprParseError"]},{"text":"impl Freeze for DidMerge","synthetic":true,"types":["plat_egg::language::DidMerge"]},{"text":"impl Freeze for SymbolLang","synthetic":true,"types":["plat_egg::language::SymbolLang"]},{"text":"impl<'a, L, N> Freeze for LpExtractor<'a, L, N>","synthetic":true,"types":["plat_egg::lp_extract::LpExtractor"]},{"text":"impl<L> Freeze for MultiPattern<L>","synthetic":true,"types":["plat_egg::multipattern::MultiPattern"]},{"text":"impl<E> Freeze for MultiPatternParseError<E> where
E: Freeze, ","synthetic":true,"types":["plat_egg::multipattern::MultiPatternParseError"]},{"text":"impl<L> Freeze for Pattern<L>","synthetic":true,"types":["plat_egg::pattern::Pattern"]},{"text":"impl<L> Freeze for ENodeOrVar<L> where
L: Freeze, ","synthetic":true,"types":["plat_egg::pattern::ENodeOrVar"]},{"text":"impl<'a, L> Freeze for SearchMatches<'a, L>","synthetic":true,"types":["plat_egg::pattern::SearchMatches"]},{"text":"impl<D> Freeze for RawEClass<D> where
D: Freeze, ","synthetic":true,"types":["plat_egg::raw::eclass::RawEClass"]},{"text":"impl<L, P> Freeze for EGraphResidual<L, P>","synthetic":true,"types":["plat_egg::raw::egraph::EGraphResidual"]},{"text":"impl<L, D, U> Freeze for RawEGraph<L, D, U> where
U: Freeze, ","synthetic":true,"types":["plat_egg::raw::egraph::RawEGraph"]},{"text":"impl<D> Freeze for UnionInfo<D> where
D: Freeze, ","synthetic":true,"types":["plat_egg::raw::egraph::UnionInfo"]},{"text":"impl Freeze for PushInfo","synthetic":true,"types":["plat_egg::raw::semi_persistent1::PushInfo"]},{"text":"impl Freeze for UndoLog","synthetic":true,"types":["plat_egg::raw::semi_persistent1::UndoLog"]},{"text":"impl<L> Freeze for RecExpr<L>","synthetic":true,"types":["plat_egg::raw::language::RecExpr"]},{"text":"impl Freeze for PushInfo","synthetic":true,"types":["plat_egg::raw::semi_persistent2::PushInfo"]},{"text":"impl Freeze for UndoLog","synthetic":true,"types":["plat_egg::raw::semi_persistent2::UndoLog"]},{"text":"impl<'a, L> Freeze for UndoCtx<'a, L>","synthetic":true,"types":["plat_egg::raw::semi_persistent2::UndoCtx"]},{"text":"impl<P> Freeze for UnionFind<P>","synthetic":true,"types":["plat_egg::raw::unionfind::UnionFind"]},{"text":"impl<const B: bool> Freeze for PathCompress<B>","synthetic":true,"types":["plat_egg::raw::reflect_const::PathCompress"]},{"text":"impl<L, N> Freeze for Rewrite<L, N>","synthetic":true,"types":["plat_egg::rewrite::Rewrite"]},{"text":"impl<C, A> Freeze for ConditionalApplier<C, A> where
A: Freeze,
C: Freeze, ","synthetic":true,"types":["plat_egg::rewrite::ConditionalApplier"]},{"text":"impl<L> Freeze for ConditionEqual<L>","synthetic":true,"types":["plat_egg::rewrite::ConditionEqual"]},{"text":"impl<L, N, IterData> Freeze for Runner<L, N, IterData> where
N: Freeze, ","synthetic":true,"types":["plat_egg::run::Runner"]},{"text":"impl Freeze for StopReason","synthetic":true,"types":["plat_egg::run::StopReason"]},{"text":"impl Freeze for Report","synthetic":true,"types":["plat_egg::run::Report"]},{"text":"impl<IterData> Freeze for Iteration<IterData> where
IterData: Freeze, ","synthetic":true,"types":["plat_egg::run::Iteration"]},{"text":"impl Freeze for SimpleScheduler","synthetic":true,"types":["plat_egg::run::SimpleScheduler"]},{"text":"impl Freeze for BackoffScheduler","synthetic":true,"types":["plat_egg::run::BackoffScheduler"]},{"text":"impl Freeze for Var","synthetic":true,"types":["plat_egg::subst::Var"]},{"text":"impl Freeze for Subst","synthetic":true,"types":["plat_egg::subst::Subst"]},{"text":"impl Freeze for Id","synthetic":true,"types":["plat_egg::Id"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/marker/trait.Send.js b/implementors/core/marker/trait.Send.js
index 3923adb4..52ea063b 100644
--- a/implementors/core/marker/trait.Send.js
+++ b/implementors/core/marker/trait.Send.js
@@ -1,3 +1,3 @@
(function() {var implementors = {};
-implementors["plat_egg"] = [{"text":"impl<'a, L> Send for Dot<'a, L> where
L: Sync, ","synthetic":true,"types":["plat_egg::dot::Dot"]},{"text":"impl<L, D> Send for EClassData<L, D> where
D: Send,
L: Send, ","synthetic":true,"types":["plat_egg::eclass::EClassData"]},{"text":"impl<L, N> Send for EGraph<L, N> where
L: Send,
N: Send,
<N as Analysis<L>>::Data: Send,
<L as Language>::Discriminant: Send, ","synthetic":true,"types":["plat_egg::egraph::EGraph"]},{"text":"impl Send for Justification","synthetic":true,"types":["plat_egg::explain::Justification"]},{"text":"impl<L> !Send for Explanation<L>","synthetic":true,"types":["plat_egg::explain::Explanation"]},{"text":"impl<L> !Send for TreeTerm<L>","synthetic":true,"types":["plat_egg::explain::TreeTerm"]},{"text":"impl<L> Send for FlatTerm<L> where
L: Send, ","synthetic":true,"types":["plat_egg::explain::FlatTerm"]},{"text":"impl<'a, CF, L, N> Send for Extractor<'a, CF, L, N> where
CF: Send,
L: Send + Sync,
N: Sync,
<CF as CostFunction<L>>::Cost: Send,
<N as Analysis<L>>::Data: Sync,
<L as Language>::Discriminant: Sync, ","synthetic":true,"types":["plat_egg::extract::Extractor"]},{"text":"impl Send for AstSize","synthetic":true,"types":["plat_egg::extract::AstSize"]},{"text":"impl Send for AstDepth","synthetic":true,"types":["plat_egg::extract::AstDepth"]},{"text":"impl Send for FromOpError","synthetic":true,"types":["plat_egg::language::FromOpError"]},{"text":"impl<E> Send for RecExprParseError<E> where
E: Send, ","synthetic":true,"types":["plat_egg::language::RecExprParseError"]},{"text":"impl Send for DidMerge","synthetic":true,"types":["plat_egg::language::DidMerge"]},{"text":"impl Send for SymbolLang","synthetic":true,"types":["plat_egg::language::SymbolLang"]},{"text":"impl<'a, L, N> Send for LpExtractor<'a, L, N> where
L: Sync,
N: Sync,
<N as Analysis<L>>::Data: Sync,
<L as Language>::Discriminant: Sync, ","synthetic":true,"types":["plat_egg::lp_extract::LpExtractor"]},{"text":"impl<L> Send for MultiPattern<L> where
L: Send, ","synthetic":true,"types":["plat_egg::multipattern::MultiPattern"]},{"text":"impl<E> Send for MultiPatternParseError<E> where
E: Send, ","synthetic":true,"types":["plat_egg::multipattern::MultiPatternParseError"]},{"text":"impl<L> Send for Pattern<L> where
L: Send, ","synthetic":true,"types":["plat_egg::pattern::Pattern"]},{"text":"impl<L> Send for ENodeOrVar<L> where
L: Send, ","synthetic":true,"types":["plat_egg::pattern::ENodeOrVar"]},{"text":"impl<'a, L> Send for SearchMatches<'a, L> where
L: Send + Sync, ","synthetic":true,"types":["plat_egg::pattern::SearchMatches"]},{"text":"impl<D> Send for RawEClass<D> where
D: Send, ","synthetic":true,"types":["plat_egg::raw::eclass::RawEClass"]},{"text":"impl<L> Send for EGraphResidual<L> where
L: Send, ","synthetic":true,"types":["plat_egg::raw::egraph::EGraphResidual"]},{"text":"impl<L, D, U> Send for RawEGraph<L, D, U> where
D: Send,
L: Send,
U: Send, ","synthetic":true,"types":["plat_egg::raw::egraph::RawEGraph"]},{"text":"impl<D> Send for UnionInfo<D> where
D: Send, ","synthetic":true,"types":["plat_egg::raw::egraph::UnionInfo"]},{"text":"impl Send for PushInfo","synthetic":true,"types":["plat_egg::raw::semi_persistent1::PushInfo"]},{"text":"impl Send for UndoLog","synthetic":true,"types":["plat_egg::raw::semi_persistent1::UndoLog"]},{"text":"impl<T> Send for DefaultVec<T> where
T: Send, ","synthetic":true,"types":["plat_egg::raw::bitset::DefaultVec"]},{"text":"impl Send for BitSet","synthetic":true,"types":["plat_egg::raw::bitset::BitSet"]},{"text":"impl<L> Send for RecExpr<L> where
L: Send, ","synthetic":true,"types":["plat_egg::raw::language::RecExpr"]},{"text":"impl Send for PushInfo","synthetic":true,"types":["plat_egg::raw::semi_persistent2::PushInfo"]},{"text":"impl Send for UndoLog","synthetic":true,"types":["plat_egg::raw::semi_persistent2::UndoLog"]},{"text":"impl<'a, L> Send for UndoCtx<'a, L> where
L: Sync, ","synthetic":true,"types":["plat_egg::raw::semi_persistent2::UndoCtx"]},{"text":"impl Send for UnionFind","synthetic":true,"types":["plat_egg::raw::unionfind::UnionFind"]},{"text":"impl<L, N> Send for Rewrite<L, N>","synthetic":true,"types":["plat_egg::rewrite::Rewrite"]},{"text":"impl<C, A> Send for ConditionalApplier<C, A> where
A: Send,
C: Send, ","synthetic":true,"types":["plat_egg::rewrite::ConditionalApplier"]},{"text":"impl<L> Send for ConditionEqual<L> where
L: Send, ","synthetic":true,"types":["plat_egg::rewrite::ConditionEqual"]},{"text":"impl<L, N, IterData = ()> !Send for Runner<L, N, IterData>","synthetic":true,"types":["plat_egg::run::Runner"]},{"text":"impl Send for StopReason","synthetic":true,"types":["plat_egg::run::StopReason"]},{"text":"impl Send for Report","synthetic":true,"types":["plat_egg::run::Report"]},{"text":"impl<IterData> Send for Iteration<IterData> where
IterData: Send, ","synthetic":true,"types":["plat_egg::run::Iteration"]},{"text":"impl Send for SimpleScheduler","synthetic":true,"types":["plat_egg::run::SimpleScheduler"]},{"text":"impl Send for BackoffScheduler","synthetic":true,"types":["plat_egg::run::BackoffScheduler"]},{"text":"impl Send for Var","synthetic":true,"types":["plat_egg::subst::Var"]},{"text":"impl Send for Subst","synthetic":true,"types":["plat_egg::subst::Subst"]},{"text":"impl Send for Id","synthetic":true,"types":["plat_egg::Id"]}];
+implementors["plat_egg"] = [{"text":"impl<'a, L, P> Send for Dot<'a, L, P> where
L: Sync,
P: Sync, ","synthetic":true,"types":["plat_egg::dot::Dot"]},{"text":"impl<L, D> Send for EClassData<L, D> where
D: Send,
L: Send, ","synthetic":true,"types":["plat_egg::eclass::EClassData"]},{"text":"impl<L, N> Send for EGraph<L, N> where
L: Send,
N: Send,
<N as Analysis<L>>::Data: Send,
<L as Language>::Discriminant: Send, ","synthetic":true,"types":["plat_egg::egraph::EGraph"]},{"text":"impl Send for Justification","synthetic":true,"types":["plat_egg::explain::Justification"]},{"text":"impl<L> !Send for Explanation<L>","synthetic":true,"types":["plat_egg::explain::Explanation"]},{"text":"impl<L> !Send for TreeTerm<L>","synthetic":true,"types":["plat_egg::explain::TreeTerm"]},{"text":"impl<L> Send for FlatTerm<L> where
L: Send, ","synthetic":true,"types":["plat_egg::explain::FlatTerm"]},{"text":"impl<'a, CF, L, N> Send for Extractor<'a, CF, L, N> where
CF: Send,
L: Send + Sync,
N: Sync,
<CF as CostFunction<L>>::Cost: Send,
<N as Analysis<L>>::Data: Sync,
<L as Language>::Discriminant: Sync, ","synthetic":true,"types":["plat_egg::extract::Extractor"]},{"text":"impl Send for AstSize","synthetic":true,"types":["plat_egg::extract::AstSize"]},{"text":"impl Send for AstDepth","synthetic":true,"types":["plat_egg::extract::AstDepth"]},{"text":"impl Send for FromOpError","synthetic":true,"types":["plat_egg::language::FromOpError"]},{"text":"impl<E> Send for RecExprParseError<E> where
E: Send, ","synthetic":true,"types":["plat_egg::language::RecExprParseError"]},{"text":"impl Send for DidMerge","synthetic":true,"types":["plat_egg::language::DidMerge"]},{"text":"impl Send for SymbolLang","synthetic":true,"types":["plat_egg::language::SymbolLang"]},{"text":"impl<'a, L, N> Send for LpExtractor<'a, L, N> where
L: Sync,
N: Sync,
<N as Analysis<L>>::Data: Sync,
<L as Language>::Discriminant: Sync, ","synthetic":true,"types":["plat_egg::lp_extract::LpExtractor"]},{"text":"impl<L> Send for MultiPattern<L> where
L: Send, ","synthetic":true,"types":["plat_egg::multipattern::MultiPattern"]},{"text":"impl<E> Send for MultiPatternParseError<E> where
E: Send, ","synthetic":true,"types":["plat_egg::multipattern::MultiPatternParseError"]},{"text":"impl<L> Send for Pattern<L> where
L: Send, ","synthetic":true,"types":["plat_egg::pattern::Pattern"]},{"text":"impl<L> Send for ENodeOrVar<L> where
L: Send, ","synthetic":true,"types":["plat_egg::pattern::ENodeOrVar"]},{"text":"impl<'a, L> Send for SearchMatches<'a, L> where
L: Send + Sync, ","synthetic":true,"types":["plat_egg::pattern::SearchMatches"]},{"text":"impl<D> Send for RawEClass<D> where
D: Send, ","synthetic":true,"types":["plat_egg::raw::eclass::RawEClass"]},{"text":"impl<L, P> Send for EGraphResidual<L, P> where
L: Send,
P: Send, ","synthetic":true,"types":["plat_egg::raw::egraph::EGraphResidual"]},{"text":"impl<L, D, U> Send for RawEGraph<L, D, U> where
D: Send,
L: Send,
U: Send,
<U as UndoLogPC>::AllowPathCompress: Send, ","synthetic":true,"types":["plat_egg::raw::egraph::RawEGraph"]},{"text":"impl<D> Send for UnionInfo<D> where
D: Send, ","synthetic":true,"types":["plat_egg::raw::egraph::UnionInfo"]},{"text":"impl Send for PushInfo","synthetic":true,"types":["plat_egg::raw::semi_persistent1::PushInfo"]},{"text":"impl Send for UndoLog","synthetic":true,"types":["plat_egg::raw::semi_persistent1::UndoLog"]},{"text":"impl<L> Send for RecExpr<L> where
L: Send, ","synthetic":true,"types":["plat_egg::raw::language::RecExpr"]},{"text":"impl Send for PushInfo","synthetic":true,"types":["plat_egg::raw::semi_persistent2::PushInfo"]},{"text":"impl Send for UndoLog","synthetic":true,"types":["plat_egg::raw::semi_persistent2::UndoLog"]},{"text":"impl<'a, L> Send for UndoCtx<'a, L> where
L: Sync, ","synthetic":true,"types":["plat_egg::raw::semi_persistent2::UndoCtx"]},{"text":"impl<P> Send for UnionFind<P> where
P: Send, ","synthetic":true,"types":["plat_egg::raw::unionfind::UnionFind"]},{"text":"impl<const B: bool> Send for PathCompress<B>","synthetic":true,"types":["plat_egg::raw::reflect_const::PathCompress"]},{"text":"impl<L, N> Send for Rewrite<L, N>","synthetic":true,"types":["plat_egg::rewrite::Rewrite"]},{"text":"impl<C, A> Send for ConditionalApplier<C, A> where
A: Send,
C: Send, ","synthetic":true,"types":["plat_egg::rewrite::ConditionalApplier"]},{"text":"impl<L> Send for ConditionEqual<L> where
L: Send, ","synthetic":true,"types":["plat_egg::rewrite::ConditionEqual"]},{"text":"impl<L, N, IterData = ()> !Send for Runner<L, N, IterData>","synthetic":true,"types":["plat_egg::run::Runner"]},{"text":"impl Send for StopReason","synthetic":true,"types":["plat_egg::run::StopReason"]},{"text":"impl Send for Report","synthetic":true,"types":["plat_egg::run::Report"]},{"text":"impl<IterData> Send for Iteration<IterData> where
IterData: Send, ","synthetic":true,"types":["plat_egg::run::Iteration"]},{"text":"impl Send for SimpleScheduler","synthetic":true,"types":["plat_egg::run::SimpleScheduler"]},{"text":"impl Send for BackoffScheduler","synthetic":true,"types":["plat_egg::run::BackoffScheduler"]},{"text":"impl Send for Var","synthetic":true,"types":["plat_egg::subst::Var"]},{"text":"impl Send for Subst","synthetic":true,"types":["plat_egg::subst::Subst"]},{"text":"impl Send for Id","synthetic":true,"types":["plat_egg::Id"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/marker/trait.StructuralEq.js b/implementors/core/marker/trait.StructuralEq.js
index ee414283..306e7b7f 100644
--- a/implementors/core/marker/trait.StructuralEq.js
+++ b/implementors/core/marker/trait.StructuralEq.js
@@ -1,3 +1,3 @@
(function() {var implementors = {};
-implementors["plat_egg"] = [{"text":"impl StructuralEq for Justification","synthetic":false,"types":["plat_egg::explain::Justification"]},{"text":"impl<L: Language> StructuralEq for FlatTerm<L>","synthetic":false,"types":["plat_egg::explain::FlatTerm"]},{"text":"impl StructuralEq for SymbolLang","synthetic":false,"types":["plat_egg::language::SymbolLang"]},{"text":"impl<L> StructuralEq for MultiPattern<L>","synthetic":false,"types":["plat_egg::multipattern::MultiPattern"]},{"text":"impl<L> StructuralEq for Pattern<L>","synthetic":false,"types":["plat_egg::pattern::Pattern"]},{"text":"impl<L> StructuralEq for ENodeOrVar<L>","synthetic":false,"types":["plat_egg::pattern::ENodeOrVar"]},{"text":"impl<L> StructuralEq for RecExpr<L>","synthetic":false,"types":["plat_egg::raw::language::RecExpr"]},{"text":"impl StructuralEq for Var","synthetic":false,"types":["plat_egg::subst::Var"]},{"text":"impl StructuralEq for Subst","synthetic":false,"types":["plat_egg::subst::Subst"]},{"text":"impl StructuralEq for Id","synthetic":false,"types":["plat_egg::Id"]}];
+implementors["plat_egg"] = [{"text":"impl StructuralEq for Justification","synthetic":false,"types":["plat_egg::explain::Justification"]},{"text":"impl<L: Language> StructuralEq for FlatTerm<L>","synthetic":false,"types":["plat_egg::explain::FlatTerm"]},{"text":"impl StructuralEq for SymbolLang","synthetic":false,"types":["plat_egg::language::SymbolLang"]},{"text":"impl<L> StructuralEq for MultiPattern<L>","synthetic":false,"types":["plat_egg::multipattern::MultiPattern"]},{"text":"impl<L> StructuralEq for Pattern<L>","synthetic":false,"types":["plat_egg::pattern::Pattern"]},{"text":"impl<L> StructuralEq for ENodeOrVar<L>","synthetic":false,"types":["plat_egg::pattern::ENodeOrVar"]},{"text":"impl<L> StructuralEq for RecExpr<L>","synthetic":false,"types":["plat_egg::raw::language::RecExpr"]},{"text":"impl<const B: bool> StructuralEq for PathCompress<B>","synthetic":false,"types":["plat_egg::raw::reflect_const::PathCompress"]},{"text":"impl StructuralEq for Var","synthetic":false,"types":["plat_egg::subst::Var"]},{"text":"impl StructuralEq for Subst","synthetic":false,"types":["plat_egg::subst::Subst"]},{"text":"impl StructuralEq for Id","synthetic":false,"types":["plat_egg::Id"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/marker/trait.StructuralPartialEq.js b/implementors/core/marker/trait.StructuralPartialEq.js
index e7c9fc4a..dcdfed3a 100644
--- a/implementors/core/marker/trait.StructuralPartialEq.js
+++ b/implementors/core/marker/trait.StructuralPartialEq.js
@@ -1,3 +1,3 @@
(function() {var implementors = {};
-implementors["plat_egg"] = [{"text":"impl StructuralPartialEq for Justification","synthetic":false,"types":["plat_egg::explain::Justification"]},{"text":"impl StructuralPartialEq for SymbolLang","synthetic":false,"types":["plat_egg::language::SymbolLang"]},{"text":"impl<L> StructuralPartialEq for MultiPattern<L>","synthetic":false,"types":["plat_egg::multipattern::MultiPattern"]},{"text":"impl<L> StructuralPartialEq for Pattern<L>","synthetic":false,"types":["plat_egg::pattern::Pattern"]},{"text":"impl<L> StructuralPartialEq for ENodeOrVar<L>","synthetic":false,"types":["plat_egg::pattern::ENodeOrVar"]},{"text":"impl<L> StructuralPartialEq for RecExpr<L>","synthetic":false,"types":["plat_egg::raw::language::RecExpr"]},{"text":"impl StructuralPartialEq for Var","synthetic":false,"types":["plat_egg::subst::Var"]},{"text":"impl StructuralPartialEq for Subst","synthetic":false,"types":["plat_egg::subst::Subst"]},{"text":"impl StructuralPartialEq for Id","synthetic":false,"types":["plat_egg::Id"]}];
+implementors["plat_egg"] = [{"text":"impl StructuralPartialEq for Justification","synthetic":false,"types":["plat_egg::explain::Justification"]},{"text":"impl StructuralPartialEq for SymbolLang","synthetic":false,"types":["plat_egg::language::SymbolLang"]},{"text":"impl<L> StructuralPartialEq for MultiPattern<L>","synthetic":false,"types":["plat_egg::multipattern::MultiPattern"]},{"text":"impl<L> StructuralPartialEq for Pattern<L>","synthetic":false,"types":["plat_egg::pattern::Pattern"]},{"text":"impl<L> StructuralPartialEq for ENodeOrVar<L>","synthetic":false,"types":["plat_egg::pattern::ENodeOrVar"]},{"text":"impl<L> StructuralPartialEq for RecExpr<L>","synthetic":false,"types":["plat_egg::raw::language::RecExpr"]},{"text":"impl<const B: bool> StructuralPartialEq for PathCompress<B>","synthetic":false,"types":["plat_egg::raw::reflect_const::PathCompress"]},{"text":"impl StructuralPartialEq for Var","synthetic":false,"types":["plat_egg::subst::Var"]},{"text":"impl StructuralPartialEq for Subst","synthetic":false,"types":["plat_egg::subst::Subst"]},{"text":"impl StructuralPartialEq for Id","synthetic":false,"types":["plat_egg::Id"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/marker/trait.Sync.js b/implementors/core/marker/trait.Sync.js
index d41e0570..0b12c025 100644
--- a/implementors/core/marker/trait.Sync.js
+++ b/implementors/core/marker/trait.Sync.js
@@ -1,3 +1,3 @@
(function() {var implementors = {};
-implementors["plat_egg"] = [{"text":"impl<'a, L> Sync for Dot<'a, L> where
L: Sync, ","synthetic":true,"types":["plat_egg::dot::Dot"]},{"text":"impl<L, D> Sync for EClassData<L, D> where
D: Sync,
L: Sync, ","synthetic":true,"types":["plat_egg::eclass::EClassData"]},{"text":"impl<L, N> Sync for EGraph<L, N> where
L: Sync,
N: Sync,
<N as Analysis<L>>::Data: Sync,
<L as Language>::Discriminant: Sync, ","synthetic":true,"types":["plat_egg::egraph::EGraph"]},{"text":"impl Sync for Justification","synthetic":true,"types":["plat_egg::explain::Justification"]},{"text":"impl<L> !Sync for Explanation<L>","synthetic":true,"types":["plat_egg::explain::Explanation"]},{"text":"impl<L> !Sync for TreeTerm<L>","synthetic":true,"types":["plat_egg::explain::TreeTerm"]},{"text":"impl<L> Sync for FlatTerm<L> where
L: Sync, ","synthetic":true,"types":["plat_egg::explain::FlatTerm"]},{"text":"impl<'a, CF, L, N> Sync for Extractor<'a, CF, L, N> where
CF: Sync,
L: Sync,
N: Sync,
<CF as CostFunction<L>>::Cost: Sync,
<N as Analysis<L>>::Data: Sync,
<L as Language>::Discriminant: Sync, ","synthetic":true,"types":["plat_egg::extract::Extractor"]},{"text":"impl Sync for AstSize","synthetic":true,"types":["plat_egg::extract::AstSize"]},{"text":"impl Sync for AstDepth","synthetic":true,"types":["plat_egg::extract::AstDepth"]},{"text":"impl Sync for FromOpError","synthetic":true,"types":["plat_egg::language::FromOpError"]},{"text":"impl<E> Sync for RecExprParseError<E> where
E: Sync, ","synthetic":true,"types":["plat_egg::language::RecExprParseError"]},{"text":"impl Sync for DidMerge","synthetic":true,"types":["plat_egg::language::DidMerge"]},{"text":"impl Sync for SymbolLang","synthetic":true,"types":["plat_egg::language::SymbolLang"]},{"text":"impl<'a, L, N> Sync for LpExtractor<'a, L, N> where
L: Sync,
N: Sync,
<N as Analysis<L>>::Data: Sync,
<L as Language>::Discriminant: Sync, ","synthetic":true,"types":["plat_egg::lp_extract::LpExtractor"]},{"text":"impl<L> Sync for MultiPattern<L> where
L: Sync, ","synthetic":true,"types":["plat_egg::multipattern::MultiPattern"]},{"text":"impl<E> Sync for MultiPatternParseError<E> where
E: Sync, ","synthetic":true,"types":["plat_egg::multipattern::MultiPatternParseError"]},{"text":"impl<L> Sync for Pattern<L> where
L: Sync, ","synthetic":true,"types":["plat_egg::pattern::Pattern"]},{"text":"impl<L> Sync for ENodeOrVar<L> where
L: Sync, ","synthetic":true,"types":["plat_egg::pattern::ENodeOrVar"]},{"text":"impl<'a, L> Sync for SearchMatches<'a, L> where
L: Sync, ","synthetic":true,"types":["plat_egg::pattern::SearchMatches"]},{"text":"impl<D> Sync for RawEClass<D> where
D: Sync, ","synthetic":true,"types":["plat_egg::raw::eclass::RawEClass"]},{"text":"impl<L> Sync for EGraphResidual<L> where
L: Sync, ","synthetic":true,"types":["plat_egg::raw::egraph::EGraphResidual"]},{"text":"impl<L, D, U> Sync for RawEGraph<L, D, U> where
D: Sync,
L: Sync,
U: Sync, ","synthetic":true,"types":["plat_egg::raw::egraph::RawEGraph"]},{"text":"impl<D> Sync for UnionInfo<D> where
D: Sync, ","synthetic":true,"types":["plat_egg::raw::egraph::UnionInfo"]},{"text":"impl Sync for PushInfo","synthetic":true,"types":["plat_egg::raw::semi_persistent1::PushInfo"]},{"text":"impl Sync for UndoLog","synthetic":true,"types":["plat_egg::raw::semi_persistent1::UndoLog"]},{"text":"impl<T> Sync for DefaultVec<T> where
T: Sync, ","synthetic":true,"types":["plat_egg::raw::bitset::DefaultVec"]},{"text":"impl Sync for BitSet","synthetic":true,"types":["plat_egg::raw::bitset::BitSet"]},{"text":"impl<L> Sync for RecExpr<L> where
L: Sync, ","synthetic":true,"types":["plat_egg::raw::language::RecExpr"]},{"text":"impl Sync for PushInfo","synthetic":true,"types":["plat_egg::raw::semi_persistent2::PushInfo"]},{"text":"impl Sync for UndoLog","synthetic":true,"types":["plat_egg::raw::semi_persistent2::UndoLog"]},{"text":"impl<'a, L> Sync for UndoCtx<'a, L> where
L: Sync, ","synthetic":true,"types":["plat_egg::raw::semi_persistent2::UndoCtx"]},{"text":"impl Sync for UnionFind","synthetic":true,"types":["plat_egg::raw::unionfind::UnionFind"]},{"text":"impl<L, N> Sync for Rewrite<L, N>","synthetic":true,"types":["plat_egg::rewrite::Rewrite"]},{"text":"impl<C, A> Sync for ConditionalApplier<C, A> where
A: Sync,
C: Sync, ","synthetic":true,"types":["plat_egg::rewrite::ConditionalApplier"]},{"text":"impl<L> Sync for ConditionEqual<L> where
L: Sync, ","synthetic":true,"types":["plat_egg::rewrite::ConditionEqual"]},{"text":"impl<L, N, IterData = ()> !Sync for Runner<L, N, IterData>","synthetic":true,"types":["plat_egg::run::Runner"]},{"text":"impl Sync for StopReason","synthetic":true,"types":["plat_egg::run::StopReason"]},{"text":"impl Sync for Report","synthetic":true,"types":["plat_egg::run::Report"]},{"text":"impl<IterData> Sync for Iteration<IterData> where
IterData: Sync, ","synthetic":true,"types":["plat_egg::run::Iteration"]},{"text":"impl Sync for SimpleScheduler","synthetic":true,"types":["plat_egg::run::SimpleScheduler"]},{"text":"impl Sync for BackoffScheduler","synthetic":true,"types":["plat_egg::run::BackoffScheduler"]},{"text":"impl Sync for Var","synthetic":true,"types":["plat_egg::subst::Var"]},{"text":"impl Sync for Subst","synthetic":true,"types":["plat_egg::subst::Subst"]},{"text":"impl Sync for Id","synthetic":true,"types":["plat_egg::Id"]}];
+implementors["plat_egg"] = [{"text":"impl<'a, L, P> Sync for Dot<'a, L, P> where
L: Sync,
P: Sync, ","synthetic":true,"types":["plat_egg::dot::Dot"]},{"text":"impl<L, D> Sync for EClassData<L, D> where
D: Sync,
L: Sync, ","synthetic":true,"types":["plat_egg::eclass::EClassData"]},{"text":"impl<L, N> Sync for EGraph<L, N> where
L: Sync,
N: Sync,
<N as Analysis<L>>::Data: Sync,
<L as Language>::Discriminant: Sync, ","synthetic":true,"types":["plat_egg::egraph::EGraph"]},{"text":"impl Sync for Justification","synthetic":true,"types":["plat_egg::explain::Justification"]},{"text":"impl<L> !Sync for Explanation<L>","synthetic":true,"types":["plat_egg::explain::Explanation"]},{"text":"impl<L> !Sync for TreeTerm<L>","synthetic":true,"types":["plat_egg::explain::TreeTerm"]},{"text":"impl<L> Sync for FlatTerm<L> where
L: Sync, ","synthetic":true,"types":["plat_egg::explain::FlatTerm"]},{"text":"impl<'a, CF, L, N> Sync for Extractor<'a, CF, L, N> where
CF: Sync,
L: Sync,
N: Sync,
<CF as CostFunction<L>>::Cost: Sync,
<N as Analysis<L>>::Data: Sync,
<L as Language>::Discriminant: Sync, ","synthetic":true,"types":["plat_egg::extract::Extractor"]},{"text":"impl Sync for AstSize","synthetic":true,"types":["plat_egg::extract::AstSize"]},{"text":"impl Sync for AstDepth","synthetic":true,"types":["plat_egg::extract::AstDepth"]},{"text":"impl Sync for FromOpError","synthetic":true,"types":["plat_egg::language::FromOpError"]},{"text":"impl<E> Sync for RecExprParseError<E> where
E: Sync, ","synthetic":true,"types":["plat_egg::language::RecExprParseError"]},{"text":"impl Sync for DidMerge","synthetic":true,"types":["plat_egg::language::DidMerge"]},{"text":"impl Sync for SymbolLang","synthetic":true,"types":["plat_egg::language::SymbolLang"]},{"text":"impl<'a, L, N> Sync for LpExtractor<'a, L, N> where
L: Sync,
N: Sync,
<N as Analysis<L>>::Data: Sync,
<L as Language>::Discriminant: Sync, ","synthetic":true,"types":["plat_egg::lp_extract::LpExtractor"]},{"text":"impl<L> Sync for MultiPattern<L> where
L: Sync, ","synthetic":true,"types":["plat_egg::multipattern::MultiPattern"]},{"text":"impl<E> Sync for MultiPatternParseError<E> where
E: Sync, ","synthetic":true,"types":["plat_egg::multipattern::MultiPatternParseError"]},{"text":"impl<L> Sync for Pattern<L> where
L: Sync, ","synthetic":true,"types":["plat_egg::pattern::Pattern"]},{"text":"impl<L> Sync for ENodeOrVar<L> where
L: Sync, ","synthetic":true,"types":["plat_egg::pattern::ENodeOrVar"]},{"text":"impl<'a, L> Sync for SearchMatches<'a, L> where
L: Sync, ","synthetic":true,"types":["plat_egg::pattern::SearchMatches"]},{"text":"impl<D> Sync for RawEClass<D> where
D: Sync, ","synthetic":true,"types":["plat_egg::raw::eclass::RawEClass"]},{"text":"impl<L, P> Sync for EGraphResidual<L, P> where
L: Sync,
P: Sync, ","synthetic":true,"types":["plat_egg::raw::egraph::EGraphResidual"]},{"text":"impl<L, D, U> Sync for RawEGraph<L, D, U> where
D: Sync,
L: Sync,
U: Sync,
<U as UndoLogPC>::AllowPathCompress: Sync, ","synthetic":true,"types":["plat_egg::raw::egraph::RawEGraph"]},{"text":"impl<D> Sync for UnionInfo<D> where
D: Sync, ","synthetic":true,"types":["plat_egg::raw::egraph::UnionInfo"]},{"text":"impl Sync for PushInfo","synthetic":true,"types":["plat_egg::raw::semi_persistent1::PushInfo"]},{"text":"impl Sync for UndoLog","synthetic":true,"types":["plat_egg::raw::semi_persistent1::UndoLog"]},{"text":"impl<L> Sync for RecExpr<L> where
L: Sync, ","synthetic":true,"types":["plat_egg::raw::language::RecExpr"]},{"text":"impl Sync for PushInfo","synthetic":true,"types":["plat_egg::raw::semi_persistent2::PushInfo"]},{"text":"impl Sync for UndoLog","synthetic":true,"types":["plat_egg::raw::semi_persistent2::UndoLog"]},{"text":"impl<'a, L> Sync for UndoCtx<'a, L> where
L: Sync, ","synthetic":true,"types":["plat_egg::raw::semi_persistent2::UndoCtx"]},{"text":"impl<P> Sync for UnionFind<P> where
P: Sync, ","synthetic":true,"types":["plat_egg::raw::unionfind::UnionFind"]},{"text":"impl<const B: bool> Sync for PathCompress<B>","synthetic":true,"types":["plat_egg::raw::reflect_const::PathCompress"]},{"text":"impl<L, N> Sync for Rewrite<L, N>","synthetic":true,"types":["plat_egg::rewrite::Rewrite"]},{"text":"impl<C, A> Sync for ConditionalApplier<C, A> where
A: Sync,
C: Sync, ","synthetic":true,"types":["plat_egg::rewrite::ConditionalApplier"]},{"text":"impl<L> Sync for ConditionEqual<L> where
L: Sync, ","synthetic":true,"types":["plat_egg::rewrite::ConditionEqual"]},{"text":"impl<L, N, IterData = ()> !Sync for Runner<L, N, IterData>","synthetic":true,"types":["plat_egg::run::Runner"]},{"text":"impl Sync for StopReason","synthetic":true,"types":["plat_egg::run::StopReason"]},{"text":"impl Sync for Report","synthetic":true,"types":["plat_egg::run::Report"]},{"text":"impl<IterData> Sync for Iteration<IterData> where
IterData: Sync, ","synthetic":true,"types":["plat_egg::run::Iteration"]},{"text":"impl Sync for SimpleScheduler","synthetic":true,"types":["plat_egg::run::SimpleScheduler"]},{"text":"impl Sync for BackoffScheduler","synthetic":true,"types":["plat_egg::run::BackoffScheduler"]},{"text":"impl Sync for Var","synthetic":true,"types":["plat_egg::subst::Var"]},{"text":"impl Sync for Subst","synthetic":true,"types":["plat_egg::subst::Subst"]},{"text":"impl Sync for Id","synthetic":true,"types":["plat_egg::Id"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/marker/trait.Unpin.js b/implementors/core/marker/trait.Unpin.js
index 7026a9aa..0391d53c 100644
--- a/implementors/core/marker/trait.Unpin.js
+++ b/implementors/core/marker/trait.Unpin.js
@@ -1,3 +1,3 @@
(function() {var implementors = {};
-implementors["plat_egg"] = [{"text":"impl<'a, L> Unpin for Dot<'a, L>","synthetic":true,"types":["plat_egg::dot::Dot"]},{"text":"impl<L, D> Unpin for EClassData<L, D> where
D: Unpin,
L: Unpin, ","synthetic":true,"types":["plat_egg::eclass::EClassData"]},{"text":"impl<L, N> Unpin for EGraph<L, N> where
L: Unpin,
N: Unpin,
<N as Analysis<L>>::Data: Unpin,
<L as Language>::Discriminant: Unpin, ","synthetic":true,"types":["plat_egg::egraph::EGraph"]},{"text":"impl Unpin for Justification","synthetic":true,"types":["plat_egg::explain::Justification"]},{"text":"impl<L> Unpin for Explanation<L> where
L: Unpin, ","synthetic":true,"types":["plat_egg::explain::Explanation"]},{"text":"impl<L> Unpin for TreeTerm<L> where
L: Unpin, ","synthetic":true,"types":["plat_egg::explain::TreeTerm"]},{"text":"impl<L> Unpin for FlatTerm<L> where
L: Unpin, ","synthetic":true,"types":["plat_egg::explain::FlatTerm"]},{"text":"impl<'a, CF, L, N> Unpin for Extractor<'a, CF, L, N> where
CF: Unpin,
L: Unpin,
<CF as CostFunction<L>>::Cost: Unpin, ","synthetic":true,"types":["plat_egg::extract::Extractor"]},{"text":"impl Unpin for AstSize","synthetic":true,"types":["plat_egg::extract::AstSize"]},{"text":"impl Unpin for AstDepth","synthetic":true,"types":["plat_egg::extract::AstDepth"]},{"text":"impl Unpin for FromOpError","synthetic":true,"types":["plat_egg::language::FromOpError"]},{"text":"impl<E> Unpin for RecExprParseError<E> where
E: Unpin, ","synthetic":true,"types":["plat_egg::language::RecExprParseError"]},{"text":"impl Unpin for DidMerge","synthetic":true,"types":["plat_egg::language::DidMerge"]},{"text":"impl Unpin for SymbolLang","synthetic":true,"types":["plat_egg::language::SymbolLang"]},{"text":"impl<'a, L, N> Unpin for LpExtractor<'a, L, N>","synthetic":true,"types":["plat_egg::lp_extract::LpExtractor"]},{"text":"impl<L> Unpin for MultiPattern<L> where
L: Unpin, ","synthetic":true,"types":["plat_egg::multipattern::MultiPattern"]},{"text":"impl<E> Unpin for MultiPatternParseError<E> where
E: Unpin, ","synthetic":true,"types":["plat_egg::multipattern::MultiPatternParseError"]},{"text":"impl<L> Unpin for Pattern<L> where
L: Unpin, ","synthetic":true,"types":["plat_egg::pattern::Pattern"]},{"text":"impl<L> Unpin for ENodeOrVar<L> where
L: Unpin, ","synthetic":true,"types":["plat_egg::pattern::ENodeOrVar"]},{"text":"impl<'a, L> Unpin for SearchMatches<'a, L> where
L: Unpin, ","synthetic":true,"types":["plat_egg::pattern::SearchMatches"]},{"text":"impl<D> Unpin for RawEClass<D> where
D: Unpin, ","synthetic":true,"types":["plat_egg::raw::eclass::RawEClass"]},{"text":"impl<L> Unpin for EGraphResidual<L> where
L: Unpin, ","synthetic":true,"types":["plat_egg::raw::egraph::EGraphResidual"]},{"text":"impl<L, D, U> Unpin for RawEGraph<L, D, U> where
D: Unpin,
L: Unpin,
U: Unpin, ","synthetic":true,"types":["plat_egg::raw::egraph::RawEGraph"]},{"text":"impl<D> Unpin for UnionInfo<D> where
D: Unpin, ","synthetic":true,"types":["plat_egg::raw::egraph::UnionInfo"]},{"text":"impl Unpin for PushInfo","synthetic":true,"types":["plat_egg::raw::semi_persistent1::PushInfo"]},{"text":"impl Unpin for UndoLog","synthetic":true,"types":["plat_egg::raw::semi_persistent1::UndoLog"]},{"text":"impl<T> Unpin for DefaultVec<T>","synthetic":true,"types":["plat_egg::raw::bitset::DefaultVec"]},{"text":"impl Unpin for BitSet","synthetic":true,"types":["plat_egg::raw::bitset::BitSet"]},{"text":"impl<L> Unpin for RecExpr<L> where
L: Unpin, ","synthetic":true,"types":["plat_egg::raw::language::RecExpr"]},{"text":"impl Unpin for PushInfo","synthetic":true,"types":["plat_egg::raw::semi_persistent2::PushInfo"]},{"text":"impl Unpin for UndoLog","synthetic":true,"types":["plat_egg::raw::semi_persistent2::UndoLog"]},{"text":"impl<'a, L> Unpin for UndoCtx<'a, L>","synthetic":true,"types":["plat_egg::raw::semi_persistent2::UndoCtx"]},{"text":"impl Unpin for UnionFind","synthetic":true,"types":["plat_egg::raw::unionfind::UnionFind"]},{"text":"impl<L, N> Unpin for Rewrite<L, N>","synthetic":true,"types":["plat_egg::rewrite::Rewrite"]},{"text":"impl<C, A> Unpin for ConditionalApplier<C, A> where
A: Unpin,
C: Unpin, ","synthetic":true,"types":["plat_egg::rewrite::ConditionalApplier"]},{"text":"impl<L> Unpin for ConditionEqual<L> where
L: Unpin, ","synthetic":true,"types":["plat_egg::rewrite::ConditionEqual"]},{"text":"impl<L, N, IterData> Unpin for Runner<L, N, IterData> where
IterData: Unpin,
L: Unpin,
N: Unpin,
<N as Analysis<L>>::Data: Unpin,
<L as Language>::Discriminant: Unpin, ","synthetic":true,"types":["plat_egg::run::Runner"]},{"text":"impl Unpin for StopReason","synthetic":true,"types":["plat_egg::run::StopReason"]},{"text":"impl Unpin for Report","synthetic":true,"types":["plat_egg::run::Report"]},{"text":"impl<IterData> Unpin for Iteration<IterData> where
IterData: Unpin, ","synthetic":true,"types":["plat_egg::run::Iteration"]},{"text":"impl Unpin for SimpleScheduler","synthetic":true,"types":["plat_egg::run::SimpleScheduler"]},{"text":"impl Unpin for BackoffScheduler","synthetic":true,"types":["plat_egg::run::BackoffScheduler"]},{"text":"impl Unpin for Var","synthetic":true,"types":["plat_egg::subst::Var"]},{"text":"impl Unpin for Subst","synthetic":true,"types":["plat_egg::subst::Subst"]},{"text":"impl Unpin for Id","synthetic":true,"types":["plat_egg::Id"]}];
+implementors["plat_egg"] = [{"text":"impl<'a, L, P> Unpin for Dot<'a, L, P>","synthetic":true,"types":["plat_egg::dot::Dot"]},{"text":"impl<L, D> Unpin for EClassData<L, D> where
D: Unpin,
L: Unpin, ","synthetic":true,"types":["plat_egg::eclass::EClassData"]},{"text":"impl<L, N> Unpin for EGraph<L, N> where
L: Unpin,
N: Unpin,
<N as Analysis<L>>::Data: Unpin,
<L as Language>::Discriminant: Unpin, ","synthetic":true,"types":["plat_egg::egraph::EGraph"]},{"text":"impl Unpin for Justification","synthetic":true,"types":["plat_egg::explain::Justification"]},{"text":"impl<L> Unpin for Explanation<L> where
L: Unpin, ","synthetic":true,"types":["plat_egg::explain::Explanation"]},{"text":"impl<L> Unpin for TreeTerm<L> where
L: Unpin, ","synthetic":true,"types":["plat_egg::explain::TreeTerm"]},{"text":"impl<L> Unpin for FlatTerm<L> where
L: Unpin, ","synthetic":true,"types":["plat_egg::explain::FlatTerm"]},{"text":"impl<'a, CF, L, N> Unpin for Extractor<'a, CF, L, N> where
CF: Unpin,
L: Unpin,
<CF as CostFunction<L>>::Cost: Unpin, ","synthetic":true,"types":["plat_egg::extract::Extractor"]},{"text":"impl Unpin for AstSize","synthetic":true,"types":["plat_egg::extract::AstSize"]},{"text":"impl Unpin for AstDepth","synthetic":true,"types":["plat_egg::extract::AstDepth"]},{"text":"impl Unpin for FromOpError","synthetic":true,"types":["plat_egg::language::FromOpError"]},{"text":"impl<E> Unpin for RecExprParseError<E> where
E: Unpin, ","synthetic":true,"types":["plat_egg::language::RecExprParseError"]},{"text":"impl Unpin for DidMerge","synthetic":true,"types":["plat_egg::language::DidMerge"]},{"text":"impl Unpin for SymbolLang","synthetic":true,"types":["plat_egg::language::SymbolLang"]},{"text":"impl<'a, L, N> Unpin for LpExtractor<'a, L, N>","synthetic":true,"types":["plat_egg::lp_extract::LpExtractor"]},{"text":"impl<L> Unpin for MultiPattern<L> where
L: Unpin, ","synthetic":true,"types":["plat_egg::multipattern::MultiPattern"]},{"text":"impl<E> Unpin for MultiPatternParseError<E> where
E: Unpin, ","synthetic":true,"types":["plat_egg::multipattern::MultiPatternParseError"]},{"text":"impl<L> Unpin for Pattern<L> where
L: Unpin, ","synthetic":true,"types":["plat_egg::pattern::Pattern"]},{"text":"impl<L> Unpin for ENodeOrVar<L> where
L: Unpin, ","synthetic":true,"types":["plat_egg::pattern::ENodeOrVar"]},{"text":"impl<'a, L> Unpin for SearchMatches<'a, L> where
L: Unpin, ","synthetic":true,"types":["plat_egg::pattern::SearchMatches"]},{"text":"impl<D> Unpin for RawEClass<D> where
D: Unpin, ","synthetic":true,"types":["plat_egg::raw::eclass::RawEClass"]},{"text":"impl<L, P> Unpin for EGraphResidual<L, P> where
L: Unpin,
P: Unpin, ","synthetic":true,"types":["plat_egg::raw::egraph::EGraphResidual"]},{"text":"impl<L, D, U> Unpin for RawEGraph<L, D, U> where
D: Unpin,
L: Unpin,
U: Unpin,
<U as UndoLogPC>::AllowPathCompress: Unpin, ","synthetic":true,"types":["plat_egg::raw::egraph::RawEGraph"]},{"text":"impl<D> Unpin for UnionInfo<D> where
D: Unpin, ","synthetic":true,"types":["plat_egg::raw::egraph::UnionInfo"]},{"text":"impl Unpin for PushInfo","synthetic":true,"types":["plat_egg::raw::semi_persistent1::PushInfo"]},{"text":"impl Unpin for UndoLog","synthetic":true,"types":["plat_egg::raw::semi_persistent1::UndoLog"]},{"text":"impl<L> Unpin for RecExpr<L> where
L: Unpin, ","synthetic":true,"types":["plat_egg::raw::language::RecExpr"]},{"text":"impl Unpin for PushInfo","synthetic":true,"types":["plat_egg::raw::semi_persistent2::PushInfo"]},{"text":"impl Unpin for UndoLog","synthetic":true,"types":["plat_egg::raw::semi_persistent2::UndoLog"]},{"text":"impl<'a, L> Unpin for UndoCtx<'a, L>","synthetic":true,"types":["plat_egg::raw::semi_persistent2::UndoCtx"]},{"text":"impl<P> Unpin for UnionFind<P> where
P: Unpin, ","synthetic":true,"types":["plat_egg::raw::unionfind::UnionFind"]},{"text":"impl<const B: bool> Unpin for PathCompress<B>","synthetic":true,"types":["plat_egg::raw::reflect_const::PathCompress"]},{"text":"impl<L, N> Unpin for Rewrite<L, N>","synthetic":true,"types":["plat_egg::rewrite::Rewrite"]},{"text":"impl<C, A> Unpin for ConditionalApplier<C, A> where
A: Unpin,
C: Unpin, ","synthetic":true,"types":["plat_egg::rewrite::ConditionalApplier"]},{"text":"impl<L> Unpin for ConditionEqual<L> where
L: Unpin, ","synthetic":true,"types":["plat_egg::rewrite::ConditionEqual"]},{"text":"impl<L, N, IterData> Unpin for Runner<L, N, IterData> where
IterData: Unpin,
L: Unpin,
N: Unpin,
<N as Analysis<L>>::Data: Unpin,
<L as Language>::Discriminant: Unpin, ","synthetic":true,"types":["plat_egg::run::Runner"]},{"text":"impl Unpin for StopReason","synthetic":true,"types":["plat_egg::run::StopReason"]},{"text":"impl Unpin for Report","synthetic":true,"types":["plat_egg::run::Report"]},{"text":"impl<IterData> Unpin for Iteration<IterData> where
IterData: Unpin, ","synthetic":true,"types":["plat_egg::run::Iteration"]},{"text":"impl Unpin for SimpleScheduler","synthetic":true,"types":["plat_egg::run::SimpleScheduler"]},{"text":"impl Unpin for BackoffScheduler","synthetic":true,"types":["plat_egg::run::BackoffScheduler"]},{"text":"impl Unpin for Var","synthetic":true,"types":["plat_egg::subst::Var"]},{"text":"impl Unpin for Subst","synthetic":true,"types":["plat_egg::subst::Subst"]},{"text":"impl Unpin for Id","synthetic":true,"types":["plat_egg::Id"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/ops/deref/trait.Deref.js b/implementors/core/ops/deref/trait.Deref.js
index e3f08f1d..6be0f342 100644
--- a/implementors/core/ops/deref/trait.Deref.js
+++ b/implementors/core/ops/deref/trait.Deref.js
@@ -1,3 +1,3 @@
(function() {var implementors = {};
-implementors["plat_egg"] = [{"text":"impl<L: Language, N: Analysis<L>> Deref for EGraph<L, N>","synthetic":false,"types":["plat_egg::egraph::EGraph"]},{"text":"impl<D> Deref for RawEClass<D>","synthetic":false,"types":["plat_egg::raw::eclass::RawEClass"]},{"text":"impl<L: Language, D, U> Deref for RawEGraph<L, D, U>","synthetic":false,"types":["plat_egg::raw::egraph::RawEGraph"]}];
+implementors["plat_egg"] = [{"text":"impl<L: Language, N: Analysis<L>> Deref for EGraph<L, N>","synthetic":false,"types":["plat_egg::egraph::EGraph"]},{"text":"impl<D> Deref for RawEClass<D>","synthetic":false,"types":["plat_egg::raw::eclass::RawEClass"]},{"text":"impl<L: Language, D, U: UndoLogT<L, D>> Deref for RawEGraph<L, D, U>","synthetic":false,"types":["plat_egg::raw::egraph::RawEGraph"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/ops/deref/trait.DerefMut.js b/implementors/core/ops/deref/trait.DerefMut.js
index adc9ef1d..ec0ee475 100644
--- a/implementors/core/ops/deref/trait.DerefMut.js
+++ b/implementors/core/ops/deref/trait.DerefMut.js
@@ -1,3 +1,3 @@
(function() {var implementors = {};
-implementors["plat_egg"] = [{"text":"impl<D> DerefMut for RawEClass<D>","synthetic":false,"types":["plat_egg::raw::eclass::RawEClass"]},{"text":"impl<L: Language, D, U> DerefMut for RawEGraph<L, D, U>","synthetic":false,"types":["plat_egg::raw::egraph::RawEGraph"]}];
+implementors["plat_egg"] = [{"text":"impl<D> DerefMut for RawEClass<D>","synthetic":false,"types":["plat_egg::raw::eclass::RawEClass"]},{"text":"impl<L: Language, D, U: UndoLogT<L, D>> DerefMut for RawEGraph<L, D, U>","synthetic":false,"types":["plat_egg::raw::egraph::RawEGraph"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js b/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
index 5ae8ed7a..8dbdcf3b 100644
--- a/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
+++ b/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
@@ -1,3 +1,3 @@
(function() {var implementors = {};
-implementors["plat_egg"] = [{"text":"impl<'a, L> RefUnwindSafe for Dot<'a, L> where
L: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::dot::Dot"]},{"text":"impl<L, D> RefUnwindSafe for EClassData<L, D> where
D: RefUnwindSafe,
L: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::eclass::EClassData"]},{"text":"impl<L, N> RefUnwindSafe for EGraph<L, N> where
L: RefUnwindSafe,
N: RefUnwindSafe,
<N as Analysis<L>>::Data: RefUnwindSafe,
<L as Language>::Discriminant: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::egraph::EGraph"]},{"text":"impl RefUnwindSafe for Justification","synthetic":true,"types":["plat_egg::explain::Justification"]},{"text":"impl<L> RefUnwindSafe for Explanation<L> where
L: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::explain::Explanation"]},{"text":"impl<L> RefUnwindSafe for TreeTerm<L> where
L: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::explain::TreeTerm"]},{"text":"impl<L> RefUnwindSafe for FlatTerm<L> where
L: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::explain::FlatTerm"]},{"text":"impl<'a, CF, L, N> RefUnwindSafe for Extractor<'a, CF, L, N> where
CF: RefUnwindSafe,
L: RefUnwindSafe,
N: RefUnwindSafe,
<CF as CostFunction<L>>::Cost: RefUnwindSafe,
<N as Analysis<L>>::Data: RefUnwindSafe,
<L as Language>::Discriminant: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::extract::Extractor"]},{"text":"impl RefUnwindSafe for AstSize","synthetic":true,"types":["plat_egg::extract::AstSize"]},{"text":"impl RefUnwindSafe for AstDepth","synthetic":true,"types":["plat_egg::extract::AstDepth"]},{"text":"impl RefUnwindSafe for FromOpError","synthetic":true,"types":["plat_egg::language::FromOpError"]},{"text":"impl<E> !RefUnwindSafe for RecExprParseError<E>","synthetic":true,"types":["plat_egg::language::RecExprParseError"]},{"text":"impl RefUnwindSafe for DidMerge","synthetic":true,"types":["plat_egg::language::DidMerge"]},{"text":"impl RefUnwindSafe for SymbolLang","synthetic":true,"types":["plat_egg::language::SymbolLang"]},{"text":"impl<'a, L, N> RefUnwindSafe for LpExtractor<'a, L, N> where
L: RefUnwindSafe,
N: RefUnwindSafe,
<N as Analysis<L>>::Data: RefUnwindSafe,
<L as Language>::Discriminant: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::lp_extract::LpExtractor"]},{"text":"impl<L> RefUnwindSafe for MultiPattern<L> where
L: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::multipattern::MultiPattern"]},{"text":"impl<E> RefUnwindSafe for MultiPatternParseError<E> where
E: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::multipattern::MultiPatternParseError"]},{"text":"impl<L> RefUnwindSafe for Pattern<L> where
L: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::pattern::Pattern"]},{"text":"impl<L> RefUnwindSafe for ENodeOrVar<L> where
L: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::pattern::ENodeOrVar"]},{"text":"impl<'a, L> RefUnwindSafe for SearchMatches<'a, L> where
L: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::pattern::SearchMatches"]},{"text":"impl<D> RefUnwindSafe for RawEClass<D> where
D: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::raw::eclass::RawEClass"]},{"text":"impl<L> RefUnwindSafe for EGraphResidual<L> where
L: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::raw::egraph::EGraphResidual"]},{"text":"impl<L, D, U> RefUnwindSafe for RawEGraph<L, D, U> where
D: RefUnwindSafe,
L: RefUnwindSafe,
U: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::raw::egraph::RawEGraph"]},{"text":"impl<D> RefUnwindSafe for UnionInfo<D> where
D: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::raw::egraph::UnionInfo"]},{"text":"impl RefUnwindSafe for PushInfo","synthetic":true,"types":["plat_egg::raw::semi_persistent1::PushInfo"]},{"text":"impl RefUnwindSafe for UndoLog","synthetic":true,"types":["plat_egg::raw::semi_persistent1::UndoLog"]},{"text":"impl<T> RefUnwindSafe for DefaultVec<T> where
T: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::raw::bitset::DefaultVec"]},{"text":"impl RefUnwindSafe for BitSet","synthetic":true,"types":["plat_egg::raw::bitset::BitSet"]},{"text":"impl<L> RefUnwindSafe for RecExpr<L> where
L: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::raw::language::RecExpr"]},{"text":"impl RefUnwindSafe for PushInfo","synthetic":true,"types":["plat_egg::raw::semi_persistent2::PushInfo"]},{"text":"impl RefUnwindSafe for UndoLog","synthetic":true,"types":["plat_egg::raw::semi_persistent2::UndoLog"]},{"text":"impl<'a, L> RefUnwindSafe for UndoCtx<'a, L> where
L: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::raw::semi_persistent2::UndoCtx"]},{"text":"impl RefUnwindSafe for UnionFind","synthetic":true,"types":["plat_egg::raw::unionfind::UnionFind"]},{"text":"impl<L, N> !RefUnwindSafe for Rewrite<L, N>","synthetic":true,"types":["plat_egg::rewrite::Rewrite"]},{"text":"impl<C, A> RefUnwindSafe for ConditionalApplier<C, A> where
A: RefUnwindSafe,
C: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::rewrite::ConditionalApplier"]},{"text":"impl<L> RefUnwindSafe for ConditionEqual<L> where
L: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::rewrite::ConditionEqual"]},{"text":"impl<L, N, IterData = ()> !RefUnwindSafe for Runner<L, N, IterData>","synthetic":true,"types":["plat_egg::run::Runner"]},{"text":"impl RefUnwindSafe for StopReason","synthetic":true,"types":["plat_egg::run::StopReason"]},{"text":"impl RefUnwindSafe for Report","synthetic":true,"types":["plat_egg::run::Report"]},{"text":"impl<IterData> RefUnwindSafe for Iteration<IterData> where
IterData: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::run::Iteration"]},{"text":"impl RefUnwindSafe for SimpleScheduler","synthetic":true,"types":["plat_egg::run::SimpleScheduler"]},{"text":"impl RefUnwindSafe for BackoffScheduler","synthetic":true,"types":["plat_egg::run::BackoffScheduler"]},{"text":"impl RefUnwindSafe for Var","synthetic":true,"types":["plat_egg::subst::Var"]},{"text":"impl RefUnwindSafe for Subst","synthetic":true,"types":["plat_egg::subst::Subst"]},{"text":"impl RefUnwindSafe for Id","synthetic":true,"types":["plat_egg::Id"]}];
+implementors["plat_egg"] = [{"text":"impl<'a, L, P> RefUnwindSafe for Dot<'a, L, P> where
L: RefUnwindSafe,
P: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::dot::Dot"]},{"text":"impl<L, D> RefUnwindSafe for EClassData<L, D> where
D: RefUnwindSafe,
L: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::eclass::EClassData"]},{"text":"impl<L, N> RefUnwindSafe for EGraph<L, N> where
L: RefUnwindSafe,
N: RefUnwindSafe,
<N as Analysis<L>>::Data: RefUnwindSafe,
<L as Language>::Discriminant: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::egraph::EGraph"]},{"text":"impl RefUnwindSafe for Justification","synthetic":true,"types":["plat_egg::explain::Justification"]},{"text":"impl<L> RefUnwindSafe for Explanation<L> where
L: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::explain::Explanation"]},{"text":"impl<L> RefUnwindSafe for TreeTerm<L> where
L: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::explain::TreeTerm"]},{"text":"impl<L> RefUnwindSafe for FlatTerm<L> where
L: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::explain::FlatTerm"]},{"text":"impl<'a, CF, L, N> RefUnwindSafe for Extractor<'a, CF, L, N> where
CF: RefUnwindSafe,
L: RefUnwindSafe,
N: RefUnwindSafe,
<CF as CostFunction<L>>::Cost: RefUnwindSafe,
<N as Analysis<L>>::Data: RefUnwindSafe,
<L as Language>::Discriminant: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::extract::Extractor"]},{"text":"impl RefUnwindSafe for AstSize","synthetic":true,"types":["plat_egg::extract::AstSize"]},{"text":"impl RefUnwindSafe for AstDepth","synthetic":true,"types":["plat_egg::extract::AstDepth"]},{"text":"impl RefUnwindSafe for FromOpError","synthetic":true,"types":["plat_egg::language::FromOpError"]},{"text":"impl<E> !RefUnwindSafe for RecExprParseError<E>","synthetic":true,"types":["plat_egg::language::RecExprParseError"]},{"text":"impl RefUnwindSafe for DidMerge","synthetic":true,"types":["plat_egg::language::DidMerge"]},{"text":"impl RefUnwindSafe for SymbolLang","synthetic":true,"types":["plat_egg::language::SymbolLang"]},{"text":"impl<'a, L, N> RefUnwindSafe for LpExtractor<'a, L, N> where
L: RefUnwindSafe,
N: RefUnwindSafe,
<N as Analysis<L>>::Data: RefUnwindSafe,
<L as Language>::Discriminant: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::lp_extract::LpExtractor"]},{"text":"impl<L> RefUnwindSafe for MultiPattern<L> where
L: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::multipattern::MultiPattern"]},{"text":"impl<E> RefUnwindSafe for MultiPatternParseError<E> where
E: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::multipattern::MultiPatternParseError"]},{"text":"impl<L> RefUnwindSafe for Pattern<L> where
L: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::pattern::Pattern"]},{"text":"impl<L> RefUnwindSafe for ENodeOrVar<L> where
L: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::pattern::ENodeOrVar"]},{"text":"impl<'a, L> RefUnwindSafe for SearchMatches<'a, L> where
L: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::pattern::SearchMatches"]},{"text":"impl<D> RefUnwindSafe for RawEClass<D> where
D: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::raw::eclass::RawEClass"]},{"text":"impl<L, P> RefUnwindSafe for EGraphResidual<L, P> where
L: RefUnwindSafe,
P: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::raw::egraph::EGraphResidual"]},{"text":"impl<L, D, U> RefUnwindSafe for RawEGraph<L, D, U> where
D: RefUnwindSafe,
L: RefUnwindSafe,
U: RefUnwindSafe,
<U as UndoLogPC>::AllowPathCompress: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::raw::egraph::RawEGraph"]},{"text":"impl<D> RefUnwindSafe for UnionInfo<D> where
D: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::raw::egraph::UnionInfo"]},{"text":"impl RefUnwindSafe for PushInfo","synthetic":true,"types":["plat_egg::raw::semi_persistent1::PushInfo"]},{"text":"impl RefUnwindSafe for UndoLog","synthetic":true,"types":["plat_egg::raw::semi_persistent1::UndoLog"]},{"text":"impl<L> RefUnwindSafe for RecExpr<L> where
L: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::raw::language::RecExpr"]},{"text":"impl RefUnwindSafe for PushInfo","synthetic":true,"types":["plat_egg::raw::semi_persistent2::PushInfo"]},{"text":"impl RefUnwindSafe for UndoLog","synthetic":true,"types":["plat_egg::raw::semi_persistent2::UndoLog"]},{"text":"impl<'a, L> RefUnwindSafe for UndoCtx<'a, L> where
L: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::raw::semi_persistent2::UndoCtx"]},{"text":"impl<P> RefUnwindSafe for UnionFind<P> where
P: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::raw::unionfind::UnionFind"]},{"text":"impl<const B: bool> RefUnwindSafe for PathCompress<B>","synthetic":true,"types":["plat_egg::raw::reflect_const::PathCompress"]},{"text":"impl<L, N> !RefUnwindSafe for Rewrite<L, N>","synthetic":true,"types":["plat_egg::rewrite::Rewrite"]},{"text":"impl<C, A> RefUnwindSafe for ConditionalApplier<C, A> where
A: RefUnwindSafe,
C: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::rewrite::ConditionalApplier"]},{"text":"impl<L> RefUnwindSafe for ConditionEqual<L> where
L: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::rewrite::ConditionEqual"]},{"text":"impl<L, N, IterData = ()> !RefUnwindSafe for Runner<L, N, IterData>","synthetic":true,"types":["plat_egg::run::Runner"]},{"text":"impl RefUnwindSafe for StopReason","synthetic":true,"types":["plat_egg::run::StopReason"]},{"text":"impl RefUnwindSafe for Report","synthetic":true,"types":["plat_egg::run::Report"]},{"text":"impl<IterData> RefUnwindSafe for Iteration<IterData> where
IterData: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::run::Iteration"]},{"text":"impl RefUnwindSafe for SimpleScheduler","synthetic":true,"types":["plat_egg::run::SimpleScheduler"]},{"text":"impl RefUnwindSafe for BackoffScheduler","synthetic":true,"types":["plat_egg::run::BackoffScheduler"]},{"text":"impl RefUnwindSafe for Var","synthetic":true,"types":["plat_egg::subst::Var"]},{"text":"impl RefUnwindSafe for Subst","synthetic":true,"types":["plat_egg::subst::Subst"]},{"text":"impl RefUnwindSafe for Id","synthetic":true,"types":["plat_egg::Id"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/panic/unwind_safe/trait.UnwindSafe.js b/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
index 0e0555e3..007e23d4 100644
--- a/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
+++ b/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
@@ -1,3 +1,3 @@
(function() {var implementors = {};
-implementors["plat_egg"] = [{"text":"impl<'a, L> UnwindSafe for Dot<'a, L> where
L: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::dot::Dot"]},{"text":"impl<L, D> UnwindSafe for EClassData<L, D> where
D: UnwindSafe,
L: UnwindSafe, ","synthetic":true,"types":["plat_egg::eclass::EClassData"]},{"text":"impl<L, N> UnwindSafe for EGraph<L, N> where
L: UnwindSafe,
N: UnwindSafe,
<N as Analysis<L>>::Data: UnwindSafe,
<L as Language>::Discriminant: UnwindSafe, ","synthetic":true,"types":["plat_egg::egraph::EGraph"]},{"text":"impl UnwindSafe for Justification","synthetic":true,"types":["plat_egg::explain::Justification"]},{"text":"impl<L> UnwindSafe for Explanation<L> where
L: UnwindSafe + RefUnwindSafe, ","synthetic":true,"types":["plat_egg::explain::Explanation"]},{"text":"impl<L> UnwindSafe for TreeTerm<L> where
L: UnwindSafe + RefUnwindSafe, ","synthetic":true,"types":["plat_egg::explain::TreeTerm"]},{"text":"impl<L> UnwindSafe for FlatTerm<L> where
L: UnwindSafe, ","synthetic":true,"types":["plat_egg::explain::FlatTerm"]},{"text":"impl<'a, CF, L, N> UnwindSafe for Extractor<'a, CF, L, N> where
CF: UnwindSafe,
L: UnwindSafe + RefUnwindSafe,
N: RefUnwindSafe,
<CF as CostFunction<L>>::Cost: UnwindSafe,
<N as Analysis<L>>::Data: RefUnwindSafe,
<L as Language>::Discriminant: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::extract::Extractor"]},{"text":"impl UnwindSafe for AstSize","synthetic":true,"types":["plat_egg::extract::AstSize"]},{"text":"impl UnwindSafe for AstDepth","synthetic":true,"types":["plat_egg::extract::AstDepth"]},{"text":"impl UnwindSafe for FromOpError","synthetic":true,"types":["plat_egg::language::FromOpError"]},{"text":"impl<E> !UnwindSafe for RecExprParseError<E>","synthetic":true,"types":["plat_egg::language::RecExprParseError"]},{"text":"impl UnwindSafe for DidMerge","synthetic":true,"types":["plat_egg::language::DidMerge"]},{"text":"impl UnwindSafe for SymbolLang","synthetic":true,"types":["plat_egg::language::SymbolLang"]},{"text":"impl<'a, L, N> UnwindSafe for LpExtractor<'a, L, N> where
L: RefUnwindSafe,
N: RefUnwindSafe,
<N as Analysis<L>>::Data: RefUnwindSafe,
<L as Language>::Discriminant: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::lp_extract::LpExtractor"]},{"text":"impl<L> UnwindSafe for MultiPattern<L> where
L: UnwindSafe, ","synthetic":true,"types":["plat_egg::multipattern::MultiPattern"]},{"text":"impl<E> UnwindSafe for MultiPatternParseError<E> where
E: UnwindSafe, ","synthetic":true,"types":["plat_egg::multipattern::MultiPatternParseError"]},{"text":"impl<L> UnwindSafe for Pattern<L> where
L: UnwindSafe, ","synthetic":true,"types":["plat_egg::pattern::Pattern"]},{"text":"impl<L> UnwindSafe for ENodeOrVar<L> where
L: UnwindSafe, ","synthetic":true,"types":["plat_egg::pattern::ENodeOrVar"]},{"text":"impl<'a, L> UnwindSafe for SearchMatches<'a, L> where
L: UnwindSafe + RefUnwindSafe, ","synthetic":true,"types":["plat_egg::pattern::SearchMatches"]},{"text":"impl<D> UnwindSafe for RawEClass<D> where
D: UnwindSafe, ","synthetic":true,"types":["plat_egg::raw::eclass::RawEClass"]},{"text":"impl<L> UnwindSafe for EGraphResidual<L> where
L: UnwindSafe, ","synthetic":true,"types":["plat_egg::raw::egraph::EGraphResidual"]},{"text":"impl<L, D, U> UnwindSafe for RawEGraph<L, D, U> where
D: UnwindSafe,
L: UnwindSafe,
U: UnwindSafe, ","synthetic":true,"types":["plat_egg::raw::egraph::RawEGraph"]},{"text":"impl<D> UnwindSafe for UnionInfo<D> where
D: UnwindSafe, ","synthetic":true,"types":["plat_egg::raw::egraph::UnionInfo"]},{"text":"impl UnwindSafe for PushInfo","synthetic":true,"types":["plat_egg::raw::semi_persistent1::PushInfo"]},{"text":"impl UnwindSafe for UndoLog","synthetic":true,"types":["plat_egg::raw::semi_persistent1::UndoLog"]},{"text":"impl<T> UnwindSafe for DefaultVec<T> where
T: UnwindSafe, ","synthetic":true,"types":["plat_egg::raw::bitset::DefaultVec"]},{"text":"impl UnwindSafe for BitSet","synthetic":true,"types":["plat_egg::raw::bitset::BitSet"]},{"text":"impl<L> UnwindSafe for RecExpr<L> where
L: UnwindSafe, ","synthetic":true,"types":["plat_egg::raw::language::RecExpr"]},{"text":"impl UnwindSafe for PushInfo","synthetic":true,"types":["plat_egg::raw::semi_persistent2::PushInfo"]},{"text":"impl UnwindSafe for UndoLog","synthetic":true,"types":["plat_egg::raw::semi_persistent2::UndoLog"]},{"text":"impl<'a, L> UnwindSafe for UndoCtx<'a, L> where
L: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::raw::semi_persistent2::UndoCtx"]},{"text":"impl UnwindSafe for UnionFind","synthetic":true,"types":["plat_egg::raw::unionfind::UnionFind"]},{"text":"impl<L, N> !UnwindSafe for Rewrite<L, N>","synthetic":true,"types":["plat_egg::rewrite::Rewrite"]},{"text":"impl<C, A> UnwindSafe for ConditionalApplier<C, A> where
A: UnwindSafe,
C: UnwindSafe, ","synthetic":true,"types":["plat_egg::rewrite::ConditionalApplier"]},{"text":"impl<L> UnwindSafe for ConditionEqual<L> where
L: UnwindSafe, ","synthetic":true,"types":["plat_egg::rewrite::ConditionEqual"]},{"text":"impl<L, N, IterData = ()> !UnwindSafe for Runner<L, N, IterData>","synthetic":true,"types":["plat_egg::run::Runner"]},{"text":"impl UnwindSafe for StopReason","synthetic":true,"types":["plat_egg::run::StopReason"]},{"text":"impl UnwindSafe for Report","synthetic":true,"types":["plat_egg::run::Report"]},{"text":"impl<IterData> UnwindSafe for Iteration<IterData> where
IterData: UnwindSafe, ","synthetic":true,"types":["plat_egg::run::Iteration"]},{"text":"impl UnwindSafe for SimpleScheduler","synthetic":true,"types":["plat_egg::run::SimpleScheduler"]},{"text":"impl UnwindSafe for BackoffScheduler","synthetic":true,"types":["plat_egg::run::BackoffScheduler"]},{"text":"impl UnwindSafe for Var","synthetic":true,"types":["plat_egg::subst::Var"]},{"text":"impl UnwindSafe for Subst","synthetic":true,"types":["plat_egg::subst::Subst"]},{"text":"impl UnwindSafe for Id","synthetic":true,"types":["plat_egg::Id"]}];
+implementors["plat_egg"] = [{"text":"impl<'a, L, P> UnwindSafe for Dot<'a, L, P> where
L: RefUnwindSafe,
P: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::dot::Dot"]},{"text":"impl<L, D> UnwindSafe for EClassData<L, D> where
D: UnwindSafe,
L: UnwindSafe, ","synthetic":true,"types":["plat_egg::eclass::EClassData"]},{"text":"impl<L, N> UnwindSafe for EGraph<L, N> where
L: UnwindSafe,
N: UnwindSafe,
<N as Analysis<L>>::Data: UnwindSafe,
<L as Language>::Discriminant: UnwindSafe, ","synthetic":true,"types":["plat_egg::egraph::EGraph"]},{"text":"impl UnwindSafe for Justification","synthetic":true,"types":["plat_egg::explain::Justification"]},{"text":"impl<L> UnwindSafe for Explanation<L> where
L: UnwindSafe + RefUnwindSafe, ","synthetic":true,"types":["plat_egg::explain::Explanation"]},{"text":"impl<L> UnwindSafe for TreeTerm<L> where
L: UnwindSafe + RefUnwindSafe, ","synthetic":true,"types":["plat_egg::explain::TreeTerm"]},{"text":"impl<L> UnwindSafe for FlatTerm<L> where
L: UnwindSafe, ","synthetic":true,"types":["plat_egg::explain::FlatTerm"]},{"text":"impl<'a, CF, L, N> UnwindSafe for Extractor<'a, CF, L, N> where
CF: UnwindSafe,
L: UnwindSafe + RefUnwindSafe,
N: RefUnwindSafe,
<CF as CostFunction<L>>::Cost: UnwindSafe,
<N as Analysis<L>>::Data: RefUnwindSafe,
<L as Language>::Discriminant: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::extract::Extractor"]},{"text":"impl UnwindSafe for AstSize","synthetic":true,"types":["plat_egg::extract::AstSize"]},{"text":"impl UnwindSafe for AstDepth","synthetic":true,"types":["plat_egg::extract::AstDepth"]},{"text":"impl UnwindSafe for FromOpError","synthetic":true,"types":["plat_egg::language::FromOpError"]},{"text":"impl<E> !UnwindSafe for RecExprParseError<E>","synthetic":true,"types":["plat_egg::language::RecExprParseError"]},{"text":"impl UnwindSafe for DidMerge","synthetic":true,"types":["plat_egg::language::DidMerge"]},{"text":"impl UnwindSafe for SymbolLang","synthetic":true,"types":["plat_egg::language::SymbolLang"]},{"text":"impl<'a, L, N> UnwindSafe for LpExtractor<'a, L, N> where
L: RefUnwindSafe,
N: RefUnwindSafe,
<N as Analysis<L>>::Data: RefUnwindSafe,
<L as Language>::Discriminant: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::lp_extract::LpExtractor"]},{"text":"impl<L> UnwindSafe for MultiPattern<L> where
L: UnwindSafe, ","synthetic":true,"types":["plat_egg::multipattern::MultiPattern"]},{"text":"impl<E> UnwindSafe for MultiPatternParseError<E> where
E: UnwindSafe, ","synthetic":true,"types":["plat_egg::multipattern::MultiPatternParseError"]},{"text":"impl<L> UnwindSafe for Pattern<L> where
L: UnwindSafe, ","synthetic":true,"types":["plat_egg::pattern::Pattern"]},{"text":"impl<L> UnwindSafe for ENodeOrVar<L> where
L: UnwindSafe, ","synthetic":true,"types":["plat_egg::pattern::ENodeOrVar"]},{"text":"impl<'a, L> UnwindSafe for SearchMatches<'a, L> where
L: UnwindSafe + RefUnwindSafe, ","synthetic":true,"types":["plat_egg::pattern::SearchMatches"]},{"text":"impl<D> UnwindSafe for RawEClass<D> where
D: UnwindSafe, ","synthetic":true,"types":["plat_egg::raw::eclass::RawEClass"]},{"text":"impl<L, P> UnwindSafe for EGraphResidual<L, P> where
L: UnwindSafe,
P: UnwindSafe, ","synthetic":true,"types":["plat_egg::raw::egraph::EGraphResidual"]},{"text":"impl<L, D, U> UnwindSafe for RawEGraph<L, D, U> where
D: UnwindSafe,
L: UnwindSafe,
U: UnwindSafe,
<U as UndoLogPC>::AllowPathCompress: UnwindSafe, ","synthetic":true,"types":["plat_egg::raw::egraph::RawEGraph"]},{"text":"impl<D> UnwindSafe for UnionInfo<D> where
D: UnwindSafe, ","synthetic":true,"types":["plat_egg::raw::egraph::UnionInfo"]},{"text":"impl UnwindSafe for PushInfo","synthetic":true,"types":["plat_egg::raw::semi_persistent1::PushInfo"]},{"text":"impl UnwindSafe for UndoLog","synthetic":true,"types":["plat_egg::raw::semi_persistent1::UndoLog"]},{"text":"impl<L> UnwindSafe for RecExpr<L> where
L: UnwindSafe, ","synthetic":true,"types":["plat_egg::raw::language::RecExpr"]},{"text":"impl UnwindSafe for PushInfo","synthetic":true,"types":["plat_egg::raw::semi_persistent2::PushInfo"]},{"text":"impl UnwindSafe for UndoLog","synthetic":true,"types":["plat_egg::raw::semi_persistent2::UndoLog"]},{"text":"impl<'a, L> UnwindSafe for UndoCtx<'a, L> where
L: RefUnwindSafe, ","synthetic":true,"types":["plat_egg::raw::semi_persistent2::UndoCtx"]},{"text":"impl<P> UnwindSafe for UnionFind<P> where
P: UnwindSafe, ","synthetic":true,"types":["plat_egg::raw::unionfind::UnionFind"]},{"text":"impl<const B: bool> UnwindSafe for PathCompress<B>","synthetic":true,"types":["plat_egg::raw::reflect_const::PathCompress"]},{"text":"impl<L, N> !UnwindSafe for Rewrite<L, N>","synthetic":true,"types":["plat_egg::rewrite::Rewrite"]},{"text":"impl<C, A> UnwindSafe for ConditionalApplier<C, A> where
A: UnwindSafe,
C: UnwindSafe, ","synthetic":true,"types":["plat_egg::rewrite::ConditionalApplier"]},{"text":"impl<L> UnwindSafe for ConditionEqual<L> where
L: UnwindSafe, ","synthetic":true,"types":["plat_egg::rewrite::ConditionEqual"]},{"text":"impl<L, N, IterData = ()> !UnwindSafe for Runner<L, N, IterData>","synthetic":true,"types":["plat_egg::run::Runner"]},{"text":"impl UnwindSafe for StopReason","synthetic":true,"types":["plat_egg::run::StopReason"]},{"text":"impl UnwindSafe for Report","synthetic":true,"types":["plat_egg::run::Report"]},{"text":"impl<IterData> UnwindSafe for Iteration<IterData> where
IterData: UnwindSafe, ","synthetic":true,"types":["plat_egg::run::Iteration"]},{"text":"impl UnwindSafe for SimpleScheduler","synthetic":true,"types":["plat_egg::run::SimpleScheduler"]},{"text":"impl UnwindSafe for BackoffScheduler","synthetic":true,"types":["plat_egg::run::BackoffScheduler"]},{"text":"impl UnwindSafe for Var","synthetic":true,"types":["plat_egg::subst::Var"]},{"text":"impl UnwindSafe for Subst","synthetic":true,"types":["plat_egg::subst::Subst"]},{"text":"impl UnwindSafe for Id","synthetic":true,"types":["plat_egg::Id"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/plat_egg/raw/reflect_const/trait.PathCompressT.js b/implementors/plat_egg/raw/reflect_const/trait.PathCompressT.js
new file mode 100644
index 00000000..52ee7275
--- /dev/null
+++ b/implementors/plat_egg/raw/reflect_const/trait.PathCompressT.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {};
+implementors["plat_egg"] = [];
+if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/plat_egg/raw/semi_persistent/trait.UndoLogPC.js b/implementors/plat_egg/raw/semi_persistent/trait.UndoLogPC.js
new file mode 100644
index 00000000..52ee7275
--- /dev/null
+++ b/implementors/plat_egg/raw/semi_persistent/trait.UndoLogPC.js
@@ -0,0 +1,3 @@
+(function() {var implementors = {};
+implementors["plat_egg"] = [];
+if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/serde/de/trait.Deserialize.js b/implementors/serde/de/trait.Deserialize.js
index ec4f0478..03f5ddb5 100644
--- a/implementors/serde/de/trait.Deserialize.js
+++ b/implementors/serde/de/trait.Deserialize.js
@@ -1,3 +1,3 @@
(function() {var implementors = {};
-implementors["plat_egg"] = [{"text":"impl<'de, L, D> Deserialize<'de> for EClassData<L, D> where
L: Deserialize<'de>,
D: Deserialize<'de>, ","synthetic":false,"types":["plat_egg::eclass::EClassData"]},{"text":"impl<'de, L: Language, N: Analysis<L>> Deserialize<'de> for EGraph<L, N> where
N::Data: for<'a> Deserialize<'a>,
L: Deserialize<'de>,
N: Deserialize<'de>, ","synthetic":false,"types":["plat_egg::egraph::EGraph"]},{"text":"impl<'de> Deserialize<'de> for Justification","synthetic":false,"types":["plat_egg::explain::Justification"]},{"text":"impl<'de> Deserialize<'de> for SymbolLang","synthetic":false,"types":["plat_egg::language::SymbolLang"]},{"text":"impl<'de, D> Deserialize<'de> for RawEClass<D> where
D: Deserialize<'de>, ","synthetic":false,"types":["plat_egg::raw::eclass::RawEClass"]},{"text":"impl<'de, L: Language> Deserialize<'de> for EGraphResidual<L> where
L: Deserialize<'de>, ","synthetic":false,"types":["plat_egg::raw::egraph::EGraphResidual"]},{"text":"impl<'de, L: Language, D, U> Deserialize<'de> for RawEGraph<L, D, U> where
L: Deserialize<'de>,
D: Deserialize<'de>,
U: Deserialize<'de>, ","synthetic":false,"types":["plat_egg::raw::egraph::RawEGraph"]},{"text":"impl<'de> Deserialize<'de> for PushInfo","synthetic":false,"types":["plat_egg::raw::semi_persistent1::PushInfo"]},{"text":"impl<'de> Deserialize<'de> for UndoLog","synthetic":false,"types":["plat_egg::raw::semi_persistent1::UndoLog"]},{"text":"impl<'de, T> Deserialize<'de> for DefaultVec<T> where
T: Deserialize<'de>, ","synthetic":false,"types":["plat_egg::raw::bitset::DefaultVec"]},{"text":"impl<'de> Deserialize<'de> for BitSet","synthetic":false,"types":["plat_egg::raw::bitset::BitSet"]},{"text":"impl<'de> Deserialize<'de> for PushInfo","synthetic":false,"types":["plat_egg::raw::semi_persistent2::PushInfo"]},{"text":"impl<'de> Deserialize<'de> for UndoLog","synthetic":false,"types":["plat_egg::raw::semi_persistent2::UndoLog"]},{"text":"impl<'de> Deserialize<'de> for UnionFind","synthetic":false,"types":["plat_egg::raw::unionfind::UnionFind"]},{"text":"impl<'de> Deserialize<'de> for Id","synthetic":false,"types":["plat_egg::Id"]}];
+implementors["plat_egg"] = [{"text":"impl<'de, L, D> Deserialize<'de> for EClassData<L, D> where
L: Deserialize<'de>,
D: Deserialize<'de>, ","synthetic":false,"types":["plat_egg::eclass::EClassData"]},{"text":"impl<'de, L: Language, N: Analysis<L>> Deserialize<'de> for EGraph<L, N> where
N::Data: for<'a> Deserialize<'a>,
L: Deserialize<'de>,
N: Deserialize<'de>, ","synthetic":false,"types":["plat_egg::egraph::EGraph"]},{"text":"impl<'de> Deserialize<'de> for Justification","synthetic":false,"types":["plat_egg::explain::Justification"]},{"text":"impl<'de> Deserialize<'de> for SymbolLang","synthetic":false,"types":["plat_egg::language::SymbolLang"]},{"text":"impl<'de, D> Deserialize<'de> for RawEClass<D> where
D: Deserialize<'de>, ","synthetic":false,"types":["plat_egg::raw::eclass::RawEClass"]},{"text":"impl<'de, L: Language, P: PathCompressT> Deserialize<'de> for EGraphResidual<L, P> where
L: Deserialize<'de>, ","synthetic":false,"types":["plat_egg::raw::egraph::EGraphResidual"]},{"text":"impl<'de, L: Language, D, U: UndoLogT<L, D>> Deserialize<'de> for RawEGraph<L, D, U> where
L: Deserialize<'de>,
D: Deserialize<'de>,
U: Deserialize<'de>, ","synthetic":false,"types":["plat_egg::raw::egraph::RawEGraph"]},{"text":"impl<'de> Deserialize<'de> for PushInfo","synthetic":false,"types":["plat_egg::raw::semi_persistent1::PushInfo"]},{"text":"impl<'de> Deserialize<'de> for UndoLog","synthetic":false,"types":["plat_egg::raw::semi_persistent1::UndoLog"]},{"text":"impl<'de> Deserialize<'de> for PushInfo","synthetic":false,"types":["plat_egg::raw::semi_persistent2::PushInfo"]},{"text":"impl<'de> Deserialize<'de> for UndoLog","synthetic":false,"types":["plat_egg::raw::semi_persistent2::UndoLog"]},{"text":"impl<'de, P: PathCompressT> Deserialize<'de> for UnionFind<P>","synthetic":false,"types":["plat_egg::raw::unionfind::UnionFind"]},{"text":"impl<'de, const B: bool> Deserialize<'de> for PathCompress<B>","synthetic":false,"types":["plat_egg::raw::reflect_const::PathCompress"]},{"text":"impl<'de> Deserialize<'de> for Id","synthetic":false,"types":["plat_egg::Id"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/serde/ser/trait.Serialize.js b/implementors/serde/ser/trait.Serialize.js
index 7d484275..dfb3636a 100644
--- a/implementors/serde/ser/trait.Serialize.js
+++ b/implementors/serde/ser/trait.Serialize.js
@@ -1,3 +1,3 @@
(function() {var implementors = {};
-implementors["plat_egg"] = [{"text":"impl<L, D> Serialize for EClassData<L, D> where
L: Serialize,
D: Serialize, ","synthetic":false,"types":["plat_egg::eclass::EClassData"]},{"text":"impl<L: Language, N: Analysis<L>> Serialize for EGraph<L, N> where
N::Data: Serialize,
L: Serialize,
N: Serialize, ","synthetic":false,"types":["plat_egg::egraph::EGraph"]},{"text":"impl Serialize for Justification","synthetic":false,"types":["plat_egg::explain::Justification"]},{"text":"impl<L: Language + Display> Serialize for RecExpr<L>","synthetic":false,"types":["plat_egg::raw::language::RecExpr"]},{"text":"impl Serialize for SymbolLang","synthetic":false,"types":["plat_egg::language::SymbolLang"]},{"text":"impl<D> Serialize for RawEClass<D> where
D: Serialize, ","synthetic":false,"types":["plat_egg::raw::eclass::RawEClass"]},{"text":"impl<L: Language> Serialize for EGraphResidual<L> where
L: Serialize, ","synthetic":false,"types":["plat_egg::raw::egraph::EGraphResidual"]},{"text":"impl<L: Language, D, U> Serialize for RawEGraph<L, D, U> where
L: Serialize,
D: Serialize,
U: Serialize, ","synthetic":false,"types":["plat_egg::raw::egraph::RawEGraph"]},{"text":"impl Serialize for PushInfo","synthetic":false,"types":["plat_egg::raw::semi_persistent1::PushInfo"]},{"text":"impl Serialize for UndoLog","synthetic":false,"types":["plat_egg::raw::semi_persistent1::UndoLog"]},{"text":"impl<T> Serialize for DefaultVec<T> where
T: Serialize, ","synthetic":false,"types":["plat_egg::raw::bitset::DefaultVec"]},{"text":"impl Serialize for BitSet","synthetic":false,"types":["plat_egg::raw::bitset::BitSet"]},{"text":"impl Serialize for PushInfo","synthetic":false,"types":["plat_egg::raw::semi_persistent2::PushInfo"]},{"text":"impl Serialize for UndoLog","synthetic":false,"types":["plat_egg::raw::semi_persistent2::UndoLog"]},{"text":"impl Serialize for UnionFind","synthetic":false,"types":["plat_egg::raw::unionfind::UnionFind"]},{"text":"impl Serialize for StopReason","synthetic":false,"types":["plat_egg::run::StopReason"]},{"text":"impl Serialize for Report","synthetic":false,"types":["plat_egg::run::Report"]},{"text":"impl<IterData> Serialize for Iteration<IterData> where
IterData: Serialize, ","synthetic":false,"types":["plat_egg::run::Iteration"]},{"text":"impl Serialize for Id","synthetic":false,"types":["plat_egg::Id"]}];
+implementors["plat_egg"] = [{"text":"impl<L, D> Serialize for EClassData<L, D> where
L: Serialize,
D: Serialize, ","synthetic":false,"types":["plat_egg::eclass::EClassData"]},{"text":"impl<L: Language, N: Analysis<L>> Serialize for EGraph<L, N> where
N::Data: Serialize,
L: Serialize,
N: Serialize, ","synthetic":false,"types":["plat_egg::egraph::EGraph"]},{"text":"impl Serialize for Justification","synthetic":false,"types":["plat_egg::explain::Justification"]},{"text":"impl<L: Language + Display> Serialize for RecExpr<L>","synthetic":false,"types":["plat_egg::raw::language::RecExpr"]},{"text":"impl Serialize for SymbolLang","synthetic":false,"types":["plat_egg::language::SymbolLang"]},{"text":"impl<D> Serialize for RawEClass<D> where
D: Serialize, ","synthetic":false,"types":["plat_egg::raw::eclass::RawEClass"]},{"text":"impl<L: Language, P: PathCompressT> Serialize for EGraphResidual<L, P> where
L: Serialize, ","synthetic":false,"types":["plat_egg::raw::egraph::EGraphResidual"]},{"text":"impl<L: Language, D, U: UndoLogT<L, D>> Serialize for RawEGraph<L, D, U> where
L: Serialize,
D: Serialize,
U: Serialize, ","synthetic":false,"types":["plat_egg::raw::egraph::RawEGraph"]},{"text":"impl Serialize for PushInfo","synthetic":false,"types":["plat_egg::raw::semi_persistent1::PushInfo"]},{"text":"impl Serialize for UndoLog","synthetic":false,"types":["plat_egg::raw::semi_persistent1::UndoLog"]},{"text":"impl Serialize for PushInfo","synthetic":false,"types":["plat_egg::raw::semi_persistent2::PushInfo"]},{"text":"impl Serialize for UndoLog","synthetic":false,"types":["plat_egg::raw::semi_persistent2::UndoLog"]},{"text":"impl<P: PathCompressT> Serialize for UnionFind<P>","synthetic":false,"types":["plat_egg::raw::unionfind::UnionFind"]},{"text":"impl<const B: bool> Serialize for PathCompress<B>","synthetic":false,"types":["plat_egg::raw::reflect_const::PathCompress"]},{"text":"impl Serialize for StopReason","synthetic":false,"types":["plat_egg::run::StopReason"]},{"text":"impl Serialize for Report","synthetic":false,"types":["plat_egg::run::Report"]},{"text":"impl<IterData> Serialize for Iteration<IterData> where
IterData: Serialize, ","synthetic":false,"types":["plat_egg::run::Iteration"]},{"text":"impl Serialize for Id","synthetic":false,"types":["plat_egg::Id"]}];
if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/plat_egg/all.html b/plat_egg/all.html
index 9b058979..f2145572 100644
--- a/plat_egg/all.html
+++ b/plat_egg/all.html
@@ -4,5 +4,5 @@
List of all items
Structs
Enums
Traits
Macros
Functions
Typedefs
+ List of all items
Structs
Enums
Traits
Macros
Functions
Typedefs