pub fn explain_existance(&mut self, expr: &RecExpr<L>) -> Explanation<L> {
        if let Some(explain) = &mut self.explain {
            explain.explain_existance(expr, &self.memo, &mut self.unionfind)
        } else {
            panic!("Use runner.with_explanations_enabled() or egraph.with_explanations_enabled() before running to get explanations.")
        }
    }
/// When explanations are enabled, this function
/// produces an [`Explanation`] describing how the given expression came
/// to be in the egraph.
///
/// The [`Explanation`] begins with some expression that was added directly
/// into the egraph and ends with the given `expr`.
/// Note that this function can be called again to explain any intermediate terms
/// used in the output [`Explanation`].
When explanations are enabled, this function
produces an [`Explanation`] describing how the given expression came
to be in the egraph.

The [`Explanation`] begins with some expression that was added directly
into the egraph and ends with the given `expr`.
Note that this function can be called again to explain any intermediate terms
used in the output [`Explanation`].
When explanations are enabled this function produces an [ ` Explanation ` ] describing how the given expression came to be in the egraph . The [ ` Explanation ` ] begins with some expression that was added directly into the egraph and ends with the given ` expr ` . Note that this function can be called again to explain any intermediate terms used in the output [ ` Explanation ` ] .
pub fn explain_existance(&mut self, expr: &RecExpr<L>) -> Explanation<L> {
        if let Some(explain) = &mut self.explain {
            explain.explain_existance(expr, &self.memo, &mut self.unionfind)
        } else {
            panic!("Use runner.with_explanations_enabled() or egraph.with_explanations_enabled() before running to get explanations.")
        }
    }
pub fn explain_existance ( & mut self , expr : & RecExpr < L > ) -> Explanation < L > { if let Some ( explain ) = & mut self . explain { explain . explain_existance ( expr , & self . memo , & mut self . unionfind ) } else { panic ! ( " " ) } }
When explanations are enabled, this function
produces an [`Explanation`] describing how the given expression came
to be in the egraph.
When explanations are enabled this function produces an [ ` Explanation ` ] describing how the given expression came to be in the egraph .
&mut self
expr
&RecExpr<L>
&mut self
expr
&RecExpr<L>