我正在從Z3版本3.2遷移到版本4.0。 但是,以前工作的代碼不再直接使用,我試圖找出相同的原因。我將整個代碼簡化爲一個非常簡單的聲明和斷言,但它仍然行不通。該代碼是 -從Z3版本3.2遷移到版本4.0
long intSort = Z3_mk_int_sort (context);
long periodDeclStr = Z3_mk_string_symbol(context, "period");
long periodVar = Z3_mk_const(context, periodDeclStr, intSort);
long solver = z3_mk_solver();
long zero = Z3_mk_int (context, 0, intSort);
long eqSt = Z3_mk_eq(context, periodVar, zero);
Z3_solver_assert (context, solver, eqSt);
問題是與倒數第二個聲明Z3_mk_eq()
我收到錯誤的 -
WARNING: invalid function application, sort mismatch on argument at position 2
WARNING: (define = arith arith Bool) applied to:
period of sort arith
0::Int of sort Int
我的問題如下 -
- 如何調試這個錯誤?這仍然適用於3.2版本,但沒有求解器。
- 僅當我完成向上下文添加變量後,是否必須創建求解器?創建求解器後,我可以向上下文添加變量嗎?或者我必須重新創建求解器?
對不起。我正在混合求解器和上下文來將它們傳遞給解算器。 但是,問題仍然存在未解決的問題。 我在Z3_ast_to_String()
API中發生崩潰。 我會盡力解決問題併發布更新。
對不起...這只是一個錯字。我正確地編寫了代碼。 – Raj
只是爲了更新,我上面顯示的錯誤,它對每個執行都會改變。有時會給Int排序,有時候沒有排序顯示。也許這是因爲我使用JNI Library從Java訪問Z3? – Raj