18
18
#ifndef VERIFYPN_RANDOMNDFS_H
19
19
#define VERIFYPN_RANDOMNDFS_H
21
#include "ModelChecker.h"
21
#include "LTL/Algorithm/ModelChecker.h"
22
22
#include "PetriEngine/Structures/StateSet.h"
23
23
#include "PetriEngine/Structures/State.h"
24
24
#include "PetriEngine/Structures/Queue.h"
27
27
#include <ptrie/ptrie_stable.h>
29
using namespace PetriEngine;
32
class RandomNDFS : public ModelChecker {
30
class RandomNDFS : public ModelChecker<LTL::SpoolingSuccessorGenerator> {
34
RandomNDFS(const PetriNet &net, PetriEngine::PQL::Condition_ptr ptr)
35
: ModelChecker(net, ptr, false), factory{net, successorGenerator->initial_buchi_state()},
36
mark1(net, 0, (int) net.numberOfPlaces() + 1), mark2(net, 0, (int) net.numberOfPlaces() + 1) {}
32
RandomNDFS(const PetriEngine::PetriNet *net, const PetriEngine::PQL::Condition_ptr &cond,
33
const Structures::BuchiAutomaton &buchi,
34
LTL::SpoolingSuccessorGenerator &&successorGen, TraceLevel level,
35
bool shortcircuitweak, size_t random_seed)
36
: ModelChecker(net, cond, buchi, std::move(successorGen), level, shortcircuitweak),
37
factory{net, successorGenerator->initial_buchi_state()},
38
mark1(*net, 0, (int) net->numberOfPlaces() + 1), mark2(*net, 0, (int) net->numberOfPlaces() + 1),
39
random_seed(random_seed) {}
38
41
bool isSatisfied() override;