Browse Source

Extended FDEP conflict search by not considering pairs of FDEPs with static behavior

tempestpy_adaptions
Alexander Bork 6 years ago
parent
commit
aa150fc2e3
  1. 16
      src/storm-dft/modelchecker/dft/DFTASFChecker.cpp

16
src/storm-dft/modelchecker/dft/DFTASFChecker.cpp

@ -948,9 +948,12 @@ namespace storm {
dep1Index = dft.getDependencies().at(i); dep1Index = dft.getDependencies().at(i);
for (size_t j = i + 1; j < dft.getDependencies().size(); ++j) { for (size_t j = i + 1; j < dft.getDependencies().size(); ++j) {
dep2Index = dft.getDependencies().at(j); dep2Index = dft.getDependencies().at(j);
if (dft.getDependency(dep1Index)->triggerEvent() == dft.getDependency(dep2Index)->triggerEvent()) {
if (dft.getDynamicBehavior()[dep1Index] || dft.getDynamicBehavior()[dep2Index]) {
if (dft.getDependency(dep1Index)->triggerEvent() ==
dft.getDependency(dep2Index)->triggerEvent()) {
STORM_LOG_DEBUG("Conflict between " << dft.getElement(dep1Index)->name() << " and " STORM_LOG_DEBUG("Conflict between " << dft.getElement(dep1Index)->name() << " and "
<< dft.getElement(dep2Index)->name() << ": Same trigger");
<< dft.getElement(dep2Index)->name()
<< ": Same trigger");
res.emplace_back(std::pair<uint64_t, uint64_t>(dep1Index, dep2Index)); res.emplace_back(std::pair<uint64_t, uint64_t>(dep1Index, dep2Index));
} else { } else {
switch (checkDependencyConflict(dep1Index, dep2Index, timeout)) { switch (checkDependencyConflict(dep1Index, dep2Index, timeout)) {
@ -966,11 +969,18 @@ namespace storm {
res.emplace_back(std::pair<uint64_t, uint64_t>(dep1Index, dep2Index)); res.emplace_back(std::pair<uint64_t, uint64_t>(dep1Index, dep2Index));
break; break;
default: default:
STORM_LOG_DEBUG("No conflict between " << dft.getElement(dep1Index)->name() << " and "
STORM_LOG_DEBUG(
"No conflict between " << dft.getElement(dep1Index)->name() << " and "
<< dft.getElement(dep2Index)->name()); << dft.getElement(dep2Index)->name());
break; break;
} }
} }
} else {
STORM_LOG_DEBUG(
"Static behavior: No conflict between " << dft.getElement(dep1Index)->name() << " and "
<< dft.getElement(dep2Index)->name());
break;
}
} }
} }
return res; return res;

Loading…
Cancel
Save