C API
The C API of cvc5 is based on its
C++ API
and is
feature complete
, within the limits of the C language.
The
quickstart guide
gives a short introduction of how
to use cvc5 via its C API.
For most applications, the
Cvc5
solver struct is the main
entry point to cvc5.
One of the key differences is the way how memory is managed . While users of the C++ API can rely on memory being efficiently managed automatically, on the C level, management to maintain a low overhead needs more manual intervention .
All objects created via a term manager (
Cvc5TermManager
) or a
solver (
Cvc5
) instance, e.g., sorts, terms, datatypes and
statistics, are
managed by the term manager
. As in the C++ API, these
objects keep the term manager alive: they
remain valid
after the term
manager and solver instances that created them have been deleted via
cvc5_term_manager_delete()
and
cvc5_delete()
, until
they are released, either individually via the corresponding
cvc5_*_release()
function or all at once via
cvc5_term_manager_release()
. Consequently, deleting a term manager
does not free objects that are still referenced, and does not free the term
manager itself while any of them are alive: its memory is freed once it has
been deleted
and
all of its managed objects have been released. Calling
cvc5_term_manager_release()
before
cvc5_term_manager_delete()
thus frees everything right away.
Results (
Cvc5Result
), synthesis results
(
Cvc5SynthResult
), proofs (
Cvc5Proof
) and grammars
(
Cvc5Grammar
) are instead
managed by the solver
that created
them: deleting the solver drops one reference to each of them. To use such an
object afterwards, keep a reference to it via the corresponding
cvc5_*_copy()
function; it then outlives the solver, as in the C++ API,
and is freed by its final
cvc5_*_release()
. Proofs additionally keep the
term manager alive, since querying them creates new terms and proofs.
Command objects (
Cvc5Command
) are managed by the input parser
(
Cvc5InputParser
) that created them in the same way: they keep the
parser alive and remain valid after
cvc5_parser_delete()
, until
they are released via
cvc5_cmd_release()
or, all at once, via
cvc5_parser_release()
.
The C API offers two modes of memory management:
-
Let cvc5 handle memory management without manual intervention. All memory allocated by the C API via a term manager (
Cvc5TermManager) or solver (Cvc5) instance is released all at once viacvc5_term_manager_release()before the term manager is deleted viacvc5_term_manager_delete(). For example:
Cvc5TermManager* tm = cvc5_term_manager_new();
Cvc5* cvc5 = cvc5_new(tm);
Cvc5Term a = cvc5_mk_const(tm, cvc5_get_integer_sort(tm), "a");
Cvc5Term two = cvc5_mk_integer_int64(tm, 2);
Cvc5Term args1[2] = {a, two};
cvc5_assert_formula(cvc5, cvc5_mk_term(tm, CVC5_KIND_EQUAL, 2, args1));
Cvc5Term b = cvc5_mk_const(tm, cvc5_get_integer_sort(tm), "b");
Cvc5Term args2[2] = {b, two};
cvc5_assert_formula(cvc5, cvc5_mk_term(tm, CVC5_KIND_DISTINCT, 2, args2));
cvc5_check_sat(cvc5);
cvc5_delete(cvc5);
// release all objects managed by the term manager
cvc5_term_manager_release(tm);
cvc5_term_manager_delete(tm);
-
Introduce a more fine-grained, user-level memory management for objects created via a term manager or solver via the corresponding
cvc5_*_copy()andcvc5_*_release()functions. The copy functions increment the reference counter of an object, the release functions decrement the reference counter and free its allocated memory when the counter reaches 0. Objects that have not been released when the term manager is deleted keep the term manager alive and remain valid until they are released. For example:
Cvc5TermManager* tm = cvc5_term_manager_new();
Cvc5* cvc5 = cvc5_new(tm);
Cvc5Sort int_sort = cvc5_get_integer_sort(tm);
Cvc5Term a = cvc5_mk_const(tm, int_sort, "a");
Cvc5Term two = cvc5_mk_integer_int64(tm, 2);
Cvc5Term args1[2] = {a, two};
Cvc5Term eq = cvc5_mk_term(tm, CVC5_KIND_EQUAL, 2, args1);
cvc5_assert_formula(cvc5, eq);
// we can release 'a' and 'eq' here, not needed anymore
cvc5_term_release(a);
cvc5_term_release(eq);
Cvc5Term b = cvc5_mk_const(tm, int_sort, "b");
Cvc5Term args2[2] = {b, two};
Cvc5Term distinct = cvc5_mk_term(tm, CVC5_KIND_DISTINCT, 2, args2);
cvc5_assert_formula(cvc5, distinct);
Cvc5Result res = cvc5_check_sat(cvc5);
cvc5_delete(cvc5);
cvc5_term_manager_delete(tm);
// the remaining objects are still valid here, they keep the term manager
// alive until the last one of them is released
printf("%s\n", cvc5_result_to_string(res));
cvc5_result_release(res);
cvc5_term_release(distinct);
cvc5_term_release(b);
cvc5_term_release(two);
cvc5_sort_release(int_sort);
- Quickstart Guide
- Error handling
-
Cvc5
-
Cvc5 -
cvc5_new() -
cvc5_delete() -
cvc5_get_tm() -
cvc5_declare_dt() -
cvc5_declare_fun() -
cvc5_declare_sort() -
cvc5_define_fun() -
cvc5_define_fun_rec() -
cvc5_define_fun_rec_from_const() -
cvc5_define_funs_rec() -
cvc5_simplify() -
cvc5_assert_formula() -
cvc5_check_sat() -
cvc5_check_sat_assuming() -
cvc5_get_assertions() -
cvc5_get_info() -
cvc5_get_option() -
cvc5_get_option_names() -
cvc5_get_option_info() -
cvc5_get_unsat_assumptions() -
cvc5_get_unsat_core() -
cvc5_get_unsat_core_lemmas() -
cvc5_get_difficulty() -
cvc5_get_timeout_core() -
cvc5_get_timeout_core_assuming() -
cvc5_get_proof() -
cvc5_get_learned_literals() -
cvc5_get_value() -
cvc5_get_values() -
cvc5_get_model_domain_elements() -
cvc5_is_model_core_symbol() -
cvc5_get_model() -
cvc5_get_quantifier_elimination() -
cvc5_get_quantifier_elimination_disjunct() -
cvc5_declare_sep_heap() -
cvc5_get_value_sep_heap() -
cvc5_get_value_sep_nil() -
cvc5_declare_pool() -
cvc5_declare_oracle_fun() -
cvc5_add_plugin() -
cvc5_get_interpolant() -
cvc5_get_interpolant_with_grammar() -
cvc5_get_interpolant_next() -
cvc5_get_abduct() -
cvc5_get_abduct_with_grammar() -
cvc5_get_abduct_next() -
cvc5_block_model() -
cvc5_block_model_values() -
cvc5_get_instantiations() -
cvc5_push() -
cvc5_pop() -
cvc5_reset_assertions() -
cvc5_set_info() -
cvc5_set_logic() -
cvc5_is_logic_set() -
cvc5_get_logic() -
cvc5_set_option() -
cvc5_declare_sygus_var() -
cvc5_mk_grammar() -
cvc5_synth_fun() -
cvc5_synth_fun_with_grammar() -
cvc5_add_sygus_constraint() -
cvc5_get_sygus_constraints() -
cvc5_add_sygus_assume() -
cvc5_get_sygus_assumptions() -
cvc5_add_sygus_inv_constraint() -
cvc5_check_synth() -
cvc5_check_synth_next() -
cvc5_get_synth_solution() -
cvc5_get_synth_solutions() -
cvc5_find_synth() -
cvc5_find_synth_with_grammar() -
cvc5_find_synth_next() -
cvc5_get_statistics() -
cvc5_print_stats_safe() -
cvc5_is_output_on() -
cvc5_get_output() -
cvc5_close_output() -
cvc5_get_version() -
cvc5_proof_to_string()
-
- Cvc5Command
-
Cvc5Datatype
-
Cvc5Datatype -
cvc5_dt_copy() -
cvc5_dt_release() -
cvc5_dt_is_equal() -
cvc5_dt_get_constructor() -
cvc5_dt_get_constructor_by_name() -
cvc5_dt_get_selector() -
cvc5_dt_get_name() -
cvc5_dt_get_num_constructors() -
cvc5_dt_get_parameters() -
cvc5_dt_is_parametric() -
cvc5_dt_is_codatatype() -
cvc5_dt_is_tuple() -
cvc5_dt_is_record() -
cvc5_dt_is_finite() -
cvc5_dt_is_well_founded() -
cvc5_dt_to_string() -
cvc5_dt_hash()
-
- Cvc5DatatypeDecl
-
Cvc5DatatypeConstructor
-
Cvc5DatatypeConstructor -
cvc5_dt_cons_copy() -
cvc5_dt_cons_release() -
cvc5_dt_cons_is_equal() -
cvc5_dt_cons_get_name() -
cvc5_dt_cons_get_term() -
cvc5_dt_cons_get_instantiated_term() -
cvc5_dt_cons_get_tester_term() -
cvc5_dt_cons_get_num_selectors() -
cvc5_dt_cons_get_selector() -
cvc5_dt_cons_get_selector_by_name() -
cvc5_dt_cons_to_string() -
cvc5_dt_cons_hash()
-
- Cvc5DatatypeConstructorDecl
- Cvc5DatatypeSelector
- Cvc5Grammar
-
Cvc5InputParser
-
Cvc5InputParser -
cvc5_parser_new() -
cvc5_parser_delete() -
cvc5_parser_release() -
cvc5_parser_get_solver() -
cvc5_parser_get_sm() -
cvc5_parser_set_file_input() -
cvc5_parser_set_str_input() -
cvc5_parser_set_inc_str_input() -
cvc5_parser_append_inc_str_input() -
cvc5_parser_next_command() -
cvc5_parser_next_term() -
cvc5_parser_done()
-
- Cvc5Op
- Cvc5Proof
- Cvc5Result
-
Cvc5Sort
-
Cvc5Sort -
cvc5_sort_copy() -
cvc5_sort_release() -
cvc5_sort_is_equal() -
cvc5_sort_is_disequal() -
cvc5_sort_compare() -
cvc5_sort_get_kind() -
cvc5_sort_has_symbol() -
cvc5_sort_get_symbol() -
cvc5_sort_is_boolean() -
cvc5_sort_is_integer() -
cvc5_sort_is_real() -
cvc5_sort_is_string() -
cvc5_sort_is_regexp() -
cvc5_sort_is_rm() -
cvc5_sort_is_bv() -
cvc5_sort_is_fp() -
cvc5_sort_is_dt() -
cvc5_sort_is_dt_constructor() -
cvc5_sort_is_dt_selector() -
cvc5_sort_is_dt_tester() -
cvc5_sort_is_dt_updater() -
cvc5_sort_is_fun() -
cvc5_sort_is_predicate() -
cvc5_sort_is_tuple() -
cvc5_sort_is_nullable() -
cvc5_sort_is_record() -
cvc5_sort_is_array() -
cvc5_sort_is_ff() -
cvc5_sort_is_set() -
cvc5_sort_is_bag() -
cvc5_sort_is_sequence() -
cvc5_sort_is_abstract() -
cvc5_sort_is_uninterpreted_sort() -
cvc5_sort_is_uninterpreted_sort_constructor() -
cvc5_sort_is_instantiated() -
cvc5_sort_get_uninterpreted_sort_constructor() -
cvc5_sort_get_datatype() -
cvc5_sort_instantiate() -
cvc5_sort_get_instantiated_parameters() -
cvc5_sort_substitute() -
cvc5_sort_substitute_sorts() -
cvc5_sort_to_string() -
cvc5_sort_hash() -
cvc5_sort_dt_constructor_get_arity() -
cvc5_sort_dt_constructor_get_domain() -
cvc5_sort_dt_constructor_get_codomain() -
cvc5_sort_dt_selector_get_domain() -
cvc5_sort_dt_selector_get_codomain() -
cvc5_sort_dt_tester_get_domain() -
cvc5_sort_dt_tester_get_codomain() -
cvc5_sort_fun_get_arity() -
cvc5_sort_fun_get_domain() -
cvc5_sort_fun_get_codomain() -
cvc5_sort_array_get_index_sort() -
cvc5_sort_array_get_element_sort() -
cvc5_sort_set_get_element_sort() -
cvc5_sort_bag_get_element_sort() -
cvc5_sort_sequence_get_element_sort() -
cvc5_sort_abstract_get_kind() -
cvc5_sort_uninterpreted_sort_constructor_get_arity() -
cvc5_sort_bv_get_size() -
cvc5_sort_ff_get_size() -
cvc5_sort_fp_get_exp_size() -
cvc5_sort_fp_get_sig_size() -
cvc5_sort_dt_get_arity() -
cvc5_sort_tuple_get_length() -
cvc5_sort_tuple_get_element_sorts() -
cvc5_sort_nullable_get_element_sort()
-
-
Cvc5Statistics
-
Cvc5Stat -
cvc5_stat_is_internal() -
cvc5_stat_is_default() -
cvc5_stat_is_int() -
cvc5_stat_get_int() -
cvc5_stat_is_double() -
cvc5_stat_get_double() -
cvc5_stat_is_string() -
cvc5_stat_get_string() -
cvc5_stat_is_histogram() -
cvc5_stat_get_histogram() -
cvc5_stat_to_string() -
cvc5_stat_copy() -
cvc5_stat_release() -
Cvc5Statistics -
cvc5_stats_iter_init() -
cvc5_stats_iter_has_next() -
cvc5_stats_iter_next() -
cvc5_stats_get() -
cvc5_stats_to_string() -
cvc5_stats_copy() -
cvc5_stats_release()
-
- Cvc5SymbolManager
-
Cvc5SynthResult
-
Cvc5SynthResult -
cvc5_synth_result_is_null() -
cvc5_synth_result_has_solution() -
cvc5_synth_result_has_no_solution() -
cvc5_synth_result_is_unknown() -
cvc5_synth_result_is_equal() -
cvc5_synth_result_is_disequal() -
cvc5_synth_result_to_string() -
cvc5_synth_result_hash() -
cvc5_synth_result_copy() -
cvc5_synth_result_release()
-
-
Cvc5Term
-
Cvc5Term -
cvc5_term_copy() -
cvc5_term_release() -
cvc5_term_is_equal() -
cvc5_term_is_disequal() -
cvc5_term_compare() -
cvc5_term_get_num_children() -
cvc5_term_get_child() -
cvc5_term_get_id() -
cvc5_term_get_kind() -
cvc5_term_get_sort() -
cvc5_term_substitute_term() -
cvc5_term_substitute_terms() -
cvc5_term_has_op() -
cvc5_term_get_op() -
cvc5_term_has_symbol() -
cvc5_term_get_symbol() -
cvc5_term_to_string() -
cvc5_term_get_real_or_integer_value_sign() -
cvc5_term_is_int32_value() -
cvc5_term_get_int32_value() -
cvc5_term_is_uint32_value() -
cvc5_term_get_uint32_value() -
cvc5_term_is_int64_value() -
cvc5_term_get_int64_value() -
cvc5_term_is_uint64_value() -
cvc5_term_get_uint64_value() -
cvc5_term_is_integer_value() -
cvc5_term_get_integer_value() -
cvc5_term_is_string_value() -
cvc5_term_get_string_value() -
cvc5_term_get_u32string_value() -
cvc5_term_is_real32_value() -
cvc5_term_get_real32_value() -
cvc5_term_is_real64_value() -
cvc5_term_get_real64_value() -
cvc5_term_is_real_value() -
cvc5_term_get_real_value() -
cvc5_term_is_const_array() -
cvc5_term_get_const_array_base() -
cvc5_term_is_boolean_value() -
cvc5_term_get_boolean_value() -
cvc5_term_is_bv_value() -
cvc5_term_get_bv_value() -
cvc5_term_is_ff_value() -
cvc5_term_get_ff_value() -
cvc5_term_is_uninterpreted_sort_value() -
cvc5_term_get_uninterpreted_sort_value() -
cvc5_term_is_tuple_value() -
cvc5_term_get_tuple_value() -
cvc5_term_is_rm_value() -
cvc5_term_get_rm_value() -
cvc5_term_is_fp_pos_zero() -
cvc5_term_is_fp_neg_zero() -
cvc5_term_is_fp_pos_inf() -
cvc5_term_is_fp_neg_inf() -
cvc5_term_is_fp_nan() -
cvc5_term_is_fp_value() -
cvc5_term_get_fp_value() -
cvc5_term_is_set_value() -
cvc5_term_get_set_value() -
cvc5_term_is_sequence_value() -
cvc5_term_get_sequence_value() -
cvc5_term_is_cardinality_constraint() -
cvc5_term_get_cardinality_constraint() -
cvc5_term_is_real_algebraic_number() -
cvc5_term_get_real_algebraic_number_defining_polynomial() -
cvc5_term_get_real_algebraic_number_lower_bound() -
cvc5_term_get_real_algebraic_number_upper_bound() -
cvc5_term_is_skolem() -
cvc5_term_get_skolem_id() -
cvc5_term_get_skolem_indices() -
cvc5_term_hash()
-
-
Cvc5TermManager
-
Cvc5TermManager -
cvc5_term_manager_new() -
cvc5_term_manager_delete() -
cvc5_term_manager_release() -
cvc5_term_manager_print_stats_safe() -
cvc5_term_manager_get_statistics() -
Sort Creation
-
cvc5_get_boolean_sort() -
cvc5_get_integer_sort() -
cvc5_get_real_sort() -
cvc5_get_regexp_sort() -
cvc5_get_rm_sort() -
cvc5_get_string_sort() -
cvc5_mk_array_sort() -
cvc5_mk_bv_sort() -
cvc5_mk_fp_sort() -
cvc5_mk_ff_sort() -
cvc5_mk_dt_sort() -
cvc5_mk_dt_sorts() -
cvc5_mk_fun_sort() -
cvc5_mk_param_sort() -
cvc5_mk_predicate_sort() -
cvc5_mk_record_sort() -
cvc5_mk_set_sort() -
cvc5_mk_bag_sort() -
cvc5_mk_sequence_sort() -
cvc5_mk_abstract_sort() -
cvc5_mk_uninterpreted_sort() -
cvc5_mk_unresolved_dt_sort() -
cvc5_mk_uninterpreted_sort_constructor_sort() -
cvc5_mk_tuple_sort() -
cvc5_mk_nullable_sort()
-
- Operator Creation
-
Term Creation
-
cvc5_mk_term() -
cvc5_mk_term_from_op() -
cvc5_mk_tuple() -
cvc5_mk_nullable_some() -
cvc5_mk_nullable_val() -
cvc5_mk_nullable_is_null() -
cvc5_mk_nullable_is_some() -
cvc5_mk_nullable_null() -
cvc5_mk_nullable_lift() -
cvc5_mk_skolem() -
cvc5_get_num_idxs_for_skolem_id() -
cvc5_mk_true() -
cvc5_mk_false() -
cvc5_mk_boolean() -
cvc5_mk_pi() -
cvc5_mk_integer() -
cvc5_mk_integer_int64() -
cvc5_mk_real() -
cvc5_mk_real_int64() -
cvc5_mk_real_num_den() -
cvc5_mk_regexp_all() -
cvc5_mk_regexp_allchar() -
cvc5_mk_regexp_none() -
cvc5_mk_empty_set() -
cvc5_mk_empty_bag() -
cvc5_mk_sep_emp() -
cvc5_mk_sep_nil() -
cvc5_mk_string() -
cvc5_mk_string_from_wchar() -
cvc5_mk_string_from_char32() -
cvc5_mk_empty_sequence() -
cvc5_mk_universe_set() -
cvc5_mk_bv_uint64() -
cvc5_mk_bv() -
cvc5_mk_ff_elem() -
cvc5_mk_const_array() -
cvc5_mk_fp_pos_inf() -
cvc5_mk_fp_neg_inf() -
cvc5_mk_fp_nan() -
cvc5_mk_fp_pos_zero() -
cvc5_mk_fp_neg_zero() -
cvc5_mk_rm() -
cvc5_mk_fp() -
cvc5_mk_fp_from_ieee() -
cvc5_mk_cardinality_constraint() -
cvc5_mk_const() -
cvc5_mk_var()
-
- Datatype Declaration Creation
- Datatype Constructor Declaration Creation
-
-
Cvc5OptionInfo
-
Cvc5OptionInfoKind -
Cvc5OptionInfo -
cvc5_option_info_to_string()
-
- Cvc5Plugin
-
Cvc5Kind
-
Cvc5Kind-
CVC5_KIND_INTERNAL_KIND -
CVC5_KIND_UNDEFINED_KIND -
CVC5_KIND_NULL_TERM -
CVC5_KIND_UNINTERPRETED_SORT_VALUE -
CVC5_KIND_EQUAL -
CVC5_KIND_DISTINCT -
CVC5_KIND_CONSTANT -
CVC5_KIND_VARIABLE -
CVC5_KIND_SKOLEM -
CVC5_KIND_SEXPR -
CVC5_KIND_LAMBDA -
CVC5_KIND_WITNESS -
CVC5_KIND_CONST_BOOLEAN -
CVC5_KIND_NOT -
CVC5_KIND_AND -
CVC5_KIND_IMPLIES -
CVC5_KIND_OR -
CVC5_KIND_XOR -
CVC5_KIND_ITE -
CVC5_KIND_APPLY_UF -
CVC5_KIND_CARDINALITY_CONSTRAINT -
CVC5_KIND_HO_APPLY -
CVC5_KIND_ADD -
CVC5_KIND_MULT -
CVC5_KIND_IAND -
CVC5_KIND_PIAND -
CVC5_KIND_POW2 -
CVC5_KIND_LOG2 -
CVC5_KIND_SUB -
CVC5_KIND_NEG -
CVC5_KIND_DIVISION -
CVC5_KIND_DIVISION_TOTAL -
CVC5_KIND_INTS_DIVISION -
CVC5_KIND_INTS_DIVISION_TOTAL -
CVC5_KIND_INTS_MODULUS -
CVC5_KIND_INTS_MODULUS_TOTAL -
CVC5_KIND_ABS -
CVC5_KIND_POW -
CVC5_KIND_EXPONENTIAL -
CVC5_KIND_SINE -
CVC5_KIND_COSINE -
CVC5_KIND_TANGENT -
CVC5_KIND_COSECANT -
CVC5_KIND_SECANT -
CVC5_KIND_COTANGENT -
CVC5_KIND_ARCSINE -
CVC5_KIND_ARCCOSINE -
CVC5_KIND_ARCTANGENT -
CVC5_KIND_ARCCOSECANT -
CVC5_KIND_ARCSECANT -
CVC5_KIND_ARCCOTANGENT -
CVC5_KIND_SQRT -
CVC5_KIND_DIVISIBLE -
CVC5_KIND_CONST_RATIONAL -
CVC5_KIND_CONST_INTEGER -
CVC5_KIND_LT -
CVC5_KIND_LEQ -
CVC5_KIND_GT -
CVC5_KIND_GEQ -
CVC5_KIND_IS_INTEGER -
CVC5_KIND_TO_INTEGER -
CVC5_KIND_TO_REAL -
CVC5_KIND_PI -
CVC5_KIND_CONST_BITVECTOR -
CVC5_KIND_BITVECTOR_CONCAT -
CVC5_KIND_BITVECTOR_AND -
CVC5_KIND_BITVECTOR_OR -
CVC5_KIND_BITVECTOR_XOR -
CVC5_KIND_BITVECTOR_NOT -
CVC5_KIND_BITVECTOR_NAND -
CVC5_KIND_BITVECTOR_NOR -
CVC5_KIND_BITVECTOR_XNOR -
CVC5_KIND_BITVECTOR_COMP -
CVC5_KIND_BITVECTOR_MULT -
CVC5_KIND_BITVECTOR_ADD -
CVC5_KIND_BITVECTOR_SUB -
CVC5_KIND_BITVECTOR_NEG -
CVC5_KIND_BITVECTOR_UDIV -
CVC5_KIND_BITVECTOR_UREM -
CVC5_KIND_BITVECTOR_SDIV -
CVC5_KIND_BITVECTOR_SREM -
CVC5_KIND_BITVECTOR_SMOD -
CVC5_KIND_BITVECTOR_SHL -
CVC5_KIND_BITVECTOR_LSHR -
CVC5_KIND_BITVECTOR_ASHR -
CVC5_KIND_BITVECTOR_ULT -
CVC5_KIND_BITVECTOR_ULE -
CVC5_KIND_BITVECTOR_UGT -
CVC5_KIND_BITVECTOR_UGE -
CVC5_KIND_BITVECTOR_SLT -
CVC5_KIND_BITVECTOR_SLE -
CVC5_KIND_BITVECTOR_SGT -
CVC5_KIND_BITVECTOR_SGE -
CVC5_KIND_BITVECTOR_ULTBV -
CVC5_KIND_BITVECTOR_SLTBV -
CVC5_KIND_BITVECTOR_ITE -
CVC5_KIND_BITVECTOR_REDOR -
CVC5_KIND_BITVECTOR_REDAND -
CVC5_KIND_BITVECTOR_NEGO -
CVC5_KIND_BITVECTOR_UADDO -
CVC5_KIND_BITVECTOR_SADDO -
CVC5_KIND_BITVECTOR_UMULO -
CVC5_KIND_BITVECTOR_SMULO -
CVC5_KIND_BITVECTOR_USUBO -
CVC5_KIND_BITVECTOR_SSUBO -
CVC5_KIND_BITVECTOR_SDIVO -
CVC5_KIND_BITVECTOR_EXTRACT -
CVC5_KIND_BITVECTOR_REPEAT -
CVC5_KIND_BITVECTOR_ZERO_EXTEND -
CVC5_KIND_BITVECTOR_SIGN_EXTEND -
CVC5_KIND_BITVECTOR_ROTATE_LEFT -
CVC5_KIND_BITVECTOR_ROTATE_RIGHT -
CVC5_KIND_INT_TO_BITVECTOR -
CVC5_KIND_BITVECTOR_TO_NAT -
CVC5_KIND_BITVECTOR_UBV_TO_INT -
CVC5_KIND_BITVECTOR_SBV_TO_INT -
CVC5_KIND_BITVECTOR_FROM_BOOLS -
CVC5_KIND_BITVECTOR_BIT -
CVC5_KIND_CONST_FINITE_FIELD -
CVC5_KIND_FINITE_FIELD_NEG -
CVC5_KIND_FINITE_FIELD_ADD -
CVC5_KIND_FINITE_FIELD_BITSUM -
CVC5_KIND_FINITE_FIELD_MULT -
CVC5_KIND_CONST_FLOATINGPOINT -
CVC5_KIND_CONST_ROUNDINGMODE -
CVC5_KIND_FLOATINGPOINT_FP -
CVC5_KIND_FLOATINGPOINT_EQ -
CVC5_KIND_FLOATINGPOINT_ABS -
CVC5_KIND_FLOATINGPOINT_NEG -
CVC5_KIND_FLOATINGPOINT_ADD -
CVC5_KIND_FLOATINGPOINT_SUB -
CVC5_KIND_FLOATINGPOINT_MULT -
CVC5_KIND_FLOATINGPOINT_DIV -
CVC5_KIND_FLOATINGPOINT_FMA -
CVC5_KIND_FLOATINGPOINT_SQRT -
CVC5_KIND_FLOATINGPOINT_REM -
CVC5_KIND_FLOATINGPOINT_RTI -
CVC5_KIND_FLOATINGPOINT_MIN -
CVC5_KIND_FLOATINGPOINT_MAX -
CVC5_KIND_FLOATINGPOINT_LEQ -
CVC5_KIND_FLOATINGPOINT_LT -
CVC5_KIND_FLOATINGPOINT_GEQ -
CVC5_KIND_FLOATINGPOINT_GT -
CVC5_KIND_FLOATINGPOINT_IS_NORMAL -
CVC5_KIND_FLOATINGPOINT_IS_SUBNORMAL -
CVC5_KIND_FLOATINGPOINT_IS_ZERO -
CVC5_KIND_FLOATINGPOINT_IS_INF -
CVC5_KIND_FLOATINGPOINT_IS_NAN -
CVC5_KIND_FLOATINGPOINT_IS_NEG -
CVC5_KIND_FLOATINGPOINT_IS_POS -
CVC5_KIND_FLOATINGPOINT_TO_FP_FROM_IEEE_BV -
CVC5_KIND_FLOATINGPOINT_TO_FP_FROM_FP -
CVC5_KIND_FLOATINGPOINT_TO_FP_FROM_REAL -
CVC5_KIND_FLOATINGPOINT_TO_FP_FROM_SBV -
CVC5_KIND_FLOATINGPOINT_TO_FP_FROM_UBV -
CVC5_KIND_FLOATINGPOINT_TO_UBV -
CVC5_KIND_FLOATINGPOINT_TO_SBV -
CVC5_KIND_FLOATINGPOINT_TO_REAL -
CVC5_KIND_SELECT -
CVC5_KIND_STORE -
CVC5_KIND_CONST_ARRAY -
CVC5_KIND_EQ_RANGE -
CVC5_KIND_APPLY_CONSTRUCTOR -
CVC5_KIND_APPLY_SELECTOR -
CVC5_KIND_APPLY_TESTER -
CVC5_KIND_APPLY_UPDATER -
CVC5_KIND_MATCH -
CVC5_KIND_MATCH_CASE -
CVC5_KIND_MATCH_BIND_CASE -
CVC5_KIND_TUPLE_PROJECT -
CVC5_KIND_NULLABLE_LIFT -
CVC5_KIND_SEP_NIL -
CVC5_KIND_SEP_EMP -
CVC5_KIND_SEP_PTO -
CVC5_KIND_SEP_STAR -
CVC5_KIND_SEP_WAND -
CVC5_KIND_SET_EMPTY -
CVC5_KIND_SET_UNION -
CVC5_KIND_SET_INTER -
CVC5_KIND_SET_MINUS -
CVC5_KIND_SET_SUBSET -
CVC5_KIND_SET_MEMBER -
CVC5_KIND_SET_SINGLETON -
CVC5_KIND_SET_INSERT -
CVC5_KIND_SET_CARD -
CVC5_KIND_SET_COMPLEMENT -
CVC5_KIND_SET_UNIVERSE -
CVC5_KIND_SET_COMPREHENSION -
CVC5_KIND_SET_CHOOSE -
CVC5_KIND_SET_IS_EMPTY -
CVC5_KIND_SET_IS_SINGLETON -
CVC5_KIND_SET_MAP -
CVC5_KIND_SET_FILTER -
CVC5_KIND_SET_ALL -
CVC5_KIND_SET_SOME -
CVC5_KIND_SET_FOLD -
CVC5_KIND_RELATION_JOIN -
CVC5_KIND_RELATION_TABLE_JOIN -
CVC5_KIND_RELATION_PRODUCT -
CVC5_KIND_RELATION_TRANSPOSE -
CVC5_KIND_RELATION_TCLOSURE -
CVC5_KIND_RELATION_JOIN_IMAGE -
CVC5_KIND_RELATION_IDEN -
CVC5_KIND_RELATION_GROUP -
CVC5_KIND_RELATION_AGGREGATE -
CVC5_KIND_RELATION_PROJECT -
CVC5_KIND_BAG_EMPTY -
CVC5_KIND_BAG_UNION_MAX -
CVC5_KIND_BAG_UNION_DISJOINT -
CVC5_KIND_BAG_INTER_MIN -
CVC5_KIND_BAG_DIFFERENCE_SUBTRACT -
CVC5_KIND_BAG_DIFFERENCE_REMOVE -
CVC5_KIND_BAG_SUBBAG -
CVC5_KIND_BAG_COUNT -
CVC5_KIND_BAG_MEMBER -
CVC5_KIND_BAG_SETOF -
CVC5_KIND_BAG_MAKE -
CVC5_KIND_BAG_CARD -
CVC5_KIND_BAG_CHOOSE -
CVC5_KIND_BAG_MAP -
CVC5_KIND_BAG_FILTER -
CVC5_KIND_BAG_ALL -
CVC5_KIND_BAG_SOME -
CVC5_KIND_BAG_FOLD -
CVC5_KIND_BAG_PARTITION -
CVC5_KIND_TABLE_PRODUCT -
CVC5_KIND_TABLE_PROJECT -
CVC5_KIND_TABLE_AGGREGATE -
CVC5_KIND_TABLE_JOIN -
CVC5_KIND_TABLE_GROUP -
CVC5_KIND_STRING_CONCAT -
CVC5_KIND_STRING_IN_REGEXP -
CVC5_KIND_STRING_LENGTH -
CVC5_KIND_STRING_SUBSTR -
CVC5_KIND_STRING_UPDATE -
CVC5_KIND_STRING_CHARAT -
CVC5_KIND_STRING_CONTAINS -
CVC5_KIND_STRING_INDEXOF -
CVC5_KIND_STRING_INDEXOF_RE -
CVC5_KIND_STRING_REPLACE -
CVC5_KIND_STRING_REPLACE_ALL -
CVC5_KIND_STRING_REPLACE_RE -
CVC5_KIND_STRING_REPLACE_RE_ALL -
CVC5_KIND_STRING_TO_LOWER -
CVC5_KIND_STRING_TO_UPPER -
CVC5_KIND_STRING_REV -
CVC5_KIND_STRING_TO_CODE -
CVC5_KIND_STRING_FROM_CODE -
CVC5_KIND_STRING_LT -
CVC5_KIND_STRING_LEQ -
CVC5_KIND_STRING_PREFIX -
CVC5_KIND_STRING_SUFFIX -
CVC5_KIND_STRING_IS_DIGIT -
CVC5_KIND_STRING_FROM_INT -
CVC5_KIND_STRING_TO_INT -
CVC5_KIND_CONST_STRING -
CVC5_KIND_STRING_TO_REGEXP -
CVC5_KIND_REGEXP_CONCAT -
CVC5_KIND_REGEXP_UNION -
CVC5_KIND_REGEXP_INTER -
CVC5_KIND_REGEXP_DIFF -
CVC5_KIND_REGEXP_STAR -
CVC5_KIND_REGEXP_PLUS -
CVC5_KIND_REGEXP_OPT -
CVC5_KIND_REGEXP_RANGE -
CVC5_KIND_REGEXP_REPEAT -
CVC5_KIND_REGEXP_LOOP -
CVC5_KIND_REGEXP_NONE -
CVC5_KIND_REGEXP_ALL -
CVC5_KIND_REGEXP_ALLCHAR -
CVC5_KIND_REGEXP_COMPLEMENT -
CVC5_KIND_SEQ_CONCAT -
CVC5_KIND_SEQ_LENGTH -
CVC5_KIND_SEQ_EXTRACT -
CVC5_KIND_SEQ_UPDATE -
CVC5_KIND_SEQ_AT -
CVC5_KIND_SEQ_CONTAINS -
CVC5_KIND_SEQ_INDEXOF -
CVC5_KIND_SEQ_REPLACE -
CVC5_KIND_SEQ_REPLACE_ALL -
CVC5_KIND_SEQ_REV -
CVC5_KIND_SEQ_PREFIX -
CVC5_KIND_SEQ_SUFFIX -
CVC5_KIND_CONST_SEQUENCE -
CVC5_KIND_SEQ_UNIT -
CVC5_KIND_SEQ_NTH -
CVC5_KIND_FORALL -
CVC5_KIND_EXISTS -
CVC5_KIND_VARIABLE_LIST -
CVC5_KIND_INST_PATTERN -
CVC5_KIND_INST_NO_PATTERN -
CVC5_KIND_INST_POOL -
CVC5_KIND_INST_ADD_TO_POOL -
CVC5_KIND_SKOLEM_ADD_TO_POOL -
CVC5_KIND_INST_ATTRIBUTE -
CVC5_KIND_INST_PATTERN_LIST -
CVC5_KIND_LAST_KIND
-
-
cvc5_kind_to_string() -
cvc5_kind_hash()
-
-
Cvc5SortKind
-
Cvc5SortKind-
CVC5_SORT_KIND_INTERNAL_SORT_KIND -
CVC5_SORT_KIND_UNDEFINED_SORT_KIND -
CVC5_SORT_KIND_NULL_SORT -
CVC5_SORT_KIND_ABSTRACT_SORT -
CVC5_SORT_KIND_ARRAY_SORT -
CVC5_SORT_KIND_BAG_SORT -
CVC5_SORT_KIND_BOOLEAN_SORT -
CVC5_SORT_KIND_BITVECTOR_SORT -
CVC5_SORT_KIND_DATATYPE_SORT -
CVC5_SORT_KIND_FINITE_FIELD_SORT -
CVC5_SORT_KIND_FLOATINGPOINT_SORT -
CVC5_SORT_KIND_FUNCTION_SORT -
CVC5_SORT_KIND_INTEGER_SORT -
CVC5_SORT_KIND_REAL_SORT -
CVC5_SORT_KIND_REGLAN_SORT -
CVC5_SORT_KIND_ROUNDINGMODE_SORT -
CVC5_SORT_KIND_SEQUENCE_SORT -
CVC5_SORT_KIND_SET_SORT -
CVC5_SORT_KIND_STRING_SORT -
CVC5_SORT_KIND_TUPLE_SORT -
CVC5_SORT_KIND_NULLABLE_SORT -
CVC5_SORT_KIND_UNINTERPRETED_SORT -
CVC5_SORT_KIND_LAST_SORT_KIND
-
-
cvc5_sort_kind_to_string() -
cvc5_sort_kind_hash()
-
- Cvc5RoundingMode
-
Cvc5UnknownExplanation
-
Cvc5UnknownExplanation-
CVC5_UNKNOWN_EXPLANATION_REQUIRES_FULL_CHECK -
CVC5_UNKNOWN_EXPLANATION_INCOMPLETE -
CVC5_UNKNOWN_EXPLANATION_TIMEOUT -
CVC5_UNKNOWN_EXPLANATION_RESOURCEOUT -
CVC5_UNKNOWN_EXPLANATION_MEMOUT -
CVC5_UNKNOWN_EXPLANATION_INTERRUPTED -
CVC5_UNKNOWN_EXPLANATION_UNSUPPORTED -
CVC5_UNKNOWN_EXPLANATION_OTHER -
CVC5_UNKNOWN_EXPLANATION_REQUIRES_CHECK_AGAIN -
CVC5_UNKNOWN_EXPLANATION_UNKNOWN_REASON -
CVC5_UNKNOWN_EXPLANATION_LAST
-
-
cvc5_unknown_explanation_to_string()
-
-
Modes
-
Cvc5BlockModelsMode -
cvc5_modes_block_models_mode_to_string() -
Cvc5LearnedLitType -
cvc5_modes_learned_lit_type_to_string() -
Cvc5FindSynthTarget -
cvc5_modes_find_synth_target_to_string() -
Cvc5OptionCategory -
cvc5_modes_option_category_to_string() -
Cvc5ProofComponent -
cvc5_modes_proof_component_to_string() -
Cvc5ProofFormat -
cvc5_modes_proof_format_to_string()
-
Types
The following types are defined via typedefs but used as black boxes, their internals are hidden.
-
typedef struct Cvc5
-
typedef struct Cvc5Command
-
typedef struct Cvc5Datatype
-
typedef struct Cvc5DatatypeDecl
-
typedef struct Cvc5DatatypeConstructor
-
typedef struct Cvc5DatatypeConstructorDecl
-
typedef struct Cvc5DatatypeSelector
-
typedef struct Cvc5Grammar
-
typedef struct Cvc5InputParser
-
typedef struct Cvc5Op
-
typedef struct Cvc5Proof
-
typedef struct Cvc5Result
-
typedef struct Cvc5Sort
-
typedef struct
Cvc5Stat -
typedef struct Cvc5Statistics
-
typedef struct Cvc5SymbolManager
-
typedef struct Cvc5SynthResult
-
typedef struct Cvc5Term
-
typedef struct Cvc5TermManager
Structs
The following structs are fully exposed via the API.
-
struct Cvc5OptionInfo
-
struct Cvc5Plugin
Enums
-
enum Cvc5Kind
-
enum Cvc5SortKind
-
enum
Cvc5OptionInfoKind -
enum Cvc5RoundingMode
-
enums for configuration modes
-
enum
Cvc5BlockModelsMode -
enum
Cvc5LearnedLitType -
enum
Cvc5FindSynthTarget -
enum
Cvc5OptionCategory -
enum
Cvc5ProofComponent -
enum
Cvc5ProofFormat
-
-
enums classes for proof rules
-
enum
Cvc5ProofRule -
enum
Cvc5ProofRewriteRule
-