Articulo de referencia

Reloj (verificación de modelo)

En la verificación de modelos , un subcampo de la informática , un reloj es un objeto matemático que se utiliza para modelar el tiempo. Más precisamente, un reloj mide cuánto ti...

En la verificación de modelos , un subcampo de la informática , un reloj es un objeto matemático que se utiliza para modelar el tiempo. Más precisamente, un reloj mide cuánto tiempo ha transcurrido desde que ocurre un evento determinado; en este sentido, un reloj es una abstracción de un cronómetro . En el modelo de un programa específico, el valor del reloj puede ser el tiempo transcurrido desde que se inició el programa o desde que ocurrió un evento determinado en él. Estos relojes se utilizan en la definición de autómatas temporizados , autómatas de señales , lógica temporal proposicional temporizada y lógica temporal de reloj . También se utilizan en programas como UPPAAL , que implementan autómatas temporizados. [ 1 ]

Generalmente, el modelo de un sistema utiliza varios relojes. Estos relojes son necesarios para registrar un número limitado de eventos. Todos ellos están sincronizados, lo que significa que la diferencia de valor entre dos relojes fijos permanece constante hasta que uno de ellos se reinicia. En términos de electrónica, esto significa que la fluctuación del reloj es nula.

Ejemplo

Supongamos que queremos modelar un ascensor en un edificio de diez plantas. Nuestro modelo puede tenernorte{\displaystyle n}relojesdo0,,do9{\displaystyle c_{0},\dots ,c_{9}}, de tal manera que el valor del relojdoi{\displaystyle c_{i}}es el tiempo que alguien tuvo que esperar el ascensor en el pisoi{\displaystyle i}Este reloj se pone en marcha cuando alguien llama al ascensor en el pisoi{\displaystyle i}(y el ascensor no ha sido llamado a este piso desde la última vez que lo visitó). Este reloj se puede apagar cuando el ascensor llega al pisoi{\displaystyle i}En este ejemplo, en realidad necesitamos diez relojes distintos porque necesitamos rastrear diez eventos independientes. Otro relojs{\displaystyle s}Puede utilizarse para comprobar cuánto tiempo permaneció un ascensor en un piso determinado.

Un modelo de este ascensor puede entonces usar esos relojes para afirmar si el programa del ascensor satisface propiedades tales como "suponiendo que el ascensor no se mantiene en un piso durante más de quince segundos, entonces nadie tiene que esperar el ascensor durante más de tres minutos". Para comprobar si esta afirmación se cumple, basta con comprobar que, en cada ejecución del modelo en la que el relojs{\displaystyle s}siempre es menor que quince segundos, cada relojdoi{\displaystyle c_{i}}Se apaga antes de que transcurran tres minutos.

Definición

Formalmente, un conjuntoincógnita{\displaystyle X}de relojes es simplemente un conjunto finito [ 1 ] : 191 . Cada elemento de un conjunto de relojes se llama reloj. Intuitivamente, un reloj es similar a una variable en lógica de primer orden , es un elemento que puede usarse en una fórmula lógica y que puede tomar varios valores diferentes.

Valoraciones de relojes

Una valoración o interpretación de un reloj [ 1 ] : 193ν{\displaystyle \nu }encimaincógnita={incógnita1,,incógnitanorte}{\displaystyle X=\{x_{1},\dots ,x_{n}\}}generalmente se define como una función deincógnita{\displaystyle X}al conjunto de los números reales no negativos. De forma equivalente, una valoración puede considerarse como un punto enR0norte{\displaystyle \mathbb {R} _{\geq 0}^{n}}.

La tarea inicialν0{\displaystyle \nu _{0}}es la función constante que envía cada reloj a 0. Intuitivamente, representa el tiempo inicial del programa, donde todos los relojes se inicializan simultáneamente.

Se me asignó un relojν{\displaystyle \nu }y un verdaderot0{\displaystyle t\geq 0},ν+t{\displaystyle \nu +t}indica la asignación de reloj que envía cada relojincógnitado{\displaystyle x\in C}aν(incógnita)+t{\displaystyle \nu (x)+t}Intuitivamente, representa la valoraciónν{\displaystyle \nu }después de lo cualt{\displaystyle t}unidades de tiempo transcurridas.

Dado un subconjuntordo{\displaystyle r\subseteq C}de relojes,ν[r0]{\displaystyle \nu [r\rightarrow 0]}denota la asignación similar aν{\displaystyle \nu }en el que los relojes der{\displaystyle r}se reinician. Formalmente,ν[r0]{\displaystyle \nu [r\rightarrow 0]}envía cada relojincógnitar{\displaystyle x\in r}a 0 y cada relojincógnitar{\displaystyle x\not \in r}aν(incógnita){\displaystyle \nu (x)}.

Relojes inactivos

El programa UPPAAL introduce la noción de relojes inactivos . [ 2 ] Un reloj está inactivo en algún momento si no hay ningún futuro posible en el que se compruebe el valor del reloj sin reiniciarlo primero. En nuestro ejemplo anterior, el relojdoi{\displaystyle c_{i}}Se considera inactivo cuando el ascensor llega al pisoi{\displaystyle i}y permanece inactivo hasta que alguien llama al ascensor en el pisoi{\displaystyle i}.

Al permitir relojes inactivos, una valoración puede asociar un relojincógnita{\displaystyle x}a algún valor especial{\displaystyle \bot }para indicar que está inactivo. Siν(incógnita)={\displaystyle \nu (x)=\bot }entonces(ν+t)(incógnita){\displaystyle (\nu +t)(x)}también es igual a{\displaystyle \bot }.

Restricción de reloj

Una restricción de reloj atómico es simplemente un término de la formaincógnitado{\displaystyle x\sim c}, dóndeincógnita{\displaystyle x}es un reloj,{\displaystyle \sim }es un operador de comparación, como < , , = , o > , ydonorte{\displaystyle c\in \mathbb {N} }es una constante integral. En nuestro ejemplo anterior, podemos usar las restricciones del reloj atómico .doi180{\displaystyle c_{i}\leq 180}para afirmar que la persona en el pisoi{\displaystyle i}Esperó menos de tres minutos ys>15{\displaystyle s>15}para afirmar que el ascensor permaneció en algún piso durante más de quince segundos. Una valoraciónν{\displaystyle \nu }Satisface una valoración de reloj atómicoincógnitado{\displaystyle x\sim c}si y solo siν(incógnita)do{\displaystyle \nu (x)\sim c}.

Una restricción de reloj es una conjunción finita de una restricción de reloj atómico o es la constante "verdadera" (que puede considerarse como la conjunción vacía). Una valoraciónν{\displaystyle \nu }satisface una restricción de reloji=1norteincógnitaiidoi{\displaystyle \bigwedge _{i=1}^{n}x_{i}\sim _{i}c_{i}}si satisface cada restricción del reloj atómicoincógnitaiidoi{\displaystyle x_{i}\sim _{i}c_{i}}.

Restricción diagonal

Dependiendo del contexto, una restricción de reloj atómico también puede tener la formaincógnitaiincógnitaj+do{\displaystyle x_{i}\sim x_{j}+c}. Dicha restricción se denomina restricción diagonal, porqueincógnita1=incógnita2+do{\displaystyle x_{1}=x_{2}+c}define una línea diagonal enR02{\displaystyle \mathbb {R} _{\geq 0}^{2}}.

Permitir restricciones diagonales puede reducir el tamaño de una fórmula o de un autómata utilizado para describir un sistema. Sin embargo, la complejidad del algoritmo puede aumentar al permitir restricciones diagonales. En la mayoría de los sistemas que utilizan relojes, permitir restricciones diagonales no aumenta la expresividad de la lógica. A continuación, explicamos cómo codificar dichas restricciones con variables booleanas y restricciones no diagonales.

Una restricción diagonalincógnitaiincógnitaj+do{\displaystyle x_{i}\sim x_{j}+c}puede simularse utilizando restricciones no diagonales de la siguiente manera. Cuandoincógnitaj{\displaystyle x_{j}}se reinicia, compruebe siincógnitaido{\displaystyle x_{i}\sim c}Se cumple o no. Guarda esta información en una variable booleana.bi,j,do{\displaystyle b_{i,j,c}}y reemplazarincógnitaiincógnitaj+do{\displaystyle x_{i}\sim x_{j}+c}por esta variable. Cuandoincógnitai{\displaystyle x_{i}}se reinicia, se establecebi,j,do{\displaystyle b_{i,j,c}}verdadero si{\displaystyle \sim }es < o o si{\displaystyle \sim }es = ydo=0{\displaystyle c=0}.

La forma de codificar una variable booleana depende del sistema que utiliza el reloj. Por ejemplo, UPPAAL admite variables booleanas directamente. Los autómatas temporizados y los autómatas de señales pueden codificar un valor booleano en sus ubicaciones. En la lógica temporal de reloj sobre palabras temporizadas, la variable booleana puede codificarse utilizando un nuevo reloj.incógnitai,j,do{\displaystyle x_{i,j,c}}, cuyo valor es 0 si y solo sibi,j,do{\displaystyle b_{i,j,c}}es falso. Es decir,incógnitai,j,do{\displaystyle x_{i,j,c}}se reinicia siempre queincógnitai,j,do{\displaystyle x_{i,j,c}}Se supone que es falso. En la lógica temporal proposicional cronometrada , la fórmulaincógnitai.ϕ{\displaystyle x_{i}.\phi }, que se reinicianincógnitai{\displaystyle x_{i}}y luego evalúaϕ{\displaystyle \phi }, puede ser reemplazado por la fórmulaincógnitai.((incógnitaiincógnitaj+doϕ)(¬incógnitaiincógnitaj+doϕ)){\displaystyle x_{i}.((x_{i}\sim x_{j}+c\implies \phi _{\top })\land (\neg x_{i}\sim x_{j}+c\implies \phi \bot ))}, dóndeϕ{\displaystyle \phi _{\top }}yϕ{\displaystyle \phi _{\bot }}son copias de las fórmulasϕ{\displaystyle \phi }, dóndeincógnitaiincógnitaj+do{\displaystyle x_{i}\sim x_{j}+c}se reemplazan por la constante verdadera y falsa respectivamente.

Conjuntos definidos por restricciones de reloj

Una restricción de reloj define un conjunto de valoraciones. En la literatura se consideran dos tipos de dichos conjuntos.

Una zona es un conjunto no vacío de valoraciones que satisface una restricción de reloj. Las zonas y las restricciones de reloj se implementan utilizando la matriz de límites de diferencia .

Dado un modelo METRO{\displaystyle M}, utiliza un número finito de constantes en sus restricciones de reloj. SeaK{\displaystyle K}sea ​​la mayor constante utilizada. Una región es una zona no vacía en la que no hay ninguna restricción mayor queK{\displaystyle K}se utilizan y, además, de tal manera que sea mínimo para la inclusión.

Véase también

Notas

  1. 1 2 3 Alur, Rajeev; Dill, David L (25 de abril de 1994). "Una teoría de autómatas temporizados" (PDF) . Theoretical Computer Science . 126 (2): 183– 235. doi : 10.1016/0304-3975(94)90010-8 .
  2. Behrmann, Gerd; David, Alexandre; Larsen, Kim G (28 de noviembre de 2006). "Un tutorial sobre Uppaal 4.0" (PDF) : 28.{{cite journal}}: Para citar una revista se requiere |journal=( ayuda )