获取量化变量的z3实例化

获取量化变量的z3实例化,z3,z3py,Z3,Z3py,我想用z3做一件有点奇怪的事。我想看看我是否可以使用z3从一个交互式定理证明器中获得类似“应用”的策略。我有一个类似于ForAll([x]的定理,暗示(a(x),b(x)),还有一个语法上等于b(x)的目标c,用于适当选择x。如果我能正确实例化x,我可以用a替换目标c(inst\x)。有没有办法使用z3来获得适当的x?我不能只使用模型,因为c可能包含自由变量 我一直在尝试,看看我是否能在z3证明术语中找到它,比如Implies(ForAll([x],b(x)),c),或者以某种方式使用E-mat

我想用z3做一件有点奇怪的事。我想看看我是否可以使用z3从一个交互式定理证明器中获得类似“应用”的策略。我有一个类似于
ForAll([x]的定理,暗示(a(x),b(x))
,还有一个语法上等于
b(x)
的目标
c
,用于适当选择
x
。如果我能正确实例化x,我可以用
a替换目标
c
(inst\x)
。有没有办法使用z3来获得适当的x?我不能只使用模型,因为c可能包含自由变量

我一直在尝试,看看我是否能在z3证明术语中找到它,比如
Implies(ForAll([x],b(x)),c)
,或者以某种方式使用E-matching模式工具,但我被难倒了

z3在内部必须具有复杂的匹配和统一功能,但我不认为它们会在python接口中公开


建议?谢谢

这些都不是通过目前支持的API z3提供的,当然也不是Python层。你最好直接使用z3本身的源代码并添加必要的钩子。不用说,这需要对源代码进行相当深入的研究,并确保它保持最新z3本身继续前进