Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
EpochManager.h
Go to the documentation of this file.
1#pragma once
2
3#include <cstdint>
4#include <set>
5#include <string>
6#include <vector>
7
8namespace storm {
9namespace modelchecker {
10namespace helper {
11namespace rewardbounded {
12
14 public:
15 typedef uint64_t Epoch; // The number of reward steps that are "left" for each dimension
16 typedef uint64_t EpochClass; // Encodes the dimensions of an epoch that are bottom. Two epoch models within the same class have the same graph structure.
17
19 EpochManager(uint64_t dimensionCount);
20
21 uint64_t const& getDimensionCount() const;
22
23 Epoch getBottomEpoch() const;
24 Epoch getZeroEpoch() const;
25
26 bool compareEpochClass(Epoch const& epoch1, Epoch const& epoch2) const;
27 EpochClass getEpochClass(Epoch const& epoch) const;
28
29 Epoch getSuccessorEpoch(Epoch const& epoch, Epoch const& step) const;
30 std::vector<Epoch> getPredecessorEpochs(Epoch const& epoch, Epoch const& step) const;
31 void gatherPredecessorEpochs(std::set<Epoch>& gatheredPredecessorEpochs, Epoch const& epoch, Epoch const& step) const;
32
33 bool isZeroEpoch(Epoch const& epoch) const;
34 bool isBottomEpoch(Epoch const& epoch) const;
35 bool hasBottomDimension(Epoch const& epoch) const;
36 bool hasBottomDimensionEpochClass(EpochClass const& epochClass) const;
37 bool isPredecessorEpochClass(EpochClass const& epochClass1, EpochClass const& epochClass2) const;
38
39 bool isValidDimensionValue(uint64_t const& value) const;
40
41 void setBottomDimension(Epoch& epoch, uint64_t const& dimension) const;
42 void setDimensionOfEpoch(Epoch& epoch, uint64_t const& dimension, uint64_t const& value) const; // assumes that the value is valid, i.e., small enough
43 void setDimensionOfEpochClass(EpochClass& epochClass, uint64_t const& dimension, bool const& setToBottom) const;
44
45 bool isBottomDimension(Epoch const& epoch, uint64_t const& dimension) const;
46 bool isBottomDimensionEpochClass(EpochClass const& epochClass, uint64_t const& dimension) const;
47 uint64_t getDimensionOfEpoch(Epoch const& epoch, uint64_t const& dimension) const; // assumes that the dimension is not bottom
48 uint64_t getSumOfDimensions(Epoch const& epoch) const; // assumes that the dimension is not bottom
49
50 std::string toString(Epoch const& epoch) const;
51
52 bool epochClassZigZagOrder(Epoch const& epoch1, Epoch const& epoch2) const;
53 bool epochClassOrder(EpochClass const& epochClass1, EpochClass const& epochClass2) const;
54
55 private:
56 uint64_t dimensionCount;
57 uint64_t bitsPerDimension;
58 uint64_t dimensionBitMask;
59 uint64_t relevantBitsMask;
60};
61} // namespace rewardbounded
62} // namespace helper
63} // namespace modelchecker
64} // namespace storm
void gatherPredecessorEpochs(std::set< Epoch > &gatheredPredecessorEpochs, Epoch const &epoch, Epoch const &step) const
uint64_t getSumOfDimensions(Epoch const &epoch) const
bool isPredecessorEpochClass(EpochClass const &epochClass1, EpochClass const &epochClass2) const
bool isBottomDimension(Epoch const &epoch, uint64_t const &dimension) const
void setDimensionOfEpochClass(EpochClass &epochClass, uint64_t const &dimension, bool const &setToBottom) const
Epoch getSuccessorEpoch(Epoch const &epoch, Epoch const &step) const
bool isValidDimensionValue(uint64_t const &value) const
bool hasBottomDimensionEpochClass(EpochClass const &epochClass) const
bool epochClassOrder(EpochClass const &epochClass1, EpochClass const &epochClass2) const
bool compareEpochClass(Epoch const &epoch1, Epoch const &epoch2) const
uint64_t getDimensionOfEpoch(Epoch const &epoch, uint64_t const &dimension) const
EpochClass getEpochClass(Epoch const &epoch) const
void setDimensionOfEpoch(Epoch &epoch, uint64_t const &dimension, uint64_t const &value) const
std::vector< Epoch > getPredecessorEpochs(Epoch const &epoch, Epoch const &step) const
void setBottomDimension(Epoch &epoch, uint64_t const &dimension) const
bool isBottomDimensionEpochClass(EpochClass const &epochClass, uint64_t const &dimension) const
bool epochClassZigZagOrder(Epoch const &epoch1, Epoch const &epoch2) const
LabParser.cpp.
Definition cli.cpp:18