CTL*

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 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:

  1. dla wszystkich ścieżek począwszy od
  2. 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