1
/* PeTe - Petri Engine exTremE
2
* Copyright (C) 2011 Jonas Finnemann Jensen <jopsen@gmail.com>,
3
* Thomas Søndersø Nielsen <primogens@gmail.com>,
4
* Lars Kærlund Østergaard <larsko@gmail.com>,
5
* Peter Gjøl Jensen <root@petergjoel.dk>
7
* This program is free software: you can redistribute it and/or modify
8
* it under the terms of the GNU General Public License as published by
9
* the Free Software Foundation, either version 3 of the License, or
10
* (at your option) any later version.
12
* This program is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
* GNU General Public License for more details.
17
* You should have received a copy of the GNU General Public License
18
* along with this program. If not, see <http://www.gnu.org/licenses/>.
20
#ifndef REACHABILITYRESULT_H
21
#define REACHABILITYRESULT_H
24
#include "../PQL/PQL.h"
25
#include "../Structures/StateSet.h"
26
#include "../Reducer.h"
30
namespace PetriEngine {
31
class PetriNetBuilder;
32
namespace Reachability {
34
/** Result of a reachability search */
38
PetriNetBuilder* builder;
40
std::vector<std::string>& querynames;
43
/** Types of results */
45
/** The query was satisfied */
47
/** The query cannot be satisfied */
49
/** We're unable to say if the query can be satisfied */
51
/** The query should be verified using the CTL engine */
57
const string techniques = "TECHNIQUES COLLATERAL_PROCESSING STRUCTURAL_REDUCTION QUERY_REDUCTION SAT_SMT ";
58
const string techniquesStateSpace = "TECHNIQUES EXPLICIT STATE_COMPRESSION";
60
ResultPrinter(PetriNetBuilder* b, options_t* o, std::vector<std::string>& querynames)
61
: builder(b), options(o), querynames(querynames), reducer(NULL)
64
void setReducer(Reducer* r) { this->reducer = r; }
68
PQL::Condition* query,
69
ResultPrinter::Result result = Unknown,
70
size_t expandedStates = 0,
71
size_t exploredStates = 0,
72
size_t discoveredStates = 0,
73
const std::vector<size_t> enabledTransitionsCount = std::vector<size_t>(),
75
const std::vector<uint32_t> maxPlaceBound = std::vector<uint32_t>(),
76
Structures::StateSetInterface* stateset = NULL, size_t lastmarking = 0 );
78
std::string printTechniques();
80
void printTrace(Structures::StateSetInterface*, size_t lastmarking);
86
#endif // REACHABILITYRESULT_H