Понимание операционной семантики
У меня есть этот вывод
(b,σ)→false (skip,σ)→σ
(if b then c;w else skip)→σ
(Верхняя строка является предварительным условием, а нижняя - выражением)
Означает ли выражение:
Если b - Истина, тогда выполните команду c, иначе сделайте w и пропустите,
или же
Если b - True, то выполните команду c и команду w, иначе пропустите.
Точка с запятой в середине сбивает меня с толку?!
Кроме того, почему я не должен включать c в предварительное условие?
Благодарю.
2 ответа
Каждая операционная семантика различна, и вопрос не определяет контекста, поэтому я могу только догадываться об ответе.
Я бы разобрал if b then c; w else skip
как if b then {c; w} else skip
вторая интерпретация вопроса. Вывод, кажется, о том, что b
ложно, так c
не упоминается, потому что если b
ложно, c
не выполняется. Вместо, skip
упоминается, потому что он выполнен.
Это просто отвечает на часть вашего вопроса, однако: c
не входит в предварительное условие, поскольку оно не зависит от предварительного условия. Я как-то не могу понять смысл w
во второй строке тоже. Кроме того, этот вопрос может быть не по теме, поскольку он больше касается компьютерных наук, чем реального программирования.