Эквивалентна ли эта формула CTL и что ее поддерживает?

Мне интересно, эквивалентны ли приведенные ниже формулы CTL, и если да, то можете ли вы помочь мне убедить себя, что это так? A(p U ( A(q U r))) = A(A(p U q) U r)

Я не могу придумать какие-либо модели, которые противоречат этому, и мои внутренности говорят мне, что формулы эквивалентны, но я не могу найти никаких эквивалентов, которые поддерживают это утверждение. Я пытался переписать эквивалентность A(p U q) == не (E ((не q) U не (p или q)) или EG (не q)) во что-то полезное, но потерпел неудачу несколько раз.

Я просмотрел материалы своего курса, а также Google, но ничего не могу найти. Однако я нашел здесь другой вопрос с таким же вопросом об эквивалентности, но без ответа, поэтому я пытаюсь сделать вторую попытку.

1 ответ

Решение

Примечание: этот ответ может быть поздно.

Однако, так как вопрос поднимался много раз, я думаю, что он все еще полезен.


Вопрос: есть A[p U A[q U r]] эквивалентно A[A[p U q] U r]?


Ответ: нет.

Чтобы доказать, что неравенство стоит, достаточно предоставить одну структуру Крипке A[p U A[q U r]] проверено, но A[A[p U q] U r] нет (или наоборот).

Теперь для простоты мы предполагаем иметь дело со структурой Крипке, в которой каждое состояние имеет только одно возможное будущее состояние. Поэтому мы можем забыть о A Модификатор и рассмотрим LTL- версию данной задачи: есть [p U [q U r]] эквивалентно [[p U q] U r] ?,

Давай сломаться [p U [q U r]]:

  • [q U r] верно для путей, которые соответствуют выражению {q}*{r}
  • [p U [q U r]] верно на пути, которые Mach {p}*{[q U r]} = {p}*{q}*{r}

Как насчет [[p U q] U r]?

  • [p U q] верно для путей, которые соответствуют выражению {p}*{q}
  • [[p U q] U r] верно на пути, которые Mach {[p U q]}*{r} = {{p}*{q}}*{r}

Сейчас, {p}*{q}*{r} != {{p}*{q}}*{r},

По факту, {p}*{q}*{r} соответствует любому пути, в котором последовательность p сопровождается r и нет q по пути.

Тем не мение, {{p}*{q}}*{r} не. Если путь содержит последовательность p то возникновение q до r является обязательным.

Таким образом, две формулы не эквивалентны.


Практический ответ:

Давайте закодируем структуру Крипке, которая предоставляет тот же контрпример, используя NuSMV

MODULE main ()
VAR
  p: boolean;
  q: boolean;
  r: boolean;

INVAR !q;

INIT
  !q & p & !r

TRANS
  r -> next(r);

TRANS
  p & !r -> next(r);

CTLSPEC A[p U A[q U r]];
CTLSPEC A[A[p U q] U r];

и проверь это:

~$ NuSMV -int
NuSMV > reset; read_model -i test.smv; go; check_property
-- specification A [ p U A [ q U r ]  ]   is true
-- specification A [ A [ p U q ]  U r ]   is false
-- as demonstrated by the following execution sequence
Trace Description: CTL Counterexample 
Trace Type: Counterexample 
-> State: 1.1 <-
  p = TRUE
  q = FALSE
  r = FALSE

Действительно, одно свойство проверено, а другое нет.

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