如何在Z3py中检查表达式是否包含条件(=>;)

如何在Z3py中检查表达式是否包含条件(=>;),z3,z3py,Z3,Z3py,我用Z3py遍历一个布尔公式。如何检查公式是否包含条件。我已经检查了z3.py源代码,它包含is_和(),is_或(),is_不是(),。。但是与无关的内容是c基本上是!a v c。。。其中a和c可以是任何内容。e、 g.b v c是!b->c和!c->b,!a v!b v c是a->(!b v c)和b->(!a v c)和!c->(!AV!b)和(a&b)->c和…。所以is\u或()应该足够了,不是吗?哦,我正在编写代码以消除隐含。因此,首先我必须以某种方式解析代码是否包含含义(条件是精确

我用Z3py遍历一个布尔公式。如何检查公式是否包含条件。我已经检查了z3.py源代码,它包含
is_和()
is_或()
is_不是()
,。。但是与
无关的内容是
。有什么想法吗?谢谢

可以使用函数“is_app_of”确定表达式的内置函数。因此,

def is_and(a):
    return is_app_of(a, Z3_OP_AND)
正如已经在z3.py文件中实现的,以及类似的

def is_implies(a):
    return is_app_of(a, Z3_OP_IMPLIES)

我不是
z3
的专家,但
a->c
基本上是
!a v c
。。。其中
a
c
可以是任何内容。e、 g.
b v c
!b->c
!c->b
!a v!b v c
a->(!b v c)
b->(!a v c)
!c->(!AV!b)
(a&b)->c
。所以
is\u或()
应该足够了,不是吗?哦,我正在编写代码以消除隐含。因此,首先我必须以某种方式解析代码是否包含含义(条件是精确的)。然后我将a=>b转换为!a或b。谢谢。我想这意味着你很高兴只抓住了明确的暗示,而不是所有的暗示,所以我的评论与此无关。:)谢谢你的评论:)谢谢。很高兴知道。