CTL* är en superuppsättning av beräkningsträdlogik (CTL) och linjär temporal logik (LTL). Den kombinerar fritt vägkvantifierare och temporala operatorer. Precis som CTL är CTL* en logik för förgreningstid. Den formella semantiken för CTL*-formler definieras med avseende på en given Kripke-struktur .
Historia
LTL hade föreslagits för verifiering av datorprogram, först av Amir Pnueli 1977. Fyra år senare, 1981, uppfann EM Clarke och EA Emerson CTL- och CTL -modellkontroll . CTL* definierades av EA Emerson och Joseph Y. Halpern 1983.
CTL och LTL utvecklades oberoende före CTL*. Båda sublogikerna har blivit standarder i modellkontrollgemenskapen , medan CTL* är av praktisk betydelse eftersom det ger en uttrycksfull testbädd för att representera och jämföra dessa och andra logiker. Detta är förvånande [ citat behövs ] eftersom beräkningskomplexiteten för modellkontroll i CTL* inte är värre än för LTL: de ligger båda i PSPACE .
Syntax
Språket för välformade CTL*-formler genereras av följande otvetydiga (med avseende på parentes) kontextfri grammatik :
där sträcker sig över en uppsättning atomformler . Giltiga CTL*-formler byggs med den icke-terminala . Dessa formler kallas tillståndsformler , medan de som skapas av symbolen kallas sökvägsformler . (Ovanstående grammatik innehåller några redundanser; till exempel såväl som implikation och ekvivalens kan definieras som bara för booleska algebror (eller propositionslogik ) från negation och konjunktion, och den temporala operatorerna X och U är tillräckliga för att definiera de andra två .)
Operatörerna är i princip samma som i CTL . I CTL måste dock varje temporal operator ( ) direkt föregås av en kvantifierare, medan detta inte krävs i CTL*. Den universella vägkvantifieraren kan definieras i CTL* på samma sätt som för klassisk predikatkalkyl även om detta inte är möjligt i CTL fragment.
Exempel på formler
- CTL*-formel som varken finns i LTL eller i CTL:
- LTL-formel som inte finns i CTL:
- CTL-formel som inte finns i LTL:
- CTL*-formel som finns i CTL och LTL:
Anmärkning: När du tar LTL som delmängd av CTL*, prefixes alla LTL-formler implicit med den universella sökvägskvantifieraren .
Semantik
Semantiken för CTL* definieras med avseende på någon Kripke-struktur . Som namnen antyder tolkas tillståndsformler med avseende på tillstånden för denna struktur, medan sökvägsformler tolkas över vägar på den.
Ange formler
Om ett tillstånd i Kripke-strukturen uppfyller en tillståndsformel betecknas det . Denna relation definieras induktivt enligt följande:
-
för alla sökvägar som börjar på
-
för någon väg som börjar på
Sökvägsformler
Nöjdhetsrelationen för sökvägsformler och en bana definieras också induktivt. För detta, låt beteckna undersökvägen :
Beslutsproblem
Modellkontroll av CTL* är PSPACE-komplett och tillfredsställbarhetsproblemet är 2EXPTIME -komplett.
Se även
-
Amir Pnueli : Programs tidsmässiga logik. Proceedings of the 18th Annual Symposium on Foundations of Computer Science (FOCS), 1977, 46–57. DOI= 10.1109/SFCS.1977.32
-
E. Allen Emerson , Joseph Y. Halpern : "Ibland" och "inte aldrig" återbesökt: om förgrening kontra linjär tid tidslogik. J. ACM 33, 1 (januari 1986), 151-178. DOI= http://doi.acm.org/10.1145/4904.4999
- Ph. Schnoebelen: Komplexiteten av kontroll av tidslogikmodeller. Advances in Modal Logic 2002: 393–436
externa länkar