26 carl::VariablePool::getInstance().clear();
28 std::string programFile = STORM_TEST_RESOURCES_DIR
"/pdtmc/brp16_2.pm";
29 std::string formulaAsString =
"P=? [F s=5 ]";
34 std::vector<std::shared_ptr<storm::logic::Formula const>> formulas =
36 ASSERT_TRUE(formulas.size() == 1);
39 std::shared_ptr<storm::models::sparse::Dtmc<storm::RationalFunction>> dtmc =
43 EXPECT_FALSE(dtmc->hasRewardModel());
46 std::map<storm::RationalFunctionVariable, storm::RationalFunctionCoefficient> valuation;
48 ASSERT_NE(pL, carl::Variable::NO_VARIABLE);
50 ASSERT_NE(pK, carl::Variable::NO_VARIABLE);
51 valuation.insert(std::make_pair(pL, storm::utility::convertNumber<storm::RationalFunctionCoefficient>(0.8)));
52 valuation.insert(std::make_pair(pK, storm::utility::convertNumber<storm::RationalFunctionCoefficient>(0.9)));
56 ASSERT_EQ(dtmc->getTransitionMatrix().getRowGroupIndices(), instantiated.
getTransitionMatrix().getRowGroupIndices());
57 for (std::size_t rowGroup = 0; rowGroup < dtmc->getTransitionMatrix().getRowGroupCount(); ++rowGroup) {
58 for (std::size_t row = dtmc->getTransitionMatrix().getRowGroupIndices()[rowGroup];
59 row < dtmc->getTransitionMatrix().getRowGroupIndices()[rowGroup + 1]; ++row) {
61 for (
auto const& paramEntry : dtmc->getTransitionMatrix().getRow(row)) {
62 EXPECT_EQ(paramEntry.getColumn(), instantiatedEntry->getColumn());
63 double evaluatedValue = carl::toDouble(paramEntry.getValue().evaluate(valuation));
64 EXPECT_EQ(evaluatedValue, instantiatedEntry->getValue());
74 std::unique_ptr<storm::modelchecker::CheckResult> chkResult = modelchecker.
check(*formulas[0]);
77 storm::settings::getModule<storm::settings::modules::GeneralSettings>().getPrecision());
81 std::map<storm::RationalFunctionVariable, storm::RationalFunctionCoefficient> valuation;
83 ASSERT_NE(pL, carl::Variable::NO_VARIABLE);
85 ASSERT_NE(pK, carl::Variable::NO_VARIABLE);
86 valuation.insert(std::make_pair(pL, storm::utility::one<storm::RationalFunctionCoefficient>()));
87 valuation.insert(std::make_pair(pK, storm::utility::one<storm::RationalFunctionCoefficient>()));
91 ASSERT_EQ(dtmc->getTransitionMatrix().getRowGroupIndices(), instantiated.
getTransitionMatrix().getRowGroupIndices());
92 for (std::size_t rowGroup = 0; rowGroup < dtmc->getTransitionMatrix().getRowGroupCount(); ++rowGroup) {
93 for (std::size_t row = dtmc->getTransitionMatrix().getRowGroupIndices()[rowGroup];
94 row < dtmc->getTransitionMatrix().getRowGroupIndices()[rowGroup + 1]; ++row) {
96 for (
auto const& paramEntry : dtmc->getTransitionMatrix().getRow(row)) {
97 EXPECT_EQ(paramEntry.getColumn(), instantiatedEntry->getColumn());
98 double evaluatedValue = carl::toDouble(paramEntry.getValue().evaluate(valuation));
99 EXPECT_EQ(evaluatedValue, instantiatedEntry->getValue());
109 std::unique_ptr<storm::modelchecker::CheckResult> chkResult = modelchecker.
check(*formulas[0]);
115 std::map<storm::RationalFunctionVariable, storm::RationalFunctionCoefficient> valuation;
117 ASSERT_NE(pL, carl::Variable::NO_VARIABLE);
119 ASSERT_NE(pK, carl::Variable::NO_VARIABLE);
120 valuation.insert(std::make_pair(pL, storm::utility::one<storm::RationalFunctionCoefficient>()));
121 valuation.insert(std::make_pair(pK, storm::utility::convertNumber<storm::RationalFunctionCoefficient>(0.9)));
125 ASSERT_EQ(dtmc->getTransitionMatrix().getRowGroupIndices(), instantiated.
getTransitionMatrix().getRowGroupIndices());
126 for (std::size_t rowGroup = 0; rowGroup < dtmc->getTransitionMatrix().getRowGroupCount(); ++rowGroup) {
127 for (std::size_t row = dtmc->getTransitionMatrix().getRowGroupIndices()[rowGroup];
128 row < dtmc->getTransitionMatrix().getRowGroupIndices()[rowGroup + 1]; ++row) {
130 for (
auto const& paramEntry : dtmc->getTransitionMatrix().getRow(row)) {
131 EXPECT_EQ(paramEntry.getColumn(), instantiatedEntry->getColumn());
132 double evaluatedValue = carl::toDouble(paramEntry.getValue().evaluate(valuation));
133 EXPECT_EQ(evaluatedValue, instantiatedEntry->getValue());
143 std::unique_ptr<storm::modelchecker::CheckResult> chkResult = modelchecker.
check(*formulas[0]);
146 storm::settings::getModule<storm::settings::modules::GeneralSettings>().getPrecision());
151 carl::VariablePool::getInstance().clear();
153 std::string programFile = STORM_TEST_RESOURCES_DIR
"/pdtmc/brp16_2.pm";
154 std::string formulaAsString =
"R=? [F ((s=5) | (s=0&srep=3)) ]";
159 std::vector<std::shared_ptr<storm::logic::Formula const>> formulas =
161 ASSERT_TRUE(formulas.size() == 1);
164 std::shared_ptr<storm::models::sparse::Dtmc<storm::RationalFunction>> dtmc =
170 std::map<storm::RationalFunctionVariable, storm::RationalFunctionCoefficient> valuation;
172 ASSERT_NE(pL, carl::Variable::NO_VARIABLE);
174 ASSERT_NE(pK, carl::Variable::NO_VARIABLE);
176 ASSERT_NE(pK, carl::Variable::NO_VARIABLE);
178 ASSERT_NE(pK, carl::Variable::NO_VARIABLE);
179 valuation.insert(std::make_pair(pL, storm::utility::convertNumber<storm::RationalFunctionCoefficient>(0.9)));
180 valuation.insert(std::make_pair(pK, storm::utility::convertNumber<storm::RationalFunctionCoefficient>(0.3)));
181 valuation.insert(std::make_pair(TOMsg, storm::utility::convertNumber<storm::RationalFunctionCoefficient>(0.3)));
182 valuation.insert(std::make_pair(TOAck, storm::utility::convertNumber<storm::RationalFunctionCoefficient>(0.5)));
186 ASSERT_EQ(dtmc->getTransitionMatrix().getRowGroupIndices(), instantiated.
getTransitionMatrix().getRowGroupIndices());
187 for (std::size_t rowGroup = 0; rowGroup < dtmc->getTransitionMatrix().getRowGroupCount(); ++rowGroup) {
188 for (std::size_t row = dtmc->getTransitionMatrix().getRowGroupIndices()[rowGroup];
189 row < dtmc->getTransitionMatrix().getRowGroupIndices()[rowGroup + 1]; ++row) {
191 for (
auto const& paramEntry : dtmc->getTransitionMatrix().getRow(row)) {
192 EXPECT_EQ(paramEntry.getColumn(), instantiatedEntry->getColumn());
193 double evaluatedValue = carl::toDouble(paramEntry.getValue().evaluate(valuation));
194 EXPECT_EQ(evaluatedValue, instantiatedEntry->getValue());
204 ASSERT_TRUE(dtmc->getUniqueRewardModel().hasStateActionRewards());
205 std::size_t stateActionEntries = dtmc->getUniqueRewardModel().getStateActionRewardVector().size();
206 ASSERT_EQ(stateActionEntries, instantiated.
getUniqueRewardModel().getStateActionRewardVector().size());
207 for (std::size_t i = 0; i < stateActionEntries; ++i) {
208 double evaluatedValue = carl::toDouble(dtmc->getUniqueRewardModel().getStateActionRewardVector()[i].evaluate(valuation));
215 std::unique_ptr<storm::modelchecker::CheckResult> chkResult = modelchecker.
check(*formulas[0]);
218 storm::settings::getModule<storm::settings::modules::GeneralSettings>().getPrecision());
223 carl::VariablePool::getInstance().clear();
225 std::string programFile = STORM_TEST_RESOURCES_DIR
"/pmdp/coin2_2.nm";
226 std::string formulaAsString =
"Pmin=? [F \"finished\"&\"all_coins_equal_1\" ]";
231 std::vector<std::shared_ptr<storm::logic::Formula const>> formulas =
233 ASSERT_TRUE(formulas.size() == 1);
236 std::shared_ptr<storm::models::sparse::Mdp<storm::RationalFunction>> mdp =
241 std::map<storm::RationalFunctionVariable, storm::RationalFunctionCoefficient> valuation;
243 ASSERT_NE(p1, carl::Variable::NO_VARIABLE);
245 ASSERT_NE(p2, carl::Variable::NO_VARIABLE);
246 valuation.insert(std::make_pair(p1, storm::utility::convertNumber<storm::RationalFunctionCoefficient>(0.51)));
247 valuation.insert(std::make_pair(p2, storm::utility::convertNumber<storm::RationalFunctionCoefficient>(0.49)));
250 ASSERT_EQ(mdp->getTransitionMatrix().getRowGroupIndices(), instantiated.
getTransitionMatrix().getRowGroupIndices());
251 for (std::size_t rowGroup = 0; rowGroup < mdp->getTransitionMatrix().getRowGroupCount(); ++rowGroup) {
252 for (std::size_t row = mdp->getTransitionMatrix().getRowGroupIndices()[rowGroup]; row < mdp->getTransitionMatrix().getRowGroupIndices()[rowGroup + 1];
255 for (
auto const& paramEntry : mdp->getTransitionMatrix().getRow(row)) {
256 EXPECT_EQ(paramEntry.getColumn(), instantiatedEntry->getColumn());
257 double evaluatedValue = carl::toDouble(paramEntry.getValue().evaluate(valuation));
258 EXPECT_EQ(evaluatedValue, instantiatedEntry->getValue());
268 std::unique_ptr<storm::modelchecker::CheckResult> chkResult = modelchecker.
check(*formulas[0]);
271 storm::settings::getModule<storm::settings::modules::GeneralSettings>().getPrecision());