Storm 1.11.1.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
InternalSylvanSignatureRefiner.h
Go to the documentation of this file.
1#pragma once
2
3#include "storm-config.h"
8
9namespace storm {
10namespace dd {
11template<storm::dd::DdType DdType>
12class DdManager;
13
14namespace bisimulation {
15
16template<storm::dd::DdType DdType, typename ValueType>
17class Partition;
18
19template<storm::dd::DdType DdType, typename ValueType>
20class Signature;
21
23 public:
25 std::set<storm::expressions::Variable> const& stateVariables,
26 storm::dd::Bdd<storm::dd::DdType::Sylvan> const& nondeterminismVariables,
27 storm::dd::Bdd<storm::dd::DdType::Sylvan> const& nonBlockVariables, InternalSignatureRefinerOptions const& options);
28
29#ifdef STORM_HAVE_SYLVAN
31 storm::expressions::Variable blockVariable;
32 std::set<storm::expressions::Variable> stateVariables;
33
34 storm::dd::Bdd<storm::dd::DdType::Sylvan> nondeterminismVariables;
36
37 // The provided options.
39
40 uint64_t numberOfBlockVariables;
41
43
44 // The current number of blocks of the new partition.
45 uint64_t nextFreeBlockIndex;
46
47 // The number of completed refinements.
48 uint64_t numberOfRefinements;
49
50 // Data used by sylvan implementation.
51 std::vector<BDD> signatures;
52 uint64_t currentCapacity;
53 std::vector<uint64_t> table;
54 std::vector<uint64_t> oldTable;
55 uint64_t resizeFlag;
56#endif
57};
58
59template<typename ValueType>
61 public:
63 std::set<storm::expressions::Variable> const& stateVariables,
64 storm::dd::Bdd<storm::dd::DdType::Sylvan> const& nondeterminismVariables,
65 storm::dd::Bdd<storm::dd::DdType::Sylvan> const& nonBlockVariables, InternalSignatureRefinerOptions const& options);
66
69
70 private:
71#ifdef STORM_HAVE_SYLVAN
72 void clearCaches();
73
74 std::pair<storm::dd::Bdd<storm::dd::DdType::Sylvan>, boost::optional<storm::dd::Bdd<storm::dd::DdType::Sylvan>>> refine(
76#endif
77};
78
79} // namespace bisimulation
80} // namespace dd
81} // namespace storm