SMT-Lib 中是否有不等式运算符?
Is there an operator for inequality in SMT-Lib?
我知道我可以用简单的 (not (= a b))
断言不等式,但我想知道是否有一个运算符可以直接这样做。我已经尝试了所有想到的方法,包括 !=
、<>
、\=
(这不解析)、/=
、=/=
、neq
和 none 有效。
是否有专门的功能,或者我是否需要编写相等与否定?
是的。它被称为 distinct
,请参阅 https://smtlib.cs.uiowa.edu/papers/smt-lib-reference-v2.6-r2017-07-18.pdf
的第 3.7.1 节
请注意 distinct
可以接受任意数量的参数。例如:
(assert (distinct x y z))
表示:
(assert (and (distinct x y) (distinct x z) (distinct y z)))
我知道我可以用简单的 (not (= a b))
断言不等式,但我想知道是否有一个运算符可以直接这样做。我已经尝试了所有想到的方法,包括 !=
、<>
、\=
(这不解析)、/=
、=/=
、neq
和 none 有效。
是否有专门的功能,或者我是否需要编写相等与否定?
是的。它被称为 distinct
,请参阅 https://smtlib.cs.uiowa.edu/papers/smt-lib-reference-v2.6-r2017-07-18.pdf
请注意 distinct
可以接受任意数量的参数。例如:
(assert (distinct x y z))
表示:
(assert (and (distinct x y) (distinct x z) (distinct y z)))