Storm 1.14.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
AutomatonAbstractor.h
Go to the documentation of this file.
1#pragma once
2
4
6
8
10
11namespace storm {
12namespace jani {
13// Forward-declare concrete automaton class.
14class Automaton;
15} // namespace jani
16} // namespace storm
17
18namespace storm::gbar {
19namespace abstraction {
20template<storm::dd::DdType DdType>
22
23template<storm::dd::DdType DdType>
25
26namespace jani {
27template<storm::dd::DdType DdType, typename ValueType>
29 public:
38 AutomatonAbstractor(storm::jani::Automaton const& automaton, AbstractionInformation<DdType>& abstractionInformation,
39 std::shared_ptr<storm::utility::solver::SmtSolverFactory> const& smtSolverFactory, bool useDecomposition,
40 bool addPredicatesForValidBlocks, bool debug);
41
46
52 void refine(std::vector<uint_fast64_t> const& predicates);
53
60 storm::expressions::Expression const& getGuard(uint64_t player1Choice) const;
61
65 uint64_t getNumberOfUpdates(uint64_t player1Choice) const;
66
71 std::map<storm::expressions::Variable, storm::expressions::Expression> getVariableUpdates(uint64_t player1Choice, uint64_t auxiliaryChoice) const;
72
76 std::set<storm::expressions::Variable> const& getAssignedVariables(uint64_t player1Choice) const;
77
84
92 BottomStateResult<DdType> getBottomStateTransitions(storm::dd::Bdd<DdType> const& reachableStates, uint_fast64_t numberOfPlayer2Variables);
93
100
105
111 std::vector<EdgeAbstractor<DdType, ValueType>> const& getEdges() const;
112
118 std::vector<EdgeAbstractor<DdType, ValueType>>& getEdges();
119
125 std::size_t getNumberOfEdges() const;
126
128
129 private:
135 AbstractionInformation<DdType> const& getAbstractionInformation() const;
136
137 // A factory that can be used to create new SMT solvers.
138 std::shared_ptr<storm::utility::solver::SmtSolverFactory> smtSolverFactory;
139
140 // The DD-related information.
141 std::reference_wrapper<AbstractionInformation<DdType> const> abstractionInformation;
142
143 // The abstract edge of the abstract automaton.
144 std::vector<EdgeAbstractor<DdType, ValueType>> edges;
145
146 // The concrete module this abstract automaton refers to.
147 std::reference_wrapper<storm::jani::Automaton const> automaton;
148
149 // If the automaton has more than one location, we need variables to encode that.
150 boost::optional<std::pair<storm::expressions::Variable, storm::expressions::Variable>> locationVariables;
151};
152} // namespace jani
153} // namespace abstraction
154} // namespace storm::gbar
std::set< storm::expressions::Variable > const & getAssignedVariables(uint64_t player1Choice) const
Retrieves the variables assigned by the given player 1 choice.
AutomatonAbstractor(AutomatonAbstractor &&)=default
AutomatonAbstractor & operator=(AutomatonAbstractor &&)=default
std::size_t getNumberOfEdges() const
Retrieves the number of abstract edges of this abstract automaton.
AutomatonAbstractor(AutomatonAbstractor const &)=default
BottomStateResult< DdType > getBottomStateTransitions(storm::dd::Bdd< DdType > const &reachableStates, uint_fast64_t numberOfPlayer2Variables)
Retrieves the transitions to bottom states of this automaton.
uint64_t getNumberOfUpdates(uint64_t player1Choice) const
Retrieves the number of updates of the specified player 1 choice.
GameBddResult< DdType > abstract()
Computes the abstraction of the module wrt.
storm::expressions::Expression const & getGuard(uint64_t player1Choice) const
Retrieves the guard of the given player 1 choice.
AutomatonAbstractor(storm::jani::Automaton const &automaton, AbstractionInformation< DdType > &abstractionInformation, std::shared_ptr< storm::utility::solver::SmtSolverFactory > const &smtSolverFactory, bool useDecomposition, bool addPredicatesForValidBlocks, bool debug)
Constructs an abstract module from the given automaton.
AutomatonAbstractor & operator=(AutomatonAbstractor const &)=default
storm::dd::Add< DdType, ValueType > getEdgeDecoratorAdd() const
Retrieves an ADD that maps the encodings of edges, source/target locations and their updates to their...
std::vector< EdgeAbstractor< DdType, ValueType > > const & getEdges() const
Retrieves the abstract edges of this abstract automton.
void refine(std::vector< uint_fast64_t > const &predicates)
Refines the abstract automaton with the given predicates.
storm::dd::Bdd< DdType > getInitialLocationsBdd() const
Retrieves a BDD that encodes all initial locations of this abstract automaton.
std::map< storm::expressions::Variable, storm::expressions::Expression > getVariableUpdates(uint64_t player1Choice, uint64_t auxiliaryChoice) const
Retrieves a mapping from variables to expressions that define their updates wrt.