AI 24/25 Project Software
Documentation for the AI 24/25 course programming project software
Loading...
Searching...
No Matches
utils_landmarks.h
1#ifndef CEGAR_UTILS_LANDMARKS_H
2#define CEGAR_UTILS_LANDMARKS_H
3
4#include <memory>
5#include <unordered_map>
6#include <vector>
7
8class AbstractTask;
9struct FactPair;
10
11namespace landmarks {
12class LandmarkGraph;
13}
14
15namespace cartesian_abstractions {
16using VarToValues = std::unordered_map<int, std::vector<int>>;
17
18extern std::shared_ptr<landmarks::LandmarkGraph>
19get_landmark_graph(const std::shared_ptr<AbstractTask>& task);
20extern std::vector<FactPair>
21get_fact_landmarks(const landmarks::LandmarkGraph& graph);
22
23/*
24 Do a breadth-first search through the landmark graph ignoring
25 duplicates. Start at the node for the given fact and collect for each
26 variable the facts that have to be made true before the given fact
27 can be true for the first time.
28*/
29extern VarToValues
30get_prev_landmarks(const landmarks::LandmarkGraph& graph, const FactPair& fact);
31} // namespace cartesian_abstractions
32
33#endif