|
@ -25,29 +25,29 @@ namespace storm { |
|
|
if (dft.getDynamicBehavior()[dep1Index] && dft.getDynamicBehavior()[dep2Index]) { |
|
|
if (dft.getDynamicBehavior()[dep1Index] && dft.getDynamicBehavior()[dep2Index]) { |
|
|
if (useSMT) { // if an SMT solver is to be used
|
|
|
if (useSMT) { // if an SMT solver is to be used
|
|
|
if (dft.getDependency(dep1Index)->triggerEvent() == dft.getDependency(dep2Index)->triggerEvent()) { |
|
|
if (dft.getDependency(dep1Index)->triggerEvent() == dft.getDependency(dep2Index)->triggerEvent()) { |
|
|
STORM_LOG_DEBUG("Conflict between " << dft.getElement(dep1Index)->name() << " and " << dft.getElement(dep2Index)->name() << ": Same trigger"); |
|
|
|
|
|
|
|
|
STORM_LOG_TRACE("Conflict between " << dft.getElement(dep1Index)->name() << " and " << 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 (smtChecker->checkDependencyConflict(dep1Index, dep2Index, timeout)) { |
|
|
switch (smtChecker->checkDependencyConflict(dep1Index, dep2Index, timeout)) { |
|
|
case storm::solver::SmtSolver::CheckResult::Sat: |
|
|
case storm::solver::SmtSolver::CheckResult::Sat: |
|
|
STORM_LOG_DEBUG("Conflict between " << dft.getElement(dep1Index)->name() << " and " << dft.getElement(dep2Index)->name()); |
|
|
|
|
|
|
|
|
STORM_LOG_TRACE("Conflict between " << dft.getElement(dep1Index)->name() << " and " << dft.getElement(dep2Index)->name()); |
|
|
res.emplace_back(std::pair<uint64_t, uint64_t>(dep1Index, dep2Index)); |
|
|
res.emplace_back(std::pair<uint64_t, uint64_t>(dep1Index, dep2Index)); |
|
|
break; |
|
|
break; |
|
|
case storm::solver::SmtSolver::CheckResult::Unknown: |
|
|
case storm::solver::SmtSolver::CheckResult::Unknown: |
|
|
STORM_LOG_DEBUG("Unknown: Conflict between " << dft.getElement(dep1Index)->name() << " and " << dft.getElement(dep2Index)->name()); |
|
|
|
|
|
|
|
|
STORM_LOG_TRACE("Unknown: Conflict between " << dft.getElement(dep1Index)->name() << " and " << dft.getElement(dep2Index)->name()); |
|
|
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 " << dft.getElement(dep2Index)->name()); |
|
|
|
|
|
|
|
|
STORM_LOG_TRACE("No conflict between " << dft.getElement(dep1Index)->name() << " and " << dft.getElement(dep2Index)->name()); |
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} else { |
|
|
} else { |
|
|
STORM_LOG_DEBUG("Conflict between " << dft.getElement(dep1Index)->name() << " and " << dft.getElement(dep2Index)->name()); |
|
|
|
|
|
|
|
|
STORM_LOG_TRACE("Conflict between " << dft.getElement(dep1Index)->name() << " and " << dft.getElement(dep2Index)->name()); |
|
|
res.emplace_back(std::pair<uint64_t, uint64_t>(dep1Index, dep2Index)); |
|
|
res.emplace_back(std::pair<uint64_t, uint64_t>(dep1Index, dep2Index)); |
|
|
} |
|
|
} |
|
|
} else { |
|
|
} else { |
|
|
STORM_LOG_DEBUG("Static behavior: No conflict between " << dft.getElement(dep1Index)->name() << " and " << dft.getElement(dep2Index)->name()); |
|
|
|
|
|
|
|
|
STORM_LOG_TRACE("Static behavior: No conflict between " << dft.getElement(dep1Index)->name() << " and " << dft.getElement(dep2Index)->name()); |
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
@ -70,10 +70,10 @@ namespace storm { |
|
|
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.getDynamicBehavior()[dep1Index] && dft.getDynamicBehavior()[dep2Index]) { |
|
|
if (dft.getDynamicBehavior()[dep1Index] && dft.getDynamicBehavior()[dep2Index]) { |
|
|
STORM_LOG_DEBUG("Conflict between " << dft.getElement(dep1Index)->name() << " and " << dft.getElement(dep2Index)->name()); |
|
|
|
|
|
|
|
|
STORM_LOG_TRACE("Conflict between " << dft.getElement(dep1Index)->name() << " and " << dft.getElement(dep2Index)->name()); |
|
|
res.emplace_back(std::pair<uint64_t, uint64_t>(dep1Index, dep2Index)); |
|
|
res.emplace_back(std::pair<uint64_t, uint64_t>(dep1Index, dep2Index)); |
|
|
} else { |
|
|
} else { |
|
|
STORM_LOG_DEBUG("Static behavior: No conflict between " << dft.getElement(dep1Index)->name() << " and " << dft.getElement(dep2Index)->name()); |
|
|
|
|
|
|
|
|
STORM_LOG_TRACE("Static behavior: No conflict between " << dft.getElement(dep1Index)->name() << " and " << dft.getElement(dep2Index)->name()); |
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
@ -88,4 +88,4 @@ namespace storm { |
|
|
class FDEPConflictFinder<storm::RationalFunction>; |
|
|
class FDEPConflictFinder<storm::RationalFunction>; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
} |