| 
					
					
						
							
						
					
					
				 | 
				@ -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. | 
			
		
		
	
	
		
			
				| 
					
						
							
						
					
					
					
				 | 
				
  |