2
* DiscreteVerification.hpp
4
* Created on: 23 Feb 2012
8
#ifndef DISCRETEVERIFICATION_HPP_
9
#define DISCRETEVERIFICATION_HPP_
12
#include "../Core/TAPN/TAPN.hpp"
13
#include "../Core/QueryParser/AST.hpp"
14
#include "../Core/VerificationOptions.hpp"
15
#include "DataStructures/NonStrictMarking.hpp"
16
#include "../../lib/rapidxml-1.13/rapidxml.hpp"
17
#include "../../lib/rapidxml-1.13/rapidxml_print.hpp"
18
#include "SearchStrategies/SearchStrategy.hpp"
19
#include "../Core/TAPNParser/util.hpp"
21
#include "VerificationTypes/Verification.hpp"
22
#include "VerificationTypes/LivenessSearch.hpp"
23
#include "VerificationTypes/ReachabilitySearch.hpp"
24
#include "VerificationTypes/TimeDartReachabilitySearch.hpp"
25
#include "VerificationTypes/TimeDartLiveness.hpp"
26
#include "VerificationTypes/WorkflowSoundness.hpp"
27
#include "VerificationTypes/WorkflowStrongSoundness.hpp"
28
#include "SearchStrategies/SearchFactory.h"
31
namespace VerifyTAPN {
33
namespace DiscreteVerification {
35
class DiscreteVerification {
37
DiscreteVerification();
38
virtual ~DiscreteVerification();
39
static int run(TAPN::TimedArcPetriNet& tapn, std::vector<int> initialPlacement, AST::Query* query, VerificationOptions& options);
41
static void printHumanTrace(bool result, NonStrictMarking* m, std::stack<NonStrictMarking*>& stack, AST::Quantifier query);
42
static void printXMLTrace(bool result, NonStrictMarking* m, std::stack<NonStrictMarking*>& stack, AST::Quantifier query);
43
static rapidxml::xml_node<>* createTransitionNode(NonStrictMarking* old, NonStrictMarking* current, rapidxml::xml_document<>& doc);
44
static rapidxml::xml_node<>* createTokenNode(rapidxml::xml_document<>& doc, const TAPN::TimedPlace& place, const Token& token);
45
static void createTransitionSubNodes(NonStrictMarking* old, NonStrictMarking* current, rapidxml::xml_document<>& doc, rapidxml::xml_node<>* transitionNode, const TAPN::TimedPlace& place, const TAPN::TimeInterval& interval, const int weight);
46
static void generateTraceStack(NonStrictMarking* m, std::stack<NonStrictMarking*>* stack, std::stack<NonStrictMarking*>* liveness = NULL);
53
#endif /* DISCRETEVERIFICATION_HPP_ */