@ -34,13 +34,13 @@ namespace storm {
}
template < typename SparseDtmcModelType >
bool SparseDtmcPrctlModelChecker < SparseDtmcModelType > : : canHandle ( CheckTask < storm : : logic : : Formula > const & checkTask ) const {
bool SparseDtmcPrctlModelChecker < SparseDtmcModelType > : : canHandle ( CheckTask < storm : : logic : : Formula , ValueType > const & checkTask ) const {
storm : : logic : : Formula const & formula = checkTask . getFormula ( ) ;
return formula . isInFragment ( storm : : logic : : prctl ( ) . setLongRunAverageRewardFormulasAllowed ( false ) . setLongRunAverageProbabilitiesAllowed ( true ) . setConditionalProbabilityFormulasAllowed ( true ) . setConditionalRewardFormulasAllowed ( true ) . setOnlyEventuallyFormuluasInConditionalFormulasAllowed ( true ) ) ;
}
template < typename SparseDtmcModelType >
std : : unique_ptr < CheckResult > SparseDtmcPrctlModelChecker < SparseDtmcModelType > : : computeBoundedUntilProbabilities ( CheckTask < storm : : logic : : BoundedUntilFormula > const & checkTask ) {
std : : unique_ptr < CheckResult > SparseDtmcPrctlModelChecker < SparseDtmcModelType > : : computeBoundedUntilProbabilities ( CheckTask < storm : : logic : : BoundedUntilFormula , ValueType > const & checkTask ) {
storm : : logic : : BoundedUntilFormula const & pathFormula = checkTask . getFormula ( ) ;
STORM_LOG_THROW ( pathFormula . hasDiscreteTimeBound ( ) , storm : : exceptions : : InvalidPropertyException , " Formula needs to have a discrete time bound. " ) ;
std : : unique_ptr < CheckResult > leftResultPointer = this - > check ( pathFormula . getLeftSubformula ( ) ) ;
@ -53,7 +53,7 @@ namespace storm {
}
template < typename SparseDtmcModelType >
std : : unique_ptr < CheckResult > SparseDtmcPrctlModelChecker < SparseDtmcModelType > : : computeNextProbabilities ( CheckTask < storm : : logic : : NextFormula > const & checkTask ) {
std : : unique_ptr < CheckResult > SparseDtmcPrctlModelChecker < SparseDtmcModelType > : : computeNextProbabilities ( CheckTask < storm : : logic : : NextFormula , ValueType > const & checkTask ) {
storm : : logic : : NextFormula const & pathFormula = checkTask . getFormula ( ) ;
std : : unique_ptr < CheckResult > subResultPointer = this - > check ( pathFormula . getSubformula ( ) ) ;
ExplicitQualitativeCheckResult const & subResult = subResultPointer - > asExplicitQualitativeCheckResult ( ) ;
@ -62,7 +62,7 @@ namespace storm {
}
template < typename SparseDtmcModelType >
std : : unique_ptr < CheckResult > SparseDtmcPrctlModelChecker < SparseDtmcModelType > : : computeUntilProbabilities ( CheckTask < storm : : logic : : UntilFormula > const & checkTask ) {
std : : unique_ptr < CheckResult > SparseDtmcPrctlModelChecker < SparseDtmcModelType > : : computeUntilProbabilities ( CheckTask < storm : : logic : : UntilFormula , ValueType > const & checkTask ) {
storm : : logic : : UntilFormula const & pathFormula = checkTask . getFormula ( ) ;
std : : unique_ptr < CheckResult > leftResultPointer = this - > check ( pathFormula . getLeftSubformula ( ) ) ;
std : : unique_ptr < CheckResult > rightResultPointer = this - > check ( pathFormula . getRightSubformula ( ) ) ;
@ -73,7 +73,7 @@ namespace storm {
}
template < typename SparseDtmcModelType >
std : : unique_ptr < CheckResult > SparseDtmcPrctlModelChecker < SparseDtmcModelType > : : computeGloballyProbabilities ( CheckTask < storm : : logic : : GloballyFormula > const & checkTask ) {
std : : unique_ptr < CheckResult > SparseDtmcPrctlModelChecker < SparseDtmcModelType > : : computeGloballyProbabilities ( CheckTask < storm : : logic : : GloballyFormula , ValueType > const & checkTask ) {
storm : : logic : : GloballyFormula const & pathFormula = checkTask . getFormula ( ) ;
std : : unique_ptr < CheckResult > subResultPointer = this - > check ( pathFormula . getSubformula ( ) ) ;
ExplicitQualitativeCheckResult const & subResult = subResultPointer - > asExplicitQualitativeCheckResult ( ) ;
@ -82,7 +82,7 @@ namespace storm {
}
template < typename SparseDtmcModelType >
std : : unique_ptr < CheckResult > SparseDtmcPrctlModelChecker < SparseDtmcModelType > : : computeCumulativeRewards ( storm : : logic : : RewardMeasureType rewardMeasureType , CheckTask < storm : : logic : : CumulativeRewardFormula > const & checkTask ) {
std : : unique_ptr < CheckResult > SparseDtmcPrctlModelChecker < SparseDtmcModelType > : : computeCumulativeRewards ( storm : : logic : : RewardMeasureType rewardMeasureType , CheckTask < storm : : logic : : CumulativeRewardFormula , ValueType > const & checkTask ) {
storm : : logic : : CumulativeRewardFormula const & rewardPathFormula = checkTask . getFormula ( ) ;
STORM_LOG_THROW ( rewardPathFormula . hasDiscreteTimeBound ( ) , storm : : exceptions : : InvalidPropertyException , " Formula needs to have a discrete time bound. " ) ;
std : : vector < ValueType > numericResult = storm : : modelchecker : : helper : : SparseDtmcPrctlHelper < ValueType > : : computeCumulativeRewards ( this - > getModel ( ) . getTransitionMatrix ( ) , checkTask . isRewardModelSet ( ) ? this - > getModel ( ) . getRewardModel ( checkTask . getRewardModel ( ) ) : this - > getModel ( ) . getRewardModel ( " " ) , rewardPathFormula . getDiscreteTimeBound ( ) , * linearEquationSolverFactory ) ;
@ -90,7 +90,7 @@ namespace storm {
}
template < typename SparseDtmcModelType >
std : : unique_ptr < CheckResult > SparseDtmcPrctlModelChecker < SparseDtmcModelType > : : computeInstantaneousRewards ( storm : : logic : : RewardMeasureType rewardMeasureType , CheckTask < storm : : logic : : InstantaneousRewardFormula > const & checkTask ) {
std : : unique_ptr < CheckResult > SparseDtmcPrctlModelChecker < SparseDtmcModelType > : : computeInstantaneousRewards ( storm : : logic : : RewardMeasureType rewardMeasureType , CheckTask < storm : : logic : : InstantaneousRewardFormula , ValueType > const & checkTask ) {
storm : : logic : : InstantaneousRewardFormula const & rewardPathFormula = checkTask . getFormula ( ) ;
STORM_LOG_THROW ( rewardPathFormula . hasDiscreteTimeBound ( ) , storm : : exceptions : : InvalidPropertyException , " Formula needs to have a discrete time bound. " ) ;
std : : vector < ValueType > numericResult = storm : : modelchecker : : helper : : SparseDtmcPrctlHelper < ValueType > : : computeInstantaneousRewards ( this - > getModel ( ) . getTransitionMatrix ( ) , checkTask . isRewardModelSet ( ) ? this - > getModel ( ) . getRewardModel ( checkTask . getRewardModel ( ) ) : this - > getModel ( ) . getRewardModel ( " " ) , rewardPathFormula . getDiscreteTimeBound ( ) , * linearEquationSolverFactory ) ;
@ -98,7 +98,7 @@ namespace storm {
}
template < typename SparseDtmcModelType >
std : : unique_ptr < CheckResult > SparseDtmcPrctlModelChecker < SparseDtmcModelType > : : computeReachabilityRewards ( storm : : logic : : RewardMeasureType rewardMeasureType , CheckTask < storm : : logic : : EventuallyFormula > const & checkTask ) {
std : : unique_ptr < CheckResult > SparseDtmcPrctlModelChecker < SparseDtmcModelType > : : computeReachabilityRewards ( storm : : logic : : RewardMeasureType rewardMeasureType , CheckTask < storm : : logic : : EventuallyFormula , ValueType > const & checkTask ) {
storm : : logic : : EventuallyFormula const & eventuallyFormula = checkTask . getFormula ( ) ;
std : : unique_ptr < CheckResult > subResultPointer = this - > check ( eventuallyFormula . getSubformula ( ) ) ;
ExplicitQualitativeCheckResult const & subResult = subResultPointer - > asExplicitQualitativeCheckResult ( ) ;
@ -107,7 +107,7 @@ namespace storm {
}
template < typename SparseDtmcModelType >
std : : unique_ptr < CheckResult > SparseDtmcPrctlModelChecker < SparseDtmcModelType > : : computeLongRunAverageProbabilities ( CheckTask < storm : : logic : : StateFormula > const & checkTask ) {
std : : unique_ptr < CheckResult > SparseDtmcPrctlModelChecker < SparseDtmcModelType > : : computeLongRunAverageProbabilities ( CheckTask < storm : : logic : : StateFormula , ValueType > const & checkTask ) {
storm : : logic : : StateFormula const & stateFormula = checkTask . getFormula ( ) ;
std : : unique_ptr < CheckResult > subResultPointer = this - > check ( stateFormula ) ;
ExplicitQualitativeCheckResult const & subResult = subResultPointer - > asExplicitQualitativeCheckResult ( ) ;
@ -116,7 +116,7 @@ namespace storm {
}
template < typename SparseDtmcModelType >
std : : unique_ptr < CheckResult > SparseDtmcPrctlModelChecker < SparseDtmcModelType > : : computeConditionalProbabilities ( CheckTask < storm : : logic : : ConditionalFormula > const & checkTask ) {
std : : unique_ptr < CheckResult > SparseDtmcPrctlModelChecker < SparseDtmcModelType > : : computeConditionalProbabilities ( CheckTask < storm : : logic : : ConditionalFormula , ValueType > const & checkTask ) {
storm : : logic : : ConditionalFormula const & conditionalFormula = checkTask . getFormula ( ) ;
STORM_LOG_THROW ( conditionalFormula . getSubformula ( ) . isEventuallyFormula ( ) , storm : : exceptions : : InvalidPropertyException , " Illegal conditional probability formula. " ) ;
STORM_LOG_THROW ( conditionalFormula . getConditionFormula ( ) . isEventuallyFormula ( ) , storm : : exceptions : : InvalidPropertyException , " Illegal conditional probability formula. " ) ;
@ -131,7 +131,7 @@ namespace storm {
}
template < typename SparseDtmcModelType >
std : : unique_ptr < CheckResult > SparseDtmcPrctlModelChecker < SparseDtmcModelType > : : computeConditionalRewards ( storm : : logic : : RewardMeasureType rewardMeasureType , CheckTask < storm : : logic : : ConditionalFormula > const & checkTask ) {
std : : unique_ptr < CheckResult > SparseDtmcPrctlModelChecker < SparseDtmcModelType > : : computeConditionalRewards ( storm : : logic : : RewardMeasureType rewardMeasureType , CheckTask < storm : : logic : : ConditionalFormula , ValueType > const & checkTask ) {
storm : : logic : : ConditionalFormula const & conditionalFormula = checkTask . getFormula ( ) ;
STORM_LOG_THROW ( conditionalFormula . getSubformula ( ) . isReachabilityRewardFormula ( ) , storm : : exceptions : : InvalidPropertyException , " Illegal conditional probability formula. " ) ;
STORM_LOG_THROW ( conditionalFormula . getConditionFormula ( ) . isEventuallyFormula ( ) , storm : : exceptions : : InvalidPropertyException , " Illegal conditional probability formula. " ) ;