@ -50,14 +50,14 @@ namespace storm {
template < typename CValueType , typename std : : enable_if < ! storm : : NumberTraits < CValueType > : : SupportsExponential , int > : : type >
template < typename CValueType , typename std : : enable_if < ! storm : : NumberTraits < CValueType > : : SupportsExponential , int > : : type >
bool SparseMarkovAutomatonCslModelChecker < SparseMarkovAutomatonModelType > : : canHandleImplementation ( CheckTask < storm : : logic : : Formula , CValueType > const & checkTask ) const {
bool SparseMarkovAutomatonCslModelChecker < SparseMarkovAutomatonModelType > : : canHandleImplementation ( CheckTask < storm : : logic : : Formula , CValueType > const & checkTask ) const {
storm : : logic : : Formula const & formula = checkTask . getFormula ( ) ;
storm : : logic : : Formula const & formula = checkTask . getFormula ( ) ;
if ( formula . isInFragment ( storm : : logic : : prctl ( ) . setGloballyFormulasAllowed ( false ) . setNextFormulasAllowed ( false ) . setRewardOperatorsAllowed ( true ) . setReachabilityRewardFormulasAllowed ( true ) . setTotalRewardFormulasAllowed ( true ) . setTimeAllowed ( true ) . setLongRunAverageProbabilitiesAllowed ( true ) . setLongRunAverageRewardFormulasAllowed ( true ) . setTimeBoundedUntilFormulasAllowed ( false ) . setCumulativeRewardFormulasAllowed ( false ) ) ) {
if ( formula . isInFragment ( storm : : logic : : prctl ( ) . setGloballyFormulasAllowed ( false ) . setNextFormulasAllowed ( false ) . setRewardOperatorsAllowed ( true ) . setReachabilityRewardFormulasAllowed ( true ) . setTotalRewardFormulasAllowed ( true ) . setTimeAllowed ( true ) . setLongRunAverageProbabilitiesAllowed ( true ) . setLongRunAverageRewardFormulasAllowed ( true ) . setTimeBoundedUntilFormulasAllowed ( false ) . setCumulativeRewardFormulasAllowed ( false ) . setInstantaneousFormulasAllowed ( false ) ) ) {
return true ;
return true ;
} else {
} else {
// Check whether we consider a multi-objective formula
// Check whether we consider a multi-objective formula
// For multi-objective model checking, each initial state requires an individual scheduler (in contrast to single objective model checking). Let's exclude multiple initial states.
// For multi-objective model checking, each initial state requires an individual scheduler (in contrast to single objective model checking). Let's exclude multiple initial states.
if ( this - > getModel ( ) . getInitialStates ( ) . getNumberOfSetBits ( ) > 1 ) return false ;
if ( this - > getModel ( ) . getInitialStates ( ) . getNumberOfSetBits ( ) > 1 ) return false ;
if ( ! checkTask . isOnlyInitialStatesRelevantSet ( ) ) return false ;
if ( ! checkTask . isOnlyInitialStatesRelevantSet ( ) ) return false ;
return formula . isInFragment ( storm : : logic : : multiObjective ( ) . setTimeAllowed ( true ) . setTimeBoundedUntilFormulasAllowed ( false ) . setCumulativeRewardFormulasAllowed ( false ) ) ;
return formula . isInFragment ( storm : : logic : : multiObjective ( ) . setTimeAllowed ( true ) . setTimeBoundedUntilFormulasAllowed ( false ) . setCumulativeRewardFormulasAllowed ( false ) . setInstantaneousFormulasAllowed ( false ) ) ;
}
}
}
}