16const std::string BisimulationSettings::typeOptionName =
"type";
17const std::string BisimulationSettings::representativeOptionName =
"repr";
18const std::string BisimulationSettings::originalVariablesOptionName =
"origvars";
19const std::string BisimulationSettings::quotientFormatOptionName =
"quot";
20const std::string BisimulationSettings::signatureModeOptionName =
"sigmode";
21const std::string BisimulationSettings::reuseOptionName =
"reuse";
22const std::string BisimulationSettings::initialPartitionOptionName =
"init";
23const std::string BisimulationSettings::refinementModeOptionName =
"refine";
24const std::string BisimulationSettings::exactArithmeticDdOptionName =
"ddexact";
25const std::string BisimulationSettings::toleranceOptionName =
"tolerance";
26const std::string BisimulationSettings::actionSensitiveOptionName =
"action-sensitive";
29 std::vector<std::string> types = {
"strong",
"weak"};
34 .setDefaultValueString(
"strong")
38 std::vector<std::string> quotTypes = {
"sparse",
"dd"};
40 "Sets the format in which the quotient is extracted (only applies to DD-based bisimulation).")
44 .setDefaultValueString(
"dd")
49 "Sets whether to use representatives in the quotient rather than block numbers.")
53 "Sets whether to use the original variables in the quotient rather than the block variables.")
61 std::vector<std::string> signatureModes = {
"eager",
"lazy"};
66 .setDefaultValueString(
"eager")
70 std::vector<std::string> reuseModes = {
"none",
"blocks"};
75 .setDefaultValueString(
"blocks")
79 std::vector<std::string> initialPartitionModes = {
"regular",
"finer"};
84 .setDefaultValueString(
"finer")
88 std::vector<std::string> refinementModes = {
"full",
"changed"};
93 .setDefaultValueString(
"full")
98 "Sets the tolerance to use for bisimulation minimization (only for sparse bisimulation).")
101 .setDefaultValueDouble(1e-9)
108 "Sets whether choices are only lumped together if they belong to the same state-local action index (only for "
109 "sparse bisimulation).")
115 if (this->
getOption(typeOptionName).getArgumentByName(
"name").getValueAsString() ==
"strong") {
122 if (this->
getOption(typeOptionName).getArgumentByName(
"name").getValueAsString() ==
"weak") {
135 if (quotientFormatAsString ==
"sparse") {
138 STORM_LOG_ASSERT(quotientFormatAsString ==
"dd",
"Invalid bisimulation quotient format: " << quotientFormatAsString <<
".");
156 if (modeAsString ==
"eager") {
158 }
else if (modeAsString ==
"lazy") {
166 if (reuseModeAsString ==
"none") {
168 }
else if (reuseModeAsString ==
"blocks") {
176 if (initialPartitionModeAsString ==
"regular") {
178 }
else if (initialPartitionModeAsString ==
"finer") {
186 if (refinementModeAsString ==
"full") {
188 }
else if (refinementModeAsString ==
"changed") {
209 "Bisimulation minimization is not selected, so setting options for bisimulation has no effect.");
virtual std::string getValueAsString() const =0
Retrieves the value of this argument as a string.
virtual double getValueAsDouble() const =0
Retrieves the value of this argument as a double.
virtual bool wasSetFromDefaultValue() const =0
static ArgumentBuilder createDoubleArgument(std::string const &name, std::string const &description)
Creates a double 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< double > > createDoubleGreaterEqualValidator(double lowerBound)
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.
virtual bool check() const override
Checks whether the settings are consistent.
storm::dd::bisimulation::ReuseMode getReuseMode() const
Retrieves the selected reuse mode.
bool isActionSensitiveSet() const
Retrieves whether action-sensitive bisimulation is to be used, i.e., choices are only lumped together...
storm::dd::bisimulation::QuotientFormat getQuotientFormat() const
Retrieves the format in which the quotient is to be extracted.
storm::dd::bisimulation::SignatureMode getSignatureMode() const
Retrieves the mode to compute signatures.
double getTolerance() const
Retrieves the tolerance to use for bisimulation minimization.
bool isUseOriginalVariablesSet() const
Retrieves whether the extracted quotient model is supposed to use the same variables as the original ...
BisimulationSettings()
Creates a new set of bisimulation settings.
storm::dd::bisimulation::InitialPartitionMode getInitialPartitionMode() const
Retrieves the initial partition mode.
bool isQuotientFormatSetFromDefaultValue() const
Retrieves whether the format in which the quotient is to be extracted has been set from its default v...
bool isUseRepresentativesSet() const
Retrieves whether representatives for blocks are to be used instead of the block numbers.
static const std::string moduleName
bool useExactArithmeticInDdBisimulation() const
Retrieves whether exact arithmetic is to be used in symbolic bisimulation minimization.
bool isStrongBisimulationSet() const
Retrieves whether strong bisimulation is to be used.
storm::dd::bisimulation::RefinementMode getRefinementMode() const
Retrieves the refinement mode to use.
bool isWeakBisimulationSet() const
Retrieves whether weak bisimulation is to be used.
bool isToleranceSet() const
Retrieves whether the tolerance to use for (approximate) bisimulation minimization has been set expli...
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_ASSERT(cond, message)
#define STORM_LOG_WARN_COND(cond, message)
SettingsType const & getModule()
Get module.