温度逻辑表达式

时间:2013-02-18 15:47:47

标签: logic boolean-logic vdm++

我正在研究一些逻辑表达式。我想将两个表达式合并为一个但不确定如何。 我使用的是VDM Overture Tool

我正在研究一组5个温度。有些超过400,有些超过,等等。

当至少1个温度超过400时,我的第一个表达式为真:

OverLimit: TempRead -> bool
OverLimit(temp) == temp(1) > 400 or temp(2) > 400 or 
temp(3) > 400 or temp(4) > 400 or 
temp(5) > 400;`

当集合中的所有值都超过400时,第二个表达式为真:

ContOverLimit: TempRead -> bool 
ContOverLimit(temp) ==
temp(1) > 400 and temp(2) > 400 and 
temp(3) > 400 and temp(4) > 400 and 
temp(5) > 400;

我现在试图表达的是至少有一个温度超过400,但不是全部。

如何将这两者结合起来?

1 个答案:

答案 0 :(得分:2)

听起来你正在寻找一个存在量词。我猜测TempRead是一个序列,所以像:

exists i in set inds temp & temp(i) > 400

如果你的字面意思是“但不是全部”,你会想要一个额外的“和存在”来检查一个存在的< 400。

顺便说一句,要小心将两个exists表达式与and组合:你需要括起整个存在表达式,否则“and”子句被认为是第一个存在的一部分!