Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
SignatureComputer.h
Go to the documentation of this file.
1#pragma once
2
3#include <boost/optional.hpp>
4
6
10
12
13namespace storm {
14namespace dd {
15namespace bisimulation {
16
17template<storm::dd::DdType DdType, typename ValueType>
18class SignatureComputer;
19
20template<storm::dd::DdType DdType, typename ValueType>
22 public:
24
25 bool hasNext() const;
26
28
29 private:
30 // The signature computer to use.
31 SignatureComputer<DdType, ValueType> const& signatureComputer;
32
33 // The current partition.
34 Partition<DdType, ValueType> const& partition;
35
36 // The position in the enumeration.
37 uint64_t position;
38};
39
40template<storm::dd::DdType DdType, typename ValueType>
42 public:
43 friend class SignatureIterator<DdType, ValueType>;
44
46 bool ensureQualitative = false);
47 SignatureComputer(storm::dd::Add<DdType, ValueType> const& transitionMatrix, std::set<storm::expressions::Variable> const& columnVariables,
48 SignatureMode const& mode = SignatureMode::Eager, bool ensureQualitative = false);
49 SignatureComputer(storm::dd::Bdd<DdType> const& qualitativeTransitionMatrix, std::set<storm::expressions::Variable> const& columnVariables,
50 SignatureMode const& mode = SignatureMode::Eager, bool ensureQualitative = false);
51 SignatureComputer(storm::dd::Add<DdType, ValueType> const& transitionMatrix, boost::optional<storm::dd::Bdd<DdType>> const& qualitativeTransitionMatrix,
52 std::set<storm::expressions::Variable> const& columnVariables, SignatureMode const& mode = SignatureMode::Eager,
53 bool ensureQualitative = false);
54
55 void setSignatureMode(SignatureMode const& newMode);
56
58
62
63 private:
64 bool qualitativeTransitionMatrixIsBdd() const;
65 storm::dd::Bdd<DdType> const& getQualitativeTransitionMatrixAsBdd() const;
66 storm::dd::Add<DdType, ValueType> const& getQualitativeTransitionMatrixAsAdd() const;
67
68 SignatureMode const& getSignatureMode() const;
69
71 storm::dd::Add<DdType, ValueType> transitionMatrix;
72
74 std::set<storm::expressions::Variable> columnVariables;
75
77 SignatureMode mode;
78
80 bool ensureQualitative;
81
83 mutable boost::optional<boost::variant<storm::dd::Bdd<DdType>, storm::dd::Add<DdType, ValueType>>> transitionMatrix01;
84};
85
86} // namespace bisimulation
87} // namespace dd
88} // namespace storm
Signature< DdType, ValueType > getFullSignature(Partition< DdType, ValueType > const &partition) const
Methods to compute the signatures.
Signature< DdType, ValueType > getQualitativeSignature(Partition< DdType, ValueType > const &partition) const
SignatureIterator< DdType, ValueType > compute(Partition< DdType, ValueType > const &partition)
void setSignatureMode(SignatureMode const &newMode)
Signature< DdType, ValueType > next()
Base class for all symbolic models.
Definition Model.h:46
LabParser.cpp.
Definition cli.cpp:18