|
@ -617,11 +617,6 @@ namespace storm { |
|
|
STORM_LOG_DEBUG( |
|
|
STORM_LOG_DEBUG( |
|
|
"Check " << dft.getElement(dep1Index)->name() << " and " << dft.getElement(dep2Index)->name()); |
|
|
"Check " << dft.getElement(dep1Index)->name() << " and " << dft.getElement(dep2Index)->name()); |
|
|
andConstr.clear(); |
|
|
andConstr.clear(); |
|
|
// Both FDEPs were triggered before dependent elements have failed
|
|
|
|
|
|
andConstr.push_back(std::make_shared<IsLess>( |
|
|
|
|
|
timePointVariables.at(dep1Index), dependencyVariables.at(dep1Index))); |
|
|
|
|
|
andConstr.push_back(std::make_shared<IsLess>( |
|
|
|
|
|
timePointVariables.at(dep2Index), dependencyVariables.at(dep2Index))); |
|
|
|
|
|
// AND FDEP1 is triggered before FDEP2 is resolved
|
|
|
// AND FDEP1 is triggered before FDEP2 is resolved
|
|
|
andConstr.push_back(std::make_shared<IsGreaterEqual>( |
|
|
andConstr.push_back(std::make_shared<IsGreaterEqual>( |
|
|
timePointVariables.at(dep1Index), timePointVariables.at(dep2Index))); |
|
|
timePointVariables.at(dep1Index), timePointVariables.at(dep2Index))); |
|
@ -630,11 +625,6 @@ namespace storm { |
|
|
std::shared_ptr<SmtConstraint> betweenConstr1 = std::make_shared<And>(andConstr); |
|
|
std::shared_ptr<SmtConstraint> betweenConstr1 = std::make_shared<And>(andConstr); |
|
|
|
|
|
|
|
|
andConstr.clear(); |
|
|
andConstr.clear(); |
|
|
// Both FDEPs were triggered before dependent elements have failed
|
|
|
|
|
|
andConstr.push_back(std::make_shared<IsLess>( |
|
|
|
|
|
timePointVariables.at(dep1Index), dependencyVariables.at(dep1Index))); |
|
|
|
|
|
andConstr.push_back(std::make_shared<IsLess>( |
|
|
|
|
|
timePointVariables.at(dep2Index), dependencyVariables.at(dep2Index))); |
|
|
|
|
|
// AND FDEP2 is triggered before FDEP1 is resolved
|
|
|
// AND FDEP2 is triggered before FDEP1 is resolved
|
|
|
andConstr.push_back(std::make_shared<IsGreaterEqual>( |
|
|
andConstr.push_back(std::make_shared<IsGreaterEqual>( |
|
|
timePointVariables.at(dep2Index), timePointVariables.at(dep1Index))); |
|
|
timePointVariables.at(dep2Index), timePointVariables.at(dep1Index))); |
|
@ -646,7 +636,17 @@ namespace storm { |
|
|
// Either one of the above constraints holds
|
|
|
// Either one of the above constraints holds
|
|
|
orConstr.push_back(betweenConstr1); |
|
|
orConstr.push_back(betweenConstr1); |
|
|
orConstr.push_back(betweenConstr2); |
|
|
orConstr.push_back(betweenConstr2); |
|
|
std::shared_ptr<SmtConstraint> checkConstr = std::make_shared<Or>(orConstr); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Both FDEPs were triggered before dependent elements have failed
|
|
|
|
|
|
andConstr.clear(); |
|
|
|
|
|
andConstr.push_back(std::make_shared<IsLess>( |
|
|
|
|
|
timePointVariables.at(dep1Index), dependencyVariables.at(dep1Index))); |
|
|
|
|
|
andConstr.push_back(std::make_shared<IsLess>( |
|
|
|
|
|
timePointVariables.at(dep2Index), dependencyVariables.at(dep2Index))); |
|
|
|
|
|
andConstr.push_back(std::make_shared<Or>(orConstr)); |
|
|
|
|
|
|
|
|
|
|
|
std::shared_ptr<SmtConstraint> checkConstr = std::make_shared<And>(andConstr); |
|
|
|
|
|
|
|
|
std::shared_ptr<storm::expressions::ExpressionManager> manager = solver->getManager().getSharedPointer(); |
|
|
std::shared_ptr<storm::expressions::ExpressionManager> manager = solver->getManager().getSharedPointer(); |
|
|
solver->push(); |
|
|
solver->push(); |
|
|
solver->add(checkConstr->toExpression(varNames, manager)); |
|
|
solver->add(checkConstr->toExpression(varNames, manager)); |