Рис. 2.14. Автомат Бюхи для формулы «GF p»
В автомате Бюхи имеется набор допускающих состояний. На рис. 2.14
такое состояние отмечено двойным кругом. Если для некоторой
последовательности значений предикатов возможна такая
последовательность переходов в автомате Бюхи, что допускающие
состояния посещаются бесконечно часто, то говорят, что автомат
допускает эту последовательность значений предикатов.
Формула LTL и автомат Бюхи, построенный из нее, эквивалентны в
том смысле, что если некоторый путь (история работы программы)
удовлетворяет формуле, то он допускается автоматом Бюхи.
И наоборот, любая последовательность значений предикатов,
допускаемая автоматом Бюхи, удовлетворяет исходной формуле LTL.
Поскольку задача верификатора – найти контрпример, автомат Бюхи
строится для отрицания исходной формулы LTL. Таким образом,
автомат Бюхи допускает любые последовательности значений
предикатов, которые не удовлетворяют требованиям.
Для пояснения рассмотрим автомат, изображенный на рис 2.14. Если
существует момент времени, после которого p ни разу не выполнится,
то автомат в этот момент перейдет в допускающее состояние и
останется там навсегда. Таким образом, будет получен допускающий
путь. Автомат Бюхи на рис. 2.14 недетерминирован: возможны два
перехода из недопускающего состояния при невыполнении p. Кроме
того, часто автомат строится неполным: например, если автомат на
рис. 2.14 находится в допускающем состоянии и выполнено p, то не
существует активного перехода. В этом случае считается, что
вычисление не допускается. Действительно, при выполнении p
нарушится предположение о том, что, начиная с выбранного момента
времени, p не выполнится ни разу.
Следующий этап для верификации LTL-формулы – это
преобразование модели Крипке в автомат Бюхи. Пример модели
Крипке и автомата, полученного из нее, изображен на рис. 2.15.
При построении автомата из модели Крипке вместо состояний
предикатами помечаются переходы. Это делается достаточно просто:
добавляется одно начальное состояние, из которого создаются