Z3 prenex定量顺序在EPR片段中是否重要?

Z3 prenex定量顺序在EPR片段中是否重要?,z3,smt,first-order-logic,decidable,Z3,Smt,First Order Logic,Decidable,一阶逻辑的有效命题(EPR)片段通常定义为∃十,。∀Y.Φ(X,Y),其中X和Y是(可能是空的)变量序列。量化顺序是否正确,即∃*∀*,与EPR的可判定性有关?如果量化顺序被切换,我们会失去可判定性吗 特别是,我感兴趣的是在可判定逻辑中捕获集合一元绑定操作的语义。给定类型为T1的元素的集S1(即S1具有类型T1集),以及类型为T1->T2集的函数f,set monad的绑定操作通过在S1的每个元素上应用f,构造类型为T2集的新集S2,以及合并结果集。此行为可在以下SMT-LIB代码/公式中捕获:

一阶逻辑的有效命题(EPR)片段通常定义为
∃十,。∀Y.Φ(X,Y)
,其中
X
Y
是(可能是空的)变量序列。量化顺序是否正确,即
∃*∀*,与EPR的可判定性有关?如果量化顺序被切换,我们会失去可判定性吗

特别是,我感兴趣的是在可判定逻辑中捕获集合一元绑定操作的语义。给定类型为
T1
的元素的集
S1
(即
S1
具有类型
T1集
),以及类型为
T1->T2集
的函数
f
,set monad的绑定操作通过在
S1
的每个元素上应用
f
,构造类型为
T2集
的新集
S2
,以及合并结果集。此行为可在以下SMT-LIB代码/公式中捕获:

(declare-sort T1)
(declare-sort T2)
;; We encode T1 Set as a boolean function on T1
(declare-fun S1 (T1) Bool)
(declare-fun S2 (T2) Bool)
;; Thus, f becomes a binary predicate on (T1,T2)
(declare-fun f (T1 T2) Bool)
(assert (forall ((x T1)(y T2)) (=> (and (S1 x) (f x y)) 
                                   (S2 y))))
(assert (forall ((y T2)) (exists ((x T1)) (=> (S2 y) 
                                              (and (S1 x) (f x y)))) ))

请注意,第二条assert语句对形式
∀*∃*,不符合标准EPR定义。然而,在Z3上使用这些公式时,我从来没有遇到过超时问题,我想知道我上面的公式是否真的存在于某个可判定的片段中(同时承认实践中的可解性并不意味着理论上的可判定性)。欢迎任何观察。

如果量词的顺序不同,则不再是EPR。EPR仅涵盖形式为EA Phi的公式,其中Phi没有函数(只有绑定变量上的谓词,可能还有自由常数)。
有一些一阶逻辑的可判定片段不是EPR,但Z3不是此类片段的判定过程。Borger、Graedel、Gurevich是描述这些片段的综合资料来源,“经典决策问题”。

这里有一个简短的幻灯片,总结了最突出的要点: