10
#include "Reachability/ReachabilitySearch.h"
11
#include "../CTL/Algorithm/AlgorithmTypes.h"
14
// bool outputtrace = false;
16
char* modelfile = NULL;
17
char* queryfile = NULL;
18
int enablereduction = 1; // 0 ... disabled, 1 ... aggresive (default), 2 ... k-boundedness preserving, 3 ... selection
19
std::vector<uint32_t> reductions{8,2,3,4,5,7,9,6,0,1};
20
int reductionTimeout = 60;
21
bool stubbornreduction = true;
22
bool statespaceexploration = false;
23
bool printstatistics = true;
24
std::set<size_t> querynumbers;
25
PetriEngine::Reachability::Strategy strategy = PetriEngine::Reachability::DEFAULT;
27
int queryReductionTimeout = 30, lpsolveTimeout = 10;
28
uint32_t siphontrapTimeout = 0;
29
uint32_t siphonDepth = 0;
32
//CTL Specific options
33
bool gamemode = false;
35
CTL::CTLAlgorithmType ctlalgorithm = CTL::CZero;
37
uint32_t binary_query_io = 0;
39
std::string query_out_file;
40
std::string model_out_file;
43
//CPN Specific options
44
bool cpnOverApprox = false;
46
uint32_t seed_offset = 0;
49
if (!printstatistics) {
55
if (strategy == PetriEngine::Reachability::Strategy::BFS) {
56
optionsOut = "\nSearch=BFS";
57
} else if (strategy == PetriEngine::Reachability::Strategy::DFS) {
58
optionsOut = "\nSearch=DFS";
59
} else if (strategy == PetriEngine::Reachability::Strategy::HEUR) {
60
optionsOut = "\nSearch=HEUR";
61
} else if (strategy == PetriEngine::Reachability::Strategy::RDFS){
62
optionsOut = "\nSearch=RDFS";
64
optionsOut = "\nSearch=OverApprox";
68
optionsOut += ",Trace=ENABLED";
70
optionsOut += ",Trace=DISABLED";
74
optionsOut += ",Token_Bound=" + std::to_string(kbound);
77
if (statespaceexploration) {
78
optionsOut += ",State_Space_Exploration=ENABLED";
80
optionsOut += ",State_Space_Exploration=DISABLED";
83
if (enablereduction == 0) {
84
optionsOut += ",Structural_Reduction=DISABLED";
85
} else if (enablereduction == 1) {
86
optionsOut += ",Structural_Reduction=AGGRESSIVE";
88
optionsOut += ",Structural_Reduction=KBOUND_PRESERVING";
91
optionsOut += ",Struct_Red_Timout=" + std::to_string(reductionTimeout);
93
if (stubbornreduction) {
94
optionsOut += ",Stubborn_Reduction=ENABLED";
96
optionsOut += ",Stubborn_Reduction=DISABLED";
99
if (queryReductionTimeout > 0) {
100
optionsOut += ",Query_Simplication=ENABLED,QSTimeout=" + std::to_string(queryReductionTimeout);
102
optionsOut += ",Query_Simplication=DISABLED";
105
if (siphontrapTimeout > 0) {
106
optionsOut += ",Siphon_Trap=ENABLED,SPTimeout=" + std::to_string(siphontrapTimeout);
108
optionsOut += ",Siphon_Trap=DISABLED";
111
optionsOut += ",LPSolve_Timeout=" + std::to_string(lpsolveTimeout);
114
if (ctlalgorithm == CTL::CZero) {
115
optionsOut += ",CTLAlgorithm=CZERO";
117
optionsOut += ",CTLAlgorithm=LOCAL";
122
std::cout << optionsOut;