TLA +是否将xor运算符定义为语言本身的一部分,还是我必须自己定义?
答案 0 :(得分:4)
假设A \in BOOLEAN /\ B \in BOOLEAN
,在命题逻辑中称为“异或”的是不等式:
A # B
在相同的假设下等同于~ (A <=> B)
。当A, B
取非布尔值时,这两个公式不一定等价。运算符<=>
表示以下
/\ A \in BOOLEAN
/\ B \in BOOLEAN
/\ A = B
所以
(~ (A <=> B)) <=> \/ ~ A \in BOOLEAN
\/ ~ B \in BOOLEAN
\/ ~ (A = B)
因此,如果前两个析取是假的,那么<=>
和=
是等价的。否则可能是
/\ A \notin BOOLEAN
/\ A = B
可以满足A <=> B
。另见第10页和第2节。 TLA+ book的16.1.3。公式
(A \/ B) /\ ~ (A /\ B)
对于标识符A
和B
的非布尔值也有意义,因为TLA +是无类型的。所以
(15 \/ "a") /\ ~ (15 /\ "a")
是一个可能的值。据我所知,该语言未指定此公式是否与
具有相同的值15 # "a"