37 std::set<storm::expressions::Variable>
const& stateVariables,
49 std::pair<storm::dd::Add<storm::dd::DdType::CUDD, ValueType>, boost::optional<storm::dd::Add<storm::dd::DdType::CUDD, ValueType>>>
refine(
52 DdNodePtr encodeBlock(uint64_t blockIndex);
54 std::pair<DdNodePtr, DdNodePtr> reuseOrRelabel(DdNode* partitionNode, DdNode* nondeterminismVariablesNode, DdNode* nonBlockVariablesNode);
56 std::pair<DdNodePtr, DdNodePtr>
refine(DdNode* partitionNode, DdNode* signatureNode, DdNode* nondeterminismVariablesNode, DdNode* nonBlockVariablesNode);
61 std::set<storm::expressions::Variable> stateVariables;
71 std::vector<uint64_t> blockDdVariableIndices;
74 std::vector<int> blockEncoding;
77 uint64_t nextFreeBlockIndex;
80 uint64_t numberOfRefinements;
83 phmap::flat_hash_map<std::pair<DdNode const*, DdNode const*>, std::pair<DdNodePtr, DdNodePtr>, CuddPointerPairHash> signatureCache;
86 phmap::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=InternalSignatureRefinerOptions())