|
@ -7,6 +7,7 @@ |
|
|
#include "utility/OsDetection.h" |
|
|
#include "utility/OsDetection.h" |
|
|
|
|
|
|
|
|
#include "src/storage/sparse/StateType.h" |
|
|
#include "src/storage/sparse/StateType.h" |
|
|
|
|
|
#include "src/storage/PartialScheduler.h" |
|
|
#include "src/models/sparse/NondeterministicModel.h" |
|
|
#include "src/models/sparse/NondeterministicModel.h" |
|
|
#include "src/models/sparse/DeterministicModel.h" |
|
|
#include "src/models/sparse/DeterministicModel.h" |
|
|
#include "src/storage/dd/DdType.h" |
|
|
#include "src/storage/dd/DdType.h" |
|
@ -49,6 +50,7 @@ namespace storm { |
|
|
*/ |
|
|
*/ |
|
|
template<typename T> |
|
|
template<typename T> |
|
|
storm::storage::BitVector getReachableStates(storm::storage::SparseMatrix<T> const& transitionMatrix, storm::storage::BitVector const& initialStates, storm::storage::BitVector const& constraintStates, storm::storage::BitVector const& targetStates); |
|
|
storm::storage::BitVector getReachableStates(storm::storage::SparseMatrix<T> const& transitionMatrix, storm::storage::BitVector const& initialStates, storm::storage::BitVector const& constraintStates, storm::storage::BitVector const& targetStates); |
|
|
|
|
|
|
|
|
/*! |
|
|
/*! |
|
|
* Performs a breadth-first search through the underlying graph structure to compute the distance from all |
|
|
* Performs a breadth-first search through the underlying graph structure to compute the distance from all |
|
|
* states to the starting states of the search. |
|
|
* states to the starting states of the search. |
|
@ -74,6 +76,7 @@ namespace storm { |
|
|
*/ |
|
|
*/ |
|
|
template <typename T> |
|
|
template <typename T> |
|
|
storm::storage::BitVector performProbGreater0(storm::storage::SparseMatrix<T> const& backwardTransitions, storm::storage::BitVector const& phiStates, storm::storage::BitVector const& psiStates, bool useStepBound = false, uint_fast64_t maximalSteps = 0); |
|
|
storm::storage::BitVector performProbGreater0(storm::storage::SparseMatrix<T> const& backwardTransitions, storm::storage::BitVector const& phiStates, storm::storage::BitVector const& psiStates, bool useStepBound = false, uint_fast64_t maximalSteps = 0); |
|
|
|
|
|
|
|
|
/*! |
|
|
/*! |
|
|
* Computes the set of states of the given model for which all paths lead to |
|
|
* Computes the set of states of the given model for which all paths lead to |
|
|
* the given set of target states and only visit states from the filter set |
|
|
* the given set of target states and only visit states from the filter set |
|
@ -132,7 +135,6 @@ namespace storm { |
|
|
template <typename T> |
|
|
template <typename T> |
|
|
std::pair<storm::storage::BitVector, storm::storage::BitVector> performProb01(storm::storage::SparseMatrix<T> const& backwardTransitions, storm::storage::BitVector const& phiStates, storm::storage::BitVector const& psiStates); |
|
|
std::pair<storm::storage::BitVector, storm::storage::BitVector> performProb01(storm::storage::SparseMatrix<T> const& backwardTransitions, storm::storage::BitVector const& phiStates, storm::storage::BitVector const& psiStates); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*! |
|
|
/*! |
|
|
* Computes the set of states that has a positive probability of reaching psi states after only passing |
|
|
* Computes the set of states that has a positive probability of reaching psi states after only passing |
|
|
* through phi states before. |
|
|
* through phi states before. |
|
@ -199,6 +201,54 @@ namespace storm { |
|
|
template <storm::dd::DdType Type> |
|
|
template <storm::dd::DdType Type> |
|
|
std::pair<storm::dd::Bdd<Type>, storm::dd::Bdd<Type>> performProb01(storm::models::symbolic::Model<Type> const& model, storm::dd::Add<Type> const& transitionMatrix, storm::dd::Bdd<Type> const& phiStates, storm::dd::Bdd<Type> const& psiStates); |
|
|
std::pair<storm::dd::Bdd<Type>, storm::dd::Bdd<Type>> performProb01(storm::models::symbolic::Model<Type> const& model, storm::dd::Add<Type> const& transitionMatrix, storm::dd::Bdd<Type> const& phiStates, storm::dd::Bdd<Type> const& psiStates); |
|
|
|
|
|
|
|
|
|
|
|
/*! |
|
|
|
|
|
* Computes a scheduler for the given states that chooses an action that stays completely in the very same set. |
|
|
|
|
|
* Note that this assumes that there is a legal choice for each of the states. |
|
|
|
|
|
* |
|
|
|
|
|
* @param states The set of states for which to compute the scheduler that stays in this very set. |
|
|
|
|
|
* @param transitionMatrix The transition matrix. |
|
|
|
|
|
*/ |
|
|
|
|
|
template <typename T> |
|
|
|
|
|
storm::storage::PartialScheduler computeSchedulerStayingInStates(storm::storage::BitVector const& states, storm::storage::SparseMatrix<T> const& transitionMatrix); |
|
|
|
|
|
|
|
|
|
|
|
/*! |
|
|
|
|
|
* Computes a scheduler for the given states that chooses an action that has at least one successor in the |
|
|
|
|
|
* given set of states. Note that this assumes that there is a legal choice for each of the states. |
|
|
|
|
|
* |
|
|
|
|
|
* @param states The set of states for which to compute the scheduler that chooses an action with a successor |
|
|
|
|
|
* in this very set. |
|
|
|
|
|
* @param transitionMatrix The transition matrix. |
|
|
|
|
|
*/ |
|
|
|
|
|
template <typename T> |
|
|
|
|
|
storm::storage::PartialScheduler computeSchedulerWithOneSuccessorInStates(storm::storage::BitVector const& states, storm::storage::SparseMatrix<T> const& transitionMatrix); |
|
|
|
|
|
|
|
|
|
|
|
/*! |
|
|
|
|
|
* Computes a scheduler for the given states that have a scheduler that has a probability greater 0. |
|
|
|
|
|
* |
|
|
|
|
|
* @param probGreater0EStates The states that have a scheduler achieving a probablity greater 0. |
|
|
|
|
|
* @param transitionMatrix The transition matrix of the system. |
|
|
|
|
|
*/ |
|
|
|
|
|
template <typename T> |
|
|
|
|
|
storm::storage::PartialScheduler computeSchedulerProbGreater0E(storm::storage::BitVector const& probGreater0EStates, storm::storage::SparseMatrix<T> const& transitionMatrix); |
|
|
|
|
|
|
|
|
|
|
|
/*! |
|
|
|
|
|
* Computes a scheduler for the given states that have a scheduler that has a probability 0. |
|
|
|
|
|
* |
|
|
|
|
|
* @param prob0EStates The states that have a scheduler achieving probablity 0. |
|
|
|
|
|
* @param transitionMatrix The transition matrix of the system. |
|
|
|
|
|
*/ |
|
|
|
|
|
template <typename T> |
|
|
|
|
|
storm::storage::PartialScheduler computeSchedulerProb0E(storm::storage::BitVector const& prob0EStates, storm::storage::SparseMatrix<T> const& transitionMatrix); |
|
|
|
|
|
|
|
|
|
|
|
/*! |
|
|
|
|
|
* Computes a scheduler for the given states that have a scheduler that has a probability 0. |
|
|
|
|
|
* |
|
|
|
|
|
* @param prob1EStates The states that have a scheduler achieving probablity 1. |
|
|
|
|
|
* @param transitionMatrix The transition matrix of the system. |
|
|
|
|
|
*/ |
|
|
|
|
|
template <typename T> |
|
|
|
|
|
storm::storage::PartialScheduler computeSchedulerProb1E(storm::storage::BitVector const& prob1EStates, storm::storage::SparseMatrix<T> const& transitionMatrix, storm::storage::SparseMatrix<T> const& backwardTransitions, storm::storage::BitVector const& phiStates, storm::storage::BitVector const& psiStates); |
|
|
|
|
|
|
|
|
/*! |
|
|
/*! |
|
|
* Computes the sets of states that have probability greater 0 of satisfying phi until psi under at least |
|
|
* Computes the sets of states that have probability greater 0 of satisfying phi until psi under at least |
|
|
* one possible resolution of non-determinism in a non-deterministic model. Stated differently, |
|
|
* one possible resolution of non-determinism in a non-deterministic model. Stated differently, |
|
@ -361,6 +411,7 @@ namespace storm { |
|
|
*/ |
|
|
*/ |
|
|
template <storm::dd::DdType Type> |
|
|
template <storm::dd::DdType Type> |
|
|
storm::dd::Bdd<Type> performProbGreater0E(storm::models::symbolic::NondeterministicModel<Type> const& model, storm::dd::Bdd<Type> const& transitionMatrix, storm::dd::Bdd<Type> const& phiStates, storm::dd::Bdd<Type> const& psiStates); |
|
|
storm::dd::Bdd<Type> performProbGreater0E(storm::models::symbolic::NondeterministicModel<Type> const& model, storm::dd::Bdd<Type> const& transitionMatrix, storm::dd::Bdd<Type> const& phiStates, storm::dd::Bdd<Type> const& psiStates); |
|
|
|
|
|
|
|
|
/*! |
|
|
/*! |
|
|
* Computes the set of states for which there does not exist a scheduler that achieves a probability greater |
|
|
* Computes the set of states for which there does not exist a scheduler that achieves a probability greater |
|
|
* than zero of satisfying phi until psi. |
|
|
* than zero of satisfying phi until psi. |
|
@ -372,7 +423,8 @@ namespace storm { |
|
|
* @return A BDD representing all such states. |
|
|
* @return A BDD representing all such states. |
|
|
*/ |
|
|
*/ |
|
|
template <storm::dd::DdType Type> |
|
|
template <storm::dd::DdType Type> |
|
|
storm::dd::Bdd<Type> performProb0A(storm::models::symbolic::NondeterministicModel<Type> const& model, storm::dd::Bdd<Type> const& transitionMatrix, storm::dd::Bdd<Type> const& phiStates, storm::dd::Bdd<Type> const& psiStates) ; |
|
|
|
|
|
|
|
|
storm::dd::Bdd<Type> performProb0A(storm::models::symbolic::NondeterministicModel<Type> const& model, storm::dd::Bdd<Type> const& transitionMatrix, storm::dd::Bdd<Type> const& phiStates, storm::dd::Bdd<Type> const& psiStates); |
|
|
|
|
|
|
|
|
/*! |
|
|
/*! |
|
|
* Computes the set of states for which all schedulers achieve a probability greater than zero of satisfying |
|
|
* Computes the set of states for which all schedulers achieve a probability greater than zero of satisfying |
|
|
* phi until psi. |
|
|
* phi until psi. |
|
@ -384,7 +436,8 @@ namespace storm { |
|
|
* @return A BDD representing all such states. |
|
|
* @return A BDD representing all such states. |
|
|
*/ |
|
|
*/ |
|
|
template <storm::dd::DdType Type> |
|
|
template <storm::dd::DdType Type> |
|
|
storm::dd::Bdd<Type> performProbGreater0A(storm::models::symbolic::NondeterministicModel<Type> const& model, storm::dd::Bdd<Type> const& transitionMatrix, storm::dd::Bdd<Type> const& phiStates, storm::dd::Bdd<Type> const& psiStates) ; |
|
|
|
|
|
|
|
|
storm::dd::Bdd<Type> performProbGreater0A(storm::models::symbolic::NondeterministicModel<Type> const& model, storm::dd::Bdd<Type> const& transitionMatrix, storm::dd::Bdd<Type> const& phiStates, storm::dd::Bdd<Type> const& psiStates); |
|
|
|
|
|
|
|
|
/*! |
|
|
/*! |
|
|
* Computes the set of states for which there exists a scheduler that achieves probability zero of satisfying |
|
|
* Computes the set of states for which there exists a scheduler that achieves probability zero of satisfying |
|
|
* phi until psi. |
|
|
* phi until psi. |
|
|