Jaka jest różnica między LTL a CTL?


12

Przeczytałem już przykłady formuł w CTL, ale nie w LTL i vice versa, ale mam problem z uzyskaniem mentalnego zrozumienia formuł LTL i naprawdę, co jest w istocie różnicą.


1
Mnóstwo notatek w interwebach radzi sobie z tym problemem. Czy szukałeś „różnicy między LTL a CTL”?
Dave Clarke

1
Spróbuj zapisać proste formuły i ocenić ich semantykę na strukturach Kripke.
Vijay D,

Odpowiedzi:


21

Aby naprawdę zrozumieć różnicę między LTL i CTL, musisz przestudiować semantykę obu języków. Formuły LTL oznaczają właściwości, które będą interpretowane przy każdym uruchomieniu programu. Dla każdego możliwego wykonania (przebiegu), które może być postrzegane jako sekwencja zdarzeń lub stanów w linii - i dlatego nazywa się to „czasem liniowym” - sprawdzanie satysfakcji w przebiegu bez możliwości przełączenia na inny przebieg podczas sprawdzania. Z drugiej strony, semantyka CTL sprawdza formułę dla wszystkich możliwych przebiegów i spróbuje albo wszystkich możliwych przebiegów ( operator A ), albo tylko jednego przebiegu ( operator E ), gdy spojrzy się na gałąź.

W praktyce oznacza to, że niektórych wzorów każdego języka nie można podać w innym języku. Na przykład właściwość resetowania (ważna właściwość osiągalności przy projektowaniu obwodu) stwierdza, że ​​zawsze istnieje możliwość, że stan może zostać osiągnięty podczas przebiegu, nawet jeśli nigdy nie zostanie osiągnięty ( reset EF EF ). LTL może jedynie stwierdzić, że stan resetowania został rzeczywiście osiągnięty, a nie, że można go osiągnąć.

Z drugiej strony formuły LTL nie można przetłumaczyć na CTL. Ta formuła oznacza właściwość stabilności: przy każdym uruchomieniu programu s będzie w końcu prawdą do końca programu (lub na zawsze, jeśli program nigdy się nie zatrzyma). CTL może dostarczyć tylko formułę, która jest zbyt ścisła ( AF AG ) lub zbyt liberalna ( AF EG ). Drugi jest wyraźnie błędny. Po raz pierwszy nie jest to takie proste. Ale AF AG jest błędne. Rozważ system, który zapętla się na A1 , może przejść z A1 do B, a następnie przejdzie do A2 przy następnym ruchu. Następnie system pozostanie włączonysStan A2 na zawsze. Wtedy „system w końcu pozostanie w stanie A ” jest właściwością typu . Oczywiste jest, że ta właściwość utrzymuje się w systemie. Jednak AF AG s puszka nie uchwycić tę właściwość, ponieważ jest odwrotnie: jest prowadzony w których system zawsze będzie w stanie, z którego ostatecznie przechodzi w bieg non A państwo.s

Nie wiem, czy to odpowiada na twoje pytanie, ale chciałbym dodać kilka komentarzy.

Dyskutuje się o najlepszej logice wyrażania właściwości do weryfikacji oprogramowania ... ale prawdziwa debata jest gdzie indziej. LTL może wyrażać ważne właściwości do modelowania systemu oprogramowania (uczciwość), gdy CTL musi mieć nową semantykę (nową relację satysfakcji), aby je wyrazić. Ale algorytmy CTL są zwykle bardziej wydajne i mogą wykorzystywać algorytmy oparte na BDD. Więc ... nie ma najlepszego rozwiązania. Jak dotąd tylko dwa różne podejścia.

Jeden z komentatorów sugeruje artykuł Vardiego „Rozgałęzienie a czas liniowy: ostateczne starcie” .


zobacz dyskusję na temat LTL vs CTL autorstwa Vardi: „Rozgałęzienie kontra czas liniowy: ostateczne starcie”
Guy

dziękuję bardzo, właśnie tego szukałem!
Anonimowy Tchórz

1

Jeśli podano jeden obiekt (np. Ślad w przypadku LTL), rozważasz tylko jedną przyszłość na każdy punkt w czasie, w CTL masz ich mnóstwo.

W szczególności nextdaje unikalne działanie w LTL, ale (potencjalnie) cały zestaw w CTL.


6
Ale zwykle stosuje się formułę LTL do wszystkich uruchomień systemu, a nie tylko do jednego, tym samym wypełniając lukę między jednym / wieloma przyszłymi problemami. Bardziej precyzyjnie byłoby powiedzieć, że LTL zajmuje się czasem liniowym, podczas gdy CTL zajmuje się czasem rozgałęzienia.
Dave Clarke,

4
Mówiąc, w LTL uważasz, że jedna przyszłość jest jak mówienie w CTL, że rozważasz jeden stan. Satysfakcja jest definiowana w ten sposób. Nie chodzi o to, ile przyszłości, ale o strukturę przyszłości. W jednym jest ślad, w drugim drzewo.
Vijay D,

@Vijay - rzeczywiście, struktura ma znaczenie. Np. Nie możesz po prostu wziąć formuły LTL, przekształcić ją jak FGp -> AF AG p i uzyskać równoważną formułę CTL (te dwie formuły nie są równoważne; ponadto FGp nie jest wyrażalny w CTL, a AF AG p nie jest wyrażalny w LTL ).
jkff

Zakładałem, że OP zna formalną definicję i prosi o jakąś intuicję, stąd moja próba. Czy tę odpowiedź można uratować, mówiąc „jedna przyszłość na model”?
Raphael

Nie umiem powiedzieć, co zna PO. Na przykład, czy jest dla nich jasne, jaki jest model w każdym przypadku?
Vijay D
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.