stringtranslate.com

Lógica temporal de las acciones

La lógica temporal de acciones ( TLA ) es una lógica desarrollada por Leslie Lamport , que combina la lógica temporal con una lógica de acciones . Se utiliza para describir comportamientos de sistemas concurrentes y distribuidos . Es la lógica subyacente al lenguaje de especificación TLA+ .

Detalles

Las afirmaciones en la lógica temporal de acciones tienen la forma , donde A es una acción y t contiene un subconjunto de las variables que aparecen en A . Una acción es una expresión que contiene variables con y sin prima, como . El significado de las variables sin prima es el valor de la variable en este estado . El significado de las variables con prima es el valor de la variable en el siguiente estado . La expresión anterior significa que el valor de x hoy , más el valor de x mañana por el valor de y hoy , es igual al valor de y mañana .

El significado de es que A es válido ahora o las variables que aparecen en t no cambian. Esto permite pasos entrecortados, en los que ninguna de las variables del programa cambia sus valores.

Idiomas de especificación

Existen varios lenguajes de especificación que implementan la lógica temporal de acciones. Cada lenguaje tiene características y casos de uso únicos:

TLA+

TLA+ es el lenguaje de especificación predeterminado y más utilizado para TLA. Es un lenguaje matemático diseñado para describir el comportamiento de sistemas concurrentes y distribuidos. La especificación está escrita en estilo funcional.

----------------------------- MÓDULO RelojHora -----------------------------EXTIENDE NaturalesVARIABLES horaInit == hora = 1Siguiente == hora' = SI hora = 12 ENTONCES 1 SI NO hora + 1Especificación == Init /\ [][Siguiente]_hora==================================================== ============================

PlusCal

PlusCal es un lenguaje de algoritmos de alto nivel que se traduce a TLA+. Permite a los usuarios escribir algoritmos en una sintaxis similar a la de un pseudocódigo, que luego se convierten automáticamente en especificaciones TLA+. Esto hace que PlusCal sea ideal para quienes prefieren pensar en términos de algoritmos en lugar de máquinas de estados.

----------------------------- MÓDULO RelojHora ----------------------EXTIENDE Naturales(*--algoritmo HourClock { hora variable = 1; { mientras (VERDADERO) { hora := (hora % 12) + 1; } }} --*)

Quinta

Quint es otro lenguaje de especificación que se traduce a TLA+. Quint combina la sólida base teórica de la lógica temporal de acciones (TLA) con herramientas de desarrollo y verificación de tipos de última generación. A diferencia de PlusCal, los operadores y palabras clave de Quint tienen una traducción uno a uno a TLA+.

Abeja efervescente

FizzBee [1] es un lenguaje de especificación de nivel superior que utiliza una sintaxis similar a la de Python y está diseñado para brindar métodos formales a los ingenieros de software convencionales que trabajan en sistemas distribuidos. Si bien se basa en la lógica temporal de acciones, no se traduce a TLA+ ni lo utiliza en segundo plano, a diferencia de PlusCal o Quint.

Acción  Init :  hora  =  1 Acción  atómica Tick :  # El cuerpo de la acción es Starlark (un dialecto de Python)  hora  =  ( hora  %  12 )  +  1

Véase también

Referencias

  1. ^ "El lenguaje de métodos formales más sencillo para desarrolladores que crean sistemas distribuidos, microservicios y aplicaciones en la nube" . Consultado el 28 de mayo de 2024 .

Enlaces externos