1
我正在嘗試讓Z3爲整數上的某些功能找到解釋。我遇到了一個奇怪的小問題。我寫了一小段代碼來說明它:在Z3中添加功能限制
#include "z3++.h"
#include<iostream>
using namespace std;
using namespace z3;
main()
{
context c;
sort I=c.int_sort();
func_decl trial1=function("trial1",I,I);
func_decl trial2=function("trial2",I,I,I);
solver s(c);
expr temp=trial1(1)==2;
cout<<temp<<endl;
s.add(temp);
//temp=trial2(1,2)==3;
temp=trial2(c.int_val(1),c.int_val(2))==3;
cout<<temp<<endl;
s.add(temp);
}
在此代碼中,註釋掉的行會導致錯誤。但是我在下面寫的另一種方法很好。造成我的困惑的原因是,導致2參數錯誤的結構對於1個參數(上面3行)可以正常工作。這是一個限制嗎?我錯過了什麼嗎?這不是一個真正的問題,只是好奇而已。