12#ifndef MCRL2_PBES_PBES_REWRITER_TOOL_H
13#define MCRL2_PBES_PBES_REWRITER_TOOL_H
16#include "mcrl2/utilities/command_line_interface.h"
17#include "mcrl2/pbes/pbes_rewriter_type.h"
23template <
typename Tool>
35 std::set<pbes_system::pbes_rewriter_type> result;
36 result.insert(pbes_system::pbes_rewriter_type::simplify);
37 result.insert(pbes_system::pbes_rewriter_type::quantifier_all);
38 result.insert(pbes_system::pbes_rewriter_type::quantifier_finite);
39 result.insert(pbes_system::pbes_rewriter_type::quantifier_inside);
40 result.insert(pbes_system::pbes_rewriter_type::quantifier_one_point);
41 result.insert(pbes_system::pbes_rewriter_type::pfnf);
42 result.insert(pbes_system::pbes_rewriter_type::ppg);
43 result.insert(pbes_system::pbes_rewriter_type::srf);
44 result.insert(pbes_system::pbes_rewriter_type::pre_srf);
45 result.insert(pbes_system::pbes_rewriter_type::prune_dataspec);
46 result.insert(pbes_system::pbes_rewriter_type::bqnf_quantifier);
47 result.insert(pbes_system::pbes_rewriter_type::remove_cex_variables);
64 Tool::add_options(desc);
66 utilities::interface_description::enum_argument<
pbes_system::pbes_rewriter_type> arg(utilities::make_enum_argument<pbes_system::pbes_rewriter_type>(
"NAME"));
69 std::set<pbes_system::pbes_rewriter_type> types = available_rewriters();
70 for (
auto type : types)
72 arg.add_value(type, type==default_rewriter());
78 "use pbes rewrite strategy NAME:",
87 Tool::parse_options(parser);
100 const std::string& author,
101 const std::string& what_is,
102 const std::string& tool_description,
103 std::string known_issues =
""