12#ifndef MCRL2_PBES_PBES_REWRITER_TYPE_H
13#define MCRL2_PBES_PBES_REWRITER_TYPE_H
15#include "mcrl2/utilities/exception.h"
18namespace mcrl2::pbes_system
42 if (type ==
"simplify")
46 if (type ==
"quantifier-all")
50 if (type ==
"quantifier-finite")
54 if (type ==
"quantifier-inside")
58 if (type ==
"quantifier-one-point")
78 if (type ==
"pre-srf")
82 if (type ==
"prune-dataspec")
86 if (type ==
"bqnf-quantifier")
90 if (type ==
"remove-cex-variables")
94 throw mcrl2::
runtime_error(
"unknown pbes rewriter option " + type);
102 case pbes_rewriter_type::simplify:
104 case pbes_rewriter_type::quantifier_all:
105 return "quantifier-all";
106 case pbes_rewriter_type::quantifier_finite:
107 return "quantifier-finite";
108 case pbes_rewriter_type::quantifier_inside:
109 return "quantifier-inside";
110 case pbes_rewriter_type::quantifier_one_point:
111 return "quantifier-one-point";
112 case pbes_rewriter_type::prover:
114 case pbes_rewriter_type::pfnf:
116 case pbes_rewriter_type::ppg:
118 case pbes_rewriter_type::bqnf_quantifier:
119 return "bqnf-quantifier";
120 case pbes_rewriter_type::srf:
122 case pbes_rewriter_type::pre_srf:
124 case pbes_rewriter_type::remove_cex_variables:
125 return "remove-cex-variables";
126 case pbes_rewriter_type::prune_dataspec:
127 return "prune-dataspec";
130 return "unknown pbes rewriter";
138 case pbes_rewriter_type::simplify:
139 return "for simplification";
140 case pbes_rewriter_type::quantifier_all:
141 return "for eliminating all quantifiers";
142 case pbes_rewriter_type::quantifier_finite:
143 return "for eliminating finite quantifier variables";
144 case pbes_rewriter_type::quantifier_inside:
145 return "for pushing quantifiers inside";
146 case pbes_rewriter_type::quantifier_one_point:
147 return "for one point rule quantifier elimination";
148 case pbes_rewriter_type::prover:
149 return "for rewriting using a prover";
150 case pbes_rewriter_type::pfnf:
151 return "for rewriting into PFNF normal form";
152 case pbes_rewriter_type::ppg:
153 return "for rewriting into Parameterised Parity Game form";
154 case pbes_rewriter_type::srf:
155 return "for rewriting into SRF normal form";
156 case pbes_rewriter_type::pre_srf:
157 return "for rewriting into pre-SRF normal form";
158 case pbes_rewriter_type::prune_dataspec:
159 return "for removing unused data equations and mappings";
160 case pbes_rewriter_type::bqnf_quantifier:
161 return "for rewriting quantifiers over conjuncts to conjuncts of quantifiers (experimental)";
162 case pbes_rewriter_type::remove_cex_variables:
163 return "for removing counterexample variables from the right-hand side of each equation, i.e., obtaining the core of a pbes";
166 throw mcrl2::runtime_error(
"unknown pbes rewriter");
179 t = parse_pbes_rewriter_type(s);
183 is.setstate(
std::ios_base::failbit);
190 os << print_pbes_rewriter_type(t);
Standard exception class for reporting runtime errors.
pbes_rewriter_type parse_pbes_rewriter_type(const std::string &type)
Parses a pbes rewriter type.
pbes_rewriter_type
An enumerated type for the available pbes rewriters.
std::istream & operator>>(std::istream &is, pbes_rewriter_type &t)
Stream operator for rewriter type.
std::string print_pbes_rewriter_type(const pbes_rewriter_type type)
Prints a pbes rewriter type.
std::string description(const pbes_rewriter_type type)
Returns a description of a pbes rewriter.
std::size_t operator()(const std::vector< X > &v) const