我正在使用C++ API。我創建了一個未解釋的和該類型的x,y和z項。任何方式從未解釋的學期代表轉到z3學期?
z3::context ctx;
auto termSort = ctx.uninterpreted_sort("USORT");
auto x = ctx.constant("x", termSort);
auto y = ctx.constant("y", termSort);
auto z = ctx.constant("z", termSort);
solver s(ctx);
s.add(x == y);
s.add(y != z);
s.check();
auto model = s.get_model();
當我打印模型時,我得到以下內容,它基本上打印出每個術語的內部代表。
x: USORT!val!0
y: USORT!val!0
z: USORT!val!1
我的問題是:我該如何快速從代表到任期?我想要一個這樣的功能:
repr_to_term(USORT!val!0) => [x, y]
repr_to_term(USORT!val!1) => [z]
在Z3 API中是否有類似的功能?或者一種模仿它的方式?
在這種簡單的情況下,我可以簡單地走我的所有條款,並建立從代表到術語的地圖。但在我的實際案例中,我不想在每次生成模型時都使用所有術語,因爲有很多術語。