Browse Source

MultiobjectivePreprocessor: Fixed removal of irrelevant states.

tempestpy_adaptions
Tim Quatmann 5 years ago
parent
commit
9e510560c9
  1. 6
      src/storm/modelchecker/multiobjective/preprocessing/SparseMultiObjectivePreprocessor.cpp

6
src/storm/modelchecker/multiobjective/preprocessing/SparseMultiObjectivePreprocessor.cpp

@ -119,10 +119,12 @@ namespace storm {
absorbingStatesForSubformula = storm::utility::graph::performProb0A(backwardTransitions, lhs, rhs);
absorbingStatesForSubformula |= getOnlyReachableViaPhi(*model, ~lhs | rhs);
} else if (pathFormula.isBoundedUntilFormula()) {
if (!pathFormula.asBoundedUntilFormula().hasLowerBound()) {
auto lhs = mc.check(pathFormula.asBoundedUntilFormula().getLeftSubformula())->asExplicitQualitativeCheckResult().getTruthValuesVector();
auto rhs = mc.check(pathFormula.asBoundedUntilFormula().getRightSubformula())->asExplicitQualitativeCheckResult().getTruthValuesVector();
absorbingStatesForSubformula = storm::utility::graph::performProb0A(backwardTransitions, lhs, rhs);
if (pathFormula.asBoundedUntilFormula().hasLowerBound()) {
absorbingStatesForSubformula |= getOnlyReachableViaPhi(*model, ~lhs);
} else {
absorbingStatesForSubformula |= getOnlyReachableViaPhi(*model, ~lhs | rhs);
}
} else if (pathFormula.isGloballyFormula()){
@ -160,7 +162,7 @@ namespace storm {
} else if (opFormula->isTimeOperatorFormula()) {
if (pathFormula.isEventuallyFormula()){
auto phi = mc.check(pathFormula.asEventuallyFormula().getSubformula())->asExplicitQualitativeCheckResult().getTruthValuesVector();
absorbingStatesForSubformula |= getOnlyReachableViaPhi(*model, phi);
absorbingStatesForSubformula = getOnlyReachableViaPhi(*model, phi);
} else {
STORM_LOG_THROW(false, storm::exceptions::InvalidPropertyException, "The subformula of " << pathFormula << " is not supported.");
}

Loading…
Cancel
Save