如何使用commad行在Z3中运行数据日志

如何使用commad行在Z3中运行数据日志,z3,datalog,Z3,Datalog,我尝试在Z3(版本:4.3.2)中运行数据日志文件(test.dl,from),如下所示 使用命令z3 test.dl,但有erorr消息: 有人能帮我运行数据日志文件吗 谢谢。此文件的输入格式是SMT2,而不是数据日志。即使您希望运行数据日志引擎,文件也不是数据日志格式,因此解析器会给出您看到的错误 使用命令Z3-smt2test.dl运行Z3是成功的,因为这迫使Z3使用smt2解析器而不是数据日志解析器。或者,将文件重命名为test.smt2并运行z3test.smt2 这两个命令都产生了

我尝试在Z3(版本:4.3.2)中运行数据日志文件(test.dl,from),如下所示

使用命令
z3 test.dl
,但有erorr消息:

有人能帮我运行数据日志文件吗


谢谢。

此文件的输入格式是SMT2,而不是数据日志。即使您希望运行数据日志引擎,文件也不是数据日志格式,因此解析器会给出您看到的错误

使用命令Z3-smt2test.dl运行Z3是成功的,因为这迫使Z3使用smt2解析器而不是数据日志解析器。或者,将文件重命名为
test.smt2
并运行
z3test.smt2

这两个命令都产生了我认为是预期的输出

坐
未售出
坐
(或(=(:var 0)#b011)(=(:var 0)#b010)(=(:var 0)#b100))

(set-option :fixedpoint.engine datalog)
(define-sort s () (_ BitVec 3))
(declare-rel edge (s s))
(declare-rel path (s s))
(declare-var a s)
(declare-var b s)
(declare-var c s)

(rule (=> (edge a b) (path a b)))
(rule (=> (and (path a b) (path b c)) (path a c)))

(rule (edge #b001 #b010))
(rule (edge #b001 #b011))
(rule (edge #b010 #b100))

(query (path #b001 #b100))
(query (path #b011 #b100))
(query (path #b001 b)
  :print-answer true)