Storm 1.14.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
QuotientData.h
Go to the documentation of this file.
1#pragma once
2
3#include <cstdint>
4#include <map>
5#include <optional>
6#include <vector>
7
13
14namespace storm::bisimulation {
15
19template<typename ValueType>
30
31 std::vector<uint64_t> toQuotientState; // assigns to each input model state the corresponding quotient state
32 std::vector<uint64_t> toRepresentativeState; // assigns to each quotient state the corresponding representative state in the input model
33 std::optional<std::vector<uint64_t>>
34 toQuotientChoice; // assigns to each input model choice (model.getNumberOfChoices() entries) the quotient choice that represents it.
35
36 // The following choice mappings are set iff signature-based refinement (and thus choice deduplication) was performed, cf. Signatures::extendQuotientData.
38 std::vector<uint64_t> toRepresentativeChoice; // assigns to each quotient choice the corresponding representative choice in the input model.
39 std::vector<std::map<uint64_t, ValueType>>
40 quotientChoiceDistributions; // assigns to each quotient choice (same length as toRepresentativeChoice) the block distribution it was derived from.
41 std::vector<uint64_t>
42 quotientChoiceGroupIndices; // CSR-style: has toRepresentativeState.size() + 1 entries; for quotient state s, the associated quotient choices are
43 // those in the (right-open) range [quotientChoiceGroupIndices[s], quotientChoiceGroupIndices[s + 1]).
44 // quotientChoiceGroupIndices.front() == 0 and
45 // quotientChoiceGroupIndices.back() == toRepresentativeChoice.size() == quotientChoiceDistributions.size().
46 };
47 std::optional<SignatureData> signatureData;
48
49 // The state-level information that weak bisimulation works with. Set iff weak bisimulation was computed.
50 std::optional<WeakBisimulationData> weakData;
51};
52
53} // namespace storm::bisimulation
Helper class that optionally holds a reference to an object of type T.
Definition OptionalRef.h:48
Represents a partition of a set of consecutive indices.
Definition Partition.h:20
constexpr NullRefType NullRef
Definition OptionalRef.h:31
std::vector< std::map< uint64_t, ValueType > > quotientChoiceDistributions
std::vector< uint64_t > toRepresentativeState
std::vector< uint64_t > toQuotientState
std::optional< SignatureData > signatureData
QuotientData(storm::bisimulation::Partition const &partition, storm::OptionalRef< storm::storage::BitVector const > preferredRepresentatives=storm::NullRef)
Computes the state index mappings between the states (i.e., the elements of the given partition) and ...
std::optional< WeakBisimulationData > weakData
std::optional< std::vector< uint64_t > > toQuotientChoice