170 likes | 411 Views
Temporālās loģikas. Specifikāciju valodu pamati. Temporālās loģikas: ievads. Izteikumu loģika: katrs izteikums patiess vai aplams noteiktā modelī, visos modeļos, nevienā modelī; Modelis: M: AP {true, false } ( AP – elementāro apgalvojumu / izteikumu kopa)
E N D
Temporālās loģikas Specifikāciju valodu pamati
Temporālās loģikas: ievads Izteikumu loģika: katrs izteikums patiess vai aplams noteiktā modelī, visos modeļos, nevienā modelī; Modelis: M: AP {true, false} (AP – elementāro apgalvojumu / izteikumu kopa) Temporālā (izteikumu) loģika: Modelis: lineārā laika struktūra: M = <S,L,x>S – stāvokļu kopa;L – izteikumu patiesuma funkcija: L:AP S {true,false}x – stāvokļu virkne: x: N S x=<x(0),x(1), … > Lineārā laika temporālā loģika:Katra LTL formula ir patiesa vai aplama noteiktā modelī, kas ir lineārā laika struktūra (visos šādos modeļos, nevienā modelī). Saturiskā interpretācija programmu analīzē: Programmas darbības vēsture kā lineārā laika struktūra. Programma P “apmierina” LTL specifikāciju , ja “spēkā” uz visām P darbības vēsturēm. Zarošanās struktūras loģika (branching time logic) – apgalvojumi izteikti par visu programmas stāvokļu pāreju koku kopumā.
Lineārā laika izteikumu loģika PLTL Modelis: lineārā laika struktūra: M = <S,L,x>S – stāvokļu kopa;L – izteikumu patiesuma funkcija: L:AP S {true,false}x – stāvokļu virkne: x: N S x=<x(0),x(1), … > LTL formulas: 1) P AP M |= P, ja x(0)|= P(t.i. L(P,x(0))=true ) 2) p, p q, p q, p q, p q, true, false, ja p,q – LTL formulas (tradicionālā interpretācija, piemēram, M |= p q tad un tikai tad, ja M |= p vai M |= q ) 3) □p – “vienmēr” p (p – LTL formula) Ja p=P AP, tad M |= □ P tad un tikai tad, ja i x(i)|= P 4) ◊p – “kādreiz” p (p – LTL formula) Ja p=P AP, tad M |= ◊P tad un tikai tad, ja i x(i)|= P 5)p U q - “p līdz q”(p,q – LTL formulas) Ja p=P,q=Q AP, tad M |= P U Qtad un tikai tad, ja (1) i x(i)|= Q un (2) j j<i x(j)|= P 6) ○p – “nākošais” p(p – LTL formula)Ja p=P AP, tad M |= ○P tad un tikai tad, ja x(1)|= P
Lineārā laika izteikumu loģika (2) Modelis: lineārā laika struktūra: M = <S,L,x>S – stāvokļu kopa;L – izteikumu patiesuma funkcija: L:AP S {true,false}x – stāvokļu virkne: x: N S x=<x(0),x(1), … > Definējam: x<i> = <x(i),x(i+1),… >, M<i> = <S,L,x<i>> M|= pvietā var rakstīt arīx|= p, ja S,L - skaidri LTL formulas (ar semantiku vispārīgajā gadījumā): 1) P AP M |= P, ja x(0)|= P(t.i. L(P,x(0))=true ) 2) p, p q, p q, p q, p q, true, false 3) □p – “vienmēr” p M |= □ p tad un tikai tad, ja i M<i>|= p 4) ◊p – “kādreiz” p M |= ◊p tad un tikai tad, ja i M<i>|= p 5)p U q - “p līdz q” M |= p U qtad un tikai tad, ja (1) i M<i>|= q un (2) j j<i M<j>|= p 6) ○p – “nākošais” pM |= ○p tad un tikai tad, ja M<1>|= p
Lineārā laika izteikumu loģika (3) PLTL formula p ir izpildāma, ja eksistē tāda lineārā laika struktūra M, kurai M |= p. PLTL ir vispārpatiesa, ja M |= p ir spēkā jebkurai lineārā laika struktūrai M (pieņemot, ka M un p atomāro apgalvojumu nosaukumu kopas ir saskaņotas). Rakstam |= p . |= true p p |= ◊p true U p |= false true |= □p (◊ p) |= p W q (p U q) □p (“p waiting for q”) |= p B q (( p) U q) (“p before q”) |= □ p ◊p |= ◊ p □ p |= ○ p ○p (tikai viena nākotne) |=((p) U q) (p B q) |= □ □ p □ p |= ◊ ◊ p ◊ p |= □ ◊ □ p ◊□ p |= ◊ □ ◊ p □◊ p |= ◊(p q) ◊p ◊q |= □(p q) □ p □ q |= ((p q) U r) (p U r) (q U r) Otrādi nav spēkā |= (p U (q r)) (p U q) (p U r)
Piezīme: PLTL vs. FOLLO FOLLO – First-Order Language of Linear Order (pirmās kārtas lineārā sakārtojuma valoda). P,Q, … – vienargumenta predikāta simboli (kopa AP) t,u, … - individuāli mainīgie (ar vērtībām no N) < - simbols “mazāks” Formulas: ::= t < u | P(t) | 1 2 | 1 2 | 1 | t 1(t- brīvs mainīgais) Semantiskais modelis: L*: N AP {true, false}, definē katra predikāta patiesumu katrā punktā, ļauj noteikt katras slēgtas formulas patiesumu. FOLLO modelis L* atbilst PLTL lineārā laika struktūrai <S,L,x>, ja tajos sakrīt kopas AP un katram P AP i N L*(i,P) = L(x(i),P) . Rakstam <S,L,x> |= , ja L* |= . Rezultāts. Katrai FOLLO formulai (u) ar vienu brīvu mainīgo eksistē atbilstoša PLTL formula , tāda, ka <S,L,x> |= (0) tad un tikai tad, ja <S,L,x> |= jebkurai lineārā laika struktūrai <S,L,x> .
PLTL ar pagātnes modalitātēm PLTL paplašinājums, iespēja pateikt “vienmēr līdz šim”, “kādreiz līdz šim”. Semantiskais modelis: <S,L,x,i>, i – punkts vēsturē x, runājam par <S,L,x,i> |= , rakstam ○ saīsināti <x,i> |= “Nākotnes formulām”: <x,i> |= □p, ja j (ja j i tad <x,j> |= p)<x,i> |= ◊p, ja j (j i un <x,j> |= p)<x,i> |= p U q, ja j (j i un <x,j> |= q, un k (ja ik<j tad <x,k> |= p))<x,i> |= ○p, ja <x,i+1> |= p Pagātnes formulas: <x,i> |= p U- q, ja j (j i un <x,j> |= q, un k (ja i k>j tad <x,k> |= p))<x,i> |= ○-p, ja i > 0 un <x,i-1> |= p Atvasinātās pagātnes formulas:<x,i> |= □ - p, ja j (ja j i tad <x,j> |= p)<x,i> |= ◊-p, ja j (j i un <x,j> |= p), un citas, … p ir iniciāli izpildāma, ja <M,0> |= p kādai lineārā laika struktūrai M. p ir globāli izpildāma, ja eksistē M un i, ka <M,i> |= p. Vispārpatiesums, ekvivalence iniciālās un globālās versijās. Globāli PLTLB ir spēcīgāka, nekā PLTL. Iniciāli – vienādi spēcīgas. Pamatā lietosim iniciālo izpildāmības, ekvivalences, vispārpatiesuma variantus.
LTL formulu interpretācija pār programmām Programmas: paralēlas, reaktīvas (“reālā laika sistēmas”) P ---> <S,,s0P> - stāvokļu pāreju sistēma SS, s0P S ---> Comp(P) – darbības vēsturu kopa x =<x(0),x(1),…> Comp(P), ja x(0) = s0P , i x(i) x(i+1) Loģiskā formula: uzdota, izmantojot noteiktu atomāro apgalvojumu kopu AP Nepieciešams: “patiesuma funkcija” L: S AP {true, false} Formula “ir spēkā” uz programmas P (ņemot vērā patiesuma funkciju L) tad un tikai tad, ja <S,L,x> |= visiem x Comp(P). Patiesuma funkcija L “vienkāršos piemēros” bieži saprotama no konteksta informācijas (bet ja nav saprotama, tad atklāti jānorāda, kā iegūstama).
Pirmās kārtas lineārā temporālā loģika (FOLTL) Pirmās kārtas lokālā valoda L + Temporālās saites L simboli: apgalvojumi (P,Q,…), predikāti (,,…), funkcijas (f,g,…), konstantes (c,d,…), mainīgie (x,y,…), - vienādība, , - kvantori. Termi: t ::= c | y | f(t1,…, tn) Atomāras formulas: a ::= P | (t1,…, tn) | t1 t2 Formulas: p ::= a | p1 p2 | p1 | y p1(citas var tikt definētas) Semantika: Interpretācija I piešķir konkrētas vērtības P, , f, c, y, kas balstītas uz noteiktu apgabalu D. FOLTL simboli – globāli (vienādi visos stāvokļos) un lokāli. , f, c – vienmēr globāli. P, x – var būt lokāli un var būt globāli. FOLTL termi: t ::= c | y | f(t1,…, tn) | t1+ (t1+ - terma t1 vērtība “nākošajā” stāvoklī) FOLTL formulas: p ::= a | p1 p2 | p1 | y p1 | p1U p2 | ○p1 Semantika: Pirmās kārtas lineārā laika struktūra M=<S,L,x>, kur L(s) katram stāvoklim s S ir interpretācija, kas piešķir vērtības visiem simboliem. Semantika definēta standarta veidā, kombinējot PLTL un L. Katram globālam simbolam w L(s)(w) = L(s’)(w) s,s’ S
FOLTL piemērs: programmas darbības apraksts while x <> y doif x < y then y := y-x else x := x-y fi od □ ( ( x = y x+ = x y+ = y ) ( x < y x+ = x y+ = y-x ) ( x > y x+ = x-y y+ = y ) ) Formula nosaka, kā var mainīties x un y vērtības. Formula apraksta bezgalīgu stāvokļu virkni. Galīga virkne tiek kodēta, atkārtojot līdz bezgalībai galīgās virknes beigu stāvokli (var būt arī citas vienošanās attiecībā uz galīgu virkņu kodēšanu).
Paralēlas sistēmas: nediskriminācija Nediskriminācija (fairness): programmas darbības vēstures raksturojums Programmas pāreēju attiecība sastāv no galīga skaita dažādām pārejām 1, 2, …, n enabled(i,s) = s’: s i s’ enabled(i,x) = s’: x(0) i s’ Pāreja i iespējama no x pirmā stāvokļa taken(i,x) = x(0) i x(1) Pāreja i tiek veikta no x pirmā stāvokļa Pieņemsim, ka mums ir predikāti enabled(i) un taken(i), ka <S,L,x> |= enabled(i) tad un tikai tad, ja enabled(i,x) ir spēkā un <S,L,x> |= taken(i) tad un tikai tad, ja taken(i,x) ir spēkā weakly_fair(i) == ◊□ enabled(i) □◊taken(i) Vājā nediskriminācija Ja kādā virknē pāreja i ir nepārtraukti iespējama, sākot no kādas vietas, tad tā tiek bezgalīgi bieži izpildīta (Nav tā, ka pāreja ir nepārtraukti iespējama un tiek visu laiku bloķēta). strongly_fair(i) == □◊ enabled(i) □◊taken(i) Stingrā nediskriminācija Ja kādā virknē pāreja i ir iespējama bezgalīgi bieži, tad tā tiek bezgalīgi bieži izpildīta (Nav tā, ka pāreja tiek laiku pa laikam piedāvāta un tiek vienmēr bloķēta).
Nediskriminācijas modelēšana FOLTL: piemērs enabled(i,x) = s’: x(0) i s’ Pāreja i iespējama no x pirmā stāvokļa taken(i,x) = x(0) i x(1) Pāreja i tiek veikta no x pirmā stāvokļa Raksturot enabled(i), taken(i) kā sintaktiskus predikātus. Multipāreju sistēma: <Var,S,T,B>Var – mainīgo kopa (lokāli, fleksibli mainīgie)S – stāvokļu kopa, T – galīga pāreju kopa, B – sākuma nosacījums. Var = {y1,y2,…,yn}, Var+ = {y1+,y2+,…,yn+} Katra pāreja t uzdota ar pārejas nosacījumu: r[t] (Var,Var+) = C[t](Var) (y1+=e1) (y2+=e2) … (yn+=en) Tad enabled(t) = C[t], taken(t) = r[t] (Var,Var+) weakly_fair(t) == ◊□ enabled(t) □◊taken(t) strongly_fair(t) == □◊ enabled(t) □◊taken(t)
Temporālo īpašību veidi Drošības īpašība p:kaut kas “slikts” nenotiks.Katrai virknei x = <x(0),x(1),…>, kas neapmierina p, eksistē galīgs sākuma fragments x = <x(0),x(1),…, x(k)>, kuram ne uz viena bezgalīga turpinājuma nav spēkā p.(ir “slikti” jau uz <x(0),x(1),…, x(k)> un vēlāk nevar kļūt vairs “labi”). Sintaktiskais raksturojums drošības īpašībām: □p, kur p – tīra pagātnes formula. Dzīvības (liveness) īpašība p:kaut kas “labs” galu galā notiks.Katra galīga stāvokļu virkne var tikt turpināta līdz bezgalīgai virknei, kas apmierina p. Sintaktiskais raksturojums: sk. Emerson Piemēram, formulas ar veidu ◊p, □◊p, ◊□p, kur p – elementārs (stāvokli raksturojošs) apgalvojums, vai arī noteikta veida pagātnes formula. Literatūrā “dzīvības” īpašības tiek sauktas arī par progresa īpašībām, aplūkotas dažādas “progresa klases”.
Drošības īpašību piemēri Globāls invariants: □q Lokāls invariants: □(q) Daļējā korektība: □(after_P q), p □(after_P q) (var pierādīt, ka atbilst drošības īpašības formai) Brīvība no dedlokiem: □(enabled(t1) enabled(t2) … enabled(tm)) Savstarpējā izslēgšana: □ (in_C1 in_C2) Stingrā precedence: □[(in_T1 in_N2) (in_C2) W in_C1 ] Loop forever do [N1; T1; C1] || Loop forever do [N2; T2; C2]
Progresa īpašību piemēri Apstāšanās: ◊ after_P Pilnā korektība: p ◊ (after_P q) Temporālā implikācija: □ (p ◊ q) Pieeja resursam: □ (in_T1 ◊ in_C1) Signāla nosūtīšana nedrošā buferī: □ (□ ◊ send ◊ receive) Brīvība no live-lock □ ◊ in_L
TL Verifikācijas metodes A. Deduktīvas (ar pierādījuma sistēmām) B. Modeļbāzētas (mēģinājumi automātiski konstruēt formulai modeli, galvenokārt izteikumu TL gadījumā) Deduktīvie pierādījumi. Drošības īpašības: invarianta metode p, □(p ○p) |= □p Progresa īpašības: tranzitivitāte □(p ◊q) , □(q ◊r) |= □(p ◊r) nediskriminācijas pieņēmumi: ◊□ enabled(t) □ ◊ taken(t) □ ◊ enabled(t) □ ◊ taken(t) labi sakārtotas kopas:□ (p(a) ◊ (b<a (p(b) q))) |= □ ((a p(a) ) ◊ q) Plašāk: sk. Emerson
Modeļbāzētā PLTL verifikācija Dota PLTL formula p (vai formulu kopa {p1,p2,…,pk}). 1. Veikt p dekompozīciju par elementāro formulu kopām (katra no kopām uzrāda iespēju, kā “izpildīt” p). Elementāras formulas: (i) AP un to negācijas, (ii) ○ - formulas. Ja vajadzīgs, atkārtoti, lieto likumus: q { {q} } ○ q { {○ q} } q1 q2 { {q1,q2} } q1 q2 { {q1}, {q2} } q1 U q2 { {q2}, {q1, ○ (q1 U q2)} } (q1 U q2) { { q1, q2}, { q2, ○ (q1 U q2)} } 2. Ja p * {F1,F2,…,Fk}, tad katram i veido X-pārejas: {q1,q2, ○p1, ○p2} {p1, p2} 3. Attiecība definē pāreju sistēmu; automāts uz bezgalīgajiem vārdiem. Stretta akceptēšanas nosacījums. Meklē bezgalīgus ceļus, kas piepilda visas uzstādītās eventualitātes (U labā puse).