12TEST(DeterministicModelBisimulationDecomposition, Die) {
13 std::shared_ptr<storm::models::sparse::Model<double>> abstractModel =
20 ASSERT_NO_THROW(bisim.computeBisimulationDecomposition());
21 std::shared_ptr<storm::models::sparse::Model<double>> result;
22 ASSERT_NO_THROW(result = bisim.getQuotient());
25 EXPECT_EQ(13ul, result->getNumberOfStates());
26 EXPECT_EQ(20ul, result->getNumberOfTransitions());
29 options.respectedAtomicPropositions = std::set<std::string>({
"one"});
32 ASSERT_NO_THROW(bisim2.computeBisimulationDecomposition());
33 ASSERT_NO_THROW(result = bisim2.getQuotient());
36 EXPECT_EQ(5ul, result->getNumberOfStates());
37 EXPECT_EQ(8ul, result->getNumberOfTransitions());
46 EXPECT_EQ(5ul, result->getNumberOfStates());
47 EXPECT_EQ(8ul, result->getNumberOfTransitions());
58 EXPECT_EQ(5ul, result->getNumberOfStates());
59 EXPECT_EQ(8ul, result->getNumberOfTransitions());
62TEST(DeterministicModelBisimulationDecomposition, Crowds) {
63 std::shared_ptr<storm::models::sparse::Model<double>> abstractModel =
70 std::shared_ptr<storm::models::sparse::Model<double>> result;
71 ASSERT_NO_THROW(bisim.computeBisimulationDecomposition());
72 ASSERT_NO_THROW(result = bisim.getQuotient());
75 EXPECT_EQ(334ul, result->getNumberOfStates());
76 EXPECT_EQ(546ul, result->getNumberOfTransitions());
79 options.respectedAtomicPropositions = std::set<std::string>({
"observe0Greater1"});
82 ASSERT_NO_THROW(bisim2.computeBisimulationDecomposition());
83 ASSERT_NO_THROW(result = bisim2.getQuotient());
86 EXPECT_EQ(65ul, result->getNumberOfStates());
87 EXPECT_EQ(105ul, result->getNumberOfTransitions());
96 EXPECT_EQ(43ul, result->getNumberOfStates());
97 EXPECT_EQ(83ul, result->getNumberOfTransitions());
109 EXPECT_EQ(64ul, result->getNumberOfStates());
110 EXPECT_EQ(104ul, result->getNumberOfTransitions());
121 EXPECT_EQ(65ul, result->getNumberOfStates());
122 EXPECT_EQ(105ul, result->getNumberOfTransitions());
125TEST(DeterministicModelBisimulationDecomposition, Cluster) {
127 GTEST_SKIP() <<
"CTMC bisimulation currently yields unstable results.";
129 GTEST_SKIP() <<
"Z3 not available.";
132 std::shared_ptr<storm::models::sparse::Model<double>> model =
137 ASSERT_EQ(3478ul, ctmc->getNumberOfStates());
138 ASSERT_EQ(14639ul, ctmc->getNumberOfTransitions());
141 std::shared_ptr<storm::models::sparse::Model<double>> result;
146 EXPECT_EQ(1731ul, result->getNumberOfStates());
147 EXPECT_EQ(8619ul, result->getNumberOfTransitions());
150 options.respectedAtomicPropositions = std::set<std::string>({
"down"});
152 ASSERT_NO_THROW(bisim2.computeBisimulationDecomposition());
153 ASSERT_NO_THROW(result = bisim2.getQuotient());
156 EXPECT_EQ(1618ul, result->getNumberOfStates());
157 EXPECT_EQ(8816ul, result->getNumberOfTransitions());
165 EXPECT_EQ(41ul, result->getNumberOfStates());
166 EXPECT_EQ(159ul, result->getNumberOfTransitions());
176 EXPECT_EQ(1618ul, result->getNumberOfStates());
177 EXPECT_EQ(8816ul, result->getNumberOfTransitions());
static std::shared_ptr< storm::models::sparse::Model< ValueType, storm::models::sparse::StandardRewardModel< RewardValueType > > > parseModel(std::string const &transitionsFilename, std::string const &labelingFilename, std::string const &stateRewardFilename="", std::string const &transitionRewardFilename="", std::string const &choiceLabelingFilename="")
Checks the given files and parses the model within these files.