Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
AutomaticAction.h
Go to the documentation of this file.
1#pragma once
2
3#include <boost/optional.hpp>
4#include <vector>
8
9// AutomaticAction performs location elimination completely automatically. For this, it alternates between unfolding a variable and eliminating as many
10// locations as possible from the model. There are two main parameters to control this process:
11// * locationLimit: If this number of locations is reached, no further unfolding will be performed
12// * newTransitionLimit: Each candidate location will only be removed if doing so creates at most this many new transitions.
13
14namespace storm {
15namespace jani {
16namespace elimination_actions {
18 public:
19 explicit AutomaticAction();
20 explicit AutomaticAction(uint64_t locationLimit, uint64_t newTransitionLimit, uint64_t maxDomainSize = 100, bool flatten = true);
21
22 std::string getDescription() override;
23
24 void doAction(JaniLocalEliminator::Session &session) override;
25
26 private:
27 uint64_t locationLimit;
28 uint64_t newTransitionLimit;
29 uint64_t maxDomainSize;
30 bool flatten;
31
32 void processAutomaton(JaniLocalEliminator::Session &session, std::string const &autName);
33
34 void unfoldGroupAndDependencies(JaniLocalEliminator::Session &session, const std::string &autName, UnfoldDependencyGraph &dependencyGraph,
35 uint32_t groupIndex);
36
37 boost::optional<uint32_t> chooseNextUnfold(JaniLocalEliminator::Session &session, std::string const &automatonName, UnfoldDependencyGraph &dependencyGraph,
38 bool onlyPropertyVariables);
39 std::map<std::string, double> getAssignmentCountByVariable(JaniLocalEliminator::Session &session, std::string const &automatonName);
40};
41} // namespace elimination_actions
42} // namespace jani
43} // namespace storm
void doAction(JaniLocalEliminator::Session &session) override
LabParser.cpp.
Definition cli.cpp:18