12#ifndef MCRL2_PBES_TRANSFORMATION_STRATEGY_H
13#define MCRL2_PBES_TRANSFORMATION_STRATEGY_H
15#include "mcrl2/utilities/exception.h"
18namespace mcrl2::pbes_system
66 throw mcrl2::
runtime_error(
"unknown transformation strategy " + s);
75 case lazy:
return "0";
76 case optimize:
return "1";
77 case on_the_fly:
return "2";
78 case on_the_fly_with_fixed_points:
return "3";
80 throw mcrl2::runtime_error(
"unknown transformation strategy");
90 strategy = parse_transformation_strategy(s);
94 is.setstate(
std::ios_base::failbit);
102 os << print_transformation_strategy(s);
111 case lazy:
return "Compute all boolean equations which can be reached"
112 " from the initial state, without optimization."
113 " This is is the most data efficient"
114 " option per generated equation.";
115 case optimize:
return "Optimize by immediately substituting the right"
116 " hand sides for already investigated variables"
117 " that are true or false when generating an"
118 " expression. This is as memory efficient as 0.";
119 case on_the_fly:
return "In addition to 1, also substitute variables that"
120 " are true or false into an already generated right"
121 " hand side. This can mean that certain variables"
122 " become unreachable (e.g. X0 in X0 and X1, when X1"
123 " becomes false, assuming X0 does not occur"
124 " elsewhere. It will be maintained which variables"
125 " have become unreachable as these do not have to be"
126 " investigated. Depending on the PBES, this can"
127 " reduce the size of the generated BES substantially"
128 " but requires a larger memory footprint.";
129 case on_the_fly_with_fixed_points:
return "In addition to 2, investigate for generated"
130 " variables whether they occur on a loop, such that"
131 " they can be set to true or false, depending on the"
132 " fixed point symbol. This can increase the time"
133 " needed to generate an equation substantially.";
135 throw mcrl2::runtime_error(
"unknown transformation strategy");
Standard exception class for reporting runtime errors.
std::string description(const transformation_strategy s)
std::istream & operator>>(std::istream &is, transformation_strategy &strategy)
transformation_strategy parse_transformation_strategy(const std::string &s)
transformation_strategy
Strategies for the generation of a BES from a PBES.
@ on_the_fly_with_fixed_points
std::string print_transformation_strategy(const transformation_strategy s)
std::size_t operator()(const std::vector< X > &v) const