Clingo C API
C API for clingo providing high level functions to control grounding and solving.
|
Add non-ground program representations (ASTs) to logic programs or extend the ground (aspif) program.
For an example about ground logic programs, see backend.c. For an example about non-ground logic programs, see ast.c and the Abstract Syntax Trees module.
Typedefs | |
typedef int | clingo_theory_sequence_type_t |
Corresponding type to clingo_theory_sequence_type_e. | |
typedef struct clingo_backend | clingo_backend_t |
Handle to the backend to add directives in aspif format. | |
Enumerations | |
enum | clingo_theory_sequence_type_e { clingo_theory_sequence_type_tuple, clingo_theory_sequence_type_list, clingo_theory_sequence_type_set } |
Enumeration of theory sequence types. More... | |
Functions | |
CLINGO_VISIBILITY_DEFAULT bool | clingo_backend_begin (clingo_backend_t *backend) |
Prepare the backend for usage. More... | |
CLINGO_VISIBILITY_DEFAULT bool | clingo_backend_end (clingo_backend_t *backend) |
Finalize the backend after using it. More... | |
CLINGO_VISIBILITY_DEFAULT bool | clingo_backend_rule (clingo_backend_t *backend, bool choice, clingo_atom_t const *head, size_t head_size, clingo_literal_t const *body, size_t body_size) |
Add a rule to the program. More... | |
CLINGO_VISIBILITY_DEFAULT bool | clingo_backend_weight_rule (clingo_backend_t *backend, bool choice, clingo_atom_t const *head, size_t head_size, clingo_weight_t lower_bound, clingo_weighted_literal_t const *body, size_t body_size) |
Add a weight rule to the program. More... | |
CLINGO_VISIBILITY_DEFAULT bool | clingo_backend_minimize (clingo_backend_t *backend, clingo_weight_t priority, clingo_weighted_literal_t const *literals, size_t size) |
Add a minimize constraint (or weak constraint) to the program. More... | |
CLINGO_VISIBILITY_DEFAULT bool | clingo_backend_project (clingo_backend_t *backend, clingo_atom_t const *atoms, size_t size) |
Add a projection directive. More... | |
CLINGO_VISIBILITY_DEFAULT bool | clingo_backend_external (clingo_backend_t *backend, clingo_atom_t atom, clingo_external_type_t type) |
Add an external statement. More... | |
CLINGO_VISIBILITY_DEFAULT bool | clingo_backend_assume (clingo_backend_t *backend, clingo_literal_t const *literals, size_t size) |
Add an assumption directive. More... | |
CLINGO_VISIBILITY_DEFAULT bool | clingo_backend_heuristic (clingo_backend_t *backend, clingo_atom_t atom, clingo_heuristic_type_t type, int bias, unsigned priority, clingo_literal_t const *condition, size_t size) |
Add an heuristic directive. More... | |
CLINGO_VISIBILITY_DEFAULT bool | clingo_backend_acyc_edge (clingo_backend_t *backend, int node_u, int node_v, clingo_literal_t const *condition, size_t size) |
Add an edge directive. More... | |
CLINGO_VISIBILITY_DEFAULT bool | clingo_backend_add_atom (clingo_backend_t *backend, clingo_symbol_t *symbol, clingo_atom_t *atom) |
Get a fresh atom to be used in aspif directives. More... | |
CLINGO_VISIBILITY_DEFAULT bool | clingo_backend_theory_term_number (clingo_backend_t *backend, int number, clingo_id_t *term_id) |
Add a numeric theory term. More... | |
CLINGO_VISIBILITY_DEFAULT bool | clingo_backend_theory_term_string (clingo_backend_t *backend, char const *string, clingo_id_t *term_id) |
Add a theory term representing a string. More... | |
CLINGO_VISIBILITY_DEFAULT bool | clingo_backend_theory_term_sequence (clingo_backend_t *backend, clingo_theory_sequence_type_t type, clingo_id_t const *arguments, size_t size, clingo_id_t *term_id) |
Add a theory term representing a sequence of theory terms. More... | |
CLINGO_VISIBILITY_DEFAULT bool | clingo_backend_theory_term_function (clingo_backend_t *backend, char const *name, clingo_id_t const *arguments, size_t size, clingo_id_t *term_id) |
Add a theory term representing a function. More... | |
CLINGO_VISIBILITY_DEFAULT bool | clingo_backend_theory_term_symbol (clingo_backend_t *backend, clingo_symbol_t symbol, clingo_id_t *term_id) |
Convert the given symbol into a theory term. More... | |
CLINGO_VISIBILITY_DEFAULT bool | clingo_backend_theory_element (clingo_backend_t *backend, clingo_id_t const *tuple, size_t tuple_size, clingo_literal_t const *condition, size_t condition_size, clingo_id_t *element_id) |
Add a theory atom element. More... | |
CLINGO_VISIBILITY_DEFAULT bool | clingo_backend_theory_atom (clingo_backend_t *backend, clingo_atom_t atom_id_or_zero, clingo_id_t term_id, clingo_id_t const *elements, size_t size) |
Add a theory atom without a guard. More... | |
CLINGO_VISIBILITY_DEFAULT bool | clingo_backend_theory_atom_with_guard (clingo_backend_t *backend, clingo_atom_t atom_id_or_zero, clingo_id_t term_id, clingo_id_t const *elements, size_t size, char const *operator_name, clingo_id_t right_hand_side_id) |
Add a theory atom with a guard. More... | |
CLINGO_VISIBILITY_DEFAULT bool clingo_backend_acyc_edge | ( | clingo_backend_t * | backend, |
int | node_u, | ||
int | node_v, | ||
clingo_literal_t const * | condition, | ||
size_t | size | ||
) |
Add an edge directive.
[in] | backend | the target backend |
[in] | node_u | the start vertex of the edge |
[in] | node_v | the end vertex of the edge |
[in] | condition | the condition under which the edge is part of the graph |
[in] | size | the number of atoms in the condition |
CLINGO_VISIBILITY_DEFAULT bool clingo_backend_add_atom | ( | clingo_backend_t * | backend, |
clingo_symbol_t * | symbol, | ||
clingo_atom_t * | atom | ||
) |
Get a fresh atom to be used in aspif directives.
[in] | backend | the target backend |
[in] | symbol | optional symbol to associate the atom with |
[out] | atom | the resulting atom |
CLINGO_VISIBILITY_DEFAULT bool clingo_backend_assume | ( | clingo_backend_t * | backend, |
clingo_literal_t const * | literals, | ||
size_t | size | ||
) |
Add an assumption directive.
[in] | backend | the target backend |
[in] | literals | the literals to assume (positive literals are true and negative literals false for the next solve call) |
[in] | size | the number of atoms |
CLINGO_VISIBILITY_DEFAULT bool clingo_backend_begin | ( | clingo_backend_t * | backend | ) |
Prepare the backend for usage.
[in] | backend | the target backend |
CLINGO_VISIBILITY_DEFAULT bool clingo_backend_end | ( | clingo_backend_t * | backend | ) |
Finalize the backend after using it.
[in] | backend | the target backend |
CLINGO_VISIBILITY_DEFAULT bool clingo_backend_external | ( | clingo_backend_t * | backend, |
clingo_atom_t | atom, | ||
clingo_external_type_t | type | ||
) |
Add an external statement.
[in] | backend | the target backend |
[in] | atom | the external atom |
[in] | type | the type of the external statement |
CLINGO_VISIBILITY_DEFAULT bool clingo_backend_heuristic | ( | clingo_backend_t * | backend, |
clingo_atom_t | atom, | ||
clingo_heuristic_type_t | type, | ||
int | bias, | ||
unsigned | priority, | ||
clingo_literal_t const * | condition, | ||
size_t | size | ||
) |
Add an heuristic directive.
[in] | backend | the target backend |
[in] | atom | the target atom |
[in] | type | the type of the heuristic modification |
[in] | bias | the heuristic bias |
[in] | priority | the heuristic priority |
[in] | condition | the condition under which to apply the heuristic modification |
[in] | size | the number of atoms in the condition |
CLINGO_VISIBILITY_DEFAULT bool clingo_backend_minimize | ( | clingo_backend_t * | backend, |
clingo_weight_t | priority, | ||
clingo_weighted_literal_t const * | literals, | ||
size_t | size | ||
) |
Add a minimize constraint (or weak constraint) to the program.
[in] | backend | the target backend |
[in] | priority | the priority of the constraint |
[in] | literals | the weighted literals whose sum to minimize |
[in] | size | the number of weighted literals |
CLINGO_VISIBILITY_DEFAULT bool clingo_backend_project | ( | clingo_backend_t * | backend, |
clingo_atom_t const * | atoms, | ||
size_t | size | ||
) |
Add a projection directive.
[in] | backend | the target backend |
[in] | atoms | the atoms to project on |
[in] | size | the number of atoms |
CLINGO_VISIBILITY_DEFAULT bool clingo_backend_rule | ( | clingo_backend_t * | backend, |
bool | choice, | ||
clingo_atom_t const * | head, | ||
size_t | head_size, | ||
clingo_literal_t const * | body, | ||
size_t | body_size | ||
) |
Add a rule to the program.
[in] | backend | the target backend |
[in] | choice | determines if the head is a choice or a disjunction |
[in] | head | the head atoms |
[in] | head_size | the number of atoms in the head |
[in] | body | the body literals |
[in] | body_size | the number of literals in the body |
CLINGO_VISIBILITY_DEFAULT bool clingo_backend_theory_atom | ( | clingo_backend_t * | backend, |
clingo_atom_t | atom_id_or_zero, | ||
clingo_id_t | term_id, | ||
clingo_id_t const * | elements, | ||
size_t | size | ||
) |
Add a theory atom without a guard.
[in] | backend | the target backend |
[in] | atom_id_or_zero | a program atom or zero for theory directives |
[in] | term_id | the term id of the term associated with the theory atom |
[in] | elements | an array of element ids for the theory atoms's elements |
[in] | size | the number of elements |
CLINGO_VISIBILITY_DEFAULT bool clingo_backend_theory_atom_with_guard | ( | clingo_backend_t * | backend, |
clingo_atom_t | atom_id_or_zero, | ||
clingo_id_t | term_id, | ||
clingo_id_t const * | elements, | ||
size_t | size, | ||
char const * | operator_name, | ||
clingo_id_t | right_hand_side_id | ||
) |
Add a theory atom with a guard.
[in] | backend | the target backend |
[in] | atom_id_or_zero | a program atom or zero for theory directives |
[in] | term_id | the term id of the term associated with the theory atom |
[in] | elements | an array of element ids for the theory atoms's elements |
[in] | size | the number of elements |
[in] | operator_name | the string representation of a theory operator |
[in] | right_hand_side_id | the term id of the right hand side term |
CLINGO_VISIBILITY_DEFAULT bool clingo_backend_theory_element | ( | clingo_backend_t * | backend, |
clingo_id_t const * | tuple, | ||
size_t | tuple_size, | ||
clingo_literal_t const * | condition, | ||
size_t | condition_size, | ||
clingo_id_t * | element_id | ||
) |
Add a theory atom element.
[in] | backend | the target backend |
[in] | tuple | the array of term ids represeting the tuple |
[in] | tuple_size | the size of the tuple |
[in] | condition | an array of program literals represeting the condition |
[in] | condition_size | the size of the condition |
[out] | element_id | the resulting element id |
CLINGO_VISIBILITY_DEFAULT bool clingo_backend_theory_term_function | ( | clingo_backend_t * | backend, |
char const * | name, | ||
clingo_id_t const * | arguments, | ||
size_t | size, | ||
clingo_id_t * | term_id | ||
) |
Add a theory term representing a function.
[in] | backend | the target backend |
[in] | name | the name of the function |
[in] | arguments | an array of term ids for the theory terms in the arguments |
[in] | size | the number of arguments |
[out] | term_id | the resulting term id |
CLINGO_VISIBILITY_DEFAULT bool clingo_backend_theory_term_number | ( | clingo_backend_t * | backend, |
int | number, | ||
clingo_id_t * | term_id | ||
) |
Add a numeric theory term.
[in] | backend | the target backend |
[in] | number | the value of the term |
[out] | term_id | the resulting term id |
CLINGO_VISIBILITY_DEFAULT bool clingo_backend_theory_term_sequence | ( | clingo_backend_t * | backend, |
clingo_theory_sequence_type_t | type, | ||
clingo_id_t const * | arguments, | ||
size_t | size, | ||
clingo_id_t * | term_id | ||
) |
Add a theory term representing a sequence of theory terms.
[in] | backend | the target backend |
[in] | type | the type of the sequence |
[in] | arguments | the term ids of the terms in the sequence |
[in] | size | the number of elements of the sequence |
[out] | term_id | the resulting term id |
CLINGO_VISIBILITY_DEFAULT bool clingo_backend_theory_term_string | ( | clingo_backend_t * | backend, |
char const * | string, | ||
clingo_id_t * | term_id | ||
) |
Add a theory term representing a string.
[in] | backend | the target backend |
[in] | string | the value of the term |
[out] | term_id | the resulting term id |
CLINGO_VISIBILITY_DEFAULT bool clingo_backend_theory_term_symbol | ( | clingo_backend_t * | backend, |
clingo_symbol_t | symbol, | ||
clingo_id_t * | term_id | ||
) |
Convert the given symbol into a theory term.
[in] | backend | the target backend |
[in] | symbol | the symbol to convert |
[out] | term_id | the resulting term id |
CLINGO_VISIBILITY_DEFAULT bool clingo_backend_weight_rule | ( | clingo_backend_t * | backend, |
bool | choice, | ||
clingo_atom_t const * | head, | ||
size_t | head_size, | ||
clingo_weight_t | lower_bound, | ||
clingo_weighted_literal_t const * | body, | ||
size_t | body_size | ||
) |
Add a weight rule to the program.
[in] | backend | the target backend |
[in] | choice | determines if the head is a choice or a disjunction |
[in] | head | the head atoms |
[in] | head_size | the number of atoms in the head |
[in] | lower_bound | the lower bound of the weight rule |
[in] | body | the weighted body literals |
[in] | body_size | the number of weighted literals in the body |