Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
DeterministicBlockData.h
Go to the documentation of this file.
1#ifndef STORM_STORAGE_BISIMULATION_DETERMINISTICBLOCKDATA_H_
2#define STORM_STORAGE_BISIMULATION_DETERMINISTICBLOCKDATA_H_
3
4#include <cstdint>
5
7
8namespace storm {
9namespace storage {
10namespace bisimulation {
12 public:
14 DeterministicBlockData(uint_fast64_t marker1, uint_fast64_t marker2);
15
16 uint_fast64_t marker1() const;
17 void setMarker1(uint_fast64_t newMarker1);
18 void incrementMarker1();
19 void decrementMarker1();
20
21 uint_fast64_t marker2() const;
22 void setMarker2(uint_fast64_t newMarker2);
23 void incrementMarker2();
24 void decrementMarker2();
25
33
34 // Checks whether the block is marked as a splitter.
35 bool splitter() const;
36
37 // Marks the block as being a splitter.
38 void setSplitter(bool value = true);
39
40 // Retrieves whether the block is marked as a predecessor.
41 bool needsRefinement() const;
42
43 // Marks the block as needing refinement (or not).
44 void setNeedsRefinement(bool value = true);
45
46 // Sets whether or not the block is to be interpreted as absorbing.
47 void setAbsorbing(bool absorbing);
48
49 // Retrieves whether the block is to be interpreted as absorbing.
50 bool absorbing() const;
51
52 // Sets whether the states in the block have rewards.
53 void setHasRewards(bool value = true);
54
55 // Retrieves whether the states in the block have rewards.
56 bool hasRewards() const;
57
58 // Sets the representative state of this block
60
61 // Retrieves whether this block has a representative state.
62 bool hasRepresentativeState() const;
63
64 // Retrieves the representative state for this block.
66
67 friend std::ostream& operator<<(std::ostream& out, DeterministicBlockData const& data);
68
69 public:
70 // Helpers to set/retrieve flags.
71 bool getFlag(uint64_t flag) const;
72 void setFlag(uint64_t flag, bool value);
73
74 // Two markers that can be used for various purposes. Whenever the block is split, both the markers are
75 // set to the beginning index of the block.
76 uint_fast64_t valMarker1;
77 uint_fast64_t valMarker2;
78
79 // Some bits to store flags: splitter flag, refinement flag, absorbing flag.
80 static const uint64_t SPLITTER_FLAG = 1ull;
81 static const uint64_t REFINEMENT_FLAG = 1ull << 1;
82 static const uint64_t ABSORBING_FLAG = 1ull << 2;
83 static const uint64_t REWARD_FLAG = 1ull << 3;
84 uint8_t flags;
85
86 // An optional representative state for the block. If this is set, this state is used to derive the
87 // atomic propositions of the meta state in the quotient model.
88 boost::optional<storm::storage::sparse::state_type> valRepresentativeState;
89};
90
91std::ostream& operator<<(std::ostream& out, DeterministicBlockData const& data);
92} // namespace bisimulation
93} // namespace storage
94} // namespace storm
95
96#endif /* STORM_STORAGE_BISIMULATION_DETERMINISTICBLOCKDATA_H_ */
storm::storage::sparse::state_type representativeState() const
bool resetMarkers(Block< DeterministicBlockData > const &block)
This method needs to be called whenever the block was modified to reset the data of the change.
void setRepresentativeState(storm::storage::sparse::state_type representativeState)
boost::optional< storm::storage::sparse::state_type > valRepresentativeState
friend std::ostream & operator<<(std::ostream &out, DeterministicBlockData const &data)
std::ostream & operator<<(std::ostream &out, DeterministicBlockData const &data)
LabParser.cpp.
Definition cli.cpp:18