我正在研究一些逻辑表达式。我想将两个表达式合并为一个但不确定如何。 我使用的是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,但不是全部。
如何将这两者结合起来?
答案 0 :(得分:2)
听起来你正在寻找一个存在量词。我猜测TempRead是一个序列,所以像:
exists i in set inds temp & temp(i) > 400
如果你的字面意思是“但不是全部”,你会想要一个额外的“和存在”来检查一个存在的< 400。
顺便说一句,要小心将两个exists
表达式与and
组合:你需要括起整个存在表达式,否则“and”子句被认为是第一个存在的一部分!