Понимание операционной семантики

У меня есть этот вывод

(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 во второй строке тоже. Кроме того, этот вопрос может быть не по теме, поскольку он больше касается компьютерных наук, чем реального программирования.

Другие вопросы по тегам