2013-09-17 6 views
1

Я рассуждаю об упражнении Хоар Логика.Hoare тройной с неизвестной переменной в постусловии

Я должен найти все логические выражения B и все программы S и P, которые удовлетворяют тройную {true} if B then S; if B then P; {a >= 0}, при условии, что оценка B не может изменить хранилище, но исполнение S может изменить его и изменить значение B ,

В частности, я не знаю, что могу сказать о a, потому что он присутствует только в постусловии, и я никогда не нашел такого примера.

Благодарим за помощь!

+0

Вы можете просто использовать 'Ā' в' S 'и/или' P'. Если 'B' является ложным, то ни' S', ни 'P' не выполняются, и поэтому единственным способом для' a' быть больше равным '0' будет какая-то инициализация по умолчанию. У вас есть такая вещь? Если 'B' истинно, то постсостояние выполняется для' {B} S {a> = 0, ~ B} 'и любого' P' (поскольку тогда 'P' не выполняется) или' {B} S {B } 'и' {B} P {a> = 0} '. – chris

ответ

0

(мой предыдущий ответ был неправ.)

Вопрос вроде открытого состава, так как существует бесконечное количество выражений (B) и программ (S и P), удовлетворяющих тройная. Кроме того, тройка достаточно сложна, чтобы предотвратить сокращение задачи до простого общего ответа.

В принципе вы можете разбить его следующим образом:

  • Для всех состояний, в которых B является ложным, a >= 0 должны иметь (в противном случае тройным в целом не может держать)
  • Для государств, в которых B является true, программа S; if B then P должна гарантировать, что a >= 0
  • Это справедливо для всех S, B и P таким образом, что ...
    • либо S делает B ложные и a >= 0
    • или S делает B верно, и ...

т.д.

 Смежные вопросы

  • Нет связанных вопросов^_^