13namespace modelchecker {
14namespace lexicographic {
16template<
typename SparseModelType,
typename ValueType>
21 "Lexicographic Model checking on model with multiple initial states is not supported.");
31 std::shared_ptr<storm::transformer::DAProduct<SparseModelType>> completeProductModel = res.first;
32 std::vector<uint> accCond = res.second;
35 std::pair<storm::storage::MaximalEndComponentDecomposition<ValueType>, std::vector<std::vector<bool>>> result =
38 std::vector<std::vector<bool>> mecLexArrays = result.second;
42 return lMC.
lexReachability(mecs, mecLexArrays, completeProductModel, model);
FormulaType const & getFormula() const
Retrieves the formula from this task.
MDPSparseModelCheckingHelperReturnType< ValueType > lexReachability(storm::storage::MaximalEndComponentDecomposition< ValueType > const &mecs, std::vector< std::vector< bool > > const &mecLexArray, std::shared_ptr< storm::transformer::DAProduct< SparseModelType > > const &productModel, SparseModelType const &originalMdp)
Solves the reachability query for a lexicographic objective In lexicographic order,...
std::pair< std::shared_ptr< storm::transformer::DAProduct< SparseModelType > >, std::vector< uint > > getCompleteProductModel(SparseModelType const &model, CheckFormulaCallback const &formulaChecker)
Returns the product of a model and the product-automaton of all sub-formulae of the multi-objective f...
std::pair< storm::storage::MaximalEndComponentDecomposition< ValueType >, std::vector< std::vector< bool > > > getLexArrays(std::shared_ptr< storm::transformer::DAProduct< productModelType > > productModel, std::vector< uint > &acceptanceConditions)
Given a product of an MDP and a automaton, returns the MECs and their corresponding Lex-Arrays First:...
This class represents a (discrete-time) Markov decision process.
This class represents the decomposition of a nondeterministic model into its maximal end components.
#define STORM_LOG_ASSERT(cond, message)
helper::MDPSparseModelCheckingHelperReturnType< ValueType > check(Environment const &, SparseModelType const &model, CheckTask< storm::logic::MultiObjectiveFormula, ValueType > const &checkTask, CheckFormulaCallback const &formulaChecker)
check a lexicographic LTL-formula
std::function< storm::storage::BitVector(storm::logic::Formula const &)> CheckFormulaCallback