diff --git a/src/storage/dft/DFTIsomorphism.h b/src/storage/dft/DFTIsomorphism.h index e487e92bf..542fa954a 100644 --- a/src/storage/dft/DFTIsomorphism.h +++ b/src/storage/dft/DFTIsomorphism.h @@ -414,20 +414,38 @@ namespace storage { if(dft.isGate(indexpair.first)) { assert(dft.isGate(indexpair.second)); auto const& lGate = dft.getGate(indexpair.first); - std::set childrenLeftMapped; - for(auto const& child : lGate->children() ) { - assert(bleft.has(child->id())); - childrenLeftMapped.insert(bijection.at(child->id())); - } auto const& rGate = dft.getGate(indexpair.second); - std::set childrenRight; - for(auto const& child : rGate->children() ) { - assert(bright.has(child->id())); - childrenRight.insert(child->id()); - } - if(childrenLeftMapped != childrenRight) { - return false; + if(lGate->isDynamicGate()) { + std::vector childrenLeftMapped; + for(auto const& child : lGate->children() ) { + assert(bleft.has(child->id())); + childrenLeftMapped.push_back(bijection.at(child->id())); + } + std::vector childrenRight; + for(auto const& child : rGate->children() ) { + assert(bright.has(child->id())); + childrenRight.push_back(child->id()); + } + if(childrenLeftMapped != childrenRight) { + return false; + } + } else { + std::set childrenLeftMapped; + for(auto const& child : lGate->children() ) { + assert(bleft.has(child->id())); + childrenLeftMapped.insert(bijection.at(child->id())); + } + std::set childrenRight; + for(auto const& child : rGate->children() ) { + assert(bright.has(child->id())); + childrenRight.insert(child->id()); + } + if(childrenLeftMapped != childrenRight) { + return false; + } } + + } else if(dft.isDependency(indexpair.first)) { assert(dft.isDependency(indexpair.second)); auto const& lDep = dft.getDependency(indexpair.first); diff --git a/src/storage/dft/elements/DFTGate.h b/src/storage/dft/elements/DFTGate.h index 52f9bcd43..d82906895 100644 --- a/src/storage/dft/elements/DFTGate.h +++ b/src/storage/dft/elements/DFTGate.h @@ -35,6 +35,10 @@ namespace storm { return true; } + bool isDynamicGate() const { + return !isStaticGateType(this->type()); + } + virtual std::string typestring() const = 0;