#ifndef STORM_MODELCHECKER_SPARSECTMCCSLMODELCHECKER_H_ #define STORM_MODELCHECKER_SPARSECTMCCSLMODELCHECKER_H_ #include "storm/modelchecker/propositional/SparsePropositionalModelChecker.h" #include "storm/models/sparse/Ctmc.h" #include "storm/solver/LinearEquationSolver.h" #include "storm/utility/NumberTraits.h" namespace storm { namespace modelchecker { template class SparseCtmcCslModelChecker : public SparsePropositionalModelChecker { public: typedef typename SparseCtmcModelType::ValueType ValueType; typedef typename SparseCtmcModelType::RewardModelType RewardModelType; explicit SparseCtmcCslModelChecker(SparseCtmcModelType const& model); // The implemented methods of the AbstractModelChecker interface. virtual bool canHandle(CheckTask const& checkTask) const override; virtual std::unique_ptr computeBoundedUntilProbabilities(Environment const& env, CheckTask const& checkTask) override; virtual std::unique_ptr computeNextProbabilities(Environment const& env, CheckTask const& checkTask) override; virtual std::unique_ptr computeUntilProbabilities(Environment const& env, CheckTask const& checkTask) override; virtual std::unique_ptr computeLongRunAverageProbabilities(Environment const& env, CheckTask const& checkTask) override; virtual std::unique_ptr computeReachabilityTimes(Environment const& env, storm::logic::RewardMeasureType rewardMeasureType, CheckTask const& checkTask) override; virtual std::unique_ptr computeLongRunAverageRewards(Environment const& env, storm::logic::RewardMeasureType rewardMeasureType, CheckTask const& checkTask) override; virtual std::unique_ptr computeCumulativeRewards(Environment const& env, storm::logic::RewardMeasureType rewardMeasureType, CheckTask const& checkTask) override; virtual std::unique_ptr computeInstantaneousRewards(Environment const& env, storm::logic::RewardMeasureType rewardMeasureType, CheckTask const& checkTask) override; virtual std::unique_ptr computeReachabilityRewards(Environment const& env, storm::logic::RewardMeasureType rewardMeasureType, CheckTask const& checkTask) override; virtual std::unique_ptr computeTotalRewards(Environment const& env, storm::logic::RewardMeasureType rewardMeasureType, CheckTask const& checkTask) override; /*! * Compute transient probabilities for all states. */ std::vector computeAllTransientProbabilities(Environment const& env, CheckTask const& checkTask); private: template::SupportsExponential, int>::type = 0> bool canHandleImplementation(CheckTask const& checkTask) const; template::SupportsExponential, int>::type = 0> bool canHandleImplementation(CheckTask const& checkTask) const; }; } // namespace modelchecker } // namespace storm #endif /* STORM_MODELCHECKER_SPARSECTMCCSLMODELCHECKER_H_ */