1 / 37

Logiche temporali

Logiche temporali. Torniamo all’esempio dell’ascensore. Nell’esempio dell’ascensore, visto nella lezione precedente, supponiamo di voler verificare le seguenti proprietà: Prima o poi ogni richiesta deve venire soddisfatta

jenis
Download Presentation

Logiche temporali

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Logiche temporali

  2. Torniamo all’esempio dell’ascensore • Nell’esempio dell’ascensore, visto nella lezione precedente, supponiamo di voler verificare le seguenti proprietà: • Prima o poi ogni richiesta deve venire soddisfatta • L’ascensore non attraversa mai un piano nel quale ci sia una richiesta pendente senza soddisfare tale richiesta Tecniche di Analisi di Programmi

  3. Proprietà comportamentali • Queste proprietà hanno a che fare con il comportamento dinamico del sistema. • Possono essere formalzzate usando una notazione del tipo “la posizione al tempo t deve garantire che…” • Possiamo usare la seguente notazione • H(t) è la posizione della cabina al tempo t • app(n,t) è una richiesta pendente al piano n al tempo t • serv(n,t) è il servizio al piano n al tempo t Tecniche di Analisi di Programmi

  4. Formalizzazione (1) Prima o poi ogni richiesta deve venire soddisfatta per ogni t, per ogni n: (se app(n,t) allora $t’>t: serv(n,t’)) Tecniche di Analisi di Programmi

  5. Formalizzazione (2) L’ascensore non attraversa mai un piano nel quale ci sia una richiesta pendente senza soddisfare tale richiesta Per ogni t, per ogni t’>t, per ogni n: se app(n,t) & H(t’) !=n & $ttrav: t £ ttrav£ t’ & H(ttrav)=n allora $tserv: t £ tserv£ t’ & serv(n, tserv) Tecniche di Analisi di Programmi

  6. Logiche temporali • Logiche che permettono di esprimere proprietà legate al tempo • Pnueli (1977) suggerisce di utilizzarle per la specifica di sistemi dinamici • Operatori che indicano “sempre”, “finché”,… Tecniche di Analisi di Programmi

  7. Logiche temporali • Linear Time • Ogni stato ha un unico successore • Sequenze infinite (words) • Linear Temporal Logic (LTL) • Branching Time • Ogni stato ha diversi successori • Alberi infiniti • Computation Tree Logic (CTL) Tecniche di Analisi di Programmi

  8. CTL* • CTL* serve per formalizzare proprietà degli stati che riguardano le esecuzioni di un sistema • Una esecuzione è una sequenza di stati. Ad ogni stato sono associate le proposizioni atomiche che sono vere in quello stato • Ci sono poi le costanti true e false, e i connettivi logici di congiunzione, disgiunzione, implicazione e negazione. • Parliamo di formule proposizionali quando ci riferiamo a formule in cui compaiono solo proposizioni atomiche e connettivi logici Tecniche di Analisi di Programmi

  9. Combinatori temporali • Permettono di parlare di sequenze di stati appartenenti ad una stessa esecuzione • X Se p è una proprietà dello stato corrente, Xp dice che il prossimo stato soddisferà p.Per esempio (p v Xp) dice che p è soddisfatta o nello stato corrente o nel prossimo stato (o in entrambi) • F Fp dice che uno stato futuro soddisferà povvero “ci sarà un tempo in cui p varrà (almeno una volta)” • G Gp dice che tutti gli stati futuri soddisfano povvero “p varrà sempre” • Gli operatori possono essere innestati. Ad esempio GFp dice che p sarà vera infinite volte nell’esecuzione considerata Tecniche di Analisi di Programmi

  10. Combinatori temporali • U pUq dice che a un certo punto q sarà verificata, e nel frattempo vale p.Esempio: G(alert -> (alarm U halt)) si legge: “ se sono in uno stato di allerta, l’allarme rimane attivato finché viene raggiunto lo stato di halt” • F è un caso speciale di U, infatti Fp è equivalente a true U p • Osservate che gli operatori introdotti finora (X,F,G,U) ci permettono di parlare di proprietà di una singola esecuzione Tecniche di Analisi di Programmi

  11. Path Quantifiers • A La formula Ap dice che tutte le esecuzioni che partono dallo stato corrente soddisfano la proprietà p • Attenzione a non confondere A con G: • Ap dice che tutte le esecuzioni che in questo momento sono possibili soddisfano p • Gp dice che p vale in ogni passo di una esecuzione che si considera • E La formula Ep dice che dallo stato corrente esiste un’esecuzione che soddisfa p Tecniche di Analisi di Programmi

  12. Combinazioni di A E F G • EFg dice che seguendo una qualche esecuzione è possibile raggiungere uno stato che soddisfa g Tecniche di Analisi di Programmi

  13. Combinazioni di A E F G • AFg dice che seguendo ogni esecuzione si raggiunge prima o poi uno stato che soddisfa g (g è inevitabile!) Tecniche di Analisi di Programmi

  14. Combinazioni di A E F G • EGg dice che esiste un’esecuzione nella quale g è sempre soddisfatta Tecniche di Analisi di Programmi

  15. Combinazioni di A E F G • AGg dice che in ogni esecuzione g è sempre soddisfatta Tecniche di Analisi di Programmi

  16. Combinazioni di A E F G • AGFg in ogni esecuzione (A) ad ogni istante di tempo (G) si incontrerà necessariamente prima o poi (F) uno stato che soddisfa g • AGEFg in ogni esecuzione (A) ad ogni istante di tempo è possibile raggiungere gQuindi AGEFg può essere verificata anche se esiste un’esecuzione in cui g non è verificata. • Osserva inoltre che Ag è equivalente a -E-g Tecniche di Analisi di Programmi

  17. Esempio • Un sistema di controllo del traffico: vogliamo garantire che non ci siano collisioni e che il traffico scorra… S E N Tecniche di Analisi di Programmi

  18. Specifica in CTL* • Safety (nothing bad happens) AG Ø (E_Go Ù (N_Go  S_Go)); • Liveness (something good happens) AG (Ø N_Go Ù N_Sense Þ AF N_Go); AG (Ø S_Go Ù S_Sense Þ AF S_Go); AG (Ø E_Go Ù E_Sense Þ AF E_Go); • Fairness constraints AF Ø(N_Go Ù N_Sense); AF Ø(S_Go Ù S_Sense); AF Ø(E_Go Ù E_Sense); AF=in ogni cammio prima o poi AG=in ogni cammino sempre Tecniche di Analisi di Programmi

  19. Semantica di CTL* • Vogliamo definire cosa significa, dato un automa A, che una formula g di CTL* è vera al tempo i di una esecuzione s di A (che non parte necessariamente dallo stato iniziale) • Questo si indica con A,s,i |= g • La definizione di |= è data per induzione sulla struttura della formula g Tecniche di Analisi di Programmi

  20. Semantica di CTL* • A,s,i |= p se p l(s(i)) cioè se p è vera nello stato i-esimo della sequenza s • A,s,i|= x se non è vero che A,s,i|= x • A,s,i|= x y se A,s,i|= x e A,s,i|= y • A,s,i|= x y se A,s,i|= p oppure A,s,i|= y • A,s,i|= X xif i<|s| e A,s,i+1|= x • A,s,i|= F x ifj, (|s| ≥ j ≥ 0):A,s,j|= x • A,s,i|= G x if j, (|s| ≥ j ≥ 0):A,s,j|= x • A,s,i|= x U y ifj, (|s| ≥ j ≥ 0):A,s,j|= y e k t.c. j > k≥ 0: A,s,k|= x Tecniche di Analisi di Programmi

  21. Semantica di CTL* (ctd.) • A,s,i|= E x se s’: s(0)…s(i) = s’(0)… s’(i) eA,s’,i|= x • A,s,i|= A x se s’: s(0)…s(i) = s’(0)… s’(i) vale A,s’,i|= x • Possiamo ora definere formalmente cosa significa che un automa soddisfa la formula xA|= x se e solo se per ogni esecuzione s diA: A,s,0|= x Tecniche di Analisi di Programmi

  22. CTL*, LTL, CTL • Il tempo è discreto (né continuo né denso!) • LTL è un frammento di CTL* dove mancano i quantificatori A ed EIn altre parole LTL parla di cammini senza preoccuparsi di come sono organizzato in un albero • CTL è il frammento di CTL* dove si richiede che ogni combinatore temporale sia nello scope di un path quantifier: i combinatori che si possono utilizzare sono quindi EX, AX, E_U_, A_U_, ecc. Tecniche di Analisi di Programmi

  23. Model Checking CTL • La componente fondamentale dell’algoritmo di model checking per CTL è una procedura di marcatura che opera su un automa, e che, a partire da una formula x di CTL, marca, per ogni stato q dell’automa e per ogni sottoformula y di x se y è soddisfatta nello stato q. • Parliamo di marcatura, perché il valore di y in q, denotato con q.y è calcolato e poi memorizzato. • Quando la marcatura di x è completa, è immediato verificare se A|= x guardando al valore di q0.x nello stato iniziale q0. Tecniche di Analisi di Programmi

  24. Risultati di complessità • Il problema di soddisfacibilità di LTL è PSPACE-completo. • LTL Model Checking ha complessità PSPACE-completa • Il problema di soddisfacibilità di CTL è EXPTIME-completo. • CTL Model Checking ha complessità polinomiale • Il problema di soddisfacibilità di CTL* è 2EXPTIME-completo. • CTL* Model Checking ha complessità PSPACE-completa Tecniche di Analisi di Programmi

  25. Rappresentare gli stati • Rappresentare gli stati mediante formule booleane • 2m stati possono essere codificati con m variabili proposizionali • Stati – congiunzione di proposizioni (o di negazioni d proposizioni) • Insieme di stati – disgiunzione di formule che codificano stati Esempio: m = 2, S={s1,s2,s3,s4} • Variabili proposizionali {a, b} • S={00, 01, 10, 11}={ab, a b, ab, ab} • {s1,s2}={00, 01}=(ab)(ab) Tecniche di Analisi di Programmi

  26. Rappresentazione di funzioni booleane • Una funzione booleana può essere rappresentata come albero binario • Ogni nodo interno è etichettato con una variabile booleana • Ogni nodo interno ha un successore etichettato con 1 e uno etichettato con 0 • I nodi terminali sono etichettati con 1 o 0 Tecniche di Analisi di Programmi

  27. x y z g y 1 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 0 0 1 1 0 1 0 1 1 0 0 1 1 1 1 0 z z 1 0 0 1 x x x x 1 1 1 0 0 1 0 0 0 1 1 0 1 0 0 1 g = (y (x  z))  (y  (x  z)) Tecniche di Analisi di Programmi

  28. OBDD • Tre regole di riduzione: • Condivisione degli stessi nodi terminali. (R1) • Test ridondanti (R2) • Condivisione degli stessi nodi non terminali (R3) Tecniche di Analisi di Programmi

  29. a1 1 0 b1 b1 0 1 1 0 a2 a2 a2 a2 0 1 1 1 0 0 1 0 b2 b2 b2 b2 b2 b2 b2 b2 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 Ordered Binary Decision Diagram (OBDD) (a1 b1)  (a2 b2) Tecniche di Analisi di Programmi

  30. Reduced Ordered BDD a1 (a1 b1)  (a2 b2) 1 0 b1 b1 0 1 1 0 a2 a2 a2 0 1 1 0 1 0 b2 b2 b2 b2 b2 b2 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 1 0 0 0 0 0 1 0 0 1 Tecniche di Analisi di Programmi

  31. Reduced Ordered BDD a1 (a1 b1)  (a2 b2) 1 0 b1 b1 0 1 1 0 a2 a2 0 1 1 0 b2 b2 b2 b2 0 1 0 1 0 1 0 1 1 0 0 1 0 1 0 0 1 Tecniche di Analisi di Programmi

  32. Reduced Ordered BDD a1 (a1 b1)  (a2 b2) 1 0 b1 b1 1 0 1 0 a2 0 1 b2 b2 0 1 0 1 1 0 0 1 0 Tecniche di Analisi di Programmi

  33. Reduced Ordered BDD a1 (a1 b1)  (a2 b2) 1 0 b1 b1 1 0 1 a2 0 0 1 b2 b2 1 0 0 1 1 0 Tecniche di Analisi di Programmi

  34. y z z x x x x 0 1 1 0 1 0 0 1 Reduced BDD Binary Decision Tree y z x 0 1 g = (y (x  z))  (y  (x  z)) Tecniche di Analisi di Programmi

  35. Ordered Binary Decision Diagrams • Dato un oridinamento fissato delle variabili, ogni funzione bolleana ha esattamente un BDD ridotto. • Gli OBDD sono oggetti canonici • Per testare se due formule booleane sono equivalenti è sufficiente verificare che il loro OBDD siano identici. • Questo è un risultato fondamentale per garantire l’efficienza del model checking Tecniche di Analisi di Programmi

  36. x1 x1 x2 x2 y1 y1 y1 y1 y1 y1 x2 y2 y2 y2 y2 1 0 1 0 Reduced OBDDs x1 < y1 < x2 < y2 x1 < x2 < y1 < y2 (x1 = y1 x2 = y2) Tecniche di Analisi di Programmi

  37. Genealogia Floyd/Hoare late 60s Aristotle 300’sBCE Kripke 59 Logics of Programs Temporal/ Modal Logics Büchi, 60 Tarski 50’s Pnueli late 70’s w-automata S1S Clarke/Emerson Early 80’s Park, 60’s m-Calculus Vardi/Wolper Kurshan mid 80’s CTL Model Checking Bryant, mid 80’s LTLModel Checking ATV QBF BDD Symbolic Model Checking late 80’s Tecniche di Analisi di Programmi

More Related