37 std::set<storm::expressions::Variable>
const& stateVariables,
48 std::pair<storm::dd::Add<storm::dd::DdType::CUDD, ValueType>, boost::optional<storm::dd::Add<storm::dd::DdType::CUDD, ValueType>>>
refine(
51 DdNodePtr encodeBlock(uint64_t blockIndex);
53 std::pair<DdNodePtr, DdNodePtr> reuseOrRelabel(DdNode* partitionNode, DdNode* nondeterminismVariablesNode, DdNode* nonBlockVariablesNode);
55 std::pair<DdNodePtr, DdNodePtr>
refine(DdNode* partitionNode, DdNode* signatureNode, DdNode* nondeterminismVariablesNode, DdNode* nonBlockVariablesNode);
60 std::set<storm::expressions::Variable> stateVariables;
70 std::vector<uint64_t> blockDdVariableIndices;
73 std::vector<int> blockEncoding;
76 uint64_t nextFreeBlockIndex;
79 uint64_t numberOfRefinements;
82 gtl::flat_hash_map<std::pair<DdNode const*, DdNode const*>, std::pair<DdNodePtr, DdNodePtr>, CuddPointerPairHash> signatureCache;
85 gtl::flat_hash_map<DdNode const*, ReuseWrapper> reuseBlocksCache;
InternalSignatureRefiner(storm::dd::DdManager< storm::dd::DdType::CUDD > const &manager, storm::expressions::Variable const &blockVariable, std::set< storm::expressions::Variable > const &stateVariables, storm::dd::Bdd< storm::dd::DdType::CUDD > const &nondeterminismVariables, storm::dd::Bdd< storm::dd::DdType::CUDD > const &nonBlockVariables, InternalSignatureRefinerOptions const &options)