これが私がz3で実行したSMT-LIB2.0ベンチマークです:
(set-logic AUFLIA)
(declare-sort PZ 0)
(declare-fun MS (Int PZ) Bool)
(assert (forall ((x Int)) (exists ((X PZ))
(and (MS x X)
(forall ((y Int)) (=> (MS y X) (= y x)))))))
(check-sat)
sat
結果は、少なくともZのべき集合(整数)であり、Zのサブセット(一種の要素)への整数のメンバーシップをテストする述語であるモデルでPZ
あると予想しました。MS
PZ
しかし、z3は答えunsat
ました。
この結果を理解するのを手伝ってもらえますか?具体的には、z3はソートをどのように解釈しますInt
か?それは本当に無限と見なされますか?動的に宣言されたソート(ここではソートPZ
)はどうですか?