#pragma once
#include "util/params.h"
#include "tactic/dependent_expr_state_tactic.h"
#include "ast/simplifiers/euf_completion.h"
#include "ast/simplifiers/dependent_expr_state.h"
#include "tactic/tactic.h"
class ast_manager;
class tactic;
tactic * mk_euf_completion_tactic(ast_manager & m, params_ref const & p = params_ref());
dependent_expr_simplifier* mk_euf_completion_simplifier(ast_manager& m, dependent_expr_state& s, params_ref const& p = params_ref());
Z3_ADD_TACTIC(euf_completion, "euf-completion", "simplify using equalities.", mk_euf_completion_tactic(m, p));
Z3_ADD_SIMPLIFIER(euf_completion, "euf-completion", "simplify modulo congruence closure.", mk_euf_completion_simplifier(m, s, p));