在z3

时间:2017-07-10 19:22:08

标签: java z3

我一直在阅读和处理几个文档,我还不清楚如何在z3中表示我的推理规则。

我们说我有以下两个推理规则:

toy inference rules for question

我的z3规则是否如此简单:

一个。 (a ^ b) => c
 湾(a ^ b) => c

或者,我认为更正确,我是否必须声明数据类型(记录,标量等)。

从那里开始,java实现看起来相当简单。

它只是从类型系统的推理规则到命题逻辑的初始翻译,这让我感到不安。

我想我错过了推理规则(ab)之间的某些联系,并在z3中代表它们;当我继续阅读文档时,它仍然是如何显示这些规则的阴天。

1 个答案:

答案 0 :(得分:1)

Z3对于这项任务来说是一个不错的选择,尽管很难准确地理解你的问题。 (您所拥有的要点ab完全相同,是故意的吗?)但基本上推理规则是含义,因此根据它们之间的命题和含义来思考它们会很好。

此外,您的规则可能会有一个Horn结构(如Prolog中的Horn子句,请参见此处:https://en.wikipedia.org/wiki/Horn_clause),Z3有一个数据记录引擎,可以更轻松地编码这些问题。 / p>

请看这里有一个非常好的介绍:http://rise4fun.com/z3/tutorialcontent/fixedpoints我认为可以相对容易地采用你的用例。