You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
4.2 KiB
116 lines
4.2 KiB
#ifndef STORM_SETTINGS_MODULES_REGIONSETTINGS_H_
|
|
#define STORM_SETTINGS_MODULES_REGIONSETTINGS_H_
|
|
|
|
#include "src/settings/modules/ModuleSettings.h"
|
|
|
|
namespace storm {
|
|
namespace settings {
|
|
namespace modules {
|
|
|
|
/*!
|
|
* This class represents the settings for parametric region model checking.
|
|
*/
|
|
class RegionSettings : public ModuleSettings {
|
|
public:
|
|
|
|
enum class ApproxMode {OFF, TESTFIRST, GUESSALLSAT, GUESSALLVIOLATED };
|
|
enum class SampleMode {OFF, INSTANTIATE, EVALUATE };
|
|
enum class SmtMode {OFF, FUNCTION, MODEL };
|
|
|
|
/*!
|
|
* Creates a new set of parametric region model checking settings that is managed by the given manager.
|
|
*
|
|
* @param settingsManager The responsible manager.
|
|
*/
|
|
RegionSettings();
|
|
|
|
/*!
|
|
* Retrieves whether the regions are specified in a file.
|
|
* @return True iff the regions are specified in a file.
|
|
*/
|
|
bool isRegionFileSet() const;
|
|
|
|
/*!
|
|
* Returns the file in which the regions are specified.
|
|
*/
|
|
std::string getRegionFilePath() const;
|
|
|
|
/*!
|
|
* Retrieves whether the regions are specified as cmd line parameter
|
|
* @return True iff the regions are specified as cmd line parameter
|
|
*/
|
|
bool isRegionsSet() const;
|
|
|
|
/*!
|
|
* Returns the regions that are specified as cmd line parameter
|
|
*/
|
|
std::string getRegionsFromCmdLine() const;
|
|
|
|
/*!
|
|
* Returns the mode in which approximation should be used
|
|
*/
|
|
ApproxMode getApproxMode() const;
|
|
|
|
/*!
|
|
* Returns whether to use approximation
|
|
*/
|
|
bool doApprox() const;
|
|
|
|
/*!
|
|
* Returns the mode in which Sampling should be used
|
|
*/
|
|
SampleMode getSampleMode() const;
|
|
|
|
/*!
|
|
* Returns whether to use Sampling
|
|
*/
|
|
bool doSample() const;
|
|
|
|
/*!
|
|
* Returns the mode in which SMT solving should be used
|
|
*/
|
|
SmtMode getSmtMode() const;
|
|
|
|
/*!
|
|
* Returns whether to use SMT Solving
|
|
*/
|
|
bool doSmt() const;
|
|
|
|
/*!
|
|
* Sets the modes accordingly. Great for debugging purposes.
|
|
* Use resetModes() to switch back to the modes specified by the settings
|
|
*/
|
|
void modifyModes(ApproxMode const& approxMode, SampleMode const& sampleMode, SmtMode const& smtMode);
|
|
|
|
/*!
|
|
* Resets the modes to the ones specified by the settings.
|
|
* This is useful if the modes have been altered by setModes(...)
|
|
*/
|
|
void resetModes();
|
|
|
|
bool doRefinement() const;
|
|
double getRefinementThreshold() const;
|
|
|
|
bool check() const override;
|
|
|
|
const static std::string moduleName;
|
|
|
|
private:
|
|
const static std::string regionfileOptionName;
|
|
const static std::string regionsOptionName;
|
|
const static std::string approxmodeOptionName;
|
|
const static std::string samplemodeOptionName;
|
|
const static std::string smtmodeOptionName;
|
|
const static std::string refinementOptionName;
|
|
|
|
bool modesModified;
|
|
ApproxMode approxMode;
|
|
SampleMode sampleMode;
|
|
SmtMode smtMode;
|
|
};
|
|
|
|
} // namespace modules
|
|
} // namespace settings
|
|
} // namespace storm
|
|
|
|
#endif /* STORM_SETTINGS_MODULES_REGIONSETTINGS_H_ */
|