28 carl::VariablePool::getInstance().clear();
30 std::string programFile = STORM_TEST_RESOURCES_DIR
"/pdtmc/brp16_2.pm";
31 std::string formulaAsString =
"P=? [F s=5 ]";
36 std::vector<std::shared_ptr<storm::logic::Formula const>> formulas =
38 ASSERT_TRUE(formulas.size() == 1);
41 std::shared_ptr<storm::models::sparse::Dtmc<storm::RationalFunction>> dtmc =
45 EXPECT_FALSE(dtmc->hasRewardModel());
48 std::map<storm::RationalFunctionVariable, storm::RationalFunctionCoefficient> valuation;
50 ASSERT_NE(pL, carl::Variable::NO_VARIABLE);
52 ASSERT_NE(pK, carl::Variable::NO_VARIABLE);
53 valuation.insert(std::make_pair(pL, storm::utility::convertNumber<storm::RationalFunctionCoefficient>(0.8)));
54 valuation.insert(std::make_pair(pK, storm::utility::convertNumber<storm::RationalFunctionCoefficient>(0.9)));
58 ASSERT_EQ(dtmc->getTransitionMatrix().getRowGroupIndices(), instantiated.
getTransitionMatrix().getRowGroupIndices());
59 for (std::size_t rowGroup = 0; rowGroup < dtmc->getTransitionMatrix().getRowGroupCount(); ++rowGroup) {
60 for (std::size_t row = dtmc->getTransitionMatrix().getRowGroupIndices()[rowGroup];
61 row < dtmc->getTransitionMatrix().getRowGroupIndices()[rowGroup + 1]; ++row) {
63 for (
auto const& paramEntry : dtmc->getTransitionMatrix().getRow(row)) {
64 EXPECT_EQ(paramEntry.getColumn(), instantiatedEntry->getColumn());
65 double evaluatedValue = carl::toDouble(paramEntry.getValue().evaluate(valuation));
66 EXPECT_EQ(evaluatedValue, instantiatedEntry->getValue());
76 std::unique_ptr<storm::modelchecker::CheckResult> chkResult = modelchecker.
check(*formulas[0]);
79 storm::settings::getModule<storm::settings::modules::GeneralSettings>().getPrecision());
83 std::map<storm::RationalFunctionVariable, storm::RationalFunctionCoefficient> valuation;
85 ASSERT_NE(pL, carl::Variable::NO_VARIABLE);
87 ASSERT_NE(pK, carl::Variable::NO_VARIABLE);
88 valuation.insert(std::make_pair(pL, storm::utility::one<storm::RationalFunctionCoefficient>()));
89 valuation.insert(std::make_pair(pK, storm::utility::one<storm::RationalFunctionCoefficient>()));
93 ASSERT_EQ(dtmc->getTransitionMatrix().getRowGroupIndices(), instantiated.
getTransitionMatrix().getRowGroupIndices());
94 for (std::size_t rowGroup = 0; rowGroup < dtmc->getTransitionMatrix().getRowGroupCount(); ++rowGroup) {
95 for (std::size_t row = dtmc->getTransitionMatrix().getRowGroupIndices()[rowGroup];
96 row < dtmc->getTransitionMatrix().getRowGroupIndices()[rowGroup + 1]; ++row) {
98 for (
auto const& paramEntry : dtmc->getTransitionMatrix().getRow(row)) {
99 EXPECT_EQ(paramEntry.getColumn(), instantiatedEntry->getColumn());
100 double evaluatedValue = carl::toDouble(paramEntry.getValue().evaluate(valuation));
101 EXPECT_EQ(evaluatedValue, instantiatedEntry->getValue());
111 std::unique_ptr<storm::modelchecker::CheckResult> chkResult = modelchecker.
check(*formulas[0]);
117 std::map<storm::RationalFunctionVariable, storm::RationalFunctionCoefficient> valuation;
119 ASSERT_NE(pL, carl::Variable::NO_VARIABLE);
121 ASSERT_NE(pK, carl::Variable::NO_VARIABLE);
122 valuation.insert(std::make_pair(pL, storm::utility::one<storm::RationalFunctionCoefficient>()));
123 valuation.insert(std::make_pair(pK, storm::utility::convertNumber<storm::RationalFunctionCoefficient>(0.9)));
127 ASSERT_EQ(dtmc->getTransitionMatrix().getRowGroupIndices(), instantiated.
getTransitionMatrix().getRowGroupIndices());
128 for (std::size_t rowGroup = 0; rowGroup < dtmc->getTransitionMatrix().getRowGroupCount(); ++rowGroup) {
129 for (std::size_t row = dtmc->getTransitionMatrix().getRowGroupIndices()[rowGroup];
130 row < dtmc->getTransitionMatrix().getRowGroupIndices()[rowGroup + 1]; ++row) {
132 for (
auto const& paramEntry : dtmc->getTransitionMatrix().getRow(row)) {
133 EXPECT_EQ(paramEntry.getColumn(), instantiatedEntry->getColumn());
134 double evaluatedValue = carl::toDouble(paramEntry.getValue().evaluate(valuation));
135 EXPECT_EQ(evaluatedValue, instantiatedEntry->getValue());
145 std::unique_ptr<storm::modelchecker::CheckResult> chkResult = modelchecker.
check(*formulas[0]);
148 storm::settings::getModule<storm::settings::modules::GeneralSettings>().getPrecision());
153 carl::VariablePool::getInstance().clear();
155 std::string programFile = STORM_TEST_RESOURCES_DIR
"/pdtmc/brp16_2.pm";
156 std::string formulaAsString =
"R=? [F ((s=5) | (s=0&srep=3)) ]";
161 std::vector<std::shared_ptr<storm::logic::Formula const>> formulas =
163 ASSERT_TRUE(formulas.size() == 1);
166 std::shared_ptr<storm::models::sparse::Dtmc<storm::RationalFunction>> dtmc =
172 std::map<storm::RationalFunctionVariable, storm::RationalFunctionCoefficient> valuation;
174 ASSERT_NE(pL, carl::Variable::NO_VARIABLE);
176 ASSERT_NE(pK, carl::Variable::NO_VARIABLE);
178 ASSERT_NE(pK, carl::Variable::NO_VARIABLE);
180 ASSERT_NE(pK, carl::Variable::NO_VARIABLE);
181 valuation.insert(std::make_pair(pL, storm::utility::convertNumber<storm::RationalFunctionCoefficient>(0.9)));
182 valuation.insert(std::make_pair(pK, storm::utility::convertNumber<storm::RationalFunctionCoefficient>(0.3)));
183 valuation.insert(std::make_pair(TOMsg, storm::utility::convertNumber<storm::RationalFunctionCoefficient>(0.3)));
184 valuation.insert(std::make_pair(TOAck, storm::utility::convertNumber<storm::RationalFunctionCoefficient>(0.5)));
188 ASSERT_EQ(dtmc->getTransitionMatrix().getRowGroupIndices(), instantiated.
getTransitionMatrix().getRowGroupIndices());
189 for (std::size_t rowGroup = 0; rowGroup < dtmc->getTransitionMatrix().getRowGroupCount(); ++rowGroup) {
190 for (std::size_t row = dtmc->getTransitionMatrix().getRowGroupIndices()[rowGroup];
191 row < dtmc->getTransitionMatrix().getRowGroupIndices()[rowGroup + 1]; ++row) {
193 for (
auto const& paramEntry : dtmc->getTransitionMatrix().getRow(row)) {
194 EXPECT_EQ(paramEntry.getColumn(), instantiatedEntry->getColumn());
195 double evaluatedValue = carl::toDouble(paramEntry.getValue().evaluate(valuation));
196 EXPECT_EQ(evaluatedValue, instantiatedEntry->getValue());
206 ASSERT_TRUE(dtmc->getUniqueRewardModel().hasStateActionRewards());
207 std::size_t stateActionEntries = dtmc->getUniqueRewardModel().getStateActionRewardVector().size();
208 ASSERT_EQ(stateActionEntries, instantiated.
getUniqueRewardModel().getStateActionRewardVector().size());
209 for (std::size_t i = 0; i < stateActionEntries; ++i) {
210 double evaluatedValue = carl::toDouble(dtmc->getUniqueRewardModel().getStateActionRewardVector()[i].evaluate(valuation));
217 std::unique_ptr<storm::modelchecker::CheckResult> chkResult = modelchecker.
check(*formulas[0]);
220 storm::settings::getModule<storm::settings::modules::GeneralSettings>().getPrecision());
225 carl::VariablePool::getInstance().clear();
227 std::string programFile = STORM_TEST_RESOURCES_DIR
"/pmdp/coin2_2.nm";
228 std::string formulaAsString =
"Pmin=? [F \"finished\"&\"all_coins_equal_1\" ]";
233 std::vector<std::shared_ptr<storm::logic::Formula const>> formulas =
235 ASSERT_TRUE(formulas.size() == 1);
238 std::shared_ptr<storm::models::sparse::Mdp<storm::RationalFunction>> mdp =
243 std::map<storm::RationalFunctionVariable, storm::RationalFunctionCoefficient> valuation;
245 ASSERT_NE(p1, carl::Variable::NO_VARIABLE);
247 ASSERT_NE(p2, carl::Variable::NO_VARIABLE);
248 valuation.insert(std::make_pair(p1, storm::utility::convertNumber<storm::RationalFunctionCoefficient>(0.51)));
249 valuation.insert(std::make_pair(p2, storm::utility::convertNumber<storm::RationalFunctionCoefficient>(0.49)));
252 ASSERT_EQ(mdp->getTransitionMatrix().getRowGroupIndices(), instantiated.
getTransitionMatrix().getRowGroupIndices());
253 for (std::size_t rowGroup = 0; rowGroup < mdp->getTransitionMatrix().getRowGroupCount(); ++rowGroup) {
254 for (std::size_t row = mdp->getTransitionMatrix().getRowGroupIndices()[rowGroup]; row < mdp->getTransitionMatrix().getRowGroupIndices()[rowGroup + 1];
257 for (
auto const& paramEntry : mdp->getTransitionMatrix().getRow(row)) {
258 EXPECT_EQ(paramEntry.getColumn(), instantiatedEntry->getColumn());
259 double evaluatedValue = carl::toDouble(paramEntry.getValue().evaluate(valuation));
260 EXPECT_EQ(evaluatedValue, instantiatedEntry->getValue());
270 std::unique_ptr<storm::modelchecker::CheckResult> chkResult = modelchecker.
check(*formulas[0]);
273 storm::settings::getModule<storm::settings::modules::GeneralSettings>().getPrecision());