BookinglyTech News
Software

TLA+ añade soporte para propiedades de alcance y posibilidad

El verificador de estados TLC ahora puede comprobar la posibilidad de alcanzar un estado, y se rumorea una futura extensión para alcance completo.

2 min de lecturaLobsters0 vistas

TLA+ ya incluye una forma rudimentaria de expresar que un estado puede alcanzarse, pero hasta ahora TLC no la verificaba. En la última revisión del repositorio de TLA+ (pull request #1377) se añadió la palabra clave _POSSIBLE, que permite declarar

_POSSIBLE P

TLC interpreta esto como: “¿puede alguna vez cumplirse P a partir de alguna de las iniciales?” La búsqueda en anchura termina cuando todas las rutas exploradas han sido examinadas; si P nunca aparece, el verificador lanza un fallo. Esta funcionalidad es útil como “unit test” de la especificación, y puede servir para validar trazas.

La pregunta de si TLC puede comprobar la posibilidad desde todos los estados sigue sin resolverse. La propuesta es añadir un segundo pase de búsqueda en reversa, denominado backward reachability. Tras explorar todo el grafo de estados, se inicia una búsqueda en profundidad que retrocede desde cada estado que satisface P hasta los estados que pueden llegar a él. Si quedan estados sin explorar al final, se reporta que P no es alcanzable desde esos puntos. La propuesta se detalla en el issue #860, donde los autores discuten la viabilidad y el riesgo de romper la compatibilidad.

Lamport explicó el concepto en su libro A Science of Concurrent Programs (disponible en lamport.azurewebsites.net) y en su artículo de 1998 Proving Possibility Properties (PDF). El truco consiste en usar supuestos de justicia para introducir razonamiento de tipo ramificado dentro de la lógica lineal de TLA+. En esencia, la fórmula

[](ENABLED [Next]_v^+ / P')

se interpreta como “para cada prefijo de comportamiento, existe al menos un comportamiento extendido donde P se cumple”. Aunque TCL no puede evaluar esta fórmula todavía, el mecanismo de _POSSIBLE ya ofrece una aproximación práctica.

Para los usuarios de TLC, esto significa que ya pueden añadir la palabra clave _POSSIBLE a sus modelos y recibir una verificación automática de la posibilidad de alcanzar estados deseados. La extensión de alcance completo, sin embargo, sigue siendo una propuesta abierta. Si se implementa, permitirá a los arquitectos de sistemas verificar que sus especificaciones no quedan atrapadas en estados que nunca podrían alcanzarse, lo cual es crítico para la fiabilidad en sistemas distribuidos y de tiempo real.

En conclusión, aunque TLA+ no ha incorporado todavía la lógica de alcance completo, la comunidad está avanzando con una solución práctica para la posibilidad. Los desarrolladores pueden empezar a usar _POSSIBLE hoy y, si el debate sobre backward reachability evoluciona favorablemente, estarán listos para una verificación aún más completa en el futuro.