@ -108,6 +108,7 @@ namespace storm {
} else {
numericResult = helper . compute ( env , storm : : solver : : SolveGoal < ValueType > ( this - > getModel ( ) , checkTask ) , this - > getModel ( ) . getTransitionMatrix ( ) , this - > getModel ( ) . getBackwardTransitions ( ) , leftResult . getTruthValuesVector ( ) , rightResult . getTruthValuesVector ( ) , pathFormula . getNonStrictLowerBound < uint64_t > ( ) , pathFormula . getNonStrictUpperBound < uint64_t > ( ) , checkTask . getHint ( ) , resultMaybeStates , choiceValues ) ;
}
STORM_LOG_DEBUG ( numericResult ) ;
return std : : unique_ptr < CheckResult > ( new ExplicitQuantitativeCheckResult < ValueType > ( std : : move ( numericResult ) ) ) ;
}
}
@ -119,6 +120,7 @@ namespace storm {
std : : unique_ptr < CheckResult > subResultPointer = this - > check ( env , pathFormula . getSubformula ( ) ) ;
ExplicitQualitativeCheckResult const & subResult = subResultPointer - > asExplicitQualitativeCheckResult ( ) ;
auto ret = storm : : modelchecker : : helper : : SparseMdpPrctlHelper < ValueType > : : computeNextProbabilities ( env , storm : : solver : : SolveGoal < ValueType > ( this - > getModel ( ) , checkTask ) , checkTask . getOptimizationDirection ( ) , this - > getModel ( ) . getTransitionMatrix ( ) , subResult . getTruthValuesVector ( ) ) ;
STORM_LOG_DEBUG ( ret . values ) ;
std : : unique_ptr < CheckResult > result ( new ExplicitQuantitativeCheckResult < ValueType > ( std : : move ( ret . values ) ) ) ;
if ( checkTask . isShieldingTask ( ) ) {
tempest : : shields : : createShield < ValueType > ( std : : make_shared < storm : : models : : sparse : : Mdp < ValueType > > ( this - > getModel ( ) ) , std : : move ( ret . choiceValues ) , checkTask . getShieldingExpression ( ) , checkTask . getOptimizationDirection ( ) , std : : move ( ret . maybeStates ) , storm : : storage : : BitVector ( ret . maybeStates . size ( ) , true ) ) ;
@ -137,6 +139,7 @@ namespace storm {
ExplicitQualitativeCheckResult const & leftResult = leftResultPointer - > asExplicitQualitativeCheckResult ( ) ;
ExplicitQualitativeCheckResult const & rightResult = rightResultPointer - > asExplicitQualitativeCheckResult ( ) ;
auto ret = storm : : modelchecker : : helper : : SparseMdpPrctlHelper < ValueType > : : computeUntilProbabilities ( env , storm : : solver : : SolveGoal < ValueType > ( this - > getModel ( ) , checkTask ) , this - > getModel ( ) . getTransitionMatrix ( ) , this - > getModel ( ) . getBackwardTransitions ( ) , leftResult . getTruthValuesVector ( ) , rightResult . getTruthValuesVector ( ) , checkTask . isQualitativeSet ( ) , checkTask . isProduceSchedulersSet ( ) , checkTask . getHint ( ) ) ;
STORM_LOG_DEBUG ( ret . values ) ;
std : : unique_ptr < CheckResult > result ( new ExplicitQuantitativeCheckResult < ValueType > ( std : : move ( ret . values ) ) ) ;
if ( checkTask . isShieldingTask ( ) ) {
tempest : : shields : : createShield < ValueType > ( std : : make_shared < storm : : models : : sparse : : Mdp < ValueType > > ( this - > getModel ( ) ) , std : : move ( ret . choiceValues ) , checkTask . getShieldingExpression ( ) , checkTask . getOptimizationDirection ( ) , std : : move ( ret . maybeStates ) , storm : : storage : : BitVector ( ret . maybeStates . size ( ) , true ) ) ;
@ -153,9 +156,11 @@ namespace storm {
std : : unique_ptr < CheckResult > subResultPointer = this - > check ( env , pathFormula . getSubformula ( ) ) ;
ExplicitQualitativeCheckResult const & subResult = subResultPointer - > asExplicitQualitativeCheckResult ( ) ;
auto ret = storm : : modelchecker : : helper : : SparseMdpPrctlHelper < ValueType > : : computeGloballyProbabilities ( env , storm : : solver : : SolveGoal < ValueType > ( this - > getModel ( ) , checkTask ) , this - > getModel ( ) . getTransitionMatrix ( ) , this - > getModel ( ) . getBackwardTransitions ( ) , subResult . getTruthValuesVector ( ) , checkTask . isQualitativeSet ( ) , checkTask . isProduceSchedulersSet ( ) ) ;
STORM_LOG_DEBUG ( ret . values ) ;
std : : unique_ptr < CheckResult > result ( new ExplicitQuantitativeCheckResult < ValueType > ( std : : move ( ret . values ) ) ) ;
if ( checkTask . isShieldingTask ( ) ) {
tempest : : shields : : createShield < ValueType > ( std : : make_shared < storm : : models : : sparse : : Mdp < ValueType > > ( this - > getModel ( ) ) , std : : move ( ret . choiceValues ) , checkTask . getShieldingExpression ( ) , checkTask . getOptimizationDirection ( ) , std : : move ( ret . maybeStates ) , storm : : storage : : BitVector ( ret . maybeStates . size ( ) , true ) ) ;
STORM_LOG_DEBUG ( ret . choiceValues ) ;
tempest : : shields : : createShield < ValueType > ( std : : make_shared < storm : : models : : sparse : : Mdp < ValueType > > ( this - > getModel ( ) ) , std : : move ( ret . choiceValues ) , checkTask . getShieldingExpression ( ) , checkTask . getOptimizationDirection ( ) , subResult . getTruthValuesVector ( ) , storm : : storage : : BitVector ( ret . maybeStates . size ( ) , true ) ) ;
} else if ( checkTask . isProduceSchedulersSet ( ) & & ret . scheduler ) {
result - > asExplicitQuantitativeCheckResult < ValueType > ( ) . setScheduler ( std : : move ( ret . scheduler ) ) ;
}