我有这个推导
(b,σ)→false (skip,σ)→σ
(if b then c;w else skip)→σ
(顶行是前提条件,底线是表达式)
表达式是否意味着:
如果b为True,则执行命令c,否则执行w并跳过,
或
如果b为True,则执行命令c和命令w,否则跳过。
中间的分号令我困惑?!
另外,为什么我不必在前提条件中包含c?
感谢。
答案 0 :(得分:3)
每个操作语义都不同,问题没有指定上下文,所以我只能猜测答案。
我会将if b then c; w else skip
解析为if b then {c; w} else skip
,即问题的第二种解释。推导似乎是b
为假的情况,因此未提及c
,因为如果b
为false,则不执行c
。相反,提到skip
是因为它已被执行。
答案 1 :(得分:1)
这只是回答你问题的一部分,但是:c
不包含在前提条件中,因为它不依赖于前提条件。我在某种程度上无法理解第二行中的w
。此外,这个问题可能是偏离主题的,因为它更多地是关于计算机科学而不是实际编程。