La tesis central de SysMoBench aborda un problema fundamental en la intersección de la inteligencia artificial y la ingeniería de sistemas distribuidos: la capacidad de los Large Language Models (LLMs) para generar modelos formales precisos de sistemas complejos. Históricamente, la verificación formal de sistemas distribuidos ha sido una tarea intensiva en mano de obra, requiriendo expertos en lenguajes de especificación como TLA+ para abstraer el comportamiento del sistema y probar propiedades críticas de seguridad y vivacidad. Con el auge de los LLMs, surge la promesa de automatizar o acelerar este proceso.

Sin embargo, la pregunta crítica no es si un LLM puede producir una especificación TLA+ sintácticamente válida, sino si esa especificación modela fielmente el sistema real, con sus idiosincrasias de implementación, o si simplemente recita una versión "de libro de texto" del protocolo subyacente. Este problema es crucial porque un modelo formal incorrecto es inútil o incluso perjudicial, ya que puede dar una falsa sensación de seguridad sobre la corrección del sistema. SysMoBench busca cuantificar esta brecha, diferenciando entre la "recitación" y el "modelado" genuino.

La relevancia de este problema es creciente a medida que los sistemas distribuidos se vuelven más complejos y la necesidad de su verificación formal se intensifica. La capacidad de los LLMs para asistir en esta tarea podría ser transformadora, pero solo si pueden superar la tendencia a generar modelos genéricos que no capturan los detalles críticos de la implementación. SysMoBench proporciona un marco para medir este progreso y guiar el desarrollo de LLMs más capaces en este dominio.

Arquitectura del Sistema

SysMoBench es una plataforma de evaluación automatizada que somete a los LLMs a una serie de tareas de modelado formal. Su arquitectura se compone de cuatro fases de evaluación interconectadas: Sintaxis, Tiempo de Ejecución, Conformidad e Invariantes. Para cada tarea, se proporciona al LLM el código fuente del sistema objetivo (ej. Etcd, ZooKeeper), un arnés de recolección de trazas y una plantilla de invariantes.

La fase de Sintaxis verifica que la especificación TLA+ generada por el LLM sea compilable utilizando el parser SANY de TLA+. Esta fase se ejecuta a nivel de acción, identificando acciones mal formadas. La fase de Tiempo de Ejecución comprueba si el modelo generado puede ser ejecutado por el verificador de modelos TLC sin errores, analizando la cobertura del espacio de estados por acción. La fase de Conformidad es la más crítica y utiliza la "Validación de Transiciones". Aquí, se recolectan trazas de ejecución de instancias reales del sistema. Cada traza se descompone en ventanas de transición (pre_estado, acción, post_estado), y TLC verifica independientemente si la acción especificada en el modelo TLA+ puede transicionar del pre_estado al post_estado. Esto proporciona un desglose por acción de las tasas de aprobación. Finalmente, la fase de Invariantes evalúa si la especificación satisface propiedades clave de seguridad y vivacidad, con el LLM traduciendo plantillas fijas en invariantes ejecutables para cada especificación generada. Cada invariante se verifica por separado.

El diseño de SysMoBench, con su granularidad de diagnóstico por acción e invariante, permite identificar con precisión dónde la especificación del LLM se desalinea con la implementación real. Los sistemas evaluados abarcan desde primitivas de sincronización concurrente hasta protocolos distribuidos complejos como Raft y ZAB. La plataforma utiliza trazas de ejecución en tiempo real para validar el comportamiento del modelo, lo que la diferencia de evaluaciones puramente estáticas o basadas en la sintaxis.

Flujo de Evaluación de SysMoBench

  1. 1 Generación de Spec LLM genera una especificación TLA+ para un sistema dado (código fuente, arnés...
  2. 2 Fase de Sintaxis Verifica que la spec TLA+ compile con SANY (diagnósticos por acción).
  3. 3 Fase de Runtime Verifica que TLC pueda ejecutar la spec sin errores (cobertura por acción).
  4. 4 Fase de Conformidad Validación de Transiciones: compara trazas de ejecución reales con transicion...
  5. 5 Fase de Invariantes Verifica que la spec satisfaga propiedades de seguridad y vivacidad clave (po...
  6. 6 Diagnósticos Genera diagnósticos granulares por acción/invariante, no solo un score agregado.
CapaTecnologíaJustificación
data-processing Large Language Models (LLMs) Generación de especificaciones formales TLA+ a partir de código fuente y descripciones de sistemas. vs human experts, domain-specific languages (DSLs) for code-to-spec translation
orchestration TLA+ Lenguaje de especificación formal para describir el comportamiento de sistemas concurrentes y distribuidos. vs PlusCal, Promela/Spin, Coq, Isabelle/HOL
observability TLC (TLA+ Model Checker) Verificador de modelos para ejecutar las especificaciones TLA+ generadas, comprobar invariantes y validar transiciones. vs APALACHE (TLA+ SMT-based model checker)
data-processing Trace Validation Framework Componente que recolecta trazas de ejecución de sistemas reales y las compara con las transiciones permitidas por el modelo TLA+. vs manual trace analysis, symbolic execution

Trade-offs

Ganancias
  • Automatización de la generación de especificaciones formales
  • Identificación granular de errores de modelado en LLMs
Costes
  • Dependencia de la cobertura de trazas para la validación
  • Pérdida de información por abstracción de estado
  • Falta de generalizabilidad en la creación de arneses para nuevos sistemas

Fundamentos Teóricos

El problema de la verificación formal de sistemas distribuidos tiene profundas raíces académicas, con trabajos seminales que datan de las décadas de 1970 y 1980. Leslie Lamport, con su lenguaje de especificación TLA+ (Temporal Logic of Actions), es una figura central en este campo. Su trabajo en TLA+ y en algoritmos de consenso como Paxos (Lamport, 1998) sentó las bases para la especificación y verificación de sistemas concurrentes y distribuidos. La idea de modelar un sistema como una secuencia de estados y transiciones atómicas es fundamental en TLA+ y se remonta a la lógica temporal y los autómatas de estados finitos.

La "Validación de Transiciones" empleada por SysMoBench se conecta directamente con los principios de la verificación basada en trazas, donde el comportamiento observado de un sistema se compara con su especificación formal. Este enfoque es una extensión de las técnicas de model checking (Clarke, Emerson, Sifakis, 1980s), donde un verificador explora sistemáticamente el espacio de estados de un modelo para encontrar violaciones de propiedades. La dificultad que los LLMs tienen para capturar los detalles de implementación (como la gestión de recvset en ZooKeeper o la atomicidad de operaciones) resalta la diferencia entre comprender un protocolo abstracto (como se describe en papers como "In Search of an Understandable Consensus Algorithm" de Ongaro y Ousterhout, 2014, para Raft) y modelar la complejidad de su implementación real. Los errores de los LLMs reflejan una falla en la abstracción precisa de los detalles de bajo nivel y la interacción de componentes, un desafío conocido en la ingeniería de software y la verificación formal.