Sintaxis y semántica Un ejemplos de especificación Procesos concurrentes Lógica Temporal Lineal Pedro Cabalar Depto. Computación Universidade da Coruña, SPAIN 4 de mayo de 2006 Pedro Cabalar LTL Sintaxis y semántica Un ejemplos de especificación Procesos concurrentes Outline 1 Sintaxis y semántica 2 Un ejemplos de especificación Cruces de tren 3 Procesos concurrentes Pedro Cabalar LTL Sintaxis y semántica Un ejemplos de especificación Procesos concurrentes Sintaxis Es la de cálculo proposicional (∧, ∨, →, ¬) más: op. unarios: = “para siempre” ♦ = “en algún momento futuro” = “en el instante siguiente” op. binarios que representan “hasta que”: U (versión fuerte) y W (versión débil) Pedro Cabalar LTL Sintaxis y semántica Un ejemplos de especificación Procesos concurrentes Semántica Dado un conjunto de proposiciones Σ, un estado s es una valoración de certeza s : Σ −→ {T , F }. Definition (Interpretación) Una interpretación I es una secuencia de estados s0 , s1 , s2 , . . . posiblemente infinita. Pedro Cabalar LTL Sintaxis y semántica Un ejemplos de especificación Procesos concurrentes Definition (Satisfacción de una fórmula) Sea I = s0 , s1 , . . . y sea i ≥ 0. Decimos que I, i |= α si se cumple: I, i |= p si p ∈ si (para p ∈ Σ) I, i |= α si I, j |= α para todo j ≥ i I, i |= ♦α si I, j |= α para algún j ≥ i I, i |= α si I, i + 1 |= α I, i |= α U β si existe n ≥ i, I, n |= β y además I, j |= α para todo i ≤ j<n. I, i |= α W β si I, i |= α o bien I, i |= α U β Pedro Cabalar LTL Sintaxis y semántica Un ejemplos de especificación Procesos concurrentes Algunas relaciones interesantes α ↔ ¬♦¬α ♦α ↔ ¬¬α α ↔ α ∧ α ♦α ↔ α ∨ ♦α (α → α) → (α → α) α U β ↔ (α W β) ∧ ♦β α W β ↔ (α U β) ∨ β α ↔ > U α ♦α ↔ α W ⊥ α U β ↔ β ∨ α ∧ (α U β) Pedro Cabalar LTL Sintaxis y semántica Un ejemplos de especificación Procesos concurrentes Cruces de tren Cruces de tren 1 Línea férrea de vía única. Cruces con carreteras. 2 Objetivo: especificar propiedades que debe cumplir. 3 Ejemplos de proposiciones que representan eventos a = “Un tren se está aproximando" c = “Un tren está cruzando" p = “La luz está parpadeando" b = “La barrera está bajada" Pedro Cabalar LTL Sintaxis y semántica Un ejemplos de especificación Procesos concurrentes Cruces de tren Especicación de algunas propiedades 1 Cuando un tren esté cruzando, la barrera debe estar bajada Solución: (c → b) 2 Si un tren se aproxima o cruza, la luz debe estar parpadeando Solución: (a ∨ c → p) 3 Si la barrera está subida y la luz apagada, entonces no se aproxima ni cruza ningún tren Solución: (¬b ∧ ¬p → ¬a ∧ ¬c) Pedro Cabalar LTL Sintaxis y semántica Un ejemplos de especificación Procesos concurrentes Cruces de tren Especicación de algunas propiedades 1 Si un tren se aproxima, la barrera estará bajada antes de que cruce Solución: (a → ¬c W b) 2 Si un tren ha terminado de cruzar, la barrera se terminará levantando Solución: ((c U ¬c) → ♦(¬c → ♦b) 3 La barrera será levantada un número infinito de veces Solución: ♦¬b Pedro Cabalar LTL Sintaxis y semántica Un ejemplos de especificación Procesos concurrentes Cruces de tren Especicación de algunas propiedades 1 Si un tren se aproxima, entonces terminará cruzando y después dejará de cruzar sin que ningún tren se aproxime. 2 . . . esto es, los trenes no son infinitos y existen huecos entre trenes. Solución: (a → ♦(c ∧ ♦(¬c ∧ ¬a))) Pedro Cabalar LTL Sintaxis y semántica Un ejemplos de especificación Procesos concurrentes Escenario general Procesos concurrentes p1 , . . . , pn compartiendo variables v1 , . . . , vm Cada instrucción de pi tiene una etiqueta Lij . Un estado (global) tiene el aspecto: v1 v2 ... 12 −8 . . . Pedro Cabalar p1 p2 . . . pn 20 L111 L24 . . . Ln9 vm LTL Sintaxis y semántica Un ejemplos de especificación Procesos concurrentes Axiomas de progreso Li : v := <expr>; Li+1 : S Li → ♦Li+1 Li : if B then Li ∧ B → ♦Lt Lt : S1 else Li ∧ ¬B → ♦Lf Lf : S2 Li : while B do Li ∧ B → ♦Lt Lt : S1; Lf : S2 Li ∧ ¬B → ♦Lf Pedro Cabalar LTL