#pragma once
#include "util/params.h"
#include "tactic/tactic.h"
#include "tactic/dependent_expr_state_tactic.h"
#include "ast/simplifiers/fold_unfold.h"
#include "ast/simplifiers/dependent_expr_state.h"
inline tactic *mk_fold_unfold_tactic(ast_manager &m, params_ref const &p = params_ref()) {
return alloc(dependent_expr_state_tactic, m, p,
[](auto &m, auto &p, auto &s) -> dependent_expr_simplifier * { return alloc(euf::fold_unfold, m, s); });
}
Z3_ADD_TACTIC(fold_unfold, "fold-unfold", "solve for variables.", mk_fold_unfold_tactic(m, p));
Z3_ADD_SIMPLIFIER(fold_unfold, "fold-unfold", "solve for variables.", alloc(euf::fold_unfold, m, s));