我有这个推导
(b,σ)→false (skip,σ)→σ
(if b then c;w else skip)→σ
(上面一行是先决条件,下面一行是表达式)
表达式的意思是:
如果b为True,则执行命令c,否则执行命令w并跳过,
或
如果b为True,则执行命令c和命令w,否则跳过。
中间的分号把我弄糊涂了?!
还有,为什么我不必在前提条件中包含c ?
谢谢。
每个操作语义都是不同的,问题没有指定上下文,所以我只能猜测答案。
我将if b then c; w else skip
解析为if b then {c; w} else skip
,即问题的第二种解释。这个推导似乎是关于b
为假的情况,所以没有提到c
,因为如果b
为假,则不执行c
。之所以提到skip
,是因为它被执行了。
这只是回答了你的部分问题,然而:c
不包括在先决条件中,因为它不依赖于先决条件。不知何故,我也无法理解第二行中的w
。此外,这个问题可能跑题了,因为它更多的是关于计算机科学而不是实际的编程。