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