Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Z3将FuncInterp获取为Null_Java_Z3_Smt - Fatal编程技术网

Java Z3将FuncInterp获取为Null

Java Z3将FuncInterp获取为Null,java,z3,smt,Java,Z3,Smt,我正在使用Z3JavaAPI解析SMT文件;当我调用s.getModel(),其中s是一个解算器时,我能够按如下方式正确打印模型: (define-fun O_STUDENT () (Array Int STUDENT_TupleType) ((as const (Array Int STUDENT_TupleType)) (STUDENT_TupleType _ID__12345 _NAME__Bourikas _DEPT_uNAME__Music 29))) (define-fun

我正在使用Z3JavaAPI解析SMT文件;当我调用
s.getModel()
,其中
s
是一个解算器时,我能够按如下方式正确打印模型:

(define-fun O_STUDENT () (Array Int STUDENT_TupleType)
  ((as const (Array Int STUDENT_TupleType))
  (STUDENT_TupleType _ID__12345 _NAME__Bourikas _DEPT_uNAME__Music 29)))
(define-fun O_DEPARTMENT () (Array Int DEPARTMENT_TupleType)
  ((as const (Array Int DEPARTMENT_TupleType))
  (DEPARTMENT_TupleType _DEPT_uNAME__Music _BUILDING__BUILDING_u5 50000.0)))
但是,当我试图为
O_STUDENT
数组获取
FuncInterp
时,我得到了一个
null
。我使用以下方法提取该值:

if (s.check() == Status.SATISFIABLE) {
            Model m = s.getModel();
            FuncDecl arrayDep = m.getConstDecls()[0];
            System.out.println(m.getFuncInterp(arrayDep));
        }

以防万一:数组有点特殊,因为有常量,但它们的模型是函数(参见示例)


模型可能不包含所有变量的赋值-如果缺少一个,则意味着您可以自由选择任何您喜欢的值。如果您不喜欢,可以启用模型完成,Z3将为您选择。

但是在这种情况下,当我打印模型时,我会得到两个数组的解释;但是,我没有使用
m.getFuncInterp
得到一个。你能试试
m.getconcenter
?其中至少有一个应该给你一些东西,否则请在使用
m.getconcentrep
gives
com.microsoft.z3.z3时提交一个bug异常:非零算术函数和数组将函数解释作为一个模型。使用getFuncInterp
。我在GitHub上提出了一个关于此的问题;在你这方面可以复制吗?谢谢,这个bug已经在GitHub上修复了。