1#ifndef LANDMARKS_LANDMARK_H
2#define LANDMARKS_LANDMARK_H
4#include "downward/task_proxy.h"
6#include <unordered_set>
12 std::vector<FactPair> _facts,
15 bool is_true_in_goal =
false,
16 bool is_derived =
false)
17 : facts(
std::move(_facts))
18 , disjunctive(disjunctive)
19 , conjunctive(conjunctive)
20 , is_true_in_goal(is_true_in_goal)
21 , is_derived(is_derived)
23 assert(!(conjunctive && disjunctive));
25 (conjunctive && facts.size() > 1) ||
26 (disjunctive && facts.size() > 1) || facts.size() == 1);
29 bool operator==(
const Landmark& other)
const {
return this == &other; }
31 bool operator!=(
const Landmark& other)
const {
return !(*
this == other); }
33 std::vector<FactPair> facts;
39 std::unordered_set<int> first_achievers;
40 std::unordered_set<int> possible_achievers;
42 bool is_true_in_state(
const State& state)
const;