3#include <clingo/input/statement.hh>
5#include <clingo/core/logger.hh>
9namespace CppClingo::Input {
42 [[nodiscard]]
auto m() const ->
Number const & {
return std::get<TermSymbol>(
term_m()).value().num(); }
44 [[nodiscard]]
auto n() const ->
Number const & {
return std::get<TermSymbol>(
term_n()).value().num(); }
46 [[nodiscard]]
auto x() const ->
String {
return std::get<TermVariable>(
term_x()).name(); }
48 [[nodiscard]]
auto term_m() const ->
Term const & {
return *std::get<TermBinary>(
term_mx()).lhs(); }
50 [[nodiscard]]
auto term_n() const ->
Term const & {
return mxn_->
rhs(); }
52 [[nodiscard]]
auto term_x() const ->
Term const & {
return *std::get<TermBinary>(
term_mx()).rhs(); }
99 return std::holds_alternative<TermSymbol>(term);
104 return std::holds_alternative<TermVariable>(term);
108[[nodiscard]]
inline auto is_fixed(
Lit const &lit) -> std::optional<bool> {
109 if (
auto const *blit = std::get_if<LitBool>(&lit); blit !=
nullptr) {
110 return blit->value() == (blit->sign() !=
Sign::once);
134[[nodiscard]]
inline auto is_boolean(
Lit const &lit) -> std::optional<bool> {
135 if (
auto const *lb = std::get_if<LitBool>(&lit); lb !=
nullptr) {
136 return lb->value() == (lb->sign() !=
Sign::once);
173 return (!name.empty() && std::strchr(
"/!<=>+-*\\?&@|:;~^.", name.front()) !=
nullptr) || (name ==
"not");
177[[nodiscard]]
auto signature(
Term const &term) -> std::optional<std::tuple<String, size_t, bool>>;
Simple logger to report message to stderr or via a callback.
Definition logger.hh:63
An arbitrary precision integer.
Definition number.hh:27
Reference to a string stored in a symbol store.
Definition symbol.hh:18
A store for symbols.
Definition symbol.hh:454
std::variant< BdLitSimple, BdLitConjunction, BdLitAggregate, BdLitSetAggregate, BdLitTheoryAtom > BdLit
A body literal.
Definition body_literal.hh:116