Z3可能存在的错误:Z3无法证明拓扑中的定理

Z3可能存在的错误:Z3无法证明拓扑中的定理,z3,topology,z3py,theorem-proving,Z3,Topology,Z3py,Theorem Proving,我试图用Z3证明在一般拓扑学中给出的定理 我正在使用下面的Z3-SMT-LIB代码翻译这里给出的代码 ;; File : TOP001-2 : TPTP v6.0.0. Released v1.0.0. ;; Domain : Topology ;; Problem : Topology generated by a basis forms a topological space, part 1 (declare-sort S) (declare-sort Q) (declar

我试图用Z3证明在一般拓扑学中给出的定理

我正在使用下面的Z3-SMT-LIB代码翻译这里给出的代码

;; File     : TOP001-2 : TPTP v6.0.0. Released v1.0.0.
;; Domain   : Topology
;; Problem  : Topology generated by a basis forms a topological space, part 1

(declare-sort S)
(declare-sort Q)
(declare-sort P)

(declare-fun elemcoll (S Q) Bool)
(declare-fun elemset (P S) Bool)
(declare-fun unionmemb (Q) S)

(declare-fun f1 (Q P) S)

(declare-fun f11 (Q S) P)
(declare-fun basis (S Q) Bool)
(declare-fun Subset (S S) Bool)
(declare-fun topbasis (Q) Q)

;; union of members axiom 1.
(assert (forall ((U P) (Vf Q)) (or (not (elemset U (unionmemb Vf))) 
                                    (elemset U (f1 Vf U) ) )   ))
;; union of members axiom 2.

(assert (forall ((U P) (Vf Q)) (or (not (elemset U (unionmemb Vf))) 
                                   (elemcoll (f1 Vf U) Vf ) )   ))


;; basis for topology, axiom 28

(assert (forall ((X S) (Vf Q)) (or (not (basis X Vf)) (= (unionmemb Vf) X )  )   ))

;; Topology generated by a basis, axiom 40.

(assert (forall ((Vf Q) (U S)) (or (elemcoll U (topbasis Vf))   
                               (elemset (f11 Vf U) U))   ))

;; Set theory, axiom 7.

(assert (forall ((X S) (Y Q)) (or (not (elemcoll X Y)) (Subset X (unionmemb Y) ) )  ))

;; Set theory, axiom 8.
(assert (forall ((X S) (Y S) (U P)) (or (not (Subset X Y)) (not (elemset U X))
                                                                (elemset U Y)     )))

;; Set theory, axiom 9.
(assert (forall ((X S)) (Subset X X )  ))

;; Set theory, axiom 10.
(assert (forall ((X S) (Y S) (Z S)) (or (not (= X Y)) (not (Subset Z X)) (Subset Z Y) )  ))

;; Set theory, axiom 11.
(assert (forall ((X S) (Y S) (Z S)) (or (not (= X Y)) (not (Subset X Z)) (Subset Y Z) )  ))

(check-sat)

(push)
(declare-fun cx () S)
(declare-fun f () Q)
(assert (basis cx f))
(assert (not (elemcoll cx (topbasis f))))   
(check-sat)
(pop)

(push)
(assert (basis cx f))
(assert (elemcoll cx (topbasis f)))  
(check-sat)
(pop)
相应的输出是

sat
sat
sat
请联机运行此示例

第一个
sat
是正确的;但是第二个
sat
是错误的,它必须是
unsat
。换句话说,Z3表示定理及其否定同时成立


请让我知道在这种情况下会发生什么。非常感谢。最好的。

对于背景理论T,公式和公式的否定都可能是一致的。特别是,当T不完整时,则有些句子既不是T的结果,也不是与T不一致的。在您的案例中,理论T是拓扑公理集。
您可以使用命令(get model)获得满足公理和句子的模型。

非常感谢您的回答,但根据TPTP网站,公理可以毫无困难地导出定理。我正在尝试其他定理,但Z3产生了一个“超时”。我认为Z3不能证明这样的定理。你同意吗?。另一方面,当使用命令(get model)时,由Z3生成的模型是微不足道的。当我试图获得一个非平凡的模型时,Z3再次生成“超时”。非常感谢,祝你一切顺利。