10 #ifndef SYMBOLIC_FORMULA_H_
11 #define SYMBOLIC_FORMULA_H_
19 #include "symbolic/object.h"
20 #include "symbolic/proposition.h"
21 #include "symbolic/state.h"
22 #include "symbolic/utils/parameter_generator.h"
44 const std::vector<Object>& parameters);
46 const VAL::goal* symbol()
const {
return symbol_; }
48 bool operator()(
const State& state,
49 const std::vector<Object>& arguments)
const {
50 return P_(state, arguments);
53 bool operator()(
const State& state)
const {
return P_(state, {}); };
55 std::optional<bool> operator()(
const PartialState& state,
56 const std::vector<Object>& arguments)
const;
58 std::optional<bool> operator()(
const PartialState& state)
const;
60 const std::string& to_string()
const {
return str_formula_; }
62 friend std::ostream& operator<<(std::ostream& os,
const Formula& F);
68 static std::function<const std::vector<Object>&(
const std::vector<Object>&)>
70 const std::vector<Object>& prop_params);
73 const VAL::goal* symbol_ =
nullptr;
75 std::function<bool(
const State& state,
const std::vector<Object>& arguments)>
79 const std::vector<Object>& arguments)>
82 std::string str_formula_;
87 #endif // SYMBOLIC_FORMULA_H_