获取量化变量的z3实例化
我想用z3做一件有点奇怪的事。我想看看我是否可以使用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
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本身继续前进