【发布时间】:2019-07-24 00:35:53
【问题描述】:
我正在参加软件分析课程,并被问到以下问题。它与编程逻辑有关,因此我在这里发布它的原因。 (我也将其发布到数学堆栈溢出站点。):
假设阴影部分表示所有程序不包含被零除错误,黑色矩形内的未阴影部分表示所有程序都包含此类错误。
假设 A1、A2 和 A3 是检查被零除错误的不同程序分析。每个分析要么接受(即声明它没有被零除错误)或拒绝(即声明至少存在一个被零除错误)给定程序。
对于每个分析,该分析接受的程序包含在相应的椭圆形内,而该分析拒绝的程序包含在相应的椭圆形外。
参考问题4,假设我们设计了一个分析A4,它在输入程序P上表现如下:
if (A1 rejects P) reject P;
else if (A3 accepts P) accept P;
else run forever;
A4 声音好吗? A4完整吗?
我选择 A4 是合理的,因为 A1 接受有效的程序并拒绝无效的程序。这被标记为正确。我说它不完整,因为 A4 不接受确实是有效程序并被标记为错误的程序。想知道是否有人可以为我阐明这一点?提前致谢。
【问题讨论】:
-
我投票结束这个问题,因为它属于 scicomp.stackexchange.com
标签: debugging math logic analysis