Следующий алгоритм представляет собой приблизительный эскиз проверки модели с помощью Логика дерева вычислений (CTL):
Утверждается, что:
Задача проверки модели для CTL заключается в проверке для заданной системы переходов TS и формулы CTL Φ, если TS | = Φ ... Основная процедура дляПроверка модели CTL довольно проста:
- множество Sat (Φ) всех состояний, удовлетворяющих Φ, вычисляется рекурсивно, а из
- следует, что TS | = Φ тогда и только тогда, когда I⊆ Sat (Φ), где I - множество начальных состояний TS ...
Рекурсивное вычисление Sat (Φ) в основном сводится к обходу дерева разбора снизу вверхФормула состояния CTL Φ.
Итак, по сути (насколько я понимаю), вы предоставляете системе формулу CTL Φ, которая представляет собой дерево разбора, а затем она выполняет поиск по состояниям и черезCTL анализирует дерево и проверяет, удовлетворяет ли какое-либо состояние Φ.
Вопрос в следующем:
В методе Sat (Φ) примерно то, что происходит (символический материал).Они говорят (2) ниже, где S - это состояния, а A - атомные суждения.Интересно, как они на самом деле проверяют состояния, , учитывая, что программа на самом деле не работает .Это (по крайней мере, я думаю) Проверка символьной модели .Хотите знать, можно ли примерно объяснить, как работает проверка состояния?Кажется, что-то вроде генерации ввода должно произойти, но в то же время я думаю, что, возможно, этого не произойдет.
Причина, по которой мне трудно понятьэто.Скажем, одно из утверждений относится к функции addTricky(x, y)
, которая реализована следующим образом:
function addTricky(x, y) {
if (y >= 1) return 3
return x + y
}
Тогда у меня будет логическое выражение в некоторой логике, которая говорит "перед addTricky: z"= 0. после z = addTricky (x, y): y> = 1 -> z = 3; y <1; z = x + y ". </p>
В основном пытаюсь получить вопрос шаблоны .Если Sat (Φ) делает в основном то, что я только что сделал в этом булевом выражении, мне интересно, вызывает ли он когда-либо / вызывает функцию addTricky
, или он может все это как-то символически делать.Я пока не понимаю, как это работает. Интересно, можно ли объяснить основы работы с символами?Для меня я продолжаю воображать, что он выполняет своего рода модульное тестирование, например, подключает addTricky(1, 1)
и проверяет все возможности.Может быть, это «явное исследование состояния» или символическое исследование, не уверен.
Большое спасибо за помощь!
(1) Для каждого узладерево разбора, т. е. для каждой подформулы ula в Φ вычисляется множество состояний Sat (Ψ), для которых выполняется Ψ.
(2) Sat(a) = {s ∈ S | a ∈ L(s)}, for any a ∈ A