16const std::string TransformationSettings::chainEliminationOptionName =
"eliminate-chains";
17const std::string TransformationSettings::labelBehaviorOptionName =
"ec-label-behavior";
18const std::string TransformationSettings::toNondetOptionName =
"to-nondet";
19const std::string TransformationSettings::toDiscreteTimeOptionName =
"to-discrete";
20const std::string TransformationSettings::mergeEquivalentStatesOptionName =
"merge-equivalent-states";
21const std::string TransformationSettings::permuteModelOptionName =
"permute";
25 "If set, chains of non-Markovian states are eliminated if the resulting model is a Markov Automaton.")
28 std::vector<std::string> labelBehavior;
29 labelBehavior.push_back(
"keep");
30 labelBehavior.push_back(
"merge");
31 labelBehavior.push_back(
"delete");
34 "Sets the behavior of labels for all non-Markovian states. Some options may cause wrong results.")
38 "The behavior how the transformer handles labels of non-Markovian states. 'keep' does not eliminate states with different labels, "
39 "'merge' builds the union of labels of all eliminated states, 'delete' only keeps the labels of the last state.")
40 .setDefaultValueString(
"keep")
45 "If set, DTMCs/CTMCs are converted to MDPs/MAs (without actual nondeterminism) before model checking.")
49 "If set, CTMCs/MAs are converted to DTMCs/MDPs (which might or might not preserve the provided properties).")
54 "If set, merges states that are equivalent w.r.t. the considered property into a single state before model checking.")
66 .setDefaultValueUnsignedInteger(0)
78 if (labelBehaviorAsString ==
"keep") {
80 }
else if (labelBehaviorAsString ==
"merge") {
82 }
else if (labelBehaviorAsString ==
"delete") {
86 "Illegal value '" << labelBehaviorAsString <<
"' set as label behavior for the elimination.");
102 if (this->
getOption(permuteModelOptionName).getHasOptionBeenSet()) {
109 if (this->
getOption(permuteModelOptionName).getHasOptionBeenSet()) {
110 if (
auto const& arg = this->
getOption(permuteModelOptionName).getArgumentByName(
"seed"); arg.getHasBeenSet()) {
111 return arg.getValueAsUnsignedInteger();
120 "Label preservation can only be chosen if chain elimination is applied.");
124 "Random seed is given for permutation order, but the order is not random. Seed will be ignored.");
virtual std::string getValueAsString() const =0
Retrieves the value of this argument as a string.
static ArgumentBuilder createUnsignedIntegerArgument(std::string const &name, std::string const &description)
Creates an unsigned integer argument with the given parameters.
static ArgumentBuilder createStringArgument(std::string const &name, std::string const &description)
Creates a string argument with the given parameters.
static std::shared_ptr< ArgumentValidator< std::string > > createMultipleChoiceValidator(std::vector< std::string > const &choices)
This class provides the interface to create an option...
ArgumentBase const & getArgumentByName(std::string const &argumentName) const
Returns a reference to the argument with the specified long name.
bool getHasOptionBeenSet() const
Retrieves whether the option has been set.
ModuleSettings(std::string const &moduleName)
Constructs a new settings object.
void addOption(std::shared_ptr< Option > const &option)
Adds and registers the given option.
Option & getOption(std::string const &longName)
Retrieves the option with the given long name.
#define STORM_LOG_THROW_UNCONDITIONALLY(exception, message)
#define STORM_LOG_WARN_COND(cond, message)
#define STORM_LOG_THROW(cond, exception, message)
std::string orderKindtoString(OrderKind order)
Converts the given order to a string.
std::vector< std::string > orderKinds()
Returns a list of possible order kinds.
OrderKind orderKindFromString(std::string const &order)
Gets the order from the given string.