Beräkningsträdlogik

Beräkningsträdlogik ( CTL ) är en förgreningstidslogik , vilket betyder att dess modell av tid är en trädliknande struktur där framtiden inte bestäms; det finns olika vägar i framtiden, varav vilken som helst kan vara en verklig väg som realiseras. Den används i formell verifiering av mjukvaru- eller hårdvaruartefakter, vanligtvis av mjukvaruapplikationer som kallas modellcheckers , som avgör om en given artefakt har säkerhets- eller livlighetsegenskaper . Till exempel kan CTL specificera att när något initialt villkor är uppfyllt (t.ex. alla programvariabler är positiva eller inga bilar på en motorväg går över två körfält), så undviker alla möjliga exekveringar av ett program något oönskat villkor (t.ex. dividera ett tal med noll eller två bilar som kolliderar på en motorväg). I det här exemplet kan säkerhetsegenskapen verifieras av en modellkontroll som utforskar alla möjliga övergångar från programtillstånd som uppfyller initialvillkoret och säkerställer att alla sådana exekveringar uppfyller egenskapen. Beräkningsträdlogik tillhör en klass av tidslogik som inkluderar linjär temporal logik (LTL). Även om det finns egenskaper som endast kan uttryckas i CTL och egenskaper som endast kan uttryckas i LTL, kan alla egenskaper som kan uttryckas i endera logiken också uttryckas i CTL* .

CTL föreslogs först av Edmund M. Clarke och E. Allen Emerson 1981, som använde den för att syntetisera så kallade synkroniseringsskelett , dvs abstraktioner av samtidiga program .

Syntax för CTL

Språket för välformade formler för CTL genereras av följande grammatik :

där sträcker sig över en uppsättning atomformler . Det är inte nödvändigt att använda alla anslutningar – till exempel består av en komplett uppsättning anslutningar, och de andra kan definieras med hjälp av dem.

  • betyder "längs alla vägar" (oundvikligen)
  • betyder 'längs åtminstone (det finns) en väg' (eventuellt)

Till exempel är följande en välformad CTL-formel:

Följande är inte en välformad CTL-formel:

Problemet med den här strängen är att endast kan uppstå när den paras ihop med en eller en .

CTL använder atomära propositioner som sina byggstenar för att göra uttalanden om tillstånden i ett system. Dessa propositioner kombineras sedan till formler med logiska operatorer och temporala operatorer .

Operatörer

Logiska operatorer

De logiska operatorerna är de vanliga: ¬, ∨, ∧, ⇒ och ⇔. Tillsammans med dessa operatorer kan CTL-formler också använda de booleska konstanterna sant och falskt .

Temporala operatörer

De temporala operatorerna är följande:

  • Kvantifierare över vägar
    • A Φ – A ll: Φ måste hålla på alla banor från det aktuella tillståndet.
    • E Φ – Finns : det finns minst en väg från det aktuella tillståndet där Φ gäller.
  • Sökvägsspecifika kvantifierare
    • X φ – Ne x t: φ måste hålla i nästa tillstånd (denna operator anges ibland N istället för X ).
    • G φ Globalt : φ måste hålla på hela den efterföljande banan.
    • F φ F inally: φ måste så småningom hålla (någonstans på den efterföljande banan).
    • φ U ψ U ntil: φ måste hålla åtminstone tills vid någon position ψ håller. Detta innebär att ψ kommer att verifieras i framtiden.
    • φ W ψ W eak tills: φ måste hålla tills ψ håller. Skillnaden med U är att det inte finns någon garanti för att ψ någonsin kommer att verifieras. W - operatören kallas ibland "om inte".

I CTL* kan de temporala operatorerna blandas fritt. I CTL måste operatören alltid grupperas i två: en vägoperatör följt av en statlig operatör. Se exemplen nedan. CTL* är strikt mer uttrycksfull än CTL.

Minimal uppsättning operatörer

I CTL finns minimala uppsättningar av operatörer. Alla CTL-formler kan transformeras till att endast använda dessa operatorer. Detta är användbart vid modellkontroll . En minimal uppsättning operatorer är: {true, ∨, ¬, EG , EU , EX }.

Några av de transformationer som används för temporala operatorer är:

  • EF φ == E [true U ( φ )] ( eftersom F φ == [true U ( φ )] )
  • AX φ == ¬ EX φ )
  • AG φ == ¬ EF φ ) == ¬ E [true U φ )]
  • AF φ == A [true U φ ] == ¬ EG φ )
  • A [ φ U ψ ] == ¬( E [(¬ ψ ) U ¬( φ ψ )] ∨ EG ψ ) )

Semantik för CTL

Definition

CTL-formler tolkas över övergångssystem . Ett övergångssystem är en trippel där är en uppsättning tillstånd , är en övergångsrelation, som antas vara seriell, dvs varje tillstånd har minst en efterföljare, och är en märkningsfunktion , tilldela propositionsbokstäver till stater. Låt vara en sådan övergångsmodell

med där F är mängden wffs över språket för M .

definieras relationen för semantisk entailment :

Karakterisering av CTL

Reglerna 10–15 ovan hänvisar till beräkningsvägar i modeller och är det som i slutändan kännetecknar "Beräkningsträdet"; de är påståenden om naturen hos det oändligt djupa beräkningsträdet som är rotat i det givna tillståndet .

Semantiska ekvivalenser

Formlerna och sägs vara semantiskt ekvivalenta om något tillstånd i någon modell som uppfyller den ena också uppfyller den andra. Detta betecknas

Det kan ses att A och E är dualer, som är universella respektive existentiella beräkningsvägkvantifierare: .

Dessutom är det G och F också.

Därför kan en instans av De Morgans lagar formuleras i CTL:

Det kan visas med hjälp av sådana identiteter att en delmängd av de tidsmässiga CTL-kopplingarna är adekvata om den innehåller minst en av och minst en av och de booleska kopplingarna.

De viktiga ekvivalenserna nedan kallas expansionslagarna ; de gör det möjligt att utveckla verifieringen av en CTL-anslutning mot dess efterföljare i tid.

Exempel

Låt "P" betyda "Jag gillar choklad" och Q betyder "Det är varmt ute."

  • AG .P
"Jag kommer att gilla choklad från och med nu, oavsett vad som händer."
  • EF .P
"Det är möjligt att jag kanske gillar choklad någon dag, åtminstone för en dag."
  • AF . EG .P
"Det är alltid möjligt (AF) att jag plötsligt börjar gilla choklad för resten av tiden." (Obs: inte bara resten av mitt liv, eftersom mitt liv är ändligt, medan G är oändligt).
  • EG . AF .P
"Beroende på vad som händer i framtiden (E) är det möjligt att jag under resten av tiden (G) kommer att vara garanterad minst en (AF) chokladliknande dag framför mig. Men om något går någonsin fel, då är alla spel avstängda och det finns ingen garanti för om jag någonsin kommer att gilla choklad."

De två följande exemplen visar skillnaden mellan CTL och CTL*, eftersom de tillåter att till-operatören inte är kvalificerad med någon sökvägsoperatör ( A eller E ):

  • AG (P U Q)
"Från och med nu tills det är varmt ute kommer jag att gilla choklad varje dag. När det väl är varmt ute är alla vad som gäller om jag kommer att gilla choklad längre. Åh, och det kommer garanterat att vara varmt ute så småningom, om än bara för en enda dag."
  • EF (( EX .P) U ( AG .Q))
"Det är möjligt att: det kommer så småningom en tid då det kommer att vara varmt för alltid (AG.Q) och att det före den tiden alltid kommer att finnas något sätt att få mig att gilla choklad nästa dag (EX.P)."

Relationer med andra logiker

Beräkningsträdlogik (CTL) är en delmängd av CTL* såväl som av den modala μ-kalkylen . CTL är också ett fragment av Alur, Henzinger och Kupfermans alternating-time temporal logic ( ATL).

Beräkningsträdlogik (CTL) och linjär temporal logik (LTL) är båda en delmängd av CTL*. CTL och LTL är inte likvärdiga och de har en gemensam delmängd, vilket är en riktig delmängd av både CTL och LTL.

  • FG .P finns i LTL men inte i CTL.
  • AG (P⇒(( EX .Q)∧( EX ¬Q))) och AG.EF .P finns i CTL men inte i LTL.

Tillägg

CTL har utökats med andra ordningens kvantifiering och till kvantifierad beräkningsträdlogik (QCTL). Det finns två semantiker:

  • trädets semantik. Vi märker noder i beräkningsträdet. QCTL* = QCTL = MSO över träd. Modellkontroll och tillfredsställelse är tornet kompletta.
  • strukturens semantik. Vi märker stater. QCTL* = QCTL = MSO över grafer . Modellkontroll är PSPACE-komplett men tillfredsställelse är obestämbar .

En minskning från modellkontrollproblemet för QCTL med struktursemantik till TQBF (true quantified Boolean Formler) har föreslagits, för att dra fördel av QBF-lösare.

Se även

externa länkar