CTL* jest nadzbiorem obliczeniowej logiki drzewa (CTL) i liniowej logiki czasowej (LTL). Swobodnie łączy kwantyfikatory ścieżki i operatory czasowe. Podobnie jak CTL, CTL* jest logiką czasu rozgałęzienia. Formalna semantyka formuł CTL* jest zdefiniowana w odniesieniu do danej struktury Kripkego .
Historia
LTL został zaproponowany do weryfikacji programów komputerowych, po raz pierwszy przez Amira Pnueli w 1977 roku. Cztery lata później, w 1981 roku, EM Clarke i EA Emerson wynaleźli CTL i sprawdzanie modeli CTL . CTL* został zdefiniowany przez EA Emersona i Josepha Y. Halperna w 1983 roku.
CTL i LTL zostały opracowane niezależnie przed CTL*. Obie logiki podrzędne stały się standardami w zajmującej się sprawdzaniem modeli , podczas gdy CTL* ma znaczenie praktyczne, ponieważ zapewnia ekspresyjne stanowisko testowe do reprezentowania i porównywania tych i innych logik. Jest to zaskakujące [ potrzebne źródło ] , ponieważ złożoność obliczeniowa sprawdzania modelu w CTL* nie jest gorsza niż w przypadku LTL: oba leżą w PSPACE .
Składnia
Język dobrze sformułowanych formuł CTL* jest generowany przez następującą jednoznaczną (w odniesieniu do nawiasów) gramatykę bezkontekstową :
gdzie mieści w zbiorze atomowych . Prawidłowe formuły CTL * są budowane przy użyciu nieterminalnych . Formuły nazywane są formułami stanu , podczas gdy formuły utworzone przez symbol nazywane są formułami . (Powyższa gramatyka zawiera pewne nadmiarowości; na przykład, jak również implikacja i równoważność można zdefiniować tak, jak tylko dla lub zdań ) z negacji i koniunkcji oraz czasowego operatory X i U są wystarczające do zdefiniowania dwóch pozostałych .)
Operatorzy są zasadniczo tacy sami jak w CTL . Jednak w CTL każdy operator czasowy ( kwantyfikatorem, podczas gdy w CTL * nie Kwantyfikator ścieżki uniwersalnej można zdefiniować w CTL * w taki sam sposób, jak w przypadku klasycznego rachunku predykatów , chociaż nie jest to możliwe w CTL fragment.
Przykłady formuł
- Formuła CTL *, która nie jest ani w LTL, ani w CTL:
- Formuła LTL, której nie ma w CTL:
- Formuła CTL, której nie ma w LTL:
- Formuła CTL *, która jest w CTL i LTL:
Uwaga: przyjmując LTL jako podzbiór CTL *, każda formuła LTL jest domyślnie poprzedzona uniwersalnym kwantyfikatorem ścieżki .
Semantyka
Semantyka CTL* jest zdefiniowana w odniesieniu do pewnej struktury Kripkego . Jak sugerują nazwy, formuły stanów są interpretowane w odniesieniu do stanów tej struktury, podczas gdy formuły ścieżek są interpretowane na podstawie ścieżek w niej.
Formuły stanowe
Jeśli stan struktury spełnia formułę stanu, jest oznaczony . Relacja ta jest zdefiniowana indukcyjnie w następujący sposób:
-
dla wszystkich ścieżek począwszy od
-
dla pewnej ścieżki począwszy od
Formuły ścieżki
satysfakcji formuł ścieżki i ścieżki jest również definiowane indukcyjnie. W tym celu niech ścieżkę podrzędną :
Problemy decyzyjne
Sprawdzanie modelu CTL* jest PSPACE-zupełne, a problem spełnialności jest 2EXPTIME- zupełne.
Zobacz też
-
Amir Pnueli : Czasowa logika programów. Materiały z 18. dorocznego sympozjum na temat podstaw informatyki (FOCS), 1977, 46–57. DOI=10.1109/SFCS.1977.32
-
E. Allen Emerson , Joseph Y. Halpern : „Czasami” i „nie nigdy” ponownie: o rozgałęzieniach i liniowej logice czasowej. J. ACM 33, 1 (styczeń 1986), 151–178. DOI= http://doi.acm.org/10.1145/4904.4999
- Ph. Schnoebelen: Złożoność sprawdzania modelu logiki czasowej. Postępy w logice modalnej 2002: 393–436
Linki zewnętrzne