在TLA +中是否有xor(独占或)中缀运算符?

时间:2017-10-11 22:23:40

标签: tla+

TLA +是否将xor运算符定义为语言本身的一部分,还是我必须自己定义?

1 个答案:

答案 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)

对于标识符AB的非布尔值也有意义,因为TLA +是无类型的。所以

(15 \/ "a") /\ ~ (15 /\ "a")

是一个可能的值。据我所知,该语言未指定此公式是否与

具有相同的值
15 # "a"