STAMINA/STORM 0.1
Infinite state-space truncator which generates a probability within a window
StaminaModelChecker.h
1#ifndef STAMINA_CORE_STAMINAMODELCHECKER_H
2#define STAMINA_CORE_STAMINAMODELCHECKER_H
3
4#include "Options.h"
5#include "builder/StaminaModelBuilder.h"
6#include "builder/StaminaIterativeModelBuilder.h"
7// #include "builder/StaminaPriorityModelBuilder.h"
8#include "builder/StaminaReExploringModelBuilder.h"
9
10#include <sstream>
11#include <string>
12#include <unordered_set>
13
14#include "__storm_needed_for_checker.h"
15
16namespace stamina {
17 namespace core {
18 using namespace stamina::builder;
19 const uint32_t absorbingStateIndex = 0;
21 public:
29 std::shared_ptr<storm::prism::Program> modulesFile = nullptr
30 , std::shared_ptr<std::vector<storm::jani::Property>> propertiesVector = nullptr
31 );
41 void initialize(
42 std::shared_ptr<storm::prism::Program> modulesFile = nullptr
43 , std::shared_ptr<std::vector<storm::jani::Property>> propertiesVector = nullptr
44 );
52 std::unique_ptr<storm::modelchecker::CheckResult> modelCheckProperty(
53 storm::jani::Property propMin
54 , storm::jani::Property propMax
55 , storm::prism::Program const& modulesFile
56 );
57 private:
61 class Result {
62 public:
66 Result()
67 : result(0.0)
68 , explanation("")
69 {
70 // Intentionally left empty
71 }
75 operator std::string() const {
76 std::stringstream str;
77 str << result << " (" << explanation << ")";
78 return str.str();
79 }
83 friend std::ostream & operator<<(std::ostream & stream, StaminaModelChecker::Result const & r) {
84 stream << r.result << " (" << r.explanation << ")";
85 return stream;
86 }
87
88 double result;
89 std::string explanation;
90
91 };
97 bool terminateModelCheck();
101 void writePerimeterStates(int numRefineIteration);
105 void printTransitionActions(std::string const & filename);
111 void writeToOutput(std::string filename);
115 void modifyState(bool isMin);
116 /* Data Members */
117 std::shared_ptr<StaminaModelChecker::Result> min_results;
118 std::shared_ptr<StaminaModelChecker::Result> max_results;
119 std::shared_ptr<StaminaModelBuilder<double>> builder;
120 std::shared_ptr<storm::prism::Program> modulesFile;
121 std::shared_ptr<std::vector<storm::jani::Property>> propertiesVector;
122 storm::expressions::ExpressionManager expressionManager;
123 storm::models::sparse::StateLabeling * labeling;
124 std::string preUntilLabel;
125 };
126 } // namespace core
127} // namespace stamina
128
129#endif // STAMINA_CORE_STAMINAMODELCHECKER_H
Definition: StaminaModelChecker.h:20
StaminaModelChecker(std::shared_ptr< storm::prism::Program > modulesFile=nullptr, std::shared_ptr< std::vector< storm::jani::Property > > propertiesVector=nullptr)
Definition: StaminaModelChecker.cpp:31
void initialize(std::shared_ptr< storm::prism::Program > modulesFile=nullptr, std::shared_ptr< std::vector< storm::jani::Property > > propertiesVector=nullptr)
Definition: StaminaModelChecker.cpp:83
~StaminaModelChecker()
Definition: StaminaModelChecker.cpp:59
std::unique_ptr< storm::modelchecker::CheckResult > modelCheckProperty(storm::jani::Property propMin, storm::jani::Property propMax, storm::prism::Program const &modulesFile)
Definition: StaminaModelChecker.cpp:99
Definition: ExplicitTruncatedModelBuilder.cpp:40