dtk-z3-solver-deno-v2
Version:
This directory contains JavaScript code to automatically derive TypeScript bindings for the C API, which are published on npm as [z3-solver](https://www.npmjs.com/package/z3-solver).
1,050 lines • 103 kB
JavaScript
"use strict";
// THIS FILE IS AUTOMATICALLY GENERATED BY make-ts-wrapper.ts
// DO NOT EDIT IT BY HAND
Object.defineProperty(exports, "__esModule", { value: true });
exports.init = init;
async function init(initModule) {
let Mod = await initModule();
// this works for both signed and unsigned, because JS will wrap for you when constructing the Uint32Array
function intArrayToByteArr(ints) {
return new Uint8Array(new Uint32Array(ints).buffer);
}
function boolArrayToByteArr(bools) {
return bools.map((b) => (b ? 1 : 0));
}
function readUintArray(address, count) {
return Array.from(new Uint32Array(Mod.HEAPU32.buffer, address, count));
}
let outAddress = Mod._malloc(24);
let outUintArray = new Uint32Array(Mod.HEAPU32.buffer, outAddress, 4);
let getOutUint = (i) => outUintArray[i];
let outIntArray = new Int32Array(Mod.HEAPU32.buffer, outAddress, 4);
let getOutInt = (i) => outIntArray[i];
let outUint64Array = new BigUint64Array(Mod.HEAPU32.buffer, outAddress, 2);
let getOutUint64 = (i) => outUint64Array[i];
let outInt64Array = new BigInt64Array(Mod.HEAPU32.buffer, outAddress, 2);
let getOutInt64 = (i) => outInt64Array[i];
return {
em: Mod,
Z3: {
mk_context: function (c) {
let ctx = Mod._Z3_mk_context(c);
Mod._set_noop_error_handler(ctx);
return ctx;
},
mk_context_rc: function (c) {
let ctx = Mod._Z3_mk_context_rc(c);
Mod._set_noop_error_handler(ctx);
return ctx;
},
global_param_set: function (param_id, param_value) {
return Mod.ccall('Z3_global_param_set', 'void', ['string', 'string'], [param_id, param_value]);
},
global_param_reset_all: Mod._Z3_global_param_reset_all,
global_param_get: function (param_id) {
let ret = Mod.ccall('Z3_global_param_get', 'boolean', ['string', 'number'], [param_id, outAddress]);
if (!ret) {
return null;
}
return Mod.UTF8ToString(getOutUint(0));
},
mk_config: Mod._Z3_mk_config,
del_config: Mod._Z3_del_config,
set_param_value: function (c, param_id, param_value) {
return Mod.ccall('Z3_set_param_value', 'void', ['number', 'string', 'string'], [c, param_id, param_value]);
},
del_context: Mod._Z3_del_context,
inc_ref: Mod._Z3_inc_ref,
dec_ref: Mod._Z3_dec_ref,
update_param_value: function (c, param_id, param_value) {
return Mod.ccall('Z3_update_param_value', 'void', ['number', 'string', 'string'], [c, param_id, param_value]);
},
get_global_param_descrs: Mod._Z3_get_global_param_descrs,
interrupt: Mod._Z3_interrupt,
enable_concurrent_dec_ref: Mod._Z3_enable_concurrent_dec_ref,
mk_params: Mod._Z3_mk_params,
params_inc_ref: Mod._Z3_params_inc_ref,
params_dec_ref: Mod._Z3_params_dec_ref,
params_set_bool: Mod._Z3_params_set_bool,
params_set_uint: Mod._Z3_params_set_uint,
params_set_double: Mod._Z3_params_set_double,
params_set_symbol: Mod._Z3_params_set_symbol,
params_to_string: function (c, p) {
return Mod.ccall('Z3_params_to_string', 'string', ['number', 'number'], [c, p]);
},
params_validate: Mod._Z3_params_validate,
param_descrs_inc_ref: Mod._Z3_param_descrs_inc_ref,
param_descrs_dec_ref: Mod._Z3_param_descrs_dec_ref,
param_descrs_get_kind: Mod._Z3_param_descrs_get_kind,
param_descrs_size: function (c, p) {
let ret = Mod.ccall('Z3_param_descrs_size', 'number', ['number', 'number'], [c, p]);
ret = new Uint32Array([ret])[0];
return ret;
},
param_descrs_get_name: Mod._Z3_param_descrs_get_name,
param_descrs_get_documentation: function (c, p, s) {
return Mod.ccall('Z3_param_descrs_get_documentation', 'string', ['number', 'number', 'number'], [c, p, s]);
},
param_descrs_to_string: function (c, p) {
return Mod.ccall('Z3_param_descrs_to_string', 'string', ['number', 'number'], [c, p]);
},
mk_int_symbol: Mod._Z3_mk_int_symbol,
mk_string_symbol: function (c, s) {
return Mod.ccall('Z3_mk_string_symbol', 'number', ['number', 'string'], [c, s]);
},
mk_uninterpreted_sort: Mod._Z3_mk_uninterpreted_sort,
mk_type_variable: Mod._Z3_mk_type_variable,
mk_bool_sort: Mod._Z3_mk_bool_sort,
mk_int_sort: Mod._Z3_mk_int_sort,
mk_real_sort: Mod._Z3_mk_real_sort,
mk_bv_sort: Mod._Z3_mk_bv_sort,
mk_finite_domain_sort: Mod._Z3_mk_finite_domain_sort,
mk_array_sort: Mod._Z3_mk_array_sort,
mk_array_sort_n: function (c, domain, range) {
return Mod.ccall('Z3_mk_array_sort_n', 'number', ['number', 'number', 'array', 'number'], [
c,
domain.length,
intArrayToByteArr(domain),
range,
]);
},
mk_tuple_sort: function (c, mk_tuple_name, field_names, field_sorts) {
if (field_names.length !== field_sorts.length) {
throw new TypeError(`field_names and field_sorts must be the same length (got ${field_names.length} and {field_sorts.length})`);
}
let outArray_proj_decl = Mod._malloc(4 * field_names.length);
try {
let ret = Mod.ccall('Z3_mk_tuple_sort', 'number', [
'number',
'number',
'number',
'array',
'array',
'number',
'number',
], [
c,
mk_tuple_name,
field_names.length,
intArrayToByteArr(field_names),
intArrayToByteArr(field_sorts),
outAddress,
outArray_proj_decl,
]);
return {
rv: ret,
mk_tuple_decl: getOutUint(0),
proj_decl: readUintArray(outArray_proj_decl, field_names.length),
};
}
finally {
Mod._free(outArray_proj_decl);
}
},
mk_enumeration_sort: function (c, name, enum_names) {
let outArray_enum_consts = Mod._malloc(4 * enum_names.length);
try {
let outArray_enum_testers = Mod._malloc(4 * enum_names.length);
try {
let ret = Mod.ccall('Z3_mk_enumeration_sort', 'number', ['number', 'number', 'number', 'array', 'number', 'number'], [
c,
name,
enum_names.length,
intArrayToByteArr(enum_names),
outArray_enum_consts,
outArray_enum_testers,
]);
return {
rv: ret,
enum_consts: readUintArray(outArray_enum_consts, enum_names.length),
enum_testers: readUintArray(outArray_enum_testers, enum_names.length),
};
}
finally {
Mod._free(outArray_enum_testers);
}
}
finally {
Mod._free(outArray_enum_consts);
}
},
mk_list_sort: function (c, name, elem_sort) {
let ret = Mod.ccall('Z3_mk_list_sort', 'number', [
'number',
'number',
'number',
'number',
'number',
'number',
'number',
'number',
'number',
], [
c,
name,
elem_sort,
outAddress,
outAddress + 4,
outAddress + 8,
outAddress + 12,
outAddress + 16,
outAddress + 20,
]);
return {
rv: ret,
nil_decl: getOutUint(0),
is_nil_decl: getOutUint(1),
cons_decl: getOutUint(2),
is_cons_decl: getOutUint(3),
head_decl: getOutUint(4),
tail_decl: getOutUint(5),
};
},
mk_constructor: function (c, name, recognizer, field_names, sorts, sort_refs) {
if (field_names.length !== sorts.length) {
throw new TypeError(`field_names and sorts must be the same length (got ${field_names.length} and {sorts.length})`);
}
if (field_names.length !== sort_refs.length) {
throw new TypeError(`field_names and sort_refs must be the same length (got ${field_names.length} and {sort_refs.length})`);
}
return Mod.ccall('Z3_mk_constructor', 'number', ['number', 'number', 'number', 'number', 'array', 'array', 'array'], [
c,
name,
recognizer,
field_names.length,
intArrayToByteArr(field_names),
intArrayToByteArr(sorts),
intArrayToByteArr(sort_refs),
]);
},
constructor_num_fields: function (c, constr) {
let ret = Mod.ccall('Z3_constructor_num_fields', 'number', ['number', 'number'], [c, constr]);
ret = new Uint32Array([ret])[0];
return ret;
},
del_constructor: Mod._Z3_del_constructor,
mk_datatype: function (c, name, constructors) {
return Mod.ccall('Z3_mk_datatype', 'number', ['number', 'number', 'number', 'array'], [
c,
name,
constructors.length,
intArrayToByteArr(constructors),
]);
},
mk_datatype_sort: Mod._Z3_mk_datatype_sort,
mk_constructor_list: function (c, constructors) {
return Mod.ccall('Z3_mk_constructor_list', 'number', ['number', 'number', 'array'], [
c,
constructors.length,
intArrayToByteArr(constructors),
]);
},
del_constructor_list: Mod._Z3_del_constructor_list,
mk_datatypes: function (c, sort_names, constructor_lists) {
if (sort_names.length !== constructor_lists.length) {
throw new TypeError(`sort_names and constructor_lists must be the same length (got ${sort_names.length} and {constructor_lists.length})`);
}
let outArray_sorts = Mod._malloc(4 * sort_names.length);
try {
let ret = Mod.ccall('Z3_mk_datatypes', 'void', ['number', 'number', 'array', 'number', 'array'], [
c,
sort_names.length,
intArrayToByteArr(sort_names),
outArray_sorts,
intArrayToByteArr(constructor_lists),
]);
return readUintArray(outArray_sorts, sort_names.length);
}
finally {
Mod._free(outArray_sorts);
}
},
query_constructor: function (c, constr, num_fields) {
let outArray_accessors = Mod._malloc(4 * num_fields);
try {
let ret = Mod.ccall('Z3_query_constructor', 'void', ['number', 'number', 'number', 'number', 'number', 'number'], [
c,
constr,
num_fields,
outAddress,
outAddress + 4,
outArray_accessors,
]);
return {
constructor: getOutUint(0),
tester: getOutUint(1),
accessors: readUintArray(outArray_accessors, num_fields),
};
}
finally {
Mod._free(outArray_accessors);
}
},
mk_func_decl: function (c, s, domain, range) {
return Mod.ccall('Z3_mk_func_decl', 'number', ['number', 'number', 'number', 'array', 'number'], [
c,
s,
domain.length,
intArrayToByteArr(domain),
range,
]);
},
mk_app: function (c, d, args) {
return Mod.ccall('Z3_mk_app', 'number', ['number', 'number', 'number', 'array'], [c, d, args.length, intArrayToByteArr(args)]);
},
mk_const: Mod._Z3_mk_const,
mk_fresh_func_decl: function (c, prefix, domain, range) {
return Mod.ccall('Z3_mk_fresh_func_decl', 'number', ['number', 'string', 'number', 'array', 'number'], [
c,
prefix,
domain.length,
intArrayToByteArr(domain),
range,
]);
},
mk_fresh_const: function (c, prefix, ty) {
return Mod.ccall('Z3_mk_fresh_const', 'number', ['number', 'string', 'number'], [c, prefix, ty]);
},
mk_rec_func_decl: function (c, s, domain, range) {
return Mod.ccall('Z3_mk_rec_func_decl', 'number', ['number', 'number', 'number', 'array', 'number'], [
c,
s,
domain.length,
intArrayToByteArr(domain),
range,
]);
},
add_rec_def: function (c, f, args, body) {
return Mod.ccall('Z3_add_rec_def', 'void', ['number', 'number', 'number', 'array', 'number'], [
c,
f,
args.length,
intArrayToByteArr(args),
body,
]);
},
mk_true: Mod._Z3_mk_true,
mk_false: Mod._Z3_mk_false,
mk_eq: Mod._Z3_mk_eq,
mk_distinct: function (c, args) {
return Mod.ccall('Z3_mk_distinct', 'number', ['number', 'number', 'array'], [c, args.length, intArrayToByteArr(args)]);
},
mk_not: Mod._Z3_mk_not,
mk_ite: Mod._Z3_mk_ite,
mk_iff: Mod._Z3_mk_iff,
mk_implies: Mod._Z3_mk_implies,
mk_xor: Mod._Z3_mk_xor,
mk_and: function (c, args) {
return Mod.ccall('Z3_mk_and', 'number', ['number', 'number', 'array'], [c, args.length, intArrayToByteArr(args)]);
},
mk_or: function (c, args) {
return Mod.ccall('Z3_mk_or', 'number', ['number', 'number', 'array'], [c, args.length, intArrayToByteArr(args)]);
},
mk_add: function (c, args) {
return Mod.ccall('Z3_mk_add', 'number', ['number', 'number', 'array'], [c, args.length, intArrayToByteArr(args)]);
},
mk_mul: function (c, args) {
return Mod.ccall('Z3_mk_mul', 'number', ['number', 'number', 'array'], [c, args.length, intArrayToByteArr(args)]);
},
mk_sub: function (c, args) {
return Mod.ccall('Z3_mk_sub', 'number', ['number', 'number', 'array'], [c, args.length, intArrayToByteArr(args)]);
},
mk_unary_minus: Mod._Z3_mk_unary_minus,
mk_div: Mod._Z3_mk_div,
mk_mod: Mod._Z3_mk_mod,
mk_rem: Mod._Z3_mk_rem,
mk_power: Mod._Z3_mk_power,
mk_abs: Mod._Z3_mk_abs,
mk_lt: Mod._Z3_mk_lt,
mk_le: Mod._Z3_mk_le,
mk_gt: Mod._Z3_mk_gt,
mk_ge: Mod._Z3_mk_ge,
mk_divides: Mod._Z3_mk_divides,
mk_int2real: Mod._Z3_mk_int2real,
mk_real2int: Mod._Z3_mk_real2int,
mk_is_int: Mod._Z3_mk_is_int,
mk_bvnot: Mod._Z3_mk_bvnot,
mk_bvredand: Mod._Z3_mk_bvredand,
mk_bvredor: Mod._Z3_mk_bvredor,
mk_bvand: Mod._Z3_mk_bvand,
mk_bvor: Mod._Z3_mk_bvor,
mk_bvxor: Mod._Z3_mk_bvxor,
mk_bvnand: Mod._Z3_mk_bvnand,
mk_bvnor: Mod._Z3_mk_bvnor,
mk_bvxnor: Mod._Z3_mk_bvxnor,
mk_bvneg: Mod._Z3_mk_bvneg,
mk_bvadd: Mod._Z3_mk_bvadd,
mk_bvsub: Mod._Z3_mk_bvsub,
mk_bvmul: Mod._Z3_mk_bvmul,
mk_bvudiv: Mod._Z3_mk_bvudiv,
mk_bvsdiv: Mod._Z3_mk_bvsdiv,
mk_bvurem: Mod._Z3_mk_bvurem,
mk_bvsrem: Mod._Z3_mk_bvsrem,
mk_bvsmod: Mod._Z3_mk_bvsmod,
mk_bvult: Mod._Z3_mk_bvult,
mk_bvslt: Mod._Z3_mk_bvslt,
mk_bvule: Mod._Z3_mk_bvule,
mk_bvsle: Mod._Z3_mk_bvsle,
mk_bvuge: Mod._Z3_mk_bvuge,
mk_bvsge: Mod._Z3_mk_bvsge,
mk_bvugt: Mod._Z3_mk_bvugt,
mk_bvsgt: Mod._Z3_mk_bvsgt,
mk_concat: Mod._Z3_mk_concat,
mk_extract: Mod._Z3_mk_extract,
mk_sign_ext: Mod._Z3_mk_sign_ext,
mk_zero_ext: Mod._Z3_mk_zero_ext,
mk_repeat: Mod._Z3_mk_repeat,
mk_bit2bool: Mod._Z3_mk_bit2bool,
mk_bvshl: Mod._Z3_mk_bvshl,
mk_bvlshr: Mod._Z3_mk_bvlshr,
mk_bvashr: Mod._Z3_mk_bvashr,
mk_rotate_left: Mod._Z3_mk_rotate_left,
mk_rotate_right: Mod._Z3_mk_rotate_right,
mk_ext_rotate_left: Mod._Z3_mk_ext_rotate_left,
mk_ext_rotate_right: Mod._Z3_mk_ext_rotate_right,
mk_int2bv: Mod._Z3_mk_int2bv,
mk_bv2int: Mod._Z3_mk_bv2int,
mk_bvadd_no_overflow: Mod._Z3_mk_bvadd_no_overflow,
mk_bvadd_no_underflow: Mod._Z3_mk_bvadd_no_underflow,
mk_bvsub_no_overflow: Mod._Z3_mk_bvsub_no_overflow,
mk_bvsub_no_underflow: Mod._Z3_mk_bvsub_no_underflow,
mk_bvsdiv_no_overflow: Mod._Z3_mk_bvsdiv_no_overflow,
mk_bvneg_no_overflow: Mod._Z3_mk_bvneg_no_overflow,
mk_bvmul_no_overflow: Mod._Z3_mk_bvmul_no_overflow,
mk_bvmul_no_underflow: Mod._Z3_mk_bvmul_no_underflow,
mk_select: Mod._Z3_mk_select,
mk_select_n: function (c, a, idxs) {
return Mod.ccall('Z3_mk_select_n', 'number', ['number', 'number', 'number', 'array'], [c, a, idxs.length, intArrayToByteArr(idxs)]);
},
mk_store: Mod._Z3_mk_store,
mk_store_n: function (c, a, idxs, v) {
return Mod.ccall('Z3_mk_store_n', 'number', ['number', 'number', 'number', 'array', 'number'], [
c,
a,
idxs.length,
intArrayToByteArr(idxs),
v,
]);
},
mk_const_array: Mod._Z3_mk_const_array,
mk_map: function (c, f, args) {
return Mod.ccall('Z3_mk_map', 'number', ['number', 'number', 'number', 'array'], [c, f, args.length, intArrayToByteArr(args)]);
},
mk_array_default: Mod._Z3_mk_array_default,
mk_as_array: Mod._Z3_mk_as_array,
mk_set_has_size: Mod._Z3_mk_set_has_size,
mk_set_sort: Mod._Z3_mk_set_sort,
mk_empty_set: Mod._Z3_mk_empty_set,
mk_full_set: Mod._Z3_mk_full_set,
mk_set_add: Mod._Z3_mk_set_add,
mk_set_del: Mod._Z3_mk_set_del,
mk_set_union: function (c, args) {
return Mod.ccall('Z3_mk_set_union', 'number', ['number', 'number', 'array'], [c, args.length, intArrayToByteArr(args)]);
},
mk_set_intersect: function (c, args) {
return Mod.ccall('Z3_mk_set_intersect', 'number', ['number', 'number', 'array'], [c, args.length, intArrayToByteArr(args)]);
},
mk_set_difference: Mod._Z3_mk_set_difference,
mk_set_complement: Mod._Z3_mk_set_complement,
mk_set_member: Mod._Z3_mk_set_member,
mk_set_subset: Mod._Z3_mk_set_subset,
mk_array_ext: Mod._Z3_mk_array_ext,
mk_numeral: function (c, numeral, ty) {
return Mod.ccall('Z3_mk_numeral', 'number', ['number', 'string', 'number'], [c, numeral, ty]);
},
mk_real: Mod._Z3_mk_real,
mk_real_int64: Mod._Z3_mk_real_int64,
mk_int: Mod._Z3_mk_int,
mk_unsigned_int: Mod._Z3_mk_unsigned_int,
mk_int64: Mod._Z3_mk_int64,
mk_unsigned_int64: Mod._Z3_mk_unsigned_int64,
mk_bv_numeral: function (c, bits) {
return Mod.ccall('Z3_mk_bv_numeral', 'number', ['number', 'number', 'array'], [c, bits.length, boolArrayToByteArr(bits)]);
},
mk_seq_sort: Mod._Z3_mk_seq_sort,
is_seq_sort: function (c, s) {
return Mod.ccall('Z3_is_seq_sort', 'boolean', ['number', 'number'], [c, s]);
},
get_seq_sort_basis: Mod._Z3_get_seq_sort_basis,
mk_re_sort: Mod._Z3_mk_re_sort,
is_re_sort: function (c, s) {
return Mod.ccall('Z3_is_re_sort', 'boolean', ['number', 'number'], [c, s]);
},
get_re_sort_basis: Mod._Z3_get_re_sort_basis,
mk_string_sort: Mod._Z3_mk_string_sort,
mk_char_sort: Mod._Z3_mk_char_sort,
is_string_sort: function (c, s) {
return Mod.ccall('Z3_is_string_sort', 'boolean', ['number', 'number'], [c, s]);
},
is_char_sort: function (c, s) {
return Mod.ccall('Z3_is_char_sort', 'boolean', ['number', 'number'], [c, s]);
},
mk_string: function (c, s) {
return Mod.ccall('Z3_mk_string', 'number', ['number', 'string'], [c, s]);
},
mk_lstring: function (c, len, s) {
return Mod.ccall('Z3_mk_lstring', 'number', ['number', 'number', 'string'], [c, len, s]);
},
mk_u32string: function (c, chars) {
return Mod.ccall('Z3_mk_u32string', 'number', ['number', 'number', 'array'], [c, chars.length, intArrayToByteArr(chars)]);
},
is_string: function (c, s) {
return Mod.ccall('Z3_is_string', 'boolean', ['number', 'number'], [c, s]);
},
get_string: function (c, s) {
return Mod.ccall('Z3_get_string', 'string', ['number', 'number'], [c, s]);
},
get_string_length: function (c, s) {
let ret = Mod.ccall('Z3_get_string_length', 'number', ['number', 'number'], [c, s]);
ret = new Uint32Array([ret])[0];
return ret;
},
get_string_contents: function (c, s, length) {
let outArray_contents = Mod._malloc(4 * length);
try {
let ret = Mod.ccall('Z3_get_string_contents', 'void', ['number', 'number', 'number', 'number'], [c, s, length, outArray_contents]);
return readUintArray(outArray_contents, length);
}
finally {
Mod._free(outArray_contents);
}
},
mk_seq_empty: Mod._Z3_mk_seq_empty,
mk_seq_unit: Mod._Z3_mk_seq_unit,
mk_seq_concat: function (c, args) {
return Mod.ccall('Z3_mk_seq_concat', 'number', ['number', 'number', 'array'], [c, args.length, intArrayToByteArr(args)]);
},
mk_seq_prefix: Mod._Z3_mk_seq_prefix,
mk_seq_suffix: Mod._Z3_mk_seq_suffix,
mk_seq_contains: Mod._Z3_mk_seq_contains,
mk_str_lt: Mod._Z3_mk_str_lt,
mk_str_le: Mod._Z3_mk_str_le,
mk_seq_extract: Mod._Z3_mk_seq_extract,
mk_seq_replace: Mod._Z3_mk_seq_replace,
mk_seq_at: Mod._Z3_mk_seq_at,
mk_seq_nth: Mod._Z3_mk_seq_nth,
mk_seq_length: Mod._Z3_mk_seq_length,
mk_seq_index: Mod._Z3_mk_seq_index,
mk_seq_last_index: Mod._Z3_mk_seq_last_index,
mk_seq_map: Mod._Z3_mk_seq_map,
mk_seq_mapi: Mod._Z3_mk_seq_mapi,
mk_seq_foldl: Mod._Z3_mk_seq_foldl,
mk_seq_foldli: Mod._Z3_mk_seq_foldli,
mk_str_to_int: Mod._Z3_mk_str_to_int,
mk_int_to_str: Mod._Z3_mk_int_to_str,
mk_string_to_code: Mod._Z3_mk_string_to_code,
mk_string_from_code: Mod._Z3_mk_string_from_code,
mk_ubv_to_str: Mod._Z3_mk_ubv_to_str,
mk_sbv_to_str: Mod._Z3_mk_sbv_to_str,
mk_seq_to_re: Mod._Z3_mk_seq_to_re,
mk_seq_in_re: Mod._Z3_mk_seq_in_re,
mk_re_plus: Mod._Z3_mk_re_plus,
mk_re_star: Mod._Z3_mk_re_star,
mk_re_option: Mod._Z3_mk_re_option,
mk_re_union: function (c, args) {
return Mod.ccall('Z3_mk_re_union', 'number', ['number', 'number', 'array'], [c, args.length, intArrayToByteArr(args)]);
},
mk_re_concat: function (c, args) {
return Mod.ccall('Z3_mk_re_concat', 'number', ['number', 'number', 'array'], [c, args.length, intArrayToByteArr(args)]);
},
mk_re_range: Mod._Z3_mk_re_range,
mk_re_allchar: Mod._Z3_mk_re_allchar,
mk_re_loop: Mod._Z3_mk_re_loop,
mk_re_power: Mod._Z3_mk_re_power,
mk_re_intersect: function (c, args) {
return Mod.ccall('Z3_mk_re_intersect', 'number', ['number', 'number', 'array'], [c, args.length, intArrayToByteArr(args)]);
},
mk_re_complement: Mod._Z3_mk_re_complement,
mk_re_diff: Mod._Z3_mk_re_diff,
mk_re_empty: Mod._Z3_mk_re_empty,
mk_re_full: Mod._Z3_mk_re_full,
mk_char: Mod._Z3_mk_char,
mk_char_le: Mod._Z3_mk_char_le,
mk_char_to_int: Mod._Z3_mk_char_to_int,
mk_char_to_bv: Mod._Z3_mk_char_to_bv,
mk_char_from_bv: Mod._Z3_mk_char_from_bv,
mk_char_is_digit: Mod._Z3_mk_char_is_digit,
mk_linear_order: Mod._Z3_mk_linear_order,
mk_partial_order: Mod._Z3_mk_partial_order,
mk_piecewise_linear_order: Mod._Z3_mk_piecewise_linear_order,
mk_tree_order: Mod._Z3_mk_tree_order,
mk_transitive_closure: Mod._Z3_mk_transitive_closure,
mk_pattern: function (c, terms) {
return Mod.ccall('Z3_mk_pattern', 'number', ['number', 'number', 'array'], [c, terms.length, intArrayToByteArr(terms)]);
},
mk_bound: Mod._Z3_mk_bound,
mk_forall: function (c, weight, patterns, sorts, decl_names, body) {
if (sorts.length !== decl_names.length) {
throw new TypeError(`sorts and decl_names must be the same length (got ${sorts.length} and {decl_names.length})`);
}
return Mod.ccall('Z3_mk_forall', 'number', [
'number',
'number',
'number',
'array',
'number',
'array',
'array',
'number',
], [
c,
weight,
patterns.length,
intArrayToByteArr(patterns),
sorts.length,
intArrayToByteArr(sorts),
intArrayToByteArr(decl_names),
body,
]);
},
mk_exists: function (c, weight, patterns, sorts, decl_names, body) {
if (sorts.length !== decl_names.length) {
throw new TypeError(`sorts and decl_names must be the same length (got ${sorts.length} and {decl_names.length})`);
}
return Mod.ccall('Z3_mk_exists', 'number', [
'number',
'number',
'number',
'array',
'number',
'array',
'array',
'number',
], [
c,
weight,
patterns.length,
intArrayToByteArr(patterns),
sorts.length,
intArrayToByteArr(sorts),
intArrayToByteArr(decl_names),
body,
]);
},
mk_quantifier: function (c, is_forall, weight, patterns, sorts, decl_names, body) {
if (sorts.length !== decl_names.length) {
throw new TypeError(`sorts and decl_names must be the same length (got ${sorts.length} and {decl_names.length})`);
}
return Mod.ccall('Z3_mk_quantifier', 'number', [
'number',
'boolean',
'number',
'number',
'array',
'number',
'array',
'array',
'number',
], [
c,
is_forall,
weight,
patterns.length,
intArrayToByteArr(patterns),
sorts.length,
intArrayToByteArr(sorts),
intArrayToByteArr(decl_names),
body,
]);
},
mk_quantifier_ex: function (c, is_forall, weight, quantifier_id, skolem_id, patterns, no_patterns, sorts, decl_names, body) {
if (sorts.length !== decl_names.length) {
throw new TypeError(`sorts and decl_names must be the same length (got ${sorts.length} and {decl_names.length})`);
}
return Mod.ccall('Z3_mk_quantifier_ex', 'number', [
'number',
'boolean',
'number',
'number',
'number',
'number',
'array',
'number',
'array',
'number',
'array',
'array',
'number',
], [
c,
is_forall,
weight,
quantifier_id,
skolem_id,
patterns.length,
intArrayToByteArr(patterns),
no_patterns.length,
intArrayToByteArr(no_patterns),
sorts.length,
intArrayToByteArr(sorts),
intArrayToByteArr(decl_names),
body,
]);
},
mk_forall_const: function (c, weight, bound, patterns, body) {
return Mod.ccall('Z3_mk_forall_const', 'number', ['number', 'number', 'number', 'array', 'number', 'array', 'number'], [
c,
weight,
bound.length,
intArrayToByteArr(bound),
patterns.length,
intArrayToByteArr(patterns),
body,
]);
},
mk_exists_const: function (c, weight, bound, patterns, body) {
return Mod.ccall('Z3_mk_exists_const', 'number', ['number', 'number', 'number', 'array', 'number', 'array', 'number'], [
c,
weight,
bound.length,
intArrayToByteArr(bound),
patterns.length,
intArrayToByteArr(patterns),
body,
]);
},
mk_quantifier_const: function (c, is_forall, weight, bound, patterns, body) {
return Mod.ccall('Z3_mk_quantifier_const', 'number', [
'number',
'boolean',
'number',
'number',
'array',
'number',
'array',
'number',
], [
c,
is_forall,
weight,
bound.length,
intArrayToByteArr(bound),
patterns.length,
intArrayToByteArr(patterns),
body,
]);
},
mk_quantifier_const_ex: function (c, is_forall, weight, quantifier_id, skolem_id, bound, patterns, no_patterns, body) {
return Mod.ccall('Z3_mk_quantifier_const_ex', 'number', [
'number',
'boolean',
'number',
'number',
'number',
'number',
'array',
'number',
'array',
'number',
'array',
'number',
], [
c,
is_forall,
weight,
quantifier_id,
skolem_id,
bound.length,
intArrayToByteArr(bound),
patterns.length,
intArrayToByteArr(patterns),
no_patterns.length,
intArrayToByteArr(no_patterns),
body,
]);
},
mk_lambda: function (c, sorts, decl_names, body) {
if (sorts.length !== decl_names.length) {
throw new TypeError(`sorts and decl_names must be the same length (got ${sorts.length} and {decl_names.length})`);
}
return Mod.ccall('Z3_mk_lambda', 'number', ['number', 'number', 'array', 'array', 'number'], [
c,
sorts.length,
intArrayToByteArr(sorts),
intArrayToByteArr(decl_names),
body,
]);
},
mk_lambda_const: function (c, bound, body) {
return Mod.ccall('Z3_mk_lambda_const', 'number', ['number', 'number', 'array', 'number'], [
c,
bound.length,
intArrayToByteArr(bound),
body,
]);
},
get_symbol_kind: Mod._Z3_get_symbol_kind,
get_symbol_int: Mod._Z3_get_symbol_int,
get_symbol_string: function (c, s) {
return Mod.ccall('Z3_get_symbol_string', 'string', ['number', 'number'], [c, s]);
},
get_sort_name: Mod._Z3_get_sort_name,
get_sort_id: function (c, s) {
let ret = Mod.ccall('Z3_get_sort_id', 'number', ['number', 'number'], [c, s]);
ret = new Uint32Array([ret])[0];
return ret;
},
sort_to_ast: Mod._Z3_sort_to_ast,
is_eq_sort: function (c, s1, s2) {
return Mod.ccall('Z3_is_eq_sort', 'boolean', ['number', 'number', 'number'], [c, s1, s2]);
},
get_sort_kind: Mod._Z3_get_sort_kind,
get_bv_sort_size: function (c, t) {
let ret = Mod.ccall('Z3_get_bv_sort_size', 'number', ['number', 'number'], [c, t]);
ret = new Uint32Array([ret])[0];
return ret;
},
get_finite_domain_sort_size: function (c, s) {
let ret = Mod.ccall('Z3_get_finite_domain_sort_size', 'boolean', ['number', 'number', 'number'], [c, s, outAddress]);
if (!ret) {
return null;
}
return getOutUint64(0);
},
get_array_arity: function (c, s) {
let ret = Mod.ccall('Z3_get_array_arity', 'number', ['number', 'number'], [c, s]);
ret = new Uint32Array([ret])[0];
return ret;
},
get_array_sort_domain: Mod._Z3_get_array_sort_domain,
get_array_sort_domain_n: Mod._Z3_get_array_sort_domain_n,
get_array_sort_range: Mod._Z3_get_array_sort_range,
get_tuple_sort_mk_decl: Mod._Z3_get_tuple_sort_mk_decl,
get_tuple_sort_num_fields: function (c, t) {
let ret = Mod.ccall('Z3_get_tuple_sort_num_fields', 'number', ['number', 'number'], [c, t]);
ret = new Uint32Array([ret])[0];
return ret;
},
get_tuple_sort_field_decl: Mod._Z3_get_tuple_sort_field_decl,
get_datatype_sort_num_constructors: function (c, t) {
let ret = Mod.ccall('Z3_get_datatype_sort_num_constructors', 'number', ['number', 'number'], [c, t]);
ret = new Uint32Array([ret])[0];
return ret;
},
get_datatype_sort_constructor: Mod._Z3_get_datatype_sort_constructor,
get_datatype_sort_recognizer: Mod._Z3_get_datatype_sort_recognizer,
get_datatype_sort_constructor_accessor: Mod._Z3_get_datatype_sort_constructor_accessor,
datatype_update_field: Mod._Z3_datatype_update_field,
get_relation_arity: function (c, s) {
let ret = Mod.ccall('Z3_get_relation_arity', 'number', ['number', 'number'], [c, s]);
ret = new Uint32Array([ret])[0];
return ret;
},
get_relation_column: Mod._Z3_get_relation_column,
mk_atmost: function (c, args, k) {
return Mod.ccall('Z3_mk_atmost', 'number', ['number', 'number', 'array', 'number'], [c, args.length, intArrayToByteArr(args), k]);
},
mk_atleast: function (c, args, k) {
return Mod.ccall('Z3_mk_atleast', 'number', ['number', 'number', 'array', 'number'], [c, args.length, intArrayToByteArr(args), k]);
},
mk_pble: function (c, args, coeffs, k) {
if (args.length !== coeffs.length) {
throw new TypeError(`args and coeffs must be the same length (got ${args.length} and {coeffs.length})`);
}
return Mod.ccall('Z3_mk_pble', 'number', ['number', 'number', 'array', 'array', 'number'], [
c,
args.length,
intArrayToByteArr(args),
intArrayToByteArr(coeffs),
k,
]);
},
mk_pbge: function (c, args, coeffs, k) {
if (args.length !== coeffs.length) {
throw new TypeError(`args and coeffs must be the same length (got ${args.length} and {coeffs.length})`);
}
return Mod.ccall('Z3_mk_pbge', 'number', ['number', 'number', 'array', 'array', 'number'], [
c,
args.length,
intArrayToByteArr(args),
intArrayToByteArr(coeffs),
k,
]);
},
mk_pbeq: function (c, args, coeffs, k) {
if (args.length !== coeffs.length) {
throw new TypeError(`args and coeffs must be the same length (got ${args.length} and {coeffs.length})`);
}
return Mod.ccall('Z3_mk_pbeq', 'number', ['number', 'number', 'array', 'array', 'number'], [
c,
args.length,
intArrayToByteArr(args),
intArrayToByteArr(coeffs),
k,
]);
},
func_decl_to_ast: Mod._Z3_func_decl_to_ast,
is_eq_func_decl: function (c, f1, f2) {
return Mod.ccall('Z3_is_eq_func_decl', 'boolean', ['number', 'number', 'number'], [c, f1, f2]);
},
get_func_decl_id: function (c, f) {
let ret = Mod.ccall('Z3_get_func_decl_id', 'number', ['number', 'number'], [c, f]);
ret = new Uint32Array([ret])[0];
return ret;
},
get_decl_name: Mod._Z3_get_decl_name,
get_decl_kind: Mod._Z3_get_decl_kind,
get_domain_size: function (c, d) {
let ret = Mod.ccall('Z3_get_domain_size', 'number', ['number', 'number'], [c, d]);
ret = new Uint32Array([ret])[0];
return ret;
},
get_arity: function (c, d) {
let ret = Mod.ccall('Z3_get_arity', 'number', ['number', 'number'], [c, d]);
ret = new Uint32Array([ret])[0];
return ret;
},
get_domain: Mod._Z3_get_domain,
get_range: Mod._Z3_get_range,
get_decl_num_parameters: function (c, d) {
let ret = Mod.ccall('Z3_get_decl_num_parameters', 'number', ['number', 'number'], [c, d]);
ret = new Uint32Array([ret])[0];
return ret;
},
get_decl_parameter_kind: Mod._Z3_get_decl_parameter_kind,
get_decl_int_parameter: Mod._Z3_get_decl_int_parameter,
get_decl_double_parameter: Mod._Z3_get_decl_double_parameter,
get_decl_symbol_parameter: Mod._Z3_get_decl_symbol_parameter,
get_decl_sort_parameter: Mod._Z3_get_decl_sort_parameter,
get_decl_ast_parameter: Mod._Z3_get_decl_ast_parameter,
get_decl_func_decl_parameter: Mod._Z3_get_decl_func_decl_parameter,
get_decl_rational_parameter: function (c, d, idx) {
return Mod.ccall('Z3_get_decl_rational_parameter', 'string', ['number', 'number', 'number'], [c, d, idx]);
},
app_to_ast: Mod._Z3_app_to_ast,
get_app_decl: Mod._Z3_get_app_decl,
get_app_num_args: function (c, a) {
let ret = Mod.ccall('Z3_get_app_num_args', 'number', ['number', 'number'], [c, a]);
ret = new Uint32Array([ret])[0];
return ret;
},
get_app_arg: Mod._Z3_get_app_arg,
is_eq_ast: function (c, t1, t2) {
return Mod.ccall('Z3_is_eq_ast', 'boolean', ['number', 'number', 'number'], [c, t1, t2]);
},
get_ast_id: function (c, t) {
let ret = Mod.ccall('Z3_get_ast_id', 'number', ['number', 'number'], [c, t]);
ret = new Uint32Array([ret])[0];
return ret;
},
get_ast_hash: function (c, a) {
let ret = Mod.ccall('Z3_get_ast_hash', 'number', ['number', 'number'], [c, a]);
ret = new Uint32Array([ret])[0];
return ret;
},
get_sort: Mod._Z3_get_sort,
is_well_sorted: function (c, t) {
return Mod.ccall('Z3_is_well_sorted', 'boolean', ['number', 'number'], [c, t]);
},
get_bool_value: Mod._Z3_get_bool_value,
get_ast_kind: Mod._Z3_get_ast_kind,
is_app: function (c, a) {
return Mod.ccall('Z3_is_app', 'boolean', ['number', 'number'], [c, a]);
},
is_ground: function (c, a) {
return Mod.ccall('Z3_is_ground', 'boolean', ['number', 'number'], [c, a]);
},
get_depth: function (c, a) {
let ret = Mod.ccall('Z3_get_depth', 'number', ['number', 'number'], [c, a]);
ret = new Uint32Array([ret])[0];
return ret;
},
is_numeral_ast: function (c, a) {
return Mod.ccall('Z3_is_numeral_ast', 'boolean', ['number', 'number'], [c, a]);
},
is_algebraic_number: function (c, a) {
return Mod.ccall('Z3_is_algebraic_number', 'boolean', ['number', 'number'], [c, a]);
},
to_app: Mod._Z3_to_app,
to_func_decl: Mod._Z3_to_func_decl,
get_numeral_string: function (c, a) {
return Mod.ccall('Z3_get_numeral_string', 'string', ['number', 'number'], [c, a]);
},
get_numeral_binary_string: function (c, a) {
return Mod.ccall('Z3_get_numeral_binary_string', 'string', ['number', 'number'], [c, a]);
},
get_numeral_decimal_string: function (c, a, precision) {
return Mod.ccall('Z3_get_numeral_decimal_string', 'string', ['number', 'number', 'number'], [c, a, precision]);
},
get_numeral_double: Mod._Z3_get_numeral_double,
get_numerator: Mod._Z3_get_numerator,
get_denominator: Mod._Z3_get_denominator,
get_numeral_small: function (c, a) {
let ret = Mod.ccall('Z3_get_numeral_small', 'boolean', ['number', 'number', 'number', 'number'], [c, a, outAddress, outAddress + 8]);
if (!ret) {
return null;
}
return { num: getOutInt64(0), den: getOutInt64(1) };
},
get_numeral_int: function (c, v) {
let ret = Mod.ccall('Z3_get_numeral_int', 'boolean', ['number', 'number', 'number'], [c, v, outAddress]);
if (!ret) {
return null;
}
return getOutInt(0);
},
get_numeral_uint: function (c, v) {
let ret = Mod.ccall('Z3_get_numeral_uint', 'boolean', ['number', 'number', 'number'], [c, v, outAddress]);
if (!ret) {
return null;
}
return getOutUint(0);
},
get_numeral_uint64: function (c, v) {
let ret = Mod.ccall('Z3_get_numeral_uint64', 'boolean', ['number', 'number', 'number'], [c, v, outAddress]);
if (!ret) {
return null;
}
return getOutUint64(0);
},
get_numeral_int64: function (c, v) {
let ret = Mod.ccall('Z3_get_numeral_int64', 'boolean', ['number', 'number', 'number'], [c, v, outAddress]);
if (!ret) {
return null;
}
return getOutInt64(0);
},
get_numeral_rational_int64: function (c, v) {
let ret = Mod.ccall('Z3_get_numeral_rational_int64', 'boolean', ['number', 'number', 'number', 'number'], [c, v, outAddress, outAddress + 8]);
if (!ret) {
return null;
}
return { num: getOutInt64(0), den: getOutInt64(1) };
},
get_algebraic_number_lower: Mod._Z3_get_algebraic_number_lower,
get_algebraic_number_upper: Mod._Z3_get_algebraic_number_upper,
pattern_to_ast: Mod._Z3_pattern_to_ast,
get_pattern_num_terms: function (c, p) {
let ret = Mod.ccall('Z3_get_pattern_num_terms', 'number', ['number', 'number'], [c, p]);
ret = new Uint32Array([ret])[0];
return ret;
},
get_pattern: Mod._Z3_get_pattern,
get_index_value: function (c, a) {
let ret = Mod.ccall('Z3_get_index_value', 'number', ['number', 'number'], [c, a]);
ret = new Uint32Array([ret])[0];
return ret;
},
is_quantifier_forall: function (c, a) {
return Mod.ccall('Z3_is_quantifier_forall', 'boolean', ['number', 'number'], [c, a]);
},
is_quantifier_exists: function (c, a) {
return Mod.ccall('Z3_is_quantifier_exists', 'boolean', ['number', 'number'], [c, a]);
},
is_lambda: function (c, a) {
return Mod.ccall('Z3_is_lambda', 'boolean', ['number', 'number'], [c, a]);
},
get_quantifier_weight: function (c, a) {
let ret = Mod.ccall('Z3_get_quantifier_weight', 'number', ['number', 'number'], [c, a]);
ret = new Uint32Array([ret])[0];
return ret;
},
get_quantifier_skolem_id: Mod._Z3_get_quantifier_skolem_id,
get_quantifier_id: Mod._Z3_get_quantifier_id,
get_quantifier_num_patterns: function (c, a) {
let ret = Mod.ccall('Z3_get_quantifier_num_patterns', 'number', ['number', 'number'], [c, a]);
ret = new Uint32Array([ret])[0];
return ret;
},
get_quantifier_pattern_ast: Mod._Z3_get_quantifier_pattern_ast,
get_quantifier_n