|
|
@ -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."); |
|
|
|
} |
|
|
|