首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用.datalog格式的Z3

使用.datalog格式的Z3
EN

Stack Overflow用户
提问于 2018-06-11 15:01:25
回答 1查看 365关注 0票数 1

我试图使用带有定点约束的Z3扩展: muZ,遵循本教程:https://rise4fun.com/Z3/tutorial/fixedpoints

如本教程所示,采用三种不同的基于文本的输入格式.基本数据模拟是这些可接受的格式之一。

在本教程中,我有此形式的程序:

代码语言:javascript
复制
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)解析这些程序。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-11 15:27:03

如果将该程序文本放入文件(例如a.datalog),则可以直接调用该文件上的z3。(请注意,扩展必须是datalog)。

当我这么做的时候,我得到:

代码语言:javascript
复制
$ 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

这就是你想做的吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50800749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档