3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-12 20:18:18 +00:00

Merge branch 'unstable' of https://git01.codeplex.com/z3 into ml-ng

Conflicts:
	scripts/mk_util.py
This commit is contained in:
Christoph M. Wintersteiger 2015-01-24 18:29:03 +00:00
commit 1c9051016a
6 changed files with 256 additions and 197 deletions

View file

@ -2665,10 +2665,10 @@ void fpa_example() {
c2 = Z3_mk_fpa_to_fp_bv(ctx, c2 = Z3_mk_fpa_to_fp_bv(ctx,
Z3_mk_numeral(ctx, "4619567317775286272", Z3_mk_bv_sort(ctx, 64)), Z3_mk_numeral(ctx, "4619567317775286272", Z3_mk_bv_sort(ctx, 64)),
Z3_mk_fpa_sort(ctx, 11, 53)); Z3_mk_fpa_sort(ctx, 11, 53));
c3 = Z3_mk_fpa_to_fp_real_int(ctx, c3 = Z3_mk_fpa_to_fp_int_real(ctx,
Z3_mk_fpa_rtz(ctx), Z3_mk_fpa_rtz(ctx),
Z3_mk_numeral(ctx, "1.75", Z3_mk_real_sort(ctx)),
Z3_mk_numeral(ctx, "2", Z3_mk_int_sort(ctx)), Z3_mk_numeral(ctx, "2", Z3_mk_int_sort(ctx)),
Z3_mk_numeral(ctx, "1.75", Z3_mk_real_sort(ctx)),
Z3_mk_fpa_sort(ctx, 11, 53)); Z3_mk_fpa_sort(ctx, 11, 53));
c4 = Z3_mk_fpa_to_fp_real(ctx, c4 = Z3_mk_fpa_to_fp_real(ctx,
Z3_mk_fpa_rtz(ctx), Z3_mk_fpa_rtz(ctx),

View file

@ -64,6 +64,7 @@ VERBOSE=True
DEBUG_MODE=False DEBUG_MODE=False
SHOW_CPPS = True SHOW_CPPS = True
VS_X64 = False VS_X64 = False
LINUX_X64 = True
ONLY_MAKEFILES = False ONLY_MAKEFILES = False
Z3PY_SRC_DIR=None Z3PY_SRC_DIR=None
VS_PROJ = False VS_PROJ = False
@ -389,7 +390,8 @@ def find_ml_lib():
return return
def is64(): def is64():
return sys.maxsize >= 2**32 global LINUX_X64
return LINUX_X64 and sys.maxsize >= 2**32
def check_ar(): def check_ar():
if is_verbose(): if is_verbose():
@ -505,6 +507,8 @@ def display_help(exit_code):
print(" -t, --trace enable tracing in release mode.") print(" -t, --trace enable tracing in release mode.")
if IS_WINDOWS: if IS_WINDOWS:
print(" -x, --x64 create 64 binary when using Visual Studio.") print(" -x, --x64 create 64 binary when using Visual Studio.")
else:
print(" --x86 force 32-bit x86 build on x64 systems.")
print(" -m, --makefiles generate only makefiles.") print(" -m, --makefiles generate only makefiles.")
if IS_WINDOWS: if IS_WINDOWS:
print(" -v, --vsproj generate Visual Studio Project Files.") print(" -v, --vsproj generate Visual Studio Project Files.")
@ -536,12 +540,13 @@ def display_help(exit_code):
def parse_options(): def parse_options():
global VERBOSE, DEBUG_MODE, IS_WINDOWS, VS_X64, ONLY_MAKEFILES, SHOW_CPPS, VS_PROJ, TRACE, VS_PAR, VS_PAR_NUM global VERBOSE, DEBUG_MODE, IS_WINDOWS, VS_X64, ONLY_MAKEFILES, SHOW_CPPS, VS_PROJ, TRACE, VS_PAR, VS_PAR_NUM
global DOTNET_ENABLED, JAVA_ENABLED, ML_ENABLED, STATIC_LIB, PREFIX, GMP, FOCI2, FOCI2LIB, PYTHON_PACKAGE_DIR, GPROF, GIT_HASH global DOTNET_ENABLED, JAVA_ENABLED, ML_ENABLED, STATIC_LIB, PREFIX, GMP, FOCI2, FOCI2LIB, PYTHON_PACKAGE_DIR, GPROF, GIT_HASH
global LINUX_X64
try: try:
options, remainder = getopt.gnu_getopt(sys.argv[1:], options, remainder = getopt.gnu_getopt(sys.argv[1:],
'b:df:sxhmcvtnp:gj', 'b:df:sxhmcvtnp:gj',
['build=', 'debug', 'silent', 'x64', 'help', 'makefiles', 'showcpp', 'vsproj', ['build=', 'debug', 'silent', 'x64', 'help', 'makefiles', 'showcpp', 'vsproj',
'trace', 'nodotnet', 'staticlib', 'prefix=', 'gmp', 'foci2=', 'java', 'parallel=', 'gprof', 'trace', 'nodotnet', 'staticlib', 'prefix=', 'gmp', 'foci2=', 'java', 'parallel=', 'gprof',
'githash=', 'ml']) 'githash=', 'x86'])
except: except:
print("ERROR: Invalid command line option") print("ERROR: Invalid command line option")
display_help(1) display_help(1)
@ -560,6 +565,8 @@ def parse_options():
if not IS_WINDOWS: if not IS_WINDOWS:
raise MKException('x64 compilation mode can only be specified when using Visual Studio') raise MKException('x64 compilation mode can only be specified when using Visual Studio')
VS_X64 = True VS_X64 = True
elif opt in ('--x86'):
LINUX_X64=False
elif opt in ('-h', '--help'): elif opt in ('-h', '--help'):
display_help(0) display_help(0)
elif opt in ('-m', '--onlymakefiles'): elif opt in ('-m', '--onlymakefiles'):
@ -1823,6 +1830,10 @@ def mk_config():
CPPFLAGS = '%s -D_AMD64_' % CPPFLAGS CPPFLAGS = '%s -D_AMD64_' % CPPFLAGS
if sysname == 'Linux': if sysname == 'Linux':
CPPFLAGS = '%s -D_USE_THREAD_LOCAL' % CPPFLAGS CPPFLAGS = '%s -D_USE_THREAD_LOCAL' % CPPFLAGS
elif not LINUX_X64:
CXXFLAGS = '%s -m32' % CXXFLAGS
LDFLAGS = '%s -m32' % LDFLAGS
SLIBFLAGS = '%s -m32' % SLIBFLAGS
if DEBUG_MODE: if DEBUG_MODE:
CPPFLAGS = '%s -DZ3DEBUG' % CPPFLAGS CPPFLAGS = '%s -DZ3DEBUG' % CPPFLAGS
if TRACE or DEBUG_MODE: if TRACE or DEBUG_MODE:

View file

@ -29,19 +29,20 @@ extern "C" {
LOG_Z3_mk_fpa_rounding_mode_sort(c); LOG_Z3_mk_fpa_rounding_mode_sort(c);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_sort r = of_sort(ctx->fpautil().mk_rm_sort()); sort * s = ctx->fpautil().mk_rm_sort();
RETURN_Z3(r); mk_c(c)->save_ast_trail(s);
RETURN_Z3(of_sort(s));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
Z3_ast Z3_API Z3_mk_fpa_round_nearest_ties_to_even(Z3_context c) Z3_ast Z3_API Z3_mk_fpa_round_nearest_ties_to_even(Z3_context c) {
{
Z3_TRY; Z3_TRY;
LOG_Z3_mk_fpa_round_nearest_ties_to_even(c); LOG_Z3_mk_fpa_round_nearest_ties_to_even(c);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_round_nearest_ties_to_even()); expr * a = ctx->fpautil().mk_round_nearest_ties_to_even();
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -50,19 +51,20 @@ extern "C" {
LOG_Z3_mk_fpa_rne(c); LOG_Z3_mk_fpa_rne(c);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_round_nearest_ties_to_even()); expr * a = ctx->fpautil().mk_round_nearest_ties_to_even();
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
Z3_ast Z3_API Z3_mk_fpa_round_nearest_ties_to_away(Z3_context c) Z3_ast Z3_API Z3_mk_fpa_round_nearest_ties_to_away(Z3_context c) {
{
Z3_TRY; Z3_TRY;
LOG_Z3_mk_fpa_round_nearest_ties_to_away(c); LOG_Z3_mk_fpa_round_nearest_ties_to_away(c);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_round_nearest_ties_to_away()); expr * a = ctx->fpautil().mk_round_nearest_ties_to_away();
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -71,19 +73,20 @@ extern "C" {
LOG_Z3_mk_fpa_rna(c); LOG_Z3_mk_fpa_rna(c);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_round_nearest_ties_to_away()); expr * a = ctx->fpautil().mk_round_nearest_ties_to_away();
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
Z3_ast Z3_API Z3_mk_fpa_round_toward_positive(Z3_context c) Z3_ast Z3_API Z3_mk_fpa_round_toward_positive(Z3_context c) {
{
Z3_TRY; Z3_TRY;
LOG_Z3_mk_fpa_round_toward_positive(c); LOG_Z3_mk_fpa_round_toward_positive(c);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_round_toward_positive()); expr * a = ctx->fpautil().mk_round_toward_positive();
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -92,19 +95,20 @@ extern "C" {
LOG_Z3_mk_fpa_rtp(c); LOG_Z3_mk_fpa_rtp(c);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_round_toward_positive()); expr * a = ctx->fpautil().mk_round_toward_positive();
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
Z3_ast Z3_API Z3_mk_fpa_round_toward_negative(Z3_context c) Z3_ast Z3_API Z3_mk_fpa_round_toward_negative(Z3_context c) {
{
Z3_TRY; Z3_TRY;
LOG_Z3_mk_fpa_round_toward_negative(c); LOG_Z3_mk_fpa_round_toward_negative(c);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_round_toward_negative()); expr * a = ctx->fpautil().mk_round_toward_negative();
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -113,19 +117,20 @@ extern "C" {
LOG_Z3_mk_fpa_rtn(c); LOG_Z3_mk_fpa_rtn(c);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_round_toward_negative()); expr * a = ctx->fpautil().mk_round_toward_negative();
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
Z3_ast Z3_API Z3_mk_fpa_round_toward_zero(Z3_context c) Z3_ast Z3_API Z3_mk_fpa_round_toward_zero(Z3_context c) {
{
Z3_TRY; Z3_TRY;
LOG_Z3_mk_fpa_round_toward_zero(c); LOG_Z3_mk_fpa_round_toward_zero(c);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_round_toward_zero()); expr * a = ctx->fpautil().mk_round_toward_zero();
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -134,8 +139,9 @@ extern "C" {
LOG_Z3_mk_fpa_rtz(c); LOG_Z3_mk_fpa_rtz(c);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_round_toward_zero()); expr * a = ctx->fpautil().mk_round_toward_zero();
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -148,8 +154,9 @@ extern "C" {
SET_ERROR_CODE(Z3_INVALID_ARG); SET_ERROR_CODE(Z3_INVALID_ARG);
} }
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_sort r = of_sort(ctx->fpautil().mk_float_sort(ebits, sbits)); sort * s = ctx->fpautil().mk_float_sort(ebits, sbits);
RETURN_Z3(r); ctx->save_ast_trail(s);
RETURN_Z3(of_sort(s));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -190,8 +197,9 @@ extern "C" {
LOG_Z3_mk_fpa_nan(c, s); LOG_Z3_mk_fpa_nan(c, s);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_nan(to_sort(s))); expr * a = ctx->fpautil().mk_nan(to_sort(s));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -200,9 +208,10 @@ extern "C" {
LOG_Z3_mk_fpa_inf(c, s, negative); LOG_Z3_mk_fpa_inf(c, s, negative);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(negative != 0 ? ctx->fpautil().mk_ninf(to_sort(s)) : expr * a = negative != 0 ? ctx->fpautil().mk_ninf(to_sort(s)) :
ctx->fpautil().mk_pinf(to_sort(s))); ctx->fpautil().mk_pinf(to_sort(s));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -211,9 +220,10 @@ extern "C" {
LOG_Z3_mk_fpa_inf(c, s, negative); LOG_Z3_mk_fpa_inf(c, s, negative);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(negative != 0 ? ctx->fpautil().mk_nzero(to_sort(s)) : expr * a = negative != 0 ? ctx->fpautil().mk_nzero(to_sort(s)) :
ctx->fpautil().mk_pzero(to_sort(s))); ctx->fpautil().mk_pzero(to_sort(s));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -222,8 +232,9 @@ extern "C" {
LOG_Z3_mk_fpa_fp(c, sgn, sig, exp); LOG_Z3_mk_fpa_fp(c, sgn, sig, exp);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_fp(to_expr(sgn), to_expr(sig), to_expr(exp))); expr * a = ctx->fpautil().mk_fp(to_expr(sgn), to_expr(sig), to_expr(exp));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -237,8 +248,9 @@ extern "C" {
ctx->fpautil().get_ebits(to_sort(ty)), ctx->fpautil().get_ebits(to_sort(ty)),
ctx->fpautil().get_sbits(to_sort(ty)), ctx->fpautil().get_sbits(to_sort(ty)),
v); v);
Z3_ast r = of_ast(ctx->fpautil().mk_value(tmp)); expr * a = ctx->fpautil().mk_value(tmp);
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -249,8 +261,9 @@ extern "C" {
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
scoped_mpf tmp(ctx->fpautil().fm()); scoped_mpf tmp(ctx->fpautil().fm());
ctx->fpautil().fm().set(tmp, ctx->fpautil().get_ebits(to_sort(ty)), ctx->fpautil().get_sbits(to_sort(ty)), v); ctx->fpautil().fm().set(tmp, ctx->fpautil().get_ebits(to_sort(ty)), ctx->fpautil().get_sbits(to_sort(ty)), v);
Z3_ast r = of_ast(ctx->fpautil().mk_value(tmp)); expr * a = ctx->fpautil().mk_value(tmp);
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -264,8 +277,9 @@ extern "C" {
ctx->fpautil().get_ebits(to_sort(ty)), ctx->fpautil().get_ebits(to_sort(ty)),
ctx->fpautil().get_sbits(to_sort(ty)), ctx->fpautil().get_sbits(to_sort(ty)),
v); v);
Z3_ast r = of_ast(ctx->fpautil().mk_value(tmp)); expr * a = ctx->fpautil().mk_value(tmp);
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -279,8 +293,9 @@ extern "C" {
ctx->fpautil().get_ebits(to_sort(ty)), ctx->fpautil().get_ebits(to_sort(ty)),
ctx->fpautil().get_sbits(to_sort(ty)), ctx->fpautil().get_sbits(to_sort(ty)),
sgn != 0, sig, exp); sgn != 0, sig, exp);
Z3_ast r = of_ast(ctx->fpautil().mk_value(tmp)); expr * a = ctx->fpautil().mk_value(tmp);
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -294,8 +309,9 @@ extern "C" {
ctx->fpautil().get_ebits(to_sort(ty)), ctx->fpautil().get_ebits(to_sort(ty)),
ctx->fpautil().get_sbits(to_sort(ty)), ctx->fpautil().get_sbits(to_sort(ty)),
sgn != 0, sig, exp); sgn != 0, sig, exp);
Z3_ast r = of_ast(ctx->fpautil().mk_value(tmp)); expr * a = ctx->fpautil().mk_value(tmp);
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -304,8 +320,9 @@ extern "C" {
LOG_Z3_mk_fpa_abs(c, t); LOG_Z3_mk_fpa_abs(c, t);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_abs(to_expr(t))); expr * a = ctx->fpautil().mk_abs(to_expr(t));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -314,8 +331,9 @@ extern "C" {
LOG_Z3_mk_fpa_neg(c, t); LOG_Z3_mk_fpa_neg(c, t);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_neg(to_expr(t))); expr * a = ctx->fpautil().mk_neg(to_expr(t));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -324,8 +342,9 @@ extern "C" {
LOG_Z3_mk_fpa_add(c, rm, t1, t2); LOG_Z3_mk_fpa_add(c, rm, t1, t2);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_add(to_expr(rm), to_expr(t1), to_expr(t2))); expr * a = ctx->fpautil().mk_add(to_expr(rm), to_expr(t1), to_expr(t2));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -334,8 +353,9 @@ extern "C" {
LOG_Z3_mk_fpa_add(c, rm, t1, t2); LOG_Z3_mk_fpa_add(c, rm, t1, t2);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_sub(to_expr(rm), to_expr(t1), to_expr(t2))); expr * a = ctx->fpautil().mk_sub(to_expr(rm), to_expr(t1), to_expr(t2));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -344,8 +364,9 @@ extern "C" {
LOG_Z3_mk_fpa_add(c, rm, t1, t2); LOG_Z3_mk_fpa_add(c, rm, t1, t2);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_mul(to_expr(rm), to_expr(t1), to_expr(t2))); expr * a = ctx->fpautil().mk_mul(to_expr(rm), to_expr(t1), to_expr(t2));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -354,8 +375,9 @@ extern "C" {
LOG_Z3_mk_fpa_add(c, rm, t1, t2); LOG_Z3_mk_fpa_add(c, rm, t1, t2);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_div(to_expr(rm), to_expr(t1), to_expr(t2))); expr * a = ctx->fpautil().mk_div(to_expr(rm), to_expr(t1), to_expr(t2));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -364,8 +386,9 @@ extern "C" {
LOG_Z3_mk_fpa_fma(c, rm, t1, t2, t3); LOG_Z3_mk_fpa_fma(c, rm, t1, t2, t3);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_fma(to_expr(rm), to_expr(t1), to_expr(t2), to_expr(t3))); expr * a = ctx->fpautil().mk_fma(to_expr(rm), to_expr(t1), to_expr(t2), to_expr(t3));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -374,8 +397,9 @@ extern "C" {
LOG_Z3_mk_fpa_sqrt(c, rm, t); LOG_Z3_mk_fpa_sqrt(c, rm, t);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_sqrt(to_expr(rm), to_expr(t))); expr * a = ctx->fpautil().mk_sqrt(to_expr(rm), to_expr(t));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -384,8 +408,9 @@ extern "C" {
LOG_Z3_mk_fpa_rem(c, t1, t2); LOG_Z3_mk_fpa_rem(c, t1, t2);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_rem(to_expr(t1), to_expr(t2))); expr * a = ctx->fpautil().mk_rem(to_expr(t1), to_expr(t2));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -394,8 +419,9 @@ extern "C" {
LOG_Z3_mk_fpa_round_to_integral(c, rm, t); LOG_Z3_mk_fpa_round_to_integral(c, rm, t);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_round_to_integral(to_expr(rm), to_expr(t))); expr * a = ctx->fpautil().mk_round_to_integral(to_expr(rm), to_expr(t));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -404,8 +430,9 @@ extern "C" {
LOG_Z3_mk_fpa_min(c, t1, t2); LOG_Z3_mk_fpa_min(c, t1, t2);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_min(to_expr(t1), to_expr(t2))); expr * a = ctx->fpautil().mk_min(to_expr(t1), to_expr(t2));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -424,8 +451,9 @@ extern "C" {
LOG_Z3_mk_fpa_leq(c, t1, t2); LOG_Z3_mk_fpa_leq(c, t1, t2);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_le(to_expr(t1), to_expr(t2))); expr * a = ctx->fpautil().mk_le(to_expr(t1), to_expr(t2));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -434,8 +462,9 @@ extern "C" {
LOG_Z3_mk_fpa_lt(c, t1, t2); LOG_Z3_mk_fpa_lt(c, t1, t2);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_lt(to_expr(t1), to_expr(t2))); expr * a = ctx->fpautil().mk_lt(to_expr(t1), to_expr(t2));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -444,8 +473,9 @@ extern "C" {
LOG_Z3_mk_fpa_geq(c, t1, t2); LOG_Z3_mk_fpa_geq(c, t1, t2);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_ge(to_expr(t1), to_expr(t2))); expr * a = ctx->fpautil().mk_ge(to_expr(t1), to_expr(t2));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -454,8 +484,9 @@ extern "C" {
LOG_Z3_mk_fpa_gt(c, t1, t2); LOG_Z3_mk_fpa_gt(c, t1, t2);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_gt(to_expr(t1), to_expr(t2))); expr * a = ctx->fpautil().mk_gt(to_expr(t1), to_expr(t2));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -464,8 +495,9 @@ extern "C" {
LOG_Z3_mk_fpa_eq(c, t1, t2); LOG_Z3_mk_fpa_eq(c, t1, t2);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_float_eq(to_expr(t1), to_expr(t2))); expr * a = ctx->fpautil().mk_float_eq(to_expr(t1), to_expr(t2));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -474,8 +506,9 @@ extern "C" {
LOG_Z3_mk_fpa_is_normal(c, t); LOG_Z3_mk_fpa_is_normal(c, t);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_is_normal(to_expr(t))); expr * a = ctx->fpautil().mk_is_normal(to_expr(t));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -484,8 +517,9 @@ extern "C" {
LOG_Z3_mk_fpa_is_subnormal(c, t); LOG_Z3_mk_fpa_is_subnormal(c, t);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_is_subnormal(to_expr(t))); expr * a = ctx->fpautil().mk_is_subnormal(to_expr(t));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -494,8 +528,9 @@ extern "C" {
LOG_Z3_mk_fpa_is_zero(c, t); LOG_Z3_mk_fpa_is_zero(c, t);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_is_zero(to_expr(t))); expr * a = ctx->fpautil().mk_is_zero(to_expr(t));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -504,8 +539,9 @@ extern "C" {
LOG_Z3_mk_fpa_is_infinite(c, t); LOG_Z3_mk_fpa_is_infinite(c, t);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_is_inf(to_expr(t))); expr * a = ctx->fpautil().mk_is_inf(to_expr(t));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -514,8 +550,9 @@ extern "C" {
LOG_Z3_mk_fpa_is_nan(c, t); LOG_Z3_mk_fpa_is_nan(c, t);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_is_nan(to_expr(t))); expr * a = ctx->fpautil().mk_is_nan(to_expr(t));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -524,8 +561,9 @@ extern "C" {
LOG_Z3_mk_fpa_is_negative(c, t); LOG_Z3_mk_fpa_is_negative(c, t);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_is_negative(to_expr(t))); expr * a = ctx->fpautil().mk_is_negative(to_expr(t));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -534,8 +572,9 @@ extern "C" {
LOG_Z3_mk_fpa_is_positive(c, t); LOG_Z3_mk_fpa_is_positive(c, t);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_is_positive(to_expr(t))); expr * a = ctx->fpautil().mk_is_positive(to_expr(t));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -551,8 +590,9 @@ extern "C" {
SET_ERROR_CODE(Z3_INVALID_ARG); SET_ERROR_CODE(Z3_INVALID_ARG);
return 0; return 0;
} }
Z3_ast r = of_ast(fu.mk_to_fp(to_sort(s), to_expr(bv))); expr * a = fu.mk_to_fp(to_sort(s), to_expr(bv));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -568,8 +608,9 @@ extern "C" {
SET_ERROR_CODE(Z3_INVALID_ARG); SET_ERROR_CODE(Z3_INVALID_ARG);
return 0; return 0;
} }
Z3_ast r = of_ast(fu.mk_to_fp(to_sort(s), to_expr(rm), to_expr(t))); expr * a = fu.mk_to_fp(to_sort(s), to_expr(rm), to_expr(t));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -585,8 +626,9 @@ extern "C" {
SET_ERROR_CODE(Z3_INVALID_ARG); SET_ERROR_CODE(Z3_INVALID_ARG);
return 0; return 0;
} }
Z3_ast r = of_ast(fu.mk_to_fp(to_sort(s), to_expr(rm), to_expr(t))); expr * a = fu.mk_to_fp(to_sort(s), to_expr(rm), to_expr(t));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -602,8 +644,9 @@ extern "C" {
SET_ERROR_CODE(Z3_INVALID_ARG); SET_ERROR_CODE(Z3_INVALID_ARG);
return 0; return 0;
} }
Z3_ast r = of_ast(fu.mk_to_fp(to_sort(s), to_expr(rm), to_expr(t))); expr * a = fu.mk_to_fp(to_sort(s), to_expr(rm), to_expr(t));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -619,8 +662,9 @@ extern "C" {
SET_ERROR_CODE(Z3_INVALID_ARG); SET_ERROR_CODE(Z3_INVALID_ARG);
return 0; return 0;
} }
Z3_ast r = of_ast(fu.mk_to_fp_unsigned(to_sort(s), to_expr(rm), to_expr(t))); expr * a = fu.mk_to_fp_unsigned(to_sort(s), to_expr(rm), to_expr(t));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -629,8 +673,9 @@ extern "C" {
LOG_Z3_mk_fpa_to_ubv(c, rm, t, sz); LOG_Z3_mk_fpa_to_ubv(c, rm, t, sz);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_to_ubv(to_expr(rm), to_expr(t), sz)); expr * a = ctx->fpautil().mk_to_ubv(to_expr(rm), to_expr(t), sz);
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -639,8 +684,9 @@ extern "C" {
LOG_Z3_mk_fpa_to_sbv(c, rm, t, sz); LOG_Z3_mk_fpa_to_sbv(c, rm, t, sz);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_to_sbv(to_expr(rm), to_expr(t), sz)); expr * a = ctx->fpautil().mk_to_sbv(to_expr(rm), to_expr(t), sz);
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -649,8 +695,9 @@ extern "C" {
LOG_Z3_mk_fpa_to_real(c, t); LOG_Z3_mk_fpa_to_real(c, t);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
Z3_ast r = of_ast(ctx->fpautil().mk_to_real(to_expr(t))); expr * a = ctx->fpautil().mk_to_real(to_expr(t));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
@ -773,9 +820,9 @@ extern "C" {
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }
Z3_ast Z3_API Z3_mk_fpa_to_fp_real_int(Z3_context c, Z3_ast rm, Z3_ast sig, Z3_ast exp, Z3_sort s) { Z3_ast Z3_API Z3_mk_fpa_to_fp_int_real(Z3_context c, Z3_ast rm, Z3_ast exp, Z3_ast sig, Z3_sort s) {
Z3_TRY; Z3_TRY;
LOG_Z3_mk_fpa_to_fp_real_int(c, rm, sig, exp, s); LOG_Z3_mk_fpa_to_fp_int_real(c, rm, sig, exp, s);
RESET_ERROR_CODE(); RESET_ERROR_CODE();
api::context * ctx = mk_c(c); api::context * ctx = mk_c(c);
fpa_util & fu = ctx->fpautil(); fpa_util & fu = ctx->fpautil();
@ -786,8 +833,9 @@ extern "C" {
SET_ERROR_CODE(Z3_INVALID_ARG); SET_ERROR_CODE(Z3_INVALID_ARG);
return 0; return 0;
} }
Z3_ast r = of_ast(fu.mk_to_fp(to_sort(s), to_expr(rm), to_expr(sig), to_expr(exp))); expr * a = fu.mk_to_fp(to_sort(s), to_expr(rm), to_expr(sig), to_expr(exp));
RETURN_Z3(r); ctx->save_ast_trail(a);
RETURN_Z3(of_expr(a));
Z3_CATCH_RETURN(0); Z3_CATCH_RETURN(0);
} }

View file

@ -4227,13 +4227,13 @@ namespace Microsoft.Z3
/// according to rounding mode rm. /// according to rounding mode rm.
/// </remarks> /// </remarks>
/// <param name="rm">RoundingMode term.</param> /// <param name="rm">RoundingMode term.</param>
/// <param name="sig">Significand term of Real sort.</param>
/// <param name="exp">Exponent term of Int sort.</param> /// <param name="exp">Exponent term of Int sort.</param>
/// <param name="sig">Significand term of Real sort.</param>
/// <param name="s">FloatingPoint sort.</param> /// <param name="s">FloatingPoint sort.</param>
public BitVecExpr MkFPToFP(FPRMExpr rm, RealExpr sig, IntExpr exp, FPSort s) public BitVecExpr MkFPToFP(FPRMExpr rm, IntExpr exp, RealExpr sig, FPSort s)
{ {
Contract.Ensures(Contract.Result<BitVecExpr>() != null); Contract.Ensures(Contract.Result<BitVecExpr>() != null);
return new BitVecExpr(this, Native.Z3_mk_fpa_to_fp_real_int(this.nCtx, rm.NativeObject, sig.NativeObject, exp.NativeObject, s.NativeObject)); return new BitVecExpr(this, Native.Z3_mk_fpa_to_fp_int_real(this.nCtx, rm.NativeObject, exp.NativeObject, sig.NativeObject, s.NativeObject));
} }
#endregion #endregion
#endregion // Floating-point Arithmetic #endregion // Floating-point Arithmetic

View file

@ -3542,8 +3542,8 @@ public class Context extends IDisposable
/** /**
* Conversion of a real-sorted significand and an integer-sorted exponent into a term of FloatingPoint sort. * Conversion of a real-sorted significand and an integer-sorted exponent into a term of FloatingPoint sort.
* @param rm RoundingMode term. * @param rm RoundingMode term.
* @param sig Significand term of Real sort.
* @param exp Exponent term of Int sort. * @param exp Exponent term of Int sort.
* @param sig Significand term of Real sort.
* @param s FloatingPoint sort. * @param s FloatingPoint sort.
* Remarks: * Remarks:
* Produces a term that represents the conversion of sig * 2^exp into a * Produces a term that represents the conversion of sig * 2^exp into a
@ -3552,9 +3552,9 @@ public class Context extends IDisposable
* @throws Z3Exception * @throws Z3Exception
**/ **/
public BitVecExpr mkFPToFP(FPRMExpr rm, RealExpr sig, IntExpr exp, FPSort s) throws Z3Exception public BitVecExpr mkFPToFP(FPRMExpr rm, IntExpr exp, RealExpr sig, FPSort s) throws Z3Exception
{ {
return new BitVecExpr(this, Native.mkFpaToFpRealInt(nCtx(), rm.getNativeObject(), sig.getNativeObject(), exp.getNativeObject(), s.getNativeObject())); return new BitVecExpr(this, Native.mkFpaToFpIntReal(nCtx(), rm.getNativeObject(), exp.getNativeObject(), sig.getNativeObject(), s.getNativeObject()));
} }

View file

@ -905,15 +905,15 @@ extern "C" {
\param c logical context \param c logical context
\param rm term of RoundingMode sort \param rm term of RoundingMode sort
\param sig significand term of Real sort
\param exp exponent term of Int sort \param exp exponent term of Int sort
\param sig significand term of Real sort
\param s FloatingPoint sort \param s FloatingPoint sort
s must be a FloatingPoint sort, rm must be of RoundingMode sort, t must be of real sort. s must be a FloatingPoint sort, rm must be of RoundingMode sort, exp must be of int sort, sig must be of real sort.
def_API('Z3_mk_fpa_to_fp_real_int', AST, (_in(CONTEXT),_in(AST),_in(AST),_in(AST),_in(SORT))) def_API('Z3_mk_fpa_to_fp_int_real', AST, (_in(CONTEXT),_in(AST),_in(AST),_in(AST),_in(SORT)))
*/ */
Z3_ast Z3_API Z3_mk_fpa_to_fp_real_int(__in Z3_context c, __in Z3_ast rm, __in Z3_ast sig, __in Z3_ast exp, __in Z3_sort s); Z3_ast Z3_API Z3_mk_fpa_to_fp_int_real(__in Z3_context c, __in Z3_ast rm, __in Z3_ast exp, __in Z3_ast sig, __in Z3_sort s);
/*@}*/ /*@}*/