Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
JaniLocationExpander.h
Go to the documentation of this file.
1#pragma once
2
5
6namespace storm {
7namespace jani {
9 public:
10 explicit JaniLocationExpander(Model const& original);
11
12 struct NewIndices {
13 // Maps each old location index to a map that maps every variable value to the index of the (new) location that corresponds to the old location and
14 // variable value
15 std::map<uint64_t, std::map<int64_t, uint64_t>> locationVariableValueMap;
16 // Contains all variable values of the expanded variable
17 std::vector<storm::expressions::Expression> variableDomain;
18 // Maps each excluded location index (cf. excludeLocation(...)) to its new index.
19 std::map<uint64_t, uint64_t> excludedLocationsToNewIndices;
20 };
21
26 ReturnType transform(std::string const& automatonName, std::string const& variableName);
27
28 // Excludes a location from the expansion process -- it will not be duplicated for every value in the variable domain. This only works if the
29 // location has no outgoing edges. It may be useful to exclude sink locations using this method to reduce the number of locations in the resulting
30 // model.
31 void excludeLocation(uint64_t index);
32
33 private:
34 Model const& original;
35 Model newModel;
36
37 std::set<uint64_t> excludedLocations;
38
39 struct AutomatonAndIndices {
40 Automaton newAutomaton;
41 NewIndices newIndices;
42 };
43 AutomatonAndIndices transformAutomaton(Automaton const& automaton, std::string const& variableName, bool useTransientVariables = true);
44};
45} // namespace jani
46
47} // namespace storm
ReturnType transform(std::string const &automatonName, std::string const &variableName)
LabParser.cpp.
Definition cli.cpp:18
std::vector< storm::expressions::Expression > variableDomain
std::map< uint64_t, uint64_t > excludedLocationsToNewIndices
std::map< uint64_t, std::map< int64_t, uint64_t > > locationVariableValueMap