Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
StateGeneration.cpp
Go to the documentation of this file.
3
5
6namespace storm {
7namespace modelchecker {
8namespace exploration_detail {
9
10template<typename StateType, typename ValueType>
13 storm::expressions::Expression const& conditionStateExpression,
14 storm::expressions::Expression const& targetStateExpression)
15 : generator(program),
16 stateStorage(generator.getStateSize()),
17 conditionStateExpression(conditionStateExpression),
18 targetStateExpression(targetStateExpression) {
19 stateToIdCallback = [&explorationInformation, this](storm::generator::CompressedState const& state) -> StateType {
20 StateType newIndex = stateStorage.getNumberOfStates();
21
22 // Check, if the state was already registered.
23 std::pair<StateType, std::size_t> actualIndexBucketPair = stateStorage.stateToId.findOrAddAndGetBucket(state, newIndex);
24
25 if (actualIndexBucketPair.first == newIndex) {
26 explorationInformation.addUnexploredState(newIndex, state);
27 }
28
29 return actualIndexBucketPair.first;
30 };
31}
32
33template<typename StateType, typename ValueType>
35 generator.load(state);
36}
37
38template<typename StateType, typename ValueType>
40 return stateStorage.initialStateIndices;
41}
42
43template<typename StateType, typename ValueType>
47
48template<typename StateType, typename ValueType>
50 return generator.satisfies(conditionStateExpression);
51}
52
53template<typename StateType, typename ValueType>
55 return generator.satisfies(targetStateExpression);
56}
57
58template<typename StateType, typename ValueType>
60 stateStorage.initialStateIndices = generator.getInitialStates(stateToIdCallback);
61}
62
63template<typename StateType, typename ValueType>
65 return stateStorage.initialStateIndices.front();
66}
67
68template<typename StateType, typename ValueType>
70 return stateStorage.initialStateIndices.size();
71}
72
74} // namespace exploration_detail
75} // namespace modelchecker
76} // namespace storm
void addUnexploredState(StateType const &stateId, storm::generator::CompressedState const &compressedState)
StateGeneration(storm::prism::Program const &program, ExplorationInformation< StateType, ValueType > &explorationInformation, storm::expressions::Expression const &conditionStateExpression, storm::expressions::Expression const &targetStateExpression)
storm::generator::StateBehavior< ValueType, StateType > expand()
void load(storm::generator::CompressedState const &state)
A bit vector that is internally represented as a vector of 64-bit values.
Definition BitVector.h:18
LabParser.cpp.
Definition cli.cpp:18