module Z3::API

Extended Modules

Defined in:

z3/api.cr

Constant Summary

Context = begin context = LibZ3.mk_context(LibZ3.mk_config) LibZ3.set_error_handler(context, ->(_context : LibZ3::Context, _code : LibZ3::ErrorCode) do end) context end

Z3's own error handler prints the message to stderr and lets the failed call hand back a null pointer, so the program carries on with a null AST inside an expression. This one does nothing at all, leaving the error code set for checked to raise on - a Crystal exception can't be thrown out of a C callback and back through Z3's own frames.

Instance Method Summary

Instance Method Detail

def app_args(ast) #

The arguments of an application, so a term like a == 2 can be taken apart. Anything which isn't an application has no arguments.

TODO this becomes much less ad hoc once we have a real printer


[View source]
def ast_to_string(ast) #

[View source]
def get_algebraic_number_lower(*args) #

[View source]
def get_algebraic_number_upper(*args) #

[View source]
def get_ast_kind(*args) #

[View source]
def get_bool_value(*args) #

[View source]
def get_decl_name(decl) #

[View source]
def get_numeral_string(ast) #

[View source]
def get_range(*args) #

[View source]
def get_string(ast) #

[View source]
def is_algebraic_number(*args) #

[View source]
def is_eq_ast(*args) #

[View source]
def is_string(*args) #

[View source]
def mk_abs(*args) #

[View source]
def mk_add(asts) #

[View source]
def mk_and(asts) #

[View source]
def mk_atleast(asts, k : UInt32) #

[View source]
def mk_atmost(asts, k : UInt32) #

[View source]
def mk_bit2bool(*args) #

[View source]
def mk_bv2int(*args) #

[View source]
def mk_bvadd(*args) #

[View source]
def mk_bvadd_no_overflow(*args) #

[View source]
def mk_bvadd_no_underflow(*args) #

[View source]
def mk_bvand(*args) #

[View source]
def mk_bvashr(*args) #

[View source]
def mk_bvlshr(*args) #

[View source]
def mk_bvmul(*args) #

[View source]
def mk_bvmul_no_overflow(*args) #

[View source]
def mk_bvmul_no_underflow(*args) #

[View source]
def mk_bvnand(*args) #

[View source]
def mk_bvneg(*args) #

[View source]
def mk_bvneg_no_overflow(*args) #

[View source]
def mk_bvnor(*args) #

[View source]
def mk_bvnot(*args) #

[View source]
def mk_bvor(*args) #

[View source]
def mk_bvredand(*args) #

[View source]
def mk_bvredor(*args) #

[View source]
def mk_bvsdiv(*args) #

[View source]
def mk_bvsdiv_no_overflow(*args) #

[View source]
def mk_bvsge(*args) #

[View source]
def mk_bvsgt(*args) #

[View source]
def mk_bvshl(*args) #

[View source]
def mk_bvsle(*args) #

[View source]
def mk_bvslt(*args) #

[View source]
def mk_bvsmod(*args) #

[View source]
def mk_bvsrem(*args) #

[View source]
def mk_bvsub(*args) #

[View source]
def mk_bvsub_no_overflow(*args) #

[View source]
def mk_bvsub_no_underflow(*args) #

[View source]
def mk_bvudiv(*args) #

[View source]
def mk_bvuge(*args) #

[View source]
def mk_bvugt(*args) #

[View source]
def mk_bvule(*args) #

[View source]
def mk_bvult(*args) #

[View source]
def mk_bvurem(*args) #

[View source]
def mk_bvxnor(*args) #

[View source]
def mk_bvxor(*args) #

[View source]
def mk_char(*args) #

[View source]
def mk_char_from_bv(*args) #

[View source]
def mk_char_is_digit(*args) #

[View source]
def mk_char_le(*args) #

[View source]
def mk_char_to_bv(*args) #

[View source]
def mk_char_to_int(*args) #

[View source]
def mk_concat(*args) #

[View source]
def mk_const(name, sort) #

[View source]
def mk_distinct(asts) #

[View source]
def mk_div(*args) #

[View source]
def mk_divides(*args) #

[View source]
def mk_eq(*args) #

[View source]
def mk_ext_rotate_left(*args) #

[View source]
def mk_ext_rotate_right(*args) #

[View source]
def mk_extract(*args) #

[View source]
def mk_false(*args) #

[View source]
def mk_ge(*args) #

[View source]
def mk_gt(*args) #

[View source]
def mk_iff(*args) #

[View source]
def mk_implies(*args) #

[View source]
def mk_int2bv(*args) #

[View source]
def mk_int2real(*args) #

[View source]
def mk_int_to_str(*args) #

[View source]
def mk_is_int(*args) #

[View source]
def mk_ite(*args) #

[View source]
def mk_le(*args) #

[View source]
def mk_lt(*args) #

[View source]
def mk_mod(*args) #

[View source]
def mk_mul(asts) #

[View source]
def mk_ne(a, b) #

Not a real Z3 function


[View source]
def mk_not(*args) #

[View source]
def mk_numeral(num : Int | BigRational | Float, sort) #

[View source]
def mk_or(asts) #

[View source]
def mk_pbeq(asts, coeffs : Array(Int32), k : Int32) #

[View source]
def mk_pbge(asts, coeffs : Array(Int32), k : Int32) #

[View source]
def mk_pble(asts, coeffs : Array(Int32), k : Int32) #

[View source]
def mk_power(*args) #

[View source]
def mk_real2int(*args) #

[View source]
def mk_rem(*args) #

[View source]
def mk_repeat(*args) #

[View source]
def mk_rotate_left(*args) #

[View source]
def mk_rotate_right(*args) #

[View source]
def mk_sbv_to_str(*args) #

[View source]
def mk_seq_at(*args) #

[View source]
def mk_seq_concat(asts) #

[View source]
def mk_seq_contains(*args) #

[View source]
def mk_seq_empty(*args) #

[View source]
def mk_seq_extract(*args) #

[View source]
def mk_seq_index(*args) #

[View source]
def mk_seq_last_index(*args) #

[View source]
def mk_seq_length(*args) #

[View source]
def mk_seq_nth(*args) #

[View source]
def mk_seq_prefix(*args) #

[View source]
def mk_seq_replace(*args) #

[View source]
def mk_seq_replace_all(*args) #

[View source]
def mk_seq_suffix(*args) #

[View source]
def mk_seq_unit(*args) #

[View source]
def mk_sign_ext(*args) #

[View source]
def mk_solver(*args) #

[View source]
def mk_str_le(*args) #

[View source]
def mk_str_lt(*args) #

[View source]
def mk_str_to_int(*args) #

[View source]
def mk_string_from_code(*args) #

[View source]
def mk_string_to_code(*args) #

[View source]
def mk_sub(asts) #

[View source]
def mk_true(*args) #

[View source]
def mk_u32string(code_points : Array(UInt32)) #

A Z3 string is a sequence of code points, and these two are the only calls which pass one either way without escaping it into ASCII first


[View source]
def mk_ubv_to_str(*args) #

[View source]
def mk_unary_minus(*args) #

[View source]
def mk_xor(*args) #

[View source]
def mk_zero_ext(*args) #

[View source]
def model_eval(model, ast, complete) #

[View source]
def model_get_const_decl(*args) #

[View source]
def model_get_const_interp(model, decl) #

[View source]
def model_get_num_consts(*args) #

[View source]
def model_inc_ref(*args) #

[View source]
def model_to_string(model) #

[View source]
def new_from_ast_pointer(_ast) : AnyExpr #

[View source]
def read_ast_vector(vec) #

[View source]
def simplify(*args) #

[View source]
def solver_assert(*args) #

[View source]
def solver_assert_and_track(*args) #

[View source]
def solver_check(*args) #

[View source]
def solver_get_assertions(solver) #

[View source]
def solver_get_model(*args) #

[View source]
def solver_get_num_scopes(*args) #

[View source]
def solver_get_reason_unknown(solver) #

[View source]
def solver_get_statistics(solver) #

[View source]
def solver_get_unsat_core(solver) #

[View source]
def solver_inc_ref(*args) #

[View source]
def solver_pop(*args) #

[View source]
def solver_push(*args) #

[View source]
def solver_reset(*args) #

[View source]
def solver_to_string(solver) #

[View source]
def sort_from_pointer(_sort) : AnySort #

[View source]