2
* Copyright Peter G. Jensen, all rights reserved.
7
* Author: Peter G. Jensen <root@petergjoel.dk>
9
* Created on April 3, 2020, 8:08 PM
15
#include "TARAutomata.h"
17
#include "PetriEngine/PQL/PQL.h"
23
namespace PetriEngine {
24
namespace Reachability {
28
using inter_t = std::pair<prvector_t, size_t>;
29
using interpolant_t = std::vector<inter_t>;
30
Solver(PetriNet& net, MarkVal* initial, Condition* query, std::vector<bool>& inq);
31
bool check(trace_t& trace, TraceSet& interpolants);
32
const std::vector<bool>& in_query() const { return _inq; }
33
Condition* query() const { return _query; }
35
int64_t findFailure(trace_t& trace, bool to_end);
36
interpolant_t findFree(trace_t& trace);
37
bool computeHoare(trace_t& trace, interpolant_t& ranges, int64_t fail);
38
bool computeTerminal(state_t& end, inter_t& last);
42
std::vector<bool> _inq;
43
std::vector<bool> _dirty;
44
std::unique_ptr<int64_t[]> _m;
45
std::unique_ptr<int64_t[]> _failm;
46
std::unique_ptr<MarkVal[]> _mark;
47
std::unique_ptr<uint64_t[]> _use_count;
49
SuccessorGenerator _gen;