Clingo
|
Add non-ground program representations (ASTs) to logic programs or extend the ground (aspif) program. More...
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 = 0 , clingo_theory_sequence_type_set = 1 , clingo_theory_sequence_type_list = 2 } |
Enumeration of theory sequence types. More... | |
Functions | |
CLINGO_VISIBILITY_DEFAULT bool | clingo_control_backend (clingo_control_t *control, clingo_backend_t **backend) |
Get a backend object to extend the ground program. | |
CLINGO_VISIBILITY_DEFAULT bool | clingo_backend_close (clingo_backend_t *backend) |
Finalize the backend after using it. | |
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. | |
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. | |
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. | |
CLINGO_VISIBILITY_DEFAULT bool | clingo_backend_project (clingo_backend_t *backend, clingo_atom_t const *atoms, size_t size) |
Add a projection directive. | |
CLINGO_VISIBILITY_DEFAULT bool | clingo_backend_external (clingo_backend_t *backend, clingo_atom_t atom, clingo_external_type_t type) |
Add an external statement. | |
CLINGO_VISIBILITY_DEFAULT bool | clingo_backend_assume (clingo_backend_t *backend, clingo_literal_t const *literals, size_t size) |
Add an assumption directive. | |
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 a heuristic directive. | |
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. | |
CLINGO_VISIBILITY_DEFAULT bool | clingo_backend_add_atom (clingo_backend_t *backend, clingo_symbol_t const *symbol, clingo_atom_t *atom) |
Get a fresh atom to be used in aspif directives. | |
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. | |
CLINGO_VISIBILITY_DEFAULT bool | clingo_backend_theory_term_string (clingo_backend_t *backend, char const *string, size_t size, clingo_id_t *term_id) |
Add a theory term representing a string. | |
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. | |
CLINGO_VISIBILITY_DEFAULT bool | clingo_backend_theory_term_function (clingo_backend_t *backend, char const *name, size_t name_size, clingo_id_t const *arguments, size_t arguments_size, clingo_id_t *term_id) |
Add a theory term representing a function. | |
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. | |
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. | |
CLINGO_VISIBILITY_DEFAULT bool | clingo_backend_theory_atom (clingo_backend_t *backend, clingo_symbol_t name, clingo_id_t const *elements, size_t size, clingo_string_t *operator_name, clingo_id_t right_hand_side_id, clingo_atom_t const *atom_in, clingo_atom_t *atom_out) |
Add a theory atom without a guard. | |
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.
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 const * | 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_close | ( | 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 a 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_symbol_t | name, | ||
clingo_id_t const * | elements, | ||
size_t | size, | ||
clingo_string_t * | operator_name, | ||
clingo_id_t | right_hand_side_id, | ||
clingo_atom_t const * | atom_in, | ||
clingo_atom_t * | atom_out | ||
) |
Add a theory atom without a guard.
If the theory atom does not exist yet, the atom receives a fresh program atom, if atom_id is NULL; or *atom_in, otherwise. Note that value zero can be used to mark program directives. The ouput paramater atom_out is set to the final value.
[in] | backend | the target backend |
[in] | name | the symbol representing the name |
[in] | elements | an array of element ids for the theory atom's elements |
[in] | size | the number of elements |
[in] | operator_name | the (optional) right-hand-side operator |
[in] | right_hand_side_id | the term id of the right-hand-side |
[in] | atom_in | the atom as described above |
[out] | atom_out | the final program atom of the theory atom |
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 representing the tuple |
[in] | tuple_size | the size of the tuple |
[in] | condition | an array of program literals representing 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, | ||
size_t | name_size, | ||
clingo_id_t const * | arguments, | ||
size_t | arguments_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] | name_size | the size of the name |
[in] | arguments | an array of term ids for the theory terms in the arguments |
[in] | arguments_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, | ||
size_t | size, | ||
clingo_id_t * | term_id | ||
) |
Add a theory term representing a string.
[in] | backend | the target backend |
[in] | string | the value of the term |
[in] | size | the size of the string |
[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 |
CLINGO_VISIBILITY_DEFAULT bool clingo_control_backend | ( | clingo_control_t * | control, |
clingo_backend_t ** | backend | ||
) |
Get a backend object to extend the ground program.
The control object itself should not be used until the backend is closed.
[in] | control | the control object |
[out] | backend | the resulting backend |