TLA+ 是否将 xor 运算符定义为语言本身的一部分,还是我必须自己定义?
问问题
351 次
1 回答
4
假设 ,A \in BOOLEAN /\ B \in BOOLEAN
在命题逻辑中称为“XOR”的是不等式:
A # B
在相同的假设下等价于~ (A <=> B)
。当A, B
取非布尔值时,这两个公式不一定等价。以下公理可以描述运算符<=>
THEOREM
ASSUME
/\ A \in BOOLEAN
/\ B \in BOOLEAN
PROVE
(A <=> B) = (A = B)
A
对于和的非布尔值,未指定B
的值。A <=> B
在对布尔运算符的适度解释中,未指定是否A <=> B
将非布尔值用于非布尔值A
或B
. 在布尔运算符的自由解释中\A A, B: (A <=> B) \in BOOLEAN
,如TLA 第 2 版:初步指南中所述。
另请参见第 10 页(它为参数的布尔值定义了布尔运算符)和 Sec。TLA+ 书的 16.1.3 。公式
(A \/ B) /\ ~ (A /\ B)
对于标识符的非布尔值A
和B
(TLA+ 无类型)也有意义。所以
(15 \/ "a") /\ ~ (15 /\ "a")
是一个可能的值。我不知道 TLA+ 是否指定这个公式是否具有相同的值
15 # "a"
于 2017-10-12T06:23:06.863 回答