23namespace modelchecker {
 
   24template<
typename ModelType>
 
   29template<
typename ModelType>
 
   33                                    .setLongRunAverageRewardFormulasAllowed(
true)
 
   34                                    .setLongRunAverageProbabilitiesAllowed(
true)
 
   35                                    .setTimeOperatorsAllowed(
true)
 
   36                                    .setReachbilityTimeFormulasAllowed(
true)
 
   37                                    .setRewardAccumulationAllowed(
true));
 
 
   40template<
typename ModelType>
 
   42    return canHandleStatic(checkTask);
 
 
   45template<
typename ModelType>
 
   49    std::unique_ptr<CheckResult> leftResultPointer = this->check(env, pathFormula.
getLeftSubformula());
 
   50    std::unique_ptr<CheckResult> rightResultPointer = this->check(env, pathFormula.
getRightSubformula());
 
   54        env, this->getModel(), this->getModel().getTransitionMatrix(), leftResult.
getTruthValuesVector(), rightResult.getTruthValuesVector(),
 
 
   58template<
typename ModelType>
 
   62    std::unique_ptr<CheckResult> subResultPointer = this->check(env, pathFormula.
getSubformula());
 
 
   68template<
typename ModelType>
 
   72    std::unique_ptr<CheckResult> subResultPointer = this->check(env, pathFormula.
getSubformula());
 
   75        env, this->getModel(), this->getModel().getTransitionMatrix(), subResult.
getTruthValuesVector());
 
 
   78template<
typename ModelType>
 
   83                    "Formula needs to have (a single) upper time bound, and no lower bound.");
 
   85    std::unique_ptr<CheckResult> leftResultPointer = this->check(env, pathFormula.
getLeftSubformula());
 
   86    std::unique_ptr<CheckResult> rightResultPointer = this->check(env, pathFormula.
getRightSubformula());
 
   90        env, this->getModel(), this->getModel().getTransitionMatrix(), leftResult.
getTruthValuesVector(), rightResult.getTruthValuesVector(),
 
 
   94template<
typename ModelType>
 
  101        env, this->getModel(), this->getModel().getTransitionMatrix(), rewardModel.get(), rewardPathFormula.
getNonStrictBound<uint64_t>());
 
 
  104template<
typename ModelType>
 
  108    STORM_LOG_THROW(rewardPathFormula.
hasIntegerBound(), storm::exceptions::InvalidPropertyException, 
"Formula needs to have a discrete time bound.");
 
  110        env, this->getModel(), this->getModel().getTransitionMatrix(),
 
  112        rewardPathFormula.
getBound<uint64_t>());
 
 
  115template<
typename ModelType>
 
  119    std::unique_ptr<CheckResult> subResultPointer = this->check(env, eventuallyFormula.
getSubformula());
 
 
  126template<
typename ModelType>
 
  130    std::unique_ptr<CheckResult> subResultPointer = this->check(env, eventuallyFormula.
getSubformula());
 
 
  137template<
typename ModelType>
 
  141    std::unique_ptr<CheckResult> subResultPointer = this->check(env, stateFormula);
 
 
  149template<
typename ModelType>
 
SymbolicQualitativeCheckResult< Type > & asSymbolicQualitativeCheckResult()
 
bool isRewardModelSet() const
Retrieves whether a reward model was set.
 
bool isQualitativeSet() const
Retrieves whether the computation only needs to be performed qualitatively, because the values will o...
 
std::string const & getRewardModel() const
Retrieves the reward model over which to perform the checking (if set).
 
FormulaType const & getFormula() const
Retrieves the formula from this task.
 
virtual std::unique_ptr< CheckResult > computeNextProbabilities(Environment const &env, CheckTask< storm::logic::NextFormula, ValueType > const &checkTask) override
 
virtual std::unique_ptr< CheckResult > computeReachabilityRewards(Environment const &env, CheckTask< storm::logic::EventuallyFormula, ValueType > const &checkTask) override
 
virtual std::unique_ptr< CheckResult > computeCumulativeRewards(Environment const &env, CheckTask< storm::logic::CumulativeRewardFormula, ValueType > const &checkTask) override
 
virtual std::unique_ptr< CheckResult > computeGloballyProbabilities(Environment const &env, CheckTask< storm::logic::GloballyFormula, ValueType > const &checkTask) override
 
static bool canHandleStatic(CheckTask< storm::logic::Formula, ValueType > const &checkTask)
Returns false, if this task can certainly not be handled by this model checker (independent of the co...
 
virtual std::unique_ptr< CheckResult > computeLongRunAverageProbabilities(Environment const &env, CheckTask< storm::logic::StateFormula, ValueType > const &checkTask) override
 
virtual std::unique_ptr< CheckResult > computeUntilProbabilities(Environment const &env, CheckTask< storm::logic::UntilFormula, ValueType > const &checkTask) override
 
virtual bool canHandle(CheckTask< storm::logic::Formula, ValueType > const &checkTask) const override
 
virtual std::unique_ptr< CheckResult > computeReachabilityTimes(Environment const &env, CheckTask< storm::logic::EventuallyFormula, ValueType > const &checkTask) override
 
virtual std::unique_ptr< CheckResult > computeBoundedUntilProbabilities(Environment const &env, CheckTask< storm::logic::BoundedUntilFormula, ValueType > const &checkTask) override
 
virtual std::unique_ptr< CheckResult > computeLongRunAverageRewards(Environment const &env, CheckTask< storm::logic::LongRunAverageRewardFormula, ValueType > const &checkTask) override
 
virtual std::unique_ptr< CheckResult > computeInstantaneousRewards(Environment const &env, CheckTask< storm::logic::InstantaneousRewardFormula, ValueType > const &checkTask) override
 
HybridDtmcPrctlModelChecker(ModelType const &model)
 
storm::dd::Bdd< Type > const & getTruthValuesVector() const
 
static std::unique_ptr< CheckResult > computeReachabilityTimes(Environment const &env, storm::models::symbolic::Model< DdType, ValueType > const &model, storm::dd::Add< DdType, ValueType > const &transitionMatrix, storm::dd::Bdd< DdType > const &targetStates, bool qualitative)
 
static std::unique_ptr< CheckResult > computeInstantaneousRewards(Environment const &env, storm::models::symbolic::Model< DdType, ValueType > const &model, storm::dd::Add< DdType, ValueType > const &transitionMatrix, RewardModelType const &rewardModel, uint_fast64_t stepBound)
 
static std::unique_ptr< CheckResult > computeReachabilityRewards(Environment const &env, storm::models::symbolic::Model< DdType, ValueType > const &model, storm::dd::Add< DdType, ValueType > const &transitionMatrix, RewardModelType const &rewardModel, storm::dd::Bdd< DdType > const &targetStates, bool qualitative)
 
static std::unique_ptr< CheckResult > computeNextProbabilities(Environment const &env, storm::models::symbolic::Model< DdType, ValueType > const &model, storm::dd::Add< DdType, ValueType > const &transitionMatrix, storm::dd::Bdd< DdType > const &nextStates)
 
static std::unique_ptr< CheckResult > computeGloballyProbabilities(Environment const &env, storm::models::symbolic::Model< DdType, ValueType > const &model, storm::dd::Add< DdType, ValueType > const &transitionMatrix, storm::dd::Bdd< DdType > const &psiStates, bool qualitative)
 
static std::unique_ptr< CheckResult > computeBoundedUntilProbabilities(Environment const &env, storm::models::symbolic::Model< DdType, ValueType > const &model, storm::dd::Add< DdType, ValueType > const &transitionMatrix, storm::dd::Bdd< DdType > const &phiStates, storm::dd::Bdd< DdType > const &psiStates, uint_fast64_t stepBound)
 
static std::unique_ptr< CheckResult > computeCumulativeRewards(Environment const &env, storm::models::symbolic::Model< DdType, ValueType > const &model, storm::dd::Add< DdType, ValueType > const &transitionMatrix, RewardModelType const &rewardModel, uint_fast64_t stepBound)
 
static std::unique_ptr< CheckResult > computeUntilProbabilities(Environment const &env, storm::models::symbolic::Model< DdType, ValueType > const &model, storm::dd::Add< DdType, ValueType > const &transitionMatrix, storm::dd::Bdd< DdType > const &phiStates, storm::dd::Bdd< DdType > const &psiStates, bool qualitative)
 
Helper class for model checking queries that depend on the long run behavior of the (nondeterministic...
 
std::unique_ptr< HybridQuantitativeCheckResult< DdType, ValueType > > computeLongRunAverageRewards(Environment const &env, storm::models::symbolic::StandardRewardModel< DdType, ValueType > const &rewardModel)
Computes the long run average rewards, i.e., the average reward collected per time unit.
 
#define STORM_LOG_THROW(cond, exception, message)
 
FragmentSpecification prctl()
 
void setInformationFromCheckTaskDeterministic(HelperType &helper, storm::modelchecker::CheckTask< FormulaType, typename ModelType::ValueType > const &checkTask, ModelType const &model)
Forwards relevant information stored in the given CheckTask to the given helper.
 
FilteredRewardModel< RewardModelType > createFilteredRewardModel(RewardModelType const &baseRewardModel, storm::logic::RewardAccumulation const &acc, bool isDiscreteTimeModel)