diff --git a/src/storm/api/bisimulation.h b/src/storm/api/bisimulation.h index 40391be2b..d5ae374c5 100644 --- a/src/storm/api/bisimulation.h +++ b/src/storm/api/bisimulation.h @@ -56,7 +56,7 @@ namespace storm { } template - typename std::enable_if::value, std::shared_ptr>>::type performBisimulationMinimization(std::shared_ptr> const& model, std::vector> const& formulas, storm::storage::BisimulationType const& bisimulationType = storm::storage::BisimulationType::Strong, storm::dd::bisimulation::SignatureMode const& mode = storm::dd::bisimulation::SignatureMode::Eager) { + typename std::enable_if::value, std::shared_ptr>>::type performBisimulationMinimization(std::shared_ptr> const& model, std::vector> const& formulas, storm::storage::BisimulationType const& bisimulationType = storm::storage::BisimulationType::Strong, storm::dd::bisimulation::SignatureMode const& mode = storm::dd::bisimulation::SignatureMode::Eager, storm::dd::bisimulation::QuotientFormat const& quotientFormat = storm::dd::bisimulation::QuotientFormat::Dd) { STORM_LOG_THROW(model->isOfType(storm::models::ModelType::Dtmc) || model->isOfType(storm::models::ModelType::Ctmc) || model->isOfType(storm::models::ModelType::Mdp) || model->isOfType(storm::models::ModelType::MarkovAutomaton), storm::exceptions::NotSupportedException, "Symbolic bisimulation minimization is currently only available for DTMCs, CTMCs, MDPs and MAs."); STORM_LOG_THROW(bisimulationType == storm::storage::BisimulationType::Strong, storm::exceptions::NotSupportedException, "Currently only strong bisimulation is supported."); @@ -66,11 +66,11 @@ namespace storm { storm::dd::BisimulationDecomposition decomposition(*model, formulas, bisimulationType); decomposition.compute(mode); - return decomposition.getQuotient(); + return decomposition.getQuotient(quotientFormat); } template - typename std::enable_if::value, std::shared_ptr>>::type performBisimulationMinimization(std::shared_ptr> const& model, std::vector> const& formulas, storm::storage::BisimulationType const& bisimulationType = storm::storage::BisimulationType::Strong, storm::dd::bisimulation::SignatureMode const& mode = storm::dd::bisimulation::SignatureMode::Eager) { + typename std::enable_if::value, std::shared_ptr>>::type performBisimulationMinimization(std::shared_ptr> const& model, std::vector> const& formulas, storm::storage::BisimulationType const& bisimulationType = storm::storage::BisimulationType::Strong, storm::dd::bisimulation::SignatureMode const& mode = storm::dd::bisimulation::SignatureMode::Eager, storm::dd::bisimulation::QuotientFormat const& quotientFormat = storm::dd::bisimulation::QuotientFormat::Dd) { STORM_LOG_THROW(false, storm::exceptions::NotSupportedException, "Symbolic bisimulation minimization is not supported for this combination of DD library and value type."); return nullptr; } diff --git a/src/storm/modelchecker/abstraction/BisimulationAbstractionRefinementModelChecker.cpp b/src/storm/modelchecker/abstraction/BisimulationAbstractionRefinementModelChecker.cpp index b41ddaca5..d574de24d 100644 --- a/src/storm/modelchecker/abstraction/BisimulationAbstractionRefinementModelChecker.cpp +++ b/src/storm/modelchecker/abstraction/BisimulationAbstractionRefinementModelChecker.cpp @@ -60,7 +60,7 @@ namespace storm { template std::shared_ptr::ValueType>> BisimulationAbstractionRefinementModelChecker::getAbstractModel() { - lastAbstractModel = this->bisimulation->getQuotient(); + lastAbstractModel = this->bisimulation->getQuotient(storm::dd::bisimulation::QuotientFormat::Dd); return lastAbstractModel; } diff --git a/src/storm/settings/modules/BisimulationSettings.cpp b/src/storm/settings/modules/BisimulationSettings.cpp index 8f797a40f..05f70678f 100644 --- a/src/storm/settings/modules/BisimulationSettings.cpp +++ b/src/storm/settings/modules/BisimulationSettings.cpp @@ -70,12 +70,13 @@ namespace storm { return false; } - BisimulationSettings::QuotientFormat BisimulationSettings::getQuotientFormat() const { + storm::dd::bisimulation::QuotientFormat BisimulationSettings::getQuotientFormat() const { std::string quotientFormatAsString = this->getOption(quotientFormatOptionName).getArgumentByName("format").getValueAsString(); if (quotientFormatAsString == "sparse") { - return BisimulationSettings::QuotientFormat::Sparse; + return storm::dd::bisimulation::QuotientFormat::Sparse; } - return BisimulationSettings::QuotientFormat::Dd; + STORM_LOG_ASSERT(quotientFormatAsString == "dd", "Invalid bisimulation quotient format: " << quotientFormatAsString << "."); + return storm::dd::bisimulation::QuotientFormat::Dd; } bool BisimulationSettings::isUseRepresentativesSet() const { diff --git a/src/storm/settings/modules/BisimulationSettings.h b/src/storm/settings/modules/BisimulationSettings.h index c06713a8a..ff372de01 100644 --- a/src/storm/settings/modules/BisimulationSettings.h +++ b/src/storm/settings/modules/BisimulationSettings.h @@ -4,6 +4,7 @@ #include "storm/settings/modules/ModuleSettings.h" #include "storm/storage/dd/bisimulation/SignatureMode.h" +#include "storm/storage/dd/bisimulation/QuotientFormat.h" namespace storm { namespace settings { @@ -17,8 +18,6 @@ namespace storm { // An enumeration of all available bisimulation types. enum class BisimulationType { Strong, Weak }; - enum class QuotientFormat { Sparse, Dd }; - enum class ReuseMode { None, BlockNumbers }; enum class InitialPartitionMode { Regular, Finer }; @@ -48,7 +47,7 @@ namespace storm { * Retrieves the format in which the quotient is to be extracted. * NOTE: only applies to DD-based bisimulation. */ - QuotientFormat getQuotientFormat() const; + storm::dd::bisimulation::QuotientFormat getQuotientFormat() const; /*! * Retrieves whether representatives for blocks are to be used instead of the block numbers. diff --git a/src/storm/storage/dd/BisimulationDecomposition.cpp b/src/storm/storage/dd/BisimulationDecomposition.cpp index d43dd9c65..a0eeae5e4 100644 --- a/src/storm/storage/dd/BisimulationDecomposition.cpp +++ b/src/storm/storage/dd/BisimulationDecomposition.cpp @@ -129,18 +129,18 @@ namespace storm { } template - std::shared_ptr> BisimulationDecomposition::getQuotient() const { + std::shared_ptr> BisimulationDecomposition::getQuotient(storm::dd::bisimulation::QuotientFormat const& quotientFormat) const { std::shared_ptr> quotient; if (this->refiner->getStatus() == Status::FixedPoint) { STORM_LOG_INFO("Starting full quotient extraction."); - QuotientExtractor extractor; + QuotientExtractor extractor(quotientFormat); quotient = extractor.extract(model, refiner->getStatePartition(), preservationInformation); } else { STORM_LOG_THROW(model.getType() == storm::models::ModelType::Dtmc || model.getType() == storm::models::ModelType::Mdp, storm::exceptions::InvalidOperationException, "Can only extract partial quotient for discrete-time models."); STORM_LOG_INFO("Starting partial quotient extraction."); if (!partialQuotientExtractor) { - partialQuotientExtractor = std::make_unique>(model); + partialQuotientExtractor = std::make_unique>(model, quotientFormat); } quotient = partialQuotientExtractor->extract(refiner->getStatePartition(), preservationInformation); diff --git a/src/storm/storage/dd/BisimulationDecomposition.h b/src/storm/storage/dd/BisimulationDecomposition.h index 1a552c497..36cee976b 100644 --- a/src/storm/storage/dd/BisimulationDecomposition.h +++ b/src/storm/storage/dd/BisimulationDecomposition.h @@ -7,6 +7,7 @@ #include "storm/storage/bisimulation/BisimulationType.h" #include "storm/storage/dd/bisimulation/SignatureMode.h" #include "storm/storage/dd/bisimulation/PreservationInformation.h" +#include "storm/storage/dd/bisimulation/QuotientFormat.h" #include "storm/logic/Formula.h" @@ -64,7 +65,7 @@ namespace storm { /*! * Retrieves the quotient model after the bisimulation decomposition was computed. */ - std::shared_ptr> getQuotient() const; + std::shared_ptr> getQuotient(storm::dd::bisimulation::QuotientFormat const& quotientFormat) const; private: void initialize(); diff --git a/src/storm/storage/dd/bisimulation/PartialQuotientExtractor.cpp b/src/storm/storage/dd/bisimulation/PartialQuotientExtractor.cpp index fea92c755..06c387781 100644 --- a/src/storm/storage/dd/bisimulation/PartialQuotientExtractor.cpp +++ b/src/storm/storage/dd/bisimulation/PartialQuotientExtractor.cpp @@ -16,11 +16,11 @@ namespace storm { namespace bisimulation { template - PartialQuotientExtractor::PartialQuotientExtractor(storm::models::symbolic::Model const& model) : model(model) { - auto const& settings = storm::settings::getModule(); - this->quotientFormat = settings.getQuotientFormat(); - - STORM_LOG_THROW(this->quotientFormat == storm::settings::modules::BisimulationSettings::QuotientFormat::Dd, storm::exceptions::NotSupportedException, "Only DD-based partial quotient extraction is currently supported."); + PartialQuotientExtractor::PartialQuotientExtractor(storm::models::symbolic::Model const& model, storm::dd::bisimulation::QuotientFormat const& quotientFormat) : model(model), quotientFormat(quotientFormat) { + if (this->quotientFormat != storm::dd::bisimulation::QuotientFormat::Dd) { + STORM_LOG_ERROR("Only DD-based partial quotient extraction is currently supported. Switching to DD-based extraction."); + this->quotientFormat = storm::dd::bisimulation::QuotientFormat::Dd; + } } template @@ -28,7 +28,7 @@ namespace storm { auto start = std::chrono::high_resolution_clock::now(); std::shared_ptr> result; - STORM_LOG_THROW(this->quotientFormat == storm::settings::modules::BisimulationSettings::QuotientFormat::Dd, storm::exceptions::NotSupportedException, "Only DD-based partial quotient extraction is currently supported."); + STORM_LOG_THROW(this->quotientFormat == storm::dd::bisimulation::QuotientFormat::Dd, storm::exceptions::NotSupportedException, "Only DD-based partial quotient extraction is currently supported."); result = extractDdQuotient(partition, preservationInformation); auto end = std::chrono::high_resolution_clock::now(); STORM_LOG_TRACE("Quotient extraction completed in " << std::chrono::duration_cast(end - start).count() << "ms."); diff --git a/src/storm/storage/dd/bisimulation/PartialQuotientExtractor.h b/src/storm/storage/dd/bisimulation/PartialQuotientExtractor.h index d5c638c2a..df38bf696 100644 --- a/src/storm/storage/dd/bisimulation/PartialQuotientExtractor.h +++ b/src/storm/storage/dd/bisimulation/PartialQuotientExtractor.h @@ -19,7 +19,7 @@ namespace storm { template class PartialQuotientExtractor { public: - PartialQuotientExtractor(storm::models::symbolic::Model const& model); + PartialQuotientExtractor(storm::models::symbolic::Model const& model, storm::dd::bisimulation::QuotientFormat const& quotientFormat); std::shared_ptr> extract(Partition const& partition, PreservationInformation const& preservationInformation); @@ -29,7 +29,7 @@ namespace storm { // The model for which to compute the partial quotient. storm::models::symbolic::Model const& model; - storm::settings::modules::BisimulationSettings::QuotientFormat quotientFormat; + storm::dd::bisimulation::QuotientFormat quotientFormat; }; } diff --git a/src/storm/storage/dd/bisimulation/QuotientExtractor.cpp b/src/storm/storage/dd/bisimulation/QuotientExtractor.cpp index 36f7f1fe3..ed94fbff8 100644 --- a/src/storm/storage/dd/bisimulation/QuotientExtractor.cpp +++ b/src/storm/storage/dd/bisimulation/QuotientExtractor.cpp @@ -818,18 +818,17 @@ namespace storm { }; template - QuotientExtractor::QuotientExtractor() : useRepresentatives(false) { + QuotientExtractor::QuotientExtractor(storm::dd::bisimulation::QuotientFormat const& quotientFormat) : useRepresentatives(false), quotientFormat(quotientFormat) { auto const& settings = storm::settings::getModule(); this->useRepresentatives = settings.isUseRepresentativesSet(); this->useOriginalVariables = settings.isUseOriginalVariablesSet(); - this->quotientFormat = settings.getQuotientFormat(); } template std::shared_ptr> QuotientExtractor::extract(storm::models::symbolic::Model const& model, Partition const& partition, PreservationInformation const& preservationInformation) { auto start = std::chrono::high_resolution_clock::now(); std::shared_ptr> result; - if (quotientFormat == storm::settings::modules::BisimulationSettings::QuotientFormat::Sparse) { + if (quotientFormat == storm::dd::bisimulation::QuotientFormat::Sparse) { result = extractSparseQuotient(model, partition, preservationInformation); } else { result = extractDdQuotient(model, partition, preservationInformation); diff --git a/src/storm/storage/dd/bisimulation/QuotientExtractor.h b/src/storm/storage/dd/bisimulation/QuotientExtractor.h index 422453bf7..2ecfe41a3 100644 --- a/src/storm/storage/dd/bisimulation/QuotientExtractor.h +++ b/src/storm/storage/dd/bisimulation/QuotientExtractor.h @@ -19,7 +19,7 @@ namespace storm { template class QuotientExtractor { public: - QuotientExtractor(); + QuotientExtractor(storm::dd::bisimulation::QuotientFormat const& quotientFormat); std::shared_ptr> extract(storm::models::symbolic::Model const& model, Partition const& partition, PreservationInformation const& preservationInformation); @@ -32,7 +32,7 @@ namespace storm { bool useRepresentatives; bool useOriginalVariables; - storm::settings::modules::BisimulationSettings::QuotientFormat quotientFormat; + storm::dd::bisimulation::QuotientFormat quotientFormat; }; } diff --git a/src/storm/storage/dd/bisimulation/QuotientFormat.h b/src/storm/storage/dd/bisimulation/QuotientFormat.h new file mode 100644 index 000000000..5ce91bd07 --- /dev/null +++ b/src/storm/storage/dd/bisimulation/QuotientFormat.h @@ -0,0 +1,9 @@ +#pragma once + +namespace storm { + namespace dd { + namespace bisimulation { + enum class QuotientFormat { Sparse, Dd }; + } + } +} diff --git a/src/test/storm/storage/SymbolicBisimulationDecompositionTest.cpp b/src/test/storm/storage/SymbolicBisimulationDecompositionTest.cpp index 26e7f684c..e7a1a8e45 100644 --- a/src/test/storm/storage/SymbolicBisimulationDecompositionTest.cpp +++ b/src/test/storm/storage/SymbolicBisimulationDecompositionTest.cpp @@ -35,7 +35,7 @@ TEST(SymbolicModelBisimulationDecomposition, Die_Cudd) { storm::dd::BisimulationDecomposition decomposition(*model, storm::storage::BisimulationType::Strong); decomposition.compute(); - std::shared_ptr> quotient = decomposition.getQuotient(); + std::shared_ptr> quotient = decomposition.getQuotient(storm::dd::bisimulation::QuotientFormat::Dd); EXPECT_EQ(11ul, quotient->getNumberOfStates()); EXPECT_EQ(17ul, quotient->getNumberOfTransitions()); @@ -50,7 +50,7 @@ TEST(SymbolicModelBisimulationDecomposition, Die_Cudd) { storm::dd::BisimulationDecomposition decomposition2(*model, formulas, storm::storage::BisimulationType::Strong); decomposition2.compute(); - quotient = decomposition2.getQuotient(); + quotient = decomposition2.getQuotient(storm::dd::bisimulation::QuotientFormat::Dd); EXPECT_EQ(5ul, quotient->getNumberOfStates()); EXPECT_EQ(8ul, quotient->getNumberOfTransitions()); @@ -65,7 +65,7 @@ TEST(SymbolicModelBisimulationDecomposition, DiePartialQuotient_Cudd) { storm::dd::BisimulationDecomposition decomposition(*model, storm::storage::BisimulationType::Strong); - std::shared_ptr> quotient = decomposition.getQuotient(); + std::shared_ptr> quotient = decomposition.getQuotient(storm::dd::bisimulation::QuotientFormat::Dd); ASSERT_EQ(storm::models::ModelType::Mdp, quotient->getType()); ASSERT_TRUE(quotient->isSymbolicModel()); @@ -92,7 +92,7 @@ TEST(SymbolicModelBisimulationDecomposition, DiePartialQuotient_Cudd) { // Perform only one step. decomposition.compute(1); - quotient = decomposition.getQuotient(); + quotient = decomposition.getQuotient(storm::dd::bisimulation::QuotientFormat::Dd); ASSERT_EQ(storm::models::ModelType::Mdp, quotient->getType()); ASSERT_TRUE(quotient->isSymbolicModel()); quotientMdp = quotient->as>(); @@ -112,7 +112,7 @@ TEST(SymbolicModelBisimulationDecomposition, DiePartialQuotient_Cudd) { // Perform only one step. decomposition.compute(1); - quotient = decomposition.getQuotient(); + quotient = decomposition.getQuotient(storm::dd::bisimulation::QuotientFormat::Dd); ASSERT_EQ(storm::models::ModelType::Mdp, quotient->getType()); ASSERT_TRUE(quotient->isSymbolicModel()); quotientMdp = quotient->as>(); @@ -132,7 +132,7 @@ TEST(SymbolicModelBisimulationDecomposition, DiePartialQuotient_Cudd) { decomposition.compute(1); - quotient = decomposition.getQuotient(); + quotient = decomposition.getQuotient(storm::dd::bisimulation::QuotientFormat::Dd); ASSERT_EQ(storm::models::ModelType::Dtmc, quotient->getType()); ASSERT_TRUE(quotient->isSymbolicModel()); std::shared_ptr> quotientDtmc = quotient->as>(); @@ -155,7 +155,7 @@ TEST(SymbolicModelBisimulationDecomposition, Die_Sylvan) { storm::dd::BisimulationDecomposition decomposition(*model, storm::storage::BisimulationType::Strong); decomposition.compute(); - std::shared_ptr> quotient = decomposition.getQuotient(); + std::shared_ptr> quotient = decomposition.getQuotient(storm::dd::bisimulation::QuotientFormat::Dd); EXPECT_EQ(11ul, quotient->getNumberOfStates()); EXPECT_EQ(17ul, quotient->getNumberOfTransitions()); @@ -170,7 +170,7 @@ TEST(SymbolicModelBisimulationDecomposition, Die_Sylvan) { storm::dd::BisimulationDecomposition decomposition2(*model, formulas, storm::storage::BisimulationType::Strong); decomposition2.compute(); - quotient = decomposition2.getQuotient(); + quotient = decomposition2.getQuotient(storm::dd::bisimulation::QuotientFormat::Dd); EXPECT_EQ(5ul, quotient->getNumberOfStates()); EXPECT_EQ(8ul, quotient->getNumberOfTransitions()); @@ -185,7 +185,7 @@ TEST(SymbolicModelBisimulationDecomposition, DiePartialQuotient_Sylvan) { storm::dd::BisimulationDecomposition decomposition(*model, storm::storage::BisimulationType::Strong); - std::shared_ptr> quotient = decomposition.getQuotient(); + std::shared_ptr> quotient = decomposition.getQuotient(storm::dd::bisimulation::QuotientFormat::Dd); ASSERT_EQ(storm::models::ModelType::Mdp, quotient->getType()); ASSERT_TRUE(quotient->isSymbolicModel()); @@ -212,7 +212,7 @@ TEST(SymbolicModelBisimulationDecomposition, DiePartialQuotient_Sylvan) { // Perform only one step. decomposition.compute(1); - quotient = decomposition.getQuotient(); + quotient = decomposition.getQuotient(storm::dd::bisimulation::QuotientFormat::Dd); ASSERT_EQ(storm::models::ModelType::Mdp, quotient->getType()); ASSERT_TRUE(quotient->isSymbolicModel()); quotientMdp = quotient->as>(); @@ -232,7 +232,7 @@ TEST(SymbolicModelBisimulationDecomposition, DiePartialQuotient_Sylvan) { // Perform only one step. decomposition.compute(1); - quotient = decomposition.getQuotient(); + quotient = decomposition.getQuotient(storm::dd::bisimulation::QuotientFormat::Dd); ASSERT_EQ(storm::models::ModelType::Mdp, quotient->getType()); ASSERT_TRUE(quotient->isSymbolicModel()); quotientMdp = quotient->as>(); @@ -252,7 +252,7 @@ TEST(SymbolicModelBisimulationDecomposition, DiePartialQuotient_Sylvan) { decomposition.compute(1); - quotient = decomposition.getQuotient(); + quotient = decomposition.getQuotient(storm::dd::bisimulation::QuotientFormat::Dd); ASSERT_EQ(storm::models::ModelType::Dtmc, quotient->getType()); ASSERT_TRUE(quotient->isSymbolicModel()); std::shared_ptr> quotientDtmc = quotient->as>(); @@ -278,7 +278,7 @@ TEST(SymbolicModelBisimulationDecomposition, Crowds_Cudd) { storm::dd::BisimulationDecomposition decomposition(*model, storm::storage::BisimulationType::Strong); decomposition.compute(); - std::shared_ptr> quotient = decomposition.getQuotient(); + std::shared_ptr> quotient = decomposition.getQuotient(storm::dd::bisimulation::QuotientFormat::Dd); EXPECT_EQ(2007ul, quotient->getNumberOfStates()); EXPECT_EQ(3738ul, quotient->getNumberOfTransitions()); @@ -293,7 +293,7 @@ TEST(SymbolicModelBisimulationDecomposition, Crowds_Cudd) { storm::dd::BisimulationDecomposition decomposition2(*model, formulas, storm::storage::BisimulationType::Strong); decomposition2.compute(); - quotient = decomposition2.getQuotient(); + quotient = decomposition2.getQuotient(storm::dd::bisimulation::QuotientFormat::Dd); EXPECT_EQ(65ul, quotient->getNumberOfStates()); EXPECT_EQ(105ul, quotient->getNumberOfTransitions()); @@ -311,7 +311,7 @@ TEST(SymbolicModelBisimulationDecomposition, Crowds_Sylvan) { storm::dd::BisimulationDecomposition decomposition(*model, storm::storage::BisimulationType::Strong); decomposition.compute(); - std::shared_ptr> quotient = decomposition.getQuotient(); + std::shared_ptr> quotient = decomposition.getQuotient(storm::dd::bisimulation::QuotientFormat::Dd); EXPECT_EQ(2007ul, quotient->getNumberOfStates()); EXPECT_EQ(3738ul, quotient->getNumberOfTransitions()); @@ -326,7 +326,7 @@ TEST(SymbolicModelBisimulationDecomposition, Crowds_Sylvan) { storm::dd::BisimulationDecomposition decomposition2(*model, formulas, storm::storage::BisimulationType::Strong); decomposition2.compute(); - quotient = decomposition2.getQuotient(); + quotient = decomposition2.getQuotient(storm::dd::bisimulation::QuotientFormat::Dd); EXPECT_EQ(65ul, quotient->getNumberOfStates()); EXPECT_EQ(105ul, quotient->getNumberOfTransitions()); @@ -341,7 +341,7 @@ TEST(SymbolicModelBisimulationDecomposition, TwoDice_Cudd) { storm::dd::BisimulationDecomposition decomposition(*model, storm::storage::BisimulationType::Strong); decomposition.compute(); - std::shared_ptr> quotient = decomposition.getQuotient(); + std::shared_ptr> quotient = decomposition.getQuotient(storm::dd::bisimulation::QuotientFormat::Dd); EXPECT_EQ(77ul, quotient->getNumberOfStates()); EXPECT_EQ(210ul, quotient->getNumberOfTransitions()); @@ -357,7 +357,7 @@ TEST(SymbolicModelBisimulationDecomposition, TwoDice_Cudd) { storm::dd::BisimulationDecomposition decomposition2(*model, formulas, storm::storage::BisimulationType::Strong); decomposition2.compute(); - quotient = decomposition2.getQuotient(); + quotient = decomposition2.getQuotient(storm::dd::bisimulation::QuotientFormat::Dd); EXPECT_EQ(11ul, quotient->getNumberOfStates()); EXPECT_EQ(34ul, quotient->getNumberOfTransitions()); @@ -373,7 +373,7 @@ TEST(SymbolicModelBisimulationDecomposition, TwoDice_Sylvan) { storm::dd::BisimulationDecomposition decomposition(*model, storm::storage::BisimulationType::Strong); decomposition.compute(); - std::shared_ptr> quotient = decomposition.getQuotient(); + std::shared_ptr> quotient = decomposition.getQuotient(storm::dd::bisimulation::QuotientFormat::Dd); EXPECT_EQ(77ul, quotient->getNumberOfStates()); EXPECT_EQ(210ul, quotient->getNumberOfTransitions()); @@ -389,7 +389,7 @@ TEST(SymbolicModelBisimulationDecomposition, TwoDice_Sylvan) { storm::dd::BisimulationDecomposition decomposition2(*model, formulas, storm::storage::BisimulationType::Strong); decomposition2.compute(); - quotient = decomposition2.getQuotient(); + quotient = decomposition2.getQuotient(storm::dd::bisimulation::QuotientFormat::Dd); EXPECT_EQ(11ul, quotient->getNumberOfStates()); EXPECT_EQ(34ul, quotient->getNumberOfTransitions()); @@ -411,7 +411,7 @@ TEST(SymbolicModelBisimulationDecomposition, AsynchronousLeader_Cudd) { storm::dd::BisimulationDecomposition decomposition(*model, storm::storage::BisimulationType::Strong); decomposition.compute(); - std::shared_ptr> quotient = decomposition.getQuotient(); + std::shared_ptr> quotient = decomposition.getQuotient(storm::dd::bisimulation::QuotientFormat::Dd); EXPECT_EQ(252ul, quotient->getNumberOfStates()); EXPECT_EQ(624ul, quotient->getNumberOfTransitions()); @@ -424,7 +424,7 @@ TEST(SymbolicModelBisimulationDecomposition, AsynchronousLeader_Cudd) { storm::dd::BisimulationDecomposition decomposition2(*model, formulas, storm::storage::BisimulationType::Strong); decomposition2.compute(); - quotient = decomposition2.getQuotient(); + quotient = decomposition2.getQuotient(storm::dd::bisimulation::QuotientFormat::Dd); EXPECT_EQ(1107ul, quotient->getNumberOfStates()); EXPECT_EQ(2684ul, quotient->getNumberOfTransitions()); @@ -446,7 +446,7 @@ TEST(SymbolicModelBisimulationDecomposition, AsynchronousLeader_Sylvan) { storm::dd::BisimulationDecomposition decomposition(*model, storm::storage::BisimulationType::Strong); decomposition.compute(); - std::shared_ptr> quotient = decomposition.getQuotient(); + std::shared_ptr> quotient = decomposition.getQuotient(storm::dd::bisimulation::QuotientFormat::Dd); EXPECT_EQ(252ul, quotient->getNumberOfStates()); EXPECT_EQ(624ul, quotient->getNumberOfTransitions()); @@ -459,7 +459,7 @@ TEST(SymbolicModelBisimulationDecomposition, AsynchronousLeader_Sylvan) { storm::dd::BisimulationDecomposition decomposition2(*model, formulas, storm::storage::BisimulationType::Strong); decomposition2.compute(); - quotient = decomposition2.getQuotient(); + quotient = decomposition2.getQuotient(storm::dd::bisimulation::QuotientFormat::Dd); EXPECT_EQ(1107ul, quotient->getNumberOfStates()); EXPECT_EQ(2684ul, quotient->getNumberOfTransitions());