/*++ Copyright (c) 2006 Microsoft Corporation Module Name: spc_der.h Abstract: Author: Leonardo de Moura (leonardo) 2008-02-17. Revision History: --*/ #ifndef _SPC_DER_H_ #define _SPC_DER_H_ #include"spc_clause.h" namespace spc { /** \brief Functor for applying destructive equality resolution. This is similar to the Functor in der.h, but this one applies the simplification on clauses instead of ast's. x != s or R ==> sigma(R) where sigma = mgu(x, s) */ class der { ast_manager & m_manager; substitution m_subst; unsigned_vector m_to_keep; family_id m_spc_fid; void apply(clause * cls, unsigned j, expr * lhs, expr * rhs); bool apply(clause * cls); public: der(ast_manager & m); void operator()(clause * cls); }; }; #endif /* _SPC_DER_H_ */