理解操作语义

时间:2014-05-08 08:24:08

标签: semantics operational

我有这个推导

(b,σ)→false  (skip,σ)→σ

(if b then c;w else skip)→σ

(顶行是前提条件,底线是表达式)

表达式是否意味着:

如果b为True,则执行命令c,否则执行w并跳过,

如果b为True,则执行命令c和命令w,否则跳过。

中间的分号令我困惑?!

另外,为什么我不必在前提条件中包含c?

感谢。

2 个答案:

答案 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。此外,这个问题可能是偏离主题的,因为它更多地是关于计算机科学而不是实际编程。