命題充足可能性 (量化子を使用) と線形演算を含む問題を解決しようとしています。
私は問題を定式化し、Z3 はそれを解決できますが、不当に長い時間がかかります。
戦術を特定してZ3を助けようとしてきましたが、あまり進歩していません(論理理論の知識はありません)。
以下は、私が解決しようとしているものの本質を捉えた非常に単純化された問題です。誰でも提案できますか?
ネルソン・オッペン法などを読んでみましたが、見慣れない表記が多く、習得に時間がかかりそうです。
また、Z3 ではユーザーがこれらの構成を微調整できますか? 最後に、これらの戦術を z3py で使用するにはどうすればよいですか?
(declare-datatypes () ((newtype (item1) (item2) (item3))))
(declare-fun f (newtype newtype) Bool)
(declare-fun cost (newtype newtype) Real)
(assert (exists ((x newtype)(y newtype)) (f x y)))
(assert (forall ((x newtype)(y newtype)) (=> (f x y) (> (cost x y) 0))))
(assert (forall ((x newtype) (y newtype)) (<= (cost x y) 5)))
(check-sat)
(get-model)