0
Z3Pyを使用して、Z3が決定するプログラムを構築しようとしましたが、Human
の種類は空です。Z3が要素のないソートを提案できないのはなぜですか?
from z3 import *
from z3_helper import Z3Helper
Human = DeclareSort("Human")
is_mortal = Function("is_mortal", Human, BoolSort())
h = Const('h', Human)
s = Solver()
s.add([
ForAll([h], And(is_mortal(h), Not(is_mortal(h))))
])
print s.check()
s.model()
しかし、その代わりHuman
が空のモデルを返すので、それはunsat
を返します。どうしてこれなの?
「すべての人が死ぬ」公理を削除すると、モデルとして空のセットが返されます。
const h
の存在は、少なくとも1つのHuman
の存在が必要であることを意味しますか?