Clingo C API
C API for clingo providing high level functions to control grounding and solving.
Classes | Macros | Typedefs | Enumerations | Functions
clingo.h File Reference

Single header containing the whole clingo API. More...

Go to the source code of this file.

Classes

struct  clingo_location
 Represents a source code location marking its beginnig and end. More...
 
struct  clingo_symbolic_literal
 Represents a symbolic literal. More...
 
struct  clingo_propagator
 An instance of this struct has to be registered with a solver to implement a custom propagator. More...
 
struct  clingo_weighted_literal
 A Literal with an associated weight. More...
 
struct  clingo_ast_term
 
struct  clingo_ast_unary_operation
 
struct  clingo_ast_binary_operation
 
struct  clingo_ast_interval
 
struct  clingo_ast_function
 
struct  clingo_ast_pool
 
struct  clingo_ast_csp_product_term
 
struct  clingo_ast_csp_sum_term
 
struct  clingo_ast_csp_guard
 
struct  clingo_ast_csp_literal
 
struct  clingo_ast_id
 
struct  clingo_ast_comparison
 
struct  clingo_ast_literal
 
struct  clingo_ast_aggregate_guard
 
struct  clingo_ast_conditional_literal
 
struct  clingo_ast_aggregate
 
struct  clingo_ast_body_aggregate_element
 
struct  clingo_ast_body_aggregate
 
struct  clingo_ast_head_aggregate_element
 
struct  clingo_ast_head_aggregate
 
struct  clingo_ast_disjunction
 
struct  clingo_ast_disjoint_element
 
struct  clingo_ast_disjoint
 
struct  clingo_ast_theory_term
 
struct  clingo_ast_theory_term_array
 
struct  clingo_ast_theory_function
 
struct  clingo_ast_theory_unparsed_term_element
 
struct  clingo_ast_theory_unparsed_term
 
struct  clingo_ast_theory_atom_element
 
struct  clingo_ast_theory_guard
 
struct  clingo_ast_theory_atom
 
struct  clingo_ast_head_literal
 
struct  clingo_ast_body_literal
 
struct  clingo_ast_theory_operator_definition
 
struct  clingo_ast_theory_term_definition
 
struct  clingo_ast_theory_guard_definition
 
struct  clingo_ast_theory_atom_definition
 
struct  clingo_ast_theory_definition
 
struct  clingo_ast_rule
 
struct  clingo_ast_definition
 
struct  clingo_ast_show_signature
 
struct  clingo_ast_show_term
 
struct  clingo_ast_minimize
 
struct  clingo_ast_script
 
struct  clingo_ast_program
 
struct  clingo_ast_external
 
struct  clingo_ast_edge
 
struct  clingo_ast_heuristic
 
struct  clingo_ast_project
 
struct  clingo_ast_statement
 
struct  clingo_part
 Struct used to specify the program parts that have to be grounded. More...
 

Macros

#define CLINGO_VERSION_MAJOR   5
 Major version number.
 
#define CLINGO_VERSION_MINOR   0
 Minor version number.
 
#define CLINGO_VERSION_REVISION   0
 Revision number.
 
#define CLINGO_VERSION   #CLINGO_VERSION_MAJOR "." #CLINGO_VERSION_MINOR "." #CLINGO_VERSION_REVISION
 String representation of version.
 

Typedefs

typedef int32_t clingo_literal_t
 Signed integer type used for aspif and solver literals.
 
typedef uint32_t clingo_atom_t
 Unsigned integer type used for aspif atoms.
 
typedef uint32_t clingo_id_t
 Unsigned integer type used in various places.
 
typedef int32_t clingo_weight_t
 Signed integer type for weights in sum aggregates and minimize constraints.
 
typedef int clingo_error_t
 Corresponding type to clingo_error.
 
typedef int clingo_warning_t
 Corresponding type to clingo_warning.
 
typedef void clingo_logger_t(clingo_warning_t code, char const *message, void *data)
 Callback to intercept warning messages. More...
 
typedef int clingo_truth_value_t
 Corresponding type to clingo_truth_value.
 
typedef struct clingo_location clingo_location_t
 Represents a source code location marking its beginnig and end. More...
 
typedef uint64_t clingo_signature_t
 Represents a predicate signature. More...
 
typedef int clingo_symbol_type_t
 Corresponding type to clingo_symbol_type.
 
typedef uint64_t clingo_symbol_t
 Represents a symbol. More...
 
typedef struct clingo_symbolic_literal clingo_symbolic_literal_t
 Represents a symbolic literal.
 
typedef struct clingo_solve_control clingo_solve_control_t
 Object to add clauses during search.
 
typedef struct clingo_model clingo_model_t
 Object representing a model.
 
typedef int clingo_model_type_t
 Corresponding type to clingo_model_type.
 
typedef unsigned clingo_show_type_bitset_t
 Corresponding type to clingo_show_type.
 
typedef unsigned clingo_solve_result_bitset_t
 Corresponding type to clingo_solve_result. More...
 
typedef struct clingo_solve_iteratively clingo_solve_iteratively_t
 Search handle to enumerate models iteratively. More...
 
typedef struct clingo_solve_async clingo_solve_async_t
 Search handle to an asynchronous solve call. More...
 
typedef struct clingo_symbolic_atoms clingo_symbolic_atoms_t
 Object to inspect symbolic atoms in a program—the relevant Herbrand base gringo uses to instantiate programs. More...
 
typedef uint64_t clingo_symbolic_atom_iterator_t
 Object to iterate over symbolic atoms. More...
 
typedef int clingo_theory_term_type_t
 Corresponding type to clingo_theory_term_type.
 
typedef struct clingo_theory_atoms clingo_theory_atoms_t
 Container that stores theory atoms, elements, and terms (see clingo_control_theory_atoms()).
 
typedef struct clingo_propagate_init clingo_propagate_init_t
 Object to initialize a used-defined propagator before each solving step. More...
 
typedef struct clingo_assignment clingo_assignment_t
 Represents a (partial) assignment of a particular solver. More...
 
typedef int clingo_clause_type_t
 Corresponding type to clingo_clause_type.
 
typedef struct clingo_propagate_control clingo_propagate_control_t
 This object can be used to add clauses and propagate literals while solving.
 
typedef bool(* clingo_propagator_init_callback_t) (clingo_propagate_init_t *, void *)
 Typedef for clingo_propagator::init().
 
typedef bool(* clingo_propagator_propagate_callback_t) (clingo_propagate_control_t *, clingo_literal_t const *, size_t, void *)
 Typedef for clingo_propagator::propagate().
 
typedef bool(* clingo_propagator_undo_callback_t) (clingo_propagate_control_t *, clingo_literal_t const *, size_t, void *)
 Typedef for clingo_propagator::undo().
 
typedef bool(* clingo_propagator_check_callback_t) (clingo_propagate_control_t *, void *)
 Typedef for clingo_propagator::check().
 
typedef struct clingo_propagator clingo_propagator_t
 An instance of this struct has to be registered with a solver to implement a custom propagator. More...
 
typedef int clingo_heuristic_type_t
 Corresponding type to clingo_heuristic_type.
 
typedef int clingo_external_type_t
 Corresponding type to clingo_external_type.
 
typedef struct clingo_weighted_literal clingo_weighted_literal_t
 A Literal with an associated weight.
 
typedef struct clingo_backend clingo_backend_t
 Handle to the backend to add directives in aspif format.
 
typedef unsigned clingo_configuration_type_bitset_t
 Bitset for values of type clingo_configuration_type.
 
typedef struct clingo_configuration clingo_configuration_t
 Handle for to the solver configuration.
 
typedef int clingo_statistics_type_t
 Corresponding type to clingo_solve_result.
 
typedef struct clingo_statistic clingo_statistics_t
 Handle for to the solver statistics.
 
typedef int clingo_ast_comparison_operator_t
 
typedef int clingo_ast_sign_t
 
typedef int clingo_ast_term_type_t
 
typedef struct clingo_ast_unary_operation clingo_ast_unary_operation_t
 
typedef struct clingo_ast_binary_operation clingo_ast_binary_operation_t
 
typedef struct clingo_ast_interval clingo_ast_interval_t
 
typedef struct clingo_ast_function clingo_ast_function_t
 
typedef struct clingo_ast_pool clingo_ast_pool_t
 
typedef struct clingo_ast_term clingo_ast_term_t
 
typedef int clingo_ast_unary_operator_t
 
typedef int clingo_ast_binary_operator_t
 
typedef struct clingo_ast_csp_product_term clingo_ast_csp_product_term_t
 
typedef struct clingo_ast_csp_sum_term clingo_ast_csp_sum_term_t
 
typedef struct clingo_ast_csp_guard clingo_ast_csp_guard_t
 
typedef struct clingo_ast_csp_literal clingo_ast_csp_literal_t
 
typedef struct clingo_ast_id clingo_ast_id_t
 
typedef struct clingo_ast_comparison clingo_ast_comparison_t
 
typedef int clingo_ast_literal_type_t
 
typedef struct clingo_ast_literal clingo_ast_literal_t
 
typedef int clingo_ast_aggregate_function_t
 
typedef struct clingo_ast_aggregate_guard clingo_ast_aggregate_guard_t
 
typedef struct clingo_ast_conditional_literal clingo_ast_conditional_literal_t
 
typedef struct clingo_ast_aggregate clingo_ast_aggregate_t
 
typedef struct clingo_ast_body_aggregate_element clingo_ast_body_aggregate_element_t
 
typedef struct clingo_ast_body_aggregate clingo_ast_body_aggregate_t
 
typedef struct clingo_ast_head_aggregate_element clingo_ast_head_aggregate_element_t
 
typedef struct clingo_ast_head_aggregate clingo_ast_head_aggregate_t
 
typedef struct clingo_ast_disjunction clingo_ast_disjunction_t
 
typedef struct clingo_ast_disjoint_element clingo_ast_disjoint_element_t
 
typedef struct clingo_ast_disjoint clingo_ast_disjoint_t
 
typedef int clingo_ast_theory_term_type_t
 
typedef struct clingo_ast_theory_function clingo_ast_theory_function_t
 
typedef struct clingo_ast_theory_term_array clingo_ast_theory_term_array_t
 
typedef struct clingo_ast_theory_unparsed_term clingo_ast_theory_unparsed_term_t
 
typedef struct clingo_ast_theory_term clingo_ast_theory_term_t
 
typedef struct clingo_ast_theory_unparsed_term_element clingo_ast_theory_unparsed_term_element_t
 
typedef struct clingo_ast_theory_atom_element clingo_ast_theory_atom_element_t
 
typedef struct clingo_ast_theory_guard clingo_ast_theory_guard_t
 
typedef struct clingo_ast_theory_atom clingo_ast_theory_atom_t
 
typedef int clingo_ast_head_literal_type_t
 
typedef struct clingo_ast_head_literal clingo_ast_head_literal_t
 
typedef int clingo_ast_body_literal_type_t
 
typedef struct clingo_ast_body_literal clingo_ast_body_literal_t
 
typedef int clingo_ast_theory_operator_type_t
 
typedef struct clingo_ast_theory_operator_definition clingo_ast_theory_operator_definition_t
 
typedef struct clingo_ast_theory_term_definition clingo_ast_theory_term_definition_t
 
typedef struct clingo_ast_theory_guard_definition clingo_ast_theory_guard_definition_t
 
typedef int clingo_ast_theory_atom_definition_type_t
 
typedef struct clingo_ast_theory_atom_definition clingo_ast_theory_atom_definition_t
 
typedef struct clingo_ast_theory_definition clingo_ast_theory_definition_t
 
typedef struct clingo_ast_rule clingo_ast_rule_t
 
typedef struct clingo_ast_definition clingo_ast_definition_t
 
typedef struct clingo_ast_show_signature clingo_ast_show_signature_t
 
typedef struct clingo_ast_show_term clingo_ast_show_term_t
 
typedef struct clingo_ast_minimize clingo_ast_minimize_t
 
typedef int clingo_ast_script_type_t
 
typedef struct clingo_ast_script clingo_ast_script_t
 
typedef struct clingo_ast_program clingo_ast_program_t
 
typedef struct clingo_ast_external clingo_ast_external_t
 
typedef struct clingo_ast_edge clingo_ast_edge_t
 
typedef struct clingo_ast_heuristic clingo_ast_heuristic_t
 
typedef struct clingo_ast_project clingo_ast_project_t
 
typedef int clingo_ast_statement_type_t
 
typedef struct clingo_ast_statement clingo_ast_statement_t
 
typedef bool clingo_ast_callback_t(clingo_ast_statement_t const *, void *)
 
typedef struct clingo_program_builder clingo_program_builder_t
 Object to build non-ground programs.
 
typedef struct clingo_control clingo_control_t
 Control object holding grounding and solving state.
 
typedef struct clingo_part clingo_part_t
 Struct used to specify the program parts that have to be grounded. More...
 
typedef bool clingo_symbol_callback_t(clingo_symbol_t const *symbols, size_t symbols_size, void *data)
 Callback function to inject symbols. More...
 
typedef bool clingo_ground_callback_t(clingo_location_t location, char const *name, clingo_symbol_t const *arguments, size_t arguments_size, void *data, clingo_symbol_callback_t *symbol_callback, void *symbol_callback_data)
 Callback function to implement external functions. More...
 
typedef bool clingo_model_callback_t(clingo_model_t *model, void *data, bool *goon)
 Callback function to intercept models. More...
 
typedef bool clingo_finish_callback_t(clingo_solve_result_bitset_t result, void *data)
 Callback function called at the end of an asynchronous solve operation. More...
 

Enumerations

enum  clingo_error {
  clingo_error_success = 0, clingo_error_runtime = 1, clingo_error_logic = 2, clingo_error_bad_alloc = 3,
  clingo_error_unknown = 4
}
 Enumeration of error codes. More...
 
enum  clingo_warning {
  clingo_warning_operation_undefined = 0, clingo_warning_runtime_error = 1, clingo_warning_atom_undefined = 2, clingo_warning_file_included = 3,
  clingo_warning_variable_unbounded = 4, clingo_warning_global_variable = 5, clingo_warning_other = 6
}
 Enumeration of warning codes. More...
 
enum  clingo_truth_value { clingo_truth_value_free = 0, clingo_truth_value_true = 1, clingo_truth_value_false = 2 }
 Represents three-valued truth values. More...
 
enum  clingo_symbol_type {
  clingo_symbol_type_infimum = 0, clingo_symbol_type_number = 1, clingo_symbol_type_string = 4, clingo_symbol_type_function = 5,
  clingo_symbol_type_supremum = 7
}
 Enumeration of available symbol types. More...
 
enum  clingo_model_type { clingo_model_type_stable_model = 0, clingo_model_type_brave_consequences = 1, clingo_model_type_cautious_consequences = 2 }
 Enumeration for the different model types. More...
 
enum  clingo_show_type {
  clingo_show_type_csp = 1, clingo_show_type_shown = 2, clingo_show_type_atoms = 4, clingo_show_type_terms = 8,
  clingo_show_type_extra = 16, clingo_show_type_all = 31, clingo_show_type_complement = 32
}
 Enumeration of bit flags to select symbols in models. More...
 
enum  clingo_solve_result { clingo_solve_result_satisfiable = 1, clingo_solve_result_unsatisfiable = 2, clingo_solve_result_exhausted = 4, clingo_solve_result_interrupted = 8 }
 Enumeration of bit masks for solve call results. More...
 
enum  clingo_theory_term_type {
  clingo_theory_term_type_tuple, clingo_theory_term_type_list, clingo_theory_term_type_set, clingo_theory_term_type_function,
  clingo_theory_term_type_number, clingo_theory_term_type_symbol
}
 Enumeration of theory term types. More...
 
enum  clingo_clause_type { clingo_clause_type_learnt = 0, clingo_clause_type_static = 1, clingo_clause_type_volatile = 2, clingo_clause_type_volatile_static = 3 }
 Enumeration of clause types determining the lifetime of a clause. More...
 
enum  clingo_heuristic_type {
  clingo_heuristic_type_level = 0, clingo_heuristic_type_sign = 1, clingo_heuristic_type_factor = 2, clingo_heuristic_type_init = 3,
  clingo_heuristic_type_true = 4, clingo_heuristic_type_false = 5
}
 Enumeration of different heuristic modifiers. More...
 
enum  clingo_external_type { clingo_external_type_free = 0, clingo_external_type_true = 1, clingo_external_type_false = 2, clingo_external_type_release = 3 }
 Enumeration of different external statements. More...
 
enum  clingo_configuration_type { clingo_configuration_type_value = 1, clingo_configuration_type_array = 2, clingo_configuration_type_map = 4 }
 Enumeration for entries of the configuration. More...
 
enum  clingo_statistics_type { clingo_statistics_type_empty = 0, clingo_statistics_type_value = 1, clingo_statistics_type_array = 2, clingo_statistics_type_map = 3 }
 Enumeration for entries of the statistics. More...
 
enum  clingo_ast_comparison_operator {
  clingo_ast_comparison_operator_greater_than = 0, clingo_ast_comparison_operator_less_than = 1, clingo_ast_comparison_operator_less_equal = 2, clingo_ast_comparison_operator_greater_equal = 3,
  clingo_ast_comparison_operator_not_equal = 4, clingo_ast_comparison_operator_equal = 5
}
 
enum  clingo_ast_sign { clingo_ast_sign_none = 0, clingo_ast_sign_negation = 1, clingo_ast_sign_double_negation = 2 }
 
enum  clingo_ast_term_type {
  clingo_ast_term_type_symbol = 0, clingo_ast_term_type_variable = 1, clingo_ast_term_type_unary_operation = 2, clingo_ast_term_type_binary_operation = 3,
  clingo_ast_term_type_interval = 4, clingo_ast_term_type_function = 5, clingo_ast_term_type_external_function = 6, clingo_ast_term_type_pool = 7
}
 
enum  clingo_ast_unary_operator { clingo_ast_unary_operator_minus = 0, clingo_ast_unary_operator_negation = 1, clingo_ast_unary_operator_absolute = 2 }
 
enum  clingo_ast_binary_operator {
  clingo_ast_binary_operator_xor = 0, clingo_ast_binary_operator_or = 1, clingo_ast_binary_operator_and = 2, clingo_ast_binary_operator_plus = 3,
  clingo_ast_binary_operator_minus = 4, clingo_ast_binary_operator_multiplication = 5, clingo_ast_binary_operator_division = 6, clingo_ast_binary_operator_modulo = 7
}
 
enum  clingo_ast_literal_type { clingo_ast_literal_type_boolean = 0, clingo_ast_literal_type_symbolic = 1, clingo_ast_literal_type_comparison = 2, clingo_ast_literal_type_csp = 3 }
 
enum  clingo_ast_aggregate_function {
  clingo_ast_aggregate_function_count = 0, clingo_ast_aggregate_function_sum = 1, clingo_ast_aggregate_function_sump = 2, clingo_ast_aggregate_function_min = 3,
  clingo_ast_aggregate_function_max = 4
}
 
enum  clingo_ast_theory_term_type {
  clingo_ast_theory_term_type_symbol = 0, clingo_ast_theory_term_type_variable = 1, clingo_ast_theory_term_type_tuple = 2, clingo_ast_theory_term_type_list = 3,
  clingo_ast_theory_term_type_set = 4, clingo_ast_theory_term_type_function = 5, clingo_ast_theory_term_type_unparsed_term = 6
}
 
enum  clingo_ast_head_literal_type {
  clingo_ast_head_literal_type_literal = 0, clingo_ast_head_literal_type_disjunction = 1, clingo_ast_head_literal_type_aggregate = 2, clingo_ast_head_literal_type_head_aggregate = 3,
  clingo_ast_head_literal_type_theory_atom = 4
}
 
enum  clingo_ast_body_literal_type {
  clingo_ast_body_literal_type_literal = 0, clingo_ast_body_literal_type_conditional = 1, clingo_ast_body_literal_type_aggregate = 2, clingo_ast_body_literal_type_body_aggregate = 3,
  clingo_ast_body_literal_type_theory_atom = 4, clingo_ast_body_literal_type_disjoint = 5
}
 
enum  clingo_ast_theory_operator_type { clingo_ast_theory_operator_type_unary = 0, clingo_ast_theory_operator_type_binary_left = 1, clingo_ast_theory_operator_type_binary_right = 2 }
 
enum  clingo_ast_theory_atom_definition_type { clingo_ast_theory_atom_definition_type_head = 0, clingo_ast_theory_atom_definition_type_body = 1, clingo_ast_theory_atom_definition_type_any = 2, clingo_ast_theory_atom_definition_type_directive = 3 }
 
enum  clingo_ast_script_type { clingo_ast_script_type_lua = 0, clingo_ast_script_type_python = 1 }
 
enum  clingo_ast_statement_type {
  clingo_ast_statement_type_rule = 0, clingo_ast_statement_type_const = 1, clingo_ast_statement_type_show_signature = 2, clingo_ast_statement_type_show_term = 3,
  clingo_ast_statement_type_minimize = 4, clingo_ast_statement_type_script = 5, clingo_ast_statement_type_program = 6, clingo_ast_statement_type_external = 7,
  clingo_ast_statement_type_edge = 8, clingo_ast_statement_type_heuristic = 9, clingo_ast_statement_type_project_atom = 10, clingo_ast_statement_type_project_atom_signature = 11,
  clingo_ast_statement_type_theory_definition = 12
}
 

Functions

char const * clingo_error_string (clingo_error_t code)
 Convert error code into string.
 
clingo_error_t clingo_error_code ()
 Get the last error code set by a clingo API call. More...
 
char const * clingo_error_message ()
 Get the last error message set if an API call fails. More...
 
void clingo_set_error (clingo_error_t code, char const *message)
 Set a custom error code and message in the active thread. More...
 
char const * clingo_warning_string (clingo_warning_t code)
 Convert warning code into string.
 
void clingo_version (int *major, int *minor, int *revision)
 Obtain the clingo version. More...
 
bool clingo_add_string (char const *string, char const **result)
 Internalize a string. More...
 
bool clingo_parse_term (char const *string, clingo_logger_t *logger, void *logger_data, unsigned message_limit, clingo_symbol_t *symbol)
 Parse a term in string form. More...
 
bool clingo_solve_iteratively_next (clingo_solve_iteratively_t *handle, clingo_model_t **model)
 Get the next model. More...
 
bool clingo_solve_iteratively_get (clingo_solve_iteratively_t *handle, clingo_solve_result_bitset_t *result)
 Get the solve result. More...
 
bool clingo_solve_iteratively_close (clingo_solve_iteratively_t *handle)
 Closes an active search. More...
 
bool clingo_solve_async_get (clingo_solve_async_t *handle, clingo_solve_result_bitset_t *result)
 Get the solve result. More...
 
bool clingo_solve_async_wait (clingo_solve_async_t *handle, double timeout, bool *result)
 Wait for the specified amount of time to check if the search has finished. More...
 
bool clingo_solve_async_cancel (clingo_solve_async_t *handle)
 Stop the running search. More...
 
bool clingo_symbolic_atoms_size (clingo_symbolic_atoms_t *atoms, size_t *size)
 Get the number of different atoms occurring in a logic program. More...
 
bool clingo_symbolic_atoms_begin (clingo_symbolic_atoms_t *atoms, clingo_signature_t const *signature, clingo_symbolic_atom_iterator_t *iterator)
 Get a forward iterator to the beginning of the sequence of all symbolic atoms optionally restricted to a given signature. More...
 
bool clingo_symbolic_atoms_end (clingo_symbolic_atoms_t *atoms, clingo_symbolic_atom_iterator_t *iterator)
 Iterator pointing to the end of the sequence of symbolic atoms. More...
 
bool clingo_symbolic_atoms_find (clingo_symbolic_atoms_t *atoms, clingo_symbol_t symbol, clingo_symbolic_atom_iterator_t *iterator)
 Find a symbolic atom given its symbolic representation. More...
 
bool clingo_symbolic_atoms_iterator_is_equal_to (clingo_symbolic_atoms_t *atoms, clingo_symbolic_atom_iterator_t a, clingo_symbolic_atom_iterator_t b, bool *equal)
 Check if two iterators point to the same element (or end of the sequence). More...
 
bool clingo_symbolic_atoms_symbol (clingo_symbolic_atoms_t *atoms, clingo_symbolic_atom_iterator_t iterator, clingo_symbol_t *symbol)
 Get the symbolic representation of an atom. More...
 
bool clingo_symbolic_atoms_is_fact (clingo_symbolic_atoms_t *atoms, clingo_symbolic_atom_iterator_t iterator, bool *fact)
 Check whether an atom is a fact. More...
 
bool clingo_symbolic_atoms_is_external (clingo_symbolic_atoms_t *atoms, clingo_symbolic_atom_iterator_t iterator, bool *external)
 Check whether an atom is external. More...
 
bool clingo_symbolic_atoms_literal (clingo_symbolic_atoms_t *atoms, clingo_symbolic_atom_iterator_t iterator, clingo_literal_t *literal)
 Returns the (numeric) aspif literal corresponding to the given symbolic atom. More...
 
bool clingo_symbolic_atoms_signatures_size (clingo_symbolic_atoms_t *atoms, size_t *size)
 Get the number of different predicate signatures used in the program. More...
 
bool clingo_symbolic_atoms_signatures (clingo_symbolic_atoms_t *atoms, clingo_signature_t *signatures, size_t size)
 Get the predicate signatures occurring in a logic program. More...
 
bool clingo_symbolic_atoms_next (clingo_symbolic_atoms_t *atoms, clingo_symbolic_atom_iterator_t iterator, clingo_symbolic_atom_iterator_t *next)
 Get an iterator to the next element in the sequence of symbolic atoms. More...
 
bool clingo_symbolic_atoms_is_valid (clingo_symbolic_atoms_t *atoms, clingo_symbolic_atom_iterator_t iterator, bool *valid)
 Check whether the given iterator points to some element with the sequence of symbolic atoms or to the end of the sequence. More...
 
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...
 
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...
 
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...
 
bool clingo_backend_project (clingo_backend_t *backend, clingo_atom_t const *atoms, size_t size)
 Add a projection directive. More...
 
bool clingo_backend_external (clingo_backend_t *backend, clingo_atom_t atom, clingo_external_type_t type)
 Add an external statement. More...
 
bool clingo_backend_assume (clingo_backend_t *backend, clingo_literal_t const *literals, size_t size)
 Add an assumption directive. More...
 
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...
 
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...
 
bool clingo_backend_add_atom (clingo_backend_t *backend, clingo_atom_t *atom)
 Get a fresh atom to be used in aspif directives. More...
 
bool clingo_configuration_root (clingo_configuration_t *configuration, clingo_id_t *key)
 Get the root key of the configuration. More...
 
bool clingo_configuration_type (clingo_configuration_t *configuration, clingo_id_t key, clingo_configuration_type_bitset_t *type)
 Get the type of a key. More...
 
bool clingo_configuration_description (clingo_configuration_t *configuration, clingo_id_t key, char const **description)
 Get the description of an entry. More...
 
bool clingo_statistics_root (clingo_statistics_t *statistics, uint64_t *key)
 Get the root key of the statistics. More...
 
bool clingo_statistics_type (clingo_statistics_t *statistics, uint64_t key, clingo_statistics_type_t *type)
 Get the type of a key. More...
 
bool clingo_parse_program (char const *program, clingo_ast_callback_t *callback, void *callback_data, clingo_logger_t *logger, void *logger_data, unsigned message_limit)
 Parse the given program and return an abstract syntax tree for each statement via a callback. More...
 
bool clingo_program_builder_begin (clingo_program_builder_t *builder)
 Begin building a program. More...
 
bool clingo_program_builder_add (clingo_program_builder_t *builder, clingo_ast_statement_t const *statement)
 Adds a statement to the program. More...
 
bool clingo_program_builder_end (clingo_program_builder_t *builder)
 End building a program. More...
 
bool clingo_control_new (char const *const *arguments, size_t arguments_size, clingo_logger_t *logger, void *logger_data, unsigned message_limit, clingo_control_t **control)
 Create a new control object. More...
 
void clingo_control_free (clingo_control_t *control)
 Free a control object created with clingo_control_new(). More...
 
Signature Functions
bool clingo_signature_create (char const *name, uint32_t arity, bool positive, clingo_signature_t *signature)
 Create a new signature. More...
 
char const * clingo_signature_name (clingo_signature_t signature)
 Get the name of a signature. More...
 
uint32_t clingo_signature_arity (clingo_signature_t signature)
 Get the arity of a signature. More...
 
bool clingo_signature_is_positive (clingo_signature_t signature)
 Whether the signature is positive (is not classically negated). More...
 
bool clingo_signature_is_negative (clingo_signature_t signature)
 Whether the signature is negative (is classically negated). More...
 
bool clingo_signature_is_equal_to (clingo_signature_t a, clingo_signature_t b)
 Check if two signatures are equal. More...
 
bool clingo_signature_is_less_than (clingo_signature_t a, clingo_signature_t b)
 Check if a signature is less than another signature. More...
 
size_t clingo_signature_hash (clingo_signature_t signature)
 Calculate a hash code of a signature. More...
 
Symbol Construction Functions
void clingo_symbol_create_number (int number, clingo_symbol_t *symbol)
 Construct a symbol representing a number. More...
 
void clingo_symbol_create_supremum (clingo_symbol_t *symbol)
 Construct a symbol representing #sup. More...
 
void clingo_symbol_create_infimum (clingo_symbol_t *symbol)
 Construct a symbol representing #inf. More...
 
bool clingo_symbol_create_string (char const *string, clingo_symbol_t *symbol)
 Construct a symbol representing a string. More...
 
bool clingo_symbol_create_id (char const *name, bool positive, clingo_symbol_t *symbol)
 Construct a symbol representing an id. More...
 
bool clingo_symbol_create_function (char const *name, clingo_symbol_t const *arguments, size_t arguments_size, bool positive, clingo_symbol_t *symbol)
 Construct a symbol representing a function or tuple. More...
 
Symbol Inspection Functions
bool clingo_symbol_number (clingo_symbol_t symbol, int *number)
 Get the number of a symbol. More...
 
bool clingo_symbol_name (clingo_symbol_t symbol, char const **name)
 Get the name of a symbol. More...
 
bool clingo_symbol_string (clingo_symbol_t symbol, char const **string)
 Get the string of a symbol. More...
 
bool clingo_symbol_is_positive (clingo_symbol_t symbol, bool *positive)
 Check if a function is positive (does not have a sign). More...
 
bool clingo_symbol_is_negative (clingo_symbol_t symbol, bool *negative)
 Check if a function is negative (has a sign). More...
 
bool clingo_symbol_arguments (clingo_symbol_t symbol, clingo_symbol_t const **arguments, size_t *arguments_size)
 Get the arguments of a symbol. More...
 
clingo_symbol_type_t clingo_symbol_type (clingo_symbol_t symbol)
 Get the type of a symbol. More...
 
bool clingo_symbol_to_string_size (clingo_symbol_t symbol, size_t *size)
 Get the size of the string representation of a symbol (including the terminating 0). More...
 
bool clingo_symbol_to_string (clingo_symbol_t symbol, char *string, size_t size)
 Get the string representation of a symbol. More...
 
Symbol Comparison Functions
bool clingo_symbol_is_equal_to (clingo_symbol_t a, clingo_symbol_t b)
 Check if two symbols are equal. More...
 
bool clingo_symbol_is_less_than (clingo_symbol_t a, clingo_symbol_t b)
 Check if a symbol is less than another symbol. More...
 
size_t clingo_symbol_hash (clingo_symbol_t symbol)
 Calculate a hash code of a symbol. More...
 
Functions for Inspecting Models
bool clingo_model_type (clingo_model_t *model, clingo_model_type_t *type)
 Get the type of the model. More...
 
bool clingo_model_number (clingo_model_t *model, uint64_t *number)
 Get the running number of the model. More...
 
bool clingo_model_symbols_size (clingo_model_t *model, clingo_show_type_bitset_t show, size_t *size)
 Get the number of symbols of the selected types in the model. More...
 
bool clingo_model_symbols (clingo_model_t *model, clingo_show_type_bitset_t show, clingo_symbol_t *symbols, size_t size)
 Get the symbols of the selected types in the model. More...
 
bool clingo_model_contains (clingo_model_t *model, clingo_symbol_t atom, bool *contained)
 Constant time lookup to test whether an atom is in a model. More...
 
bool clingo_model_cost_size (clingo_model_t *model, size_t *size)
 Get the number of cost values of a model. More...
 
bool clingo_model_cost (clingo_model_t *model, int64_t *costs, size_t size)
 Get the cost vector of a model. More...
 
bool clingo_model_optimality_proven (clingo_model_t *model, bool *proven)
 Whether the optimality of a model has been proven. More...
 
Functions for Adding Clauses
bool clingo_model_context (clingo_model_t *model, clingo_solve_control_t **control)
 Get the associated solve control object of a model. More...
 
bool clingo_solve_control_thread_id (clingo_solve_control_t *control, clingo_id_t *id)
 Get the id of the solver thread that found the model. More...
 
bool clingo_solve_control_add_clause (clingo_solve_control_t *control, clingo_symbolic_literal_t const *clause, size_t size)
 Add a clause that applies to the current solving step during model enumeration. More...
 
Theory Term Inspection
bool clingo_theory_atoms_term_type (clingo_theory_atoms_t *atoms, clingo_id_t term, clingo_theory_term_type_t *type)
 Get the type of the given theory term. More...
 
bool clingo_theory_atoms_term_number (clingo_theory_atoms_t *atoms, clingo_id_t term, int *number)
 Get the number of the given numeric theory term. More...
 
bool clingo_theory_atoms_term_name (clingo_theory_atoms_t *atoms, clingo_id_t term, char const **name)
 Get the name of the given constant or function theory term. More...
 
bool clingo_theory_atoms_term_arguments (clingo_theory_atoms_t *atoms, clingo_id_t term, clingo_id_t const **arguments, size_t *size)
 Get the arguments of the given function theory term. More...
 
bool clingo_theory_atoms_term_to_string_size (clingo_theory_atoms_t *atoms, clingo_id_t term, size_t *size)
 Get the size of the string representation of the given theory term (including the terminating 0). More...
 
bool clingo_theory_atoms_term_to_string (clingo_theory_atoms_t *atoms, clingo_id_t term, char *string, size_t size)
 Get the string representation of the given theory term. More...
 
Theory Element Inspection
bool clingo_theory_atoms_element_tuple (clingo_theory_atoms_t *atoms, clingo_id_t element, clingo_id_t const **tuple, size_t *size)
 Get the tuple (array of theory terms) of the given theory element. More...
 
bool clingo_theory_atoms_element_condition (clingo_theory_atoms_t *atoms, clingo_id_t element, clingo_literal_t const **condition, size_t *size)
 Get the condition (array of aspif literals) of the given theory element. More...
 
bool clingo_theory_atoms_element_condition_id (clingo_theory_atoms_t *atoms, clingo_id_t element, clingo_literal_t *condition)
 Get the id of the condition of the given theory element. More...
 
bool clingo_theory_atoms_element_to_string_size (clingo_theory_atoms_t *atoms, clingo_id_t element, size_t *size)
 Get the size of the string representation of the given theory element (including the terminating 0). More...
 
bool clingo_theory_atoms_element_to_string (clingo_theory_atoms_t *atoms, clingo_id_t element, char *string, size_t size)
 Get the string representation of the given theory element. More...
 
Theory Atom Inspection
bool clingo_theory_atoms_size (clingo_theory_atoms_t *atoms, size_t *size)
 Get the total number of theory atoms. More...
 
bool clingo_theory_atoms_atom_term (clingo_theory_atoms_t *atoms, clingo_id_t atom, clingo_id_t *term)
 Get the theory term associated with the theory atom. More...
 
bool clingo_theory_atoms_atom_elements (clingo_theory_atoms_t *atoms, clingo_id_t atom, clingo_id_t const **elements, size_t *size)
 Get the theory elements associated with the theory atom. More...
 
bool clingo_theory_atoms_atom_has_guard (clingo_theory_atoms_t *atoms, clingo_id_t atom, bool *has_guard)
 Whether the theory atom has a guard. More...
 
bool clingo_theory_atoms_atom_guard (clingo_theory_atoms_t *atoms, clingo_id_t atom, char const **connective, clingo_id_t *term)
 Get the guard consisting of a theory operator and a theory term of the given theory atom. More...
 
bool clingo_theory_atoms_atom_literal (clingo_theory_atoms_t *atoms, clingo_id_t atom, clingo_literal_t *literal)
 Get the aspif literal associated with the given theory atom. More...
 
bool clingo_theory_atoms_atom_to_string_size (clingo_theory_atoms_t *atoms, clingo_id_t atom, size_t *size)
 Get the size of the string representation of the given theory atom (including the terminating 0). More...
 
bool clingo_theory_atoms_atom_to_string (clingo_theory_atoms_t *atoms, clingo_id_t atom, char *string, size_t size)
 Get the string representation of the given theory atom. More...
 
Initialization Functions
bool clingo_propagate_init_solver_literal (clingo_propagate_init_t *init, clingo_literal_t aspif_literal, clingo_literal_t *solver_literal)
 Map the given program literal or condition id to its solver literal. More...
 
bool clingo_propagate_init_add_watch (clingo_propagate_init_t *init, clingo_literal_t solver_literal)
 Add a watch for the solver literal in the given phase. More...
 
bool clingo_propagate_init_symbolic_atoms (clingo_propagate_init_t *init, clingo_symbolic_atoms_t **atoms)
 Get an object to inspect the symbolic atoms. More...
 
bool clingo_propagate_init_theory_atoms (clingo_propagate_init_t *init, clingo_theory_atoms_t **atoms)
 Get an object to inspect the theory atoms. More...
 
int clingo_propagate_init_number_of_threads (clingo_propagate_init_t *init)
 Get the number of threads used in subsequent solving. More...
 
Assignment Functions
uint32_t clingo_assignment_decision_level (clingo_assignment_t *assignment)
 Get the current decision level. More...
 
bool clingo_assignment_has_conflict (clingo_assignment_t *assignment)
 Check if the given assignment is conflicting. More...
 
bool clingo_assignment_has_literal (clingo_assignment_t *assignment, clingo_literal_t literal)
 Check if the given literal is part of a (partial) assignment. More...
 
bool clingo_assignment_level (clingo_assignment_t *assignment, clingo_literal_t literal, uint32_t *level)
 Determine the decision level of a given literal. More...
 
bool clingo_assignment_decision (clingo_assignment_t *assignment, uint32_t level, clingo_literal_t *literal)
 Determine the decision literal given a decision level. More...
 
bool clingo_assignment_is_fixed (clingo_assignment_t *assignment, clingo_literal_t literal, bool *is_fixed)
 Check if a literal has a fixed truth value. More...
 
bool clingo_assignment_is_true (clingo_assignment_t *assignment, clingo_literal_t literal, bool *is_true)
 Check if a literal is true. More...
 
bool clingo_assignment_is_false (clingo_assignment_t *assignment, clingo_literal_t literal, bool *is_false)
 Check if a literal has a fixed truth value. More...
 
bool clingo_assignment_truth_value (clingo_assignment_t *assignment, clingo_literal_t literal, clingo_truth_value_t *value)
 Determine the truth value of a given literal. More...
 
Propagation Functions
clingo_id_t clingo_propagate_control_thread_id (clingo_propagate_control_t *control)
 Get the id of the underlying solver thread. More...
 
clingo_assignment_tclingo_propagate_control_assignment (clingo_propagate_control_t *control)
 Get the assignment associated with the underlying solver. More...
 
bool clingo_propagate_control_add_clause (clingo_propagate_control_t *control, clingo_literal_t const *clause, size_t size, clingo_clause_type_t type, bool *result)
 Add the given clause to the solver. More...
 
bool clingo_propagate_control_propagate (clingo_propagate_control_t *control, bool *result)
 Propagate implied literals (resulting from added clauses). More...
 
Functions to access arrays
bool clingo_configuration_array_size (clingo_configuration_t *configuration, clingo_id_t key, size_t *size)
 Get the size of an array entry. More...
 
bool clingo_configuration_array_at (clingo_configuration_t *configuration, clingo_id_t key, size_t offset, clingo_id_t *subkey)
 Get the subkey at the given offset of an array entry. More...
 
bool clingo_statistics_array_size (clingo_statistics_t *statistics, uint64_t key, size_t *size)
 Get the size of an array entry. More...
 
bool clingo_statistics_array_at (clingo_statistics_t *statistics, uint64_t key, size_t offset, uint64_t *subkey)
 Get the subkey at the given offset of an array entry. More...
 
Functions to access maps
bool clingo_configuration_map_size (clingo_configuration_t *configuration, clingo_id_t key, size_t *size)
 Get the number of subkeys of a map entry. More...
 
bool clingo_configuration_map_subkey_name (clingo_configuration_t *configuration, clingo_id_t key, size_t offset, char const **name)
 Get the name associated with the offset-th subkey. More...
 
bool clingo_configuration_map_at (clingo_configuration_t *configuration, clingo_id_t key, char const *name, clingo_id_t *subkey)
 Lookup a subkey under the given name. More...
 
bool clingo_statistics_map_size (clingo_statistics_t *statistics, uint64_t key, size_t *size)
 Get the number of subkeys of a map entry. More...
 
bool clingo_statistics_map_subkey_name (clingo_statistics_t *statistics, uint64_t key, size_t offset, char const **name)
 Get the name associated with the offset-th subkey. More...
 
bool clingo_statistics_map_at (clingo_statistics_t *statistics, uint64_t key, char const *name, uint64_t *subkey)
 Lookup a subkey under the given name. More...
 
Functions to access values
bool clingo_configuration_value_is_assigned (clingo_configuration_t *configuration, clingo_id_t key, bool *assigned)
 Check whether a entry has a value. More...
 
bool clingo_configuration_value_get_size (clingo_configuration_t *configuration, clingo_id_t key, size_t *size)
 Get the size of the string value of the given entry. More...
 
bool clingo_configuration_value_get (clingo_configuration_t *configuration, clingo_id_t key, char *value, size_t size)
 Get the string value of the given entry. More...
 
bool clingo_configuration_value_set (clingo_configuration_t *configuration, clingo_id_t key, char const *value)
 Set the value of an entry. More...
 
Functions to inspect values
bool clingo_statistics_value_get (clingo_statistics_t *statistics, uint64_t key, double *value)
 Get the value of the given entry. More...
 
Grounding Functions
bool clingo_control_load (clingo_control_t *control, char const *file)
 Extend the logic program with a program in a file. More...
 
bool clingo_control_add (clingo_control_t *control, char const *name, char const *const *parameters, size_t parameters_size, char const *program)
 Extend the logic program with the given non-ground logic program in string form. More...
 
bool clingo_control_ground (clingo_control_t *control, clingo_part_t const *parts, size_t parts_size, clingo_ground_callback_t *ground_callback, void *ground_callback_data)
 Ground the selected parts of the current (non-ground) logic program. More...
 
Solving Functions
bool clingo_control_solve (clingo_control_t *control, clingo_model_callback_t *model_callback, void *model_callback_data, clingo_symbolic_literal_t const *assumptions, size_t assumptions_size, clingo_solve_result_bitset_t *result)
 Solve the currently grounded logic program. More...
 
bool clingo_control_solve_iteratively (clingo_control_t *control, clingo_symbolic_literal_t const *assumptions, size_t assumptions_size, clingo_solve_iteratively_t **handle)
 Solve the currently grounded logic program enumerating models iteratively. More...
 
bool clingo_control_solve_async (clingo_control_t *control, clingo_model_callback_t *model_callback, void *model_callback_data, clingo_finish_callback_t *finish_callback, void *finish_callback_data, clingo_symbolic_literal_t const *assumptions, size_t assumptions_size, clingo_solve_async_t **handle)
 Solve the currently grounded logic program asynchronously in the background. More...
 
bool clingo_control_cleanup (clingo_control_t *control)
 Clean up the domains of clingo's grounding component using the solving component's top level assignment. More...
 
bool clingo_control_assign_external (clingo_control_t *control, clingo_symbol_t atom, clingo_truth_value_t value)
 Assign a truth value to an external atom. More...
 
bool clingo_control_release_external (clingo_control_t *control, clingo_symbol_t atom)
 Release an external atom. More...
 
bool clingo_control_register_propagator (clingo_control_t *control, clingo_propagator_t propagator, void *data, bool sequential)
 Register a custom propagator with the control object. More...
 
bool clingo_control_statistics (clingo_control_t *control, clingo_statistics_t **statistics)
 Get a statistics object to inspect solver statistics. More...
 
void clingo_control_interrupt (clingo_control_t *control)
 Interrupt the active solve call (or the following solve call right at the beginning). More...
 
Configuration Functions
bool clingo_control_configuration (clingo_control_t *control, clingo_configuration_t **configuration)
 Get a configuration object to change the solver configuration. More...
 
bool clingo_control_use_enumeration_assumption (clingo_control_t *control, bool enable)
 Configure how learnt constraints are handled during enumeration. More...
 
Program Inspection Functions
bool clingo_control_get_const (clingo_control_t *control, char const *name, clingo_symbol_t *symbol)
 Return the symbol for a constant definition of form: #const name = symbol. More...
 
bool clingo_control_has_const (clingo_control_t *control, char const *name, bool *exists)
 Check if there is a constant definition for the given constant. More...
 
bool clingo_control_symbolic_atoms (clingo_control_t *control, clingo_symbolic_atoms_t **atoms)
 Get an object to inspect symbolic atoms (the relevant Herbrand base) used for grounding. More...
 
bool clingo_control_theory_atoms (clingo_control_t *control, clingo_theory_atoms_t **atoms)
 Get an object to inspect theory atoms that occur in the grounding. More...
 
Program Modification Functions
bool clingo_control_backend (clingo_control_t *control, clingo_backend_t **backend)
 Get an object to add ground directives to the program. More...
 
bool clingo_control_program_builder (clingo_control_t *control, clingo_program_builder_t **builder)
 Get an object to add non-ground directives to the program. More...
 

Detailed Description

Single header containing the whole clingo API.

Author
Roland Kaminski