Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
CompositionInformationVisitor.h
Go to the documentation of this file.
1#pragma once
2
3#include <cstdint>
4#include <map>
5#include <set>
6
7#include <boost/optional.hpp>
8
10
11namespace storm {
12namespace jani {
13
14class Model;
15
17 public:
19
20 void increaseAutomatonMultiplicity(std::string const& automatonName, uint64_t count = 1);
21 std::map<std::string, uint64_t> const& getAutomatonToMultiplicityMap() const;
22 static std::map<std::string, uint64_t> joinMultiplicityMaps(std::map<std::string, uint64_t> const& first, std::map<std::string, uint64_t> const& second);
23 void addMultiplicityMap(std::map<std::string, uint64_t> const& multiplicityMap);
24
27
30
31 void setContainsParallelComposition(bool value);
32 bool containsParallelComposition() const;
33
34 std::string const& getActionName(uint64_t index) const;
35 uint64_t getActionIndex(std::string const& name) const;
36
37 void addNonSilentActionIndex(uint64_t index);
38 void addNonSilentActionIndices(std::set<uint64_t> const& indices);
39 bool hasNonSilentActionIndex(uint64_t index);
40 void addInputEnabledActionIndex(uint64_t index);
41
42 std::set<uint64_t> const& getNonSilentActionIndices() const;
43 std::set<uint64_t> const& getInputEnabledActionIndices() const;
44
45 void setMappings(std::map<uint64_t, std::string> const& indexToNameMap, std::map<std::string, uint64_t> const& nameToIndexMap);
46
47 private:
49 std::set<uint64_t> nonSilentActionIndices;
50
52 std::set<uint64_t> inputEnabledActionIndices;
53
56 std::map<uint64_t, std::string> indexToNameMap;
57
59 std::map<std::string, uint64_t> nameToIndexMap;
60
62 std::map<std::string, uint64_t> automatonNameToMultiplicity;
63
65 bool nonStandardParallelComposition;
66
68 bool nestedParallelComposition;
69
71 bool parallelComposition;
72};
73
75 public:
76 CompositionInformationVisitor(Model const& model, Composition const& composition);
78
79 virtual boost::any visit(AutomatonComposition const& composition, boost::any const& data) override;
80 virtual boost::any visit(ParallelComposition const& composition, boost::any const& data) override;
81
82 private:
83 uint64_t addOrGetActionIndex(std::string const& name);
84
85 storm::jani::Model const& model;
86 Composition const& composition;
87 uint64_t nextFreeActionIndex;
88 std::map<std::string, uint64_t> nameToIndexMap;
89 std::map<uint64_t, std::string> indexToNameMap;
90};
91
92} // namespace jani
93} // namespace storm
std::map< std::string, uint64_t > const & getAutomatonToMultiplicityMap() const
void increaseAutomatonMultiplicity(std::string const &automatonName, uint64_t count=1)
std::string const & getActionName(uint64_t index) const
std::set< uint64_t > const & getNonSilentActionIndices() const
static std::map< std::string, uint64_t > joinMultiplicityMaps(std::map< std::string, uint64_t > const &first, std::map< std::string, uint64_t > const &second)
std::set< uint64_t > const & getInputEnabledActionIndices() const
void setMappings(std::map< uint64_t, std::string > const &indexToNameMap, std::map< std::string, uint64_t > const &nameToIndexMap)
void addMultiplicityMap(std::map< std::string, uint64_t > const &multiplicityMap)
uint64_t getActionIndex(std::string const &name) const
void addNonSilentActionIndices(std::set< uint64_t > const &indices)
virtual boost::any visit(AutomatonComposition const &composition, boost::any const &data) override
LabParser.cpp.
Definition cli.cpp:18