【问题标题】:.datalog format using Z3使用 Z3 的 .datalog 格式
【发布时间】:2018-06-11 15:01:25
【问题描述】:

我正在尝试使用 Z3 扩展:muZ 遵循本教程:https://rise4fun.com/Z3/tutorial/fixedpoints

如本教程中所标记,接受三种不同的基于文本的输入格式。基本数据记录是这些可接受的格式之一。

我有教程中指出的这种形式的程序:

Z 64

P0(x: Z) input

Gt0(x : Z, y : Z) input

R(x : Z) printtuples

S(x : Z) printtuples

Gt(x : Z, y : Z) printtuples

Gt(x,y) :- Gt0(x,y).

Gt(x,y) :- Gt(x,z), Gt(z,y).

R(x) :- Gt(x,_).

S(x) :- Gt(x,x0), Gt0(x,y), Gt0(y,z), P0(z).

Gt0("a","b").

Gt0("b","c").

Gt0("c","d").

Gt0("a1","b").

Gt0("b","a1").

Gt0("d","d1").

Gt0("d1","d").

P0("a1").

如何使用 Z3Py(或 Z3)解析这些程序。

【问题讨论】:

    标签: python z3 z3py datalog


    【解决方案1】:

    如果您将该程序文本放在一个文件中(例如a.datalog),您可以直接在其上调用 z3。 (注意扩展名必须是datalog)。

    当我这样做时,我得到:

    $ z3 a.datalog
    Tuples in Gt:
            (x=a(0),y=b(1))
            (x=b(1),y=c(2))
            (x=c(2),y=d(3))
            (x=a1(4),y=b(1))
            (x=b(1),y=a1(4))
            (x=d(3),y=d1(5))
            (x=d1(5),y=d(3))
            (x=a(0),y=c(2))
            (x=a(0),y=a1(4))
            (x=b(1),y=d(3))
            (x=c(2),y=d1(5))
            (x=a1(4),y=c(2))
            (x=a1(4),y=a1(4))
            (x=b(1),y=b(1))
            (x=d(3),y=d(3))
            (x=d1(5),y=d1(5))
            (x=a(0),y=d(3))
            (x=a1(4),y=d(3))
            (x=b(1),y=d1(5))
            (x=a(0),y=d1(5))
            (x=a1(4),y=d1(5))
    Tuples in R:
            (x=a(0))
            (x=b(1))
            (x=c(2))
            (x=a1(4))
            (x=d(3))
            (x=d1(5))
    Tuples in S:
            (x=a(0))
            (x=a1(4))
    Time: 3ms
    Parsing: 0ms, other: 1ms
    

    这是你想要做的吗?

    【讨论】:

    • 是的,这就是我要找的。但是我怎样才能在 z3 中调用文件 .datalog 呢? (我正在使用 Z3Py 窗口)
    • 你可以把它放在你操作系统的一个文件中(使用文本编辑器),并给它一个扩展名为.datalog的名字。然后直接在命令行调用z3
    • 现在可以使用了,谢谢。
    • 这个 lignes (input and printtuples) 的含义是什么: P0(x: Z) input Gt0(x : Z, y : Z) input R(x : Z) printtuples S(x : Z) 打印元组 Gt(x : Z, y : Z) 打印元组
    • 该网站目前正在维护中,是否有其他参考资料可以让我了解 bddbddb 语法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多