Microsoft の Z3 SMT ソルバーを使用しており、カスタム ソートの定数を定義しようとしています。そのような定数はデフォルトでは等しくないようです。次のプログラムがあるとします。
(declare-sort S 0)
(declare-const x S)
(declare-const y S)
(assert (= x y))
(check-sat)
もちろん、同じ種類の 2 つの定数が等しいことは完全に可能であるため、これは "sat" を返します。定数が互いに異なる必要があるモデルを作成しているので、これは、フォームの公理を追加する必要があることを意味します
(assert (not (= x y)))
同じ種類の定数のすべてのペアに対して。ソートの各定数がデフォルトで一意になるように、このジェネリックを行う方法があるかどうか疑問に思っていました。