25template<storm::dd::DdType Type,
typename ValueType>
28template<storm::dd::DdType Type,
typename ValueType>
31template<storm::dd::DdType Type,
typename ValueType>
34template<storm::dd::DdType Type,
typename ValueType>
41template<storm::dd::DdType Type>
44template<storm::dd::DdType Type,
typename ValueType>
61storm::storage::BitVector
getReachableOneStep(storm::storage::SparseMatrix<T>
const& transitionMatrix, storm::storage::BitVector
const& initialStates);
78storm::storage::BitVector
getReachableStates(storm::storage::SparseMatrix<T>
const& transitionMatrix, storm::storage::BitVector
const& initialStates,
79 storm::storage::BitVector
const& constraintStates, storm::storage::BitVector
const& targetStates,
80 bool useStepBound =
false, uint_fast64_t maximalSteps = 0,
81 boost::optional<storm::storage::BitVector>
const& choiceFilter = boost::none);
90storm::storage::BitVector
getBsccCover(storm::storage::SparseMatrix<T>
const& transitionMatrix);
98bool hasCycle(storm::storage::SparseMatrix<T>
const& transitionMatrix, boost::optional<storm::storage::BitVector>
const& subsystem = boost::none);
111bool checkIfECWithChoiceExists(storm::storage::SparseMatrix<T>
const& transitionMatrix, storm::storage::SparseMatrix<T>
const& backwardTransitions,
112 storm::storage::BitVector
const& subsystem, storm::storage::BitVector
const& choices);
124std::vector<uint_fast64_t>
getDistances(storm::storage::SparseMatrix<T>
const& transitionMatrix, storm::storage::BitVector
const& initialStates,
125 boost::optional<storm::storage::BitVector>
const& subsystem = boost::none);
140storm::storage::BitVector
performProbGreater0(storm::storage::SparseMatrix<T>
const& backwardTransitions, storm::storage::BitVector
const& phiStates,
141 storm::storage::BitVector
const& psiStates,
bool useStepBound =
false, uint_fast64_t maximalSteps = 0);
158storm::storage::BitVector
performProb1(storm::storage::SparseMatrix<T>
const& backwardTransitions, storm::storage::BitVector
const& phiStates,
159 storm::storage::BitVector
const& psiStates, storm::storage::BitVector
const& statesWithProbabilityGreater0);
174storm::storage::BitVector
performProb1(storm::storage::SparseMatrix<T>
const& backwardTransitions, storm::storage::BitVector
const& phiStates,
175 storm::storage::BitVector
const& psiStates);
188std::pair<storm::storage::BitVector, storm::storage::BitVector>
performProb01(storm::models::sparse::DeterministicModel<T>
const& model,
189 storm::storage::BitVector
const& phiStates,
190 storm::storage::BitVector
const& psiStates);
203std::pair<storm::storage::BitVector, storm::storage::BitVector>
performProb01(storm::storage::SparseMatrix<T>
const& backwardTransitions,
204 storm::storage::BitVector
const& phiStates,
205 storm::storage::BitVector
const& psiStates);
218template<storm::dd::DdType Type,
typename ValueType>
219storm::dd::Bdd<Type>
performProbGreater0(storm::models::symbolic::Model<Type, ValueType>
const& model, storm::dd::Bdd<Type>
const& transitionMatrix,
220 storm::dd::Bdd<Type>
const& phiStates, storm::dd::Bdd<Type>
const& psiStates,
221 boost::optional<uint_fast64_t>
const& stepBound = boost::optional<uint_fast64_t>());
234template<storm::dd::DdType Type,
typename ValueType>
235storm::dd::Bdd<Type>
performProb1(storm::models::symbolic::Model<Type, ValueType>
const& model, storm::dd::Bdd<Type>
const& transitionMatrix,
236 storm::dd::Bdd<Type>
const& phiStates, storm::dd::Bdd<Type>
const& psiStates,
237 storm::dd::Bdd<Type>
const& statesWithProbabilityGreater0);
249template<storm::dd::DdType Type,
typename ValueType>
250storm::dd::Bdd<Type>
performProb1(storm::models::symbolic::Model<Type, ValueType>
const& model, storm::dd::Bdd<Type>
const& transitionMatrix,
251 storm::dd::Bdd<Type>
const& phiStates, storm::dd::Bdd<Type>
const& psiStates);
262template<storm::dd::DdType Type,
typename ValueType>
263std::pair<storm::dd::Bdd<Type>, storm::dd::Bdd<Type>>
performProb01(storm::models::symbolic::DeterministicModel<Type, ValueType>
const& model,
264 storm::dd::Bdd<Type>
const& phiStates, storm::dd::Bdd<Type>
const& psiStates);
276template<storm::dd::DdType Type,
typename ValueType>
277std::pair<storm::dd::Bdd<Type>, storm::dd::Bdd<Type>>
performProb01(storm::models::symbolic::Model<Type, ValueType>
const& model,
278 storm::dd::Bdd<Type>
const& transitionMatrix, storm::dd::Bdd<Type>
const& phiStates,
279 storm::dd::Bdd<Type>
const& psiStates);
290template<
typename T,
typename SchedulerValueType>
292 storm::storage::Scheduler<SchedulerValueType>& scheduler,
293 boost::optional<storm::storage::BitVector>
const& rowFilter = boost::none);
321template<
typename T,
typename SchedulerValueType>
325 boost::optional<storm::storage::BitVector>
const& rowFilter = boost::none);
335template<
typename T,
typename SchedulerValueType>
346template<
typename T,
typename SchedulerValueType>
361template<
typename T,
typename SchedulerValueType>
365 boost::optional<storm::storage::BitVector>
const& rowFilter = boost::none);
403 std::vector<uint_fast64_t>
const& nondeterministicChoiceIndices,
406 boost::optional<storm::storage::BitVector>
const& choiceConstraint = boost::none);
420template<
typename T,
typename RM>
427 std::vector<uint_fast64_t>
const& nondeterministicChoiceIndices,
442template<
typename T,
typename RM>
464 std::vector<uint_fast64_t>
const& nondeterministicChoiceIndices,
467 boost::optional<storm::storage::BitVector>
const& choiceConstraint = boost::none);
481template<
typename T,
typename RM>
487 std::vector<uint_fast64_t>
const& nondeterministicChoiceIndices,
503template<
typename T,
typename RM>
510 std::vector<uint_fast64_t>
const& nondeterministicChoiceIndices,
516 std::vector<uint_fast64_t>
const& nondeterministicChoiceIndices,
531template<
typename T,
typename RM>
546template<storm::dd::DdType Type,
typename ValueType =
double>
554template<storm::dd::DdType Type,
typename ValueType>
569template<storm::dd::DdType Type,
typename ValueType =
double>
583template<storm::dd::DdType Type,
typename ValueType =
double>
598template<storm::dd::DdType Type,
typename ValueType =
double>
613template<storm::dd::DdType Type,
typename ValueType =
double>
629template<storm::dd::DdType Type,
typename ValueType =
double>
637template<storm::dd::DdType Type,
typename ValueType>
642template<storm::dd::DdType Type,
typename ValueType =
double>
646template<storm::dd::DdType Type,
typename ValueType =
double>
651template<storm::dd::DdType Type,
typename ValueType =
double>
655template<storm::dd::DdType Type,
typename ValueType =
double>
660template<storm::dd::DdType Type>
718template<storm::dd::DdType Type,
typename ValueType>
723 bool producePlayer2Strategy =
false);
736template<storm::dd::DdType Type,
typename ValueType>
741 bool producePlayer2Strategy =
false, boost::optional<
storm::dd::Bdd<Type>>
const& player1Candidates = boost::none);
781template<
typename ValueType>
803template<
typename ValueType>
809 boost::optional<storm::storage::BitVector>
const& player1Candidates = boost::none);
The base class of sparse nondeterministic models.
Base class for all deterministic symbolic models.
Base class for all symbolic models.
Base class for all nondeterministic symbolic models.
This class represents a discrete-time stochastic two-player game.
A bit vector that is internally represented as a vector of 64-bit values.
This class defines which action is chosen in a particular state of a non-deterministic model.
A class that holds a possibly non-square matrix in the compressed row storage format.
std::pair< storm::storage::BitVector, storm::storage::BitVector > performProb01(storm::models::sparse::DeterministicModel< T > const &model, storm::storage::BitVector const &phiStates, storm::storage::BitVector const &psiStates)
Computes the sets of states that have probability 0 or 1, respectively, of satisfying phi until psi i...
std::pair< storm::storage::BitVector, storm::storage::BitVector > performProb01Max(storm::storage::SparseMatrix< T > const &transitionMatrix, std::vector< uint_fast64_t > const &nondeterministicChoiceIndices, storm::storage::SparseMatrix< T > const &backwardTransitions, storm::storage::BitVector const &phiStates, storm::storage::BitVector const &psiStates)
void computeSchedulerStayingInStates(storm::storage::BitVector const &states, storm::storage::SparseMatrix< T > const &transitionMatrix, storm::storage::Scheduler< SchedulerValueType > &scheduler, boost::optional< storm::storage::BitVector > const &rowFilter)
Computes a scheduler for the given states that chooses an action that stays completely in the very sa...
ExplicitGameProb01Result performProb0(storm::storage::SparseMatrix< ValueType > const &transitionMatrix, std::vector< uint64_t > const &player1Groups, storm::storage::SparseMatrix< ValueType > const &player1BackwardTransitions, std::vector< uint64_t > const &player2BackwardTransitions, storm::storage::BitVector const &phiStates, storm::storage::BitVector const &psiStates, storm::OptimizationDirection const &player1Direction, storm::OptimizationDirection const &player2Direction, storm::storage::ExplicitGameStrategyPair *strategyPair)
Computes the set of states that have probability 0 given the strategies of the two players.
std::vector< uint_fast64_t > getTopologicalSort(storm::storage::SparseMatrix< T > const &matrix, std::vector< uint64_t > const &firstStates)
Performs a topological sort of the states of the system according to the given transitions.
void computeSchedulerProbGreater0E(storm::storage::SparseMatrix< T > const &transitionMatrix, storm::storage::SparseMatrix< T > const &backwardTransitions, storm::storage::BitVector const &phiStates, storm::storage::BitVector const &psiStates, storm::storage::Scheduler< SchedulerValueType > &scheduler, boost::optional< storm::storage::BitVector > const &rowFilter)
Computes a scheduler for the ProbGreater0E-States such that in the induced system the given psiStates...
std::vector< uint_fast64_t > getBFSSort(storm::storage::SparseMatrix< T > const &matrix, std::vector< uint_fast64_t > const &firstStates)
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, bool useStepBound, uint_fast64_t maximalSteps, boost::optional< storm::storage::BitVector > const &choiceFilter)
Performs a forward depth-first search through the underlying graph structure to identify the states t...
storm::storage::BitVector getReachableOneStep(storm::storage::SparseMatrix< T > const &transitionMatrix, storm::storage::BitVector const &initialStates)
Computes the states reachable in one step from the states indicated by the bitvector.
storm::storage::BitVector performProbGreater0(storm::storage::SparseMatrix< T > const &backwardTransitions, storm::storage::BitVector const &phiStates, storm::storage::BitVector const &psiStates, bool useStepBound, uint_fast64_t maximalSteps)
Performs a backward depth-first search trough the underlying graph structure of the given model to de...
void computeSchedulerWithOneSuccessorInStates(storm::storage::BitVector const &states, storm::storage::SparseMatrix< T > const &transitionMatrix, storm::storage::Scheduler< SchedulerValueType > &scheduler)
storm::storage::BitVector performProbGreater0A(storm::storage::SparseMatrix< T > const &transitionMatrix, std::vector< uint_fast64_t > const &nondeterministicChoiceIndices, storm::storage::SparseMatrix< T > const &backwardTransitions, storm::storage::BitVector const &phiStates, storm::storage::BitVector const &psiStates, bool useStepBound, uint_fast64_t maximalSteps, boost::optional< storm::storage::BitVector > const &choiceConstraint)
Computes the sets of states that have probability greater 0 of satisfying phi until psi under any pos...
void 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, storm::storage::Scheduler< SchedulerValueType > &scheduler, boost::optional< storm::storage::BitVector > const &rowFilter)
Computes a scheduler for the given prob1EStates such that in the induced system the given psiStates a...
bool hasCycle(storm::storage::SparseMatrix< T > const &transitionMatrix, boost::optional< storm::storage::BitVector > const &subsystem)
Returns true if the graph represented by the given matrix has a cycle.
storm::storage::BitVector performProb1A(storm::models::sparse::NondeterministicModel< T, RM > const &model, storm::storage::SparseMatrix< T > const &backwardTransitions, storm::storage::BitVector const &phiStates, storm::storage::BitVector const &psiStates)
Computes the sets of states that have probability 1 of satisfying phi until psi under all possible re...
storm::storage::BitVector performProbGreater0E(storm::storage::SparseMatrix< T > const &backwardTransitions, storm::storage::BitVector const &phiStates, storm::storage::BitVector const &psiStates, bool useStepBound, uint_fast64_t maximalSteps)
Computes the sets of states that have probability greater 0 of satisfying phi until psi under at leas...
storm::storage::BitVector performProb0A(storm::storage::SparseMatrix< T > const &backwardTransitions, storm::storage::BitVector const &phiStates, storm::storage::BitVector const &psiStates)
storm::storage::BitVector performProb1(storm::storage::SparseMatrix< T > const &backwardTransitions, storm::storage::BitVector const &, storm::storage::BitVector const &psiStates, storm::storage::BitVector const &statesWithProbabilityGreater0)
Computes the set of states of the given model for which all paths lead to the given set of target sta...
bool checkIfECWithChoiceExists(storm::storage::SparseMatrix< T > const &transitionMatrix, storm::storage::SparseMatrix< T > const &backwardTransitions, storm::storage::BitVector const &subsystem, storm::storage::BitVector const &choices)
Checks whether there is an End Component that.
storm::storage::BitVector performProb0E(storm::models::sparse::NondeterministicModel< T, RM > const &model, storm::storage::SparseMatrix< T > const &backwardTransitions, storm::storage::BitVector const &phiStates, storm::storage::BitVector const &psiStates)
Computes the sets of states that have probability 0 of satisfying phi until psi under at least one po...
storm::storage::BitVector getBsccCover(storm::storage::SparseMatrix< T > const &transitionMatrix)
Retrieves a set of states that covers als BSCCs of the system in the sense that for every BSCC exactl...
void computeSchedulerProb0E(storm::storage::BitVector const &prob0EStates, storm::storage::SparseMatrix< T > const &transitionMatrix, storm::storage::Scheduler< SchedulerValueType > &scheduler)
Computes a scheduler for the given states that have a scheduler that has a probability 0.
std::pair< storm::storage::BitVector, storm::storage::BitVector > performProb01Min(storm::storage::SparseMatrix< T > const &transitionMatrix, std::vector< uint_fast64_t > const &nondeterministicChoiceIndices, storm::storage::SparseMatrix< T > const &backwardTransitions, storm::storage::BitVector const &phiStates, storm::storage::BitVector const &psiStates)
std::vector< uint_fast64_t > getDistances(storm::storage::SparseMatrix< T > const &transitionMatrix, storm::storage::BitVector const &initialStates, boost::optional< storm::storage::BitVector > const &subsystem)
Performs a breadth-first search through the underlying graph structure to compute the distance from a...
storm::storage::BitVector performProb1E(storm::storage::SparseMatrix< T > const &transitionMatrix, std::vector< uint_fast64_t > const &nondeterministicChoiceIndices, storm::storage::SparseMatrix< T > const &backwardTransitions, storm::storage::BitVector const &phiStates, storm::storage::BitVector const &psiStates, boost::optional< storm::storage::BitVector > const &choiceConstraint)
Computes the sets of states that have probability 1 of satisfying phi until psi under at least one po...
void computeSchedulerRewInf(storm::storage::BitVector const &rewInfStates, storm::storage::SparseMatrix< T > const &transitionMatrix, storm::storage::SparseMatrix< T > const &backwardTransitions, storm::storage::Scheduler< SchedulerValueType > &scheduler)
Computes a scheduler for the given states that have a scheduler that has a reward infinity.
solver::OptimizationDirection OptimizationDirection
ExplicitGameProb01Result(storm::storage::BitVector const &player1States, storm::storage::BitVector const &player2States)
storm::storage::BitVector const & getPlayer1States() const
ExplicitGameProb01Result()=default
storm::storage::BitVector player2States
storm::storage::BitVector const & getPlayer2States() const
ExplicitGameProb01Result(uint64_t numberOfPlayer1States, uint64_t numberOfPlayer2States)
storm::storage::BitVector player1States
boost::optional< storm::dd::Bdd< Type > > player1Strategy
bool hasPlayer1Strategy() const
SymbolicGameProb01Result(storm::dd::Bdd< Type > const &player1States, storm::dd::Bdd< Type > const &player2States, boost::optional< storm::dd::Bdd< Type > > const &player1Strategy=boost::none, boost::optional< storm::dd::Bdd< Type > > const &player2Strategy=boost::none)
boost::optional< storm::dd::Bdd< Type > > const & getOptionalPlayer2Strategy()
storm::dd::Bdd< Type > const & getPlayer2States() const
bool hasPlayer2Strategy() const
storm::dd::Bdd< Type > const & getPlayer1Strategy() const
boost::optional< storm::dd::Bdd< Type > > const & getOptionalPlayer1Strategy()
storm::dd::Bdd< Type > player1States
storm::dd::Bdd< Type > const & getPlayer2Strategy() const
boost::optional< storm::dd::Bdd< Type > > player2Strategy
SymbolicGameProb01Result()=default
storm::dd::Bdd< Type > const & getPlayer1States() const
storm::dd::Bdd< Type > player2States