¿Cuál es la implementación más sencilla de todas las traducciones decentes de LTL a Buchi u otros algoritmos de verificación de LTL?

8

Estoy escribiendo un modelo de juguete , y estoy en el punto en que es hora de implementar la traducción de autómatas LTL a Buchi.

Por una variedad de razones obvias, deseo que el algoritmo sea simple :) por ejemplo, quiero que el código permanezca extremadamente claro y conciso durante el mayor tiempo posible.

He examinado el enfoque de "autómata local + autómata de eventualidad", descrito en múltiples tutoriales, pero parece que no es fácil de implementar / comprender (la prueba de corrección es bastante grande), ni produce autómatas pequeños. Así que no lo estoy implementando hasta que esté seguro de que no me arrepentiré :)

Por lo tanto, agradecería las referencias a documentos que describan algoritmos simples y eficientes para esta traducción, o quizás simples e ineficientes, entonces los documentos sobre minimización de autómatas Buchi también serían bienvenidos :)

... ¿O tal vez hay enfoques alternativos interesantes para la verificación LTL?

Como referencia, aquí hay una genealogía de los algoritmos de traducción de LTL a Buchi http://spot.lip6.fr/wiki/LtlTranslationAlgorithms . ¿Alguien puede decir algo sobre esto?

jkff
fuente

Respuestas:

8

Una construcción que no figura en el sitio web de SPOT se da en una encuesta realizada por Demri & Gastin, Specification and Verification utilizando Temporal Logics , 2009. La construcción es simple y produce autómatas razonablemente pequeños, por lo que se puede realizar a mano para pequeñas fórmulas, que es bueno para enseñar (que es cómo lo uso), pero también podría ser útil para depurar una implementación. Sin embargo, no apostaría a que sea más eficiente que la utilizada por SPOT.

ω

Sylvain
fuente
Gracias, exactamente lo que estaba buscando! Aunque no estoy perdiendo la esperanza de que aún vendrán más respuestas :)
jkff
2

Consideraría la traducción que pasa por un autómata alterno. (Ver el documento de Vardi "Autómatas alternos y verificación del programa"). Es una traducción muy elegante de LTL a autómatas alternos y luego puede usar Mihano Ayashi (que también es elegante, es una construcción de doble subconjunto) para alcanzar un autómata Buchi no determinista.

Chico
fuente