@ -114,6 +114,8 @@ namespace storm {
return this - > computeUntilProbabilities ( env , checkTask . substituteFormula ( formula . asUntilFormula ( ) ) ) ;
} else if ( formula . isGloballyFormula ( ) ) {
return this - > computeGloballyProbabilities ( env , checkTask . substituteFormula ( formula . asGloballyFormula ( ) ) ) ;
} else if ( formula . isNextFormula ( ) ) {
return this - > computeNextProbabilities ( env , checkTask . substituteFormula ( formula . asNextFormula ( ) ) ) ;
}
STORM_LOG_THROW ( false , storm : : exceptions : : InvalidArgumentException , " The given formula ' " < < formula < < " ' is invalid. " ) ;
}
@ -136,7 +138,6 @@ namespace storm {
std : : unique_ptr < CheckResult > rightResultPointer = this - > check ( env , pathFormula . getRightSubformula ( ) ) ;
ExplicitQualitativeCheckResult const & leftResult = leftResultPointer - > asExplicitQualitativeCheckResult ( ) ;
ExplicitQualitativeCheckResult const & rightResult = rightResultPointer - > asExplicitQualitativeCheckResult ( ) ;
storm : : solver : : SolveGoal < ValueType > foo ( this - > getModel ( ) , checkTask ) ;
auto ret = storm : : modelchecker : : helper : : SparseSmgRpatlHelper < ValueType > : : computeUntilProbabilities ( env , storm : : solver : : SolveGoal < ValueType > ( this - > getModel ( ) , checkTask ) , this - > getModel ( ) . getTransitionMatrix ( ) , this - > getModel ( ) . getBackwardTransitions ( ) , leftResult . getTruthValuesVector ( ) , rightResult . getTruthValuesVector ( ) , checkTask . isQualitativeSet ( ) , statesOfCoalition , checkTask . isProduceSchedulersSet ( ) , checkTask . getHint ( ) ) ;
std : : unique_ptr < CheckResult > result ( new ExplicitQuantitativeCheckResult < ValueType > ( std : : move ( ret . values ) ) ) ;
@ -160,7 +161,19 @@ namespace storm {
return result ;
}
template < typename SparseSmgModelType >
template < typename ModelType >
std : : unique_ptr < CheckResult > SparseSmgRpatlModelChecker < ModelType > : : computeNextProbabilities ( Environment const & env , CheckTask < storm : : logic : : NextFormula , ValueType > const & checkTask ) {
storm : : logic : : NextFormula const & pathFormula = checkTask . getFormula ( ) ;
STORM_LOG_THROW ( checkTask . isOptimizationDirectionSet ( ) , storm : : exceptions : : InvalidPropertyException , " Formula needs to specify whether minimal or maximal values are to be computed on nondeterministic model. " ) ;
std : : unique_ptr < CheckResult > subResultPointer = this - > check ( env , pathFormula . getSubformula ( ) ) ;
ExplicitQualitativeCheckResult const & subResult = subResultPointer - > asExplicitQualitativeCheckResult ( ) ;
auto ret = storm : : modelchecker : : helper : : SparseSmgRpatlHelper < ValueType > : : computeNextProbabilities ( env , storm : : solver : : SolveGoal < ValueType > ( this - > getModel ( ) , checkTask ) , this - > getModel ( ) . getTransitionMatrix ( ) , this - > getModel ( ) . getBackwardTransitions ( ) , subResult . getTruthValuesVector ( ) , checkTask . isQualitativeSet ( ) , statesOfCoalition , checkTask . isProduceSchedulersSet ( ) , checkTask . getHint ( ) ) ;
std : : unique_ptr < CheckResult > result ( new ExplicitQuantitativeCheckResult < ValueType > ( std : : move ( ret . values ) ) ) ;
return result ;
}
template < typename SparseSmgModelType >
std : : unique_ptr < CheckResult > SparseSmgRpatlModelChecker < SparseSmgModelType > : : computeLongRunAverageProbabilities ( Environment const & env , CheckTask < storm : : logic : : StateFormula , ValueType > const & checkTask ) {
STORM_LOG_THROW ( false , storm : : exceptions : : NotImplementedException , " NYI " ) ;
}