Sé que la Comprobación de modelo simbólico es un recorrido de espacio de estado basado en representaciones de conjuntos de estados y relaciones de transición como fórmulas como en CTL usando modelos como Kripke Model. Conozco la teoría Pero me resulta difícil entender la aplicación real. ¿Dónde se usa exactamente? ¿Qué hace exactamente y cómo funciona?
¿Alguien puede explicar con un ejemplo real y relacionar la teoría con la práctica?
Respuestas:
La verificación simbólica de modelos es la verificación de modelos que funciona en estados simbólicos. Es decir, codifican los estados en representaciones simbólicas, típicamente diagramas de decisión binaria ordenados (OBDD).
La pregunta es qué hacen y cómo funcionan.
Primero tiene su código fuente para alguna aplicación. Luego transforma su código fuente en un gráfico de transición de estado como una Estructura de Kripke. Los estados están llenos de proposiciones atómicas que describen lo que es cierto en ese estado en particular. En la verificación simbólica del modelo, las proposiciones atómicas se codifican como OBDD para ahorrar espacio y mejorar el rendimiento.
Luego, el Comprobador de modelos comienza en algún estado inicial y explora los estados, buscando errores en el gráfico de transición de estado. Si encuentra un error, a menudo generará un caso de prueba que demuestre el error. Utiliza los OBDD simbólicos para navegar de manera óptima por el espacio de estado. Ojalá pudiera explicar más allí pero aún aprendiendo.
Pero eso es básicamente todo. Tiene un programa convertido en un modelo formal (gráfico de transición de estado), y luego utiliza optimizaciones simbólicas para navegar por el espacio de estado para buscar errores (comparándolo con una especificación LTL / CTL). Y si se encuentra un error, el Verificador de modelos le brinda algunas cosas para ayudar a documentarlo y resolverlo.
fuente
La verificación simbólica del modelo puede ser muy útil para verificar la exactitud de las comunicaciones y los protocolos de seguridad. Por ejemplo:
Esto funciona escribiendo una descripción simbólica de todas las funciones primitivas y algoritmos de protocolo, y luego tener un verificador de modelo simbólico, como ProVerif , atraviesa el espacio de estado e intenta detectar combinaciones de estados que producen resultados desfavorables. En el caso de ProVerif, los modelos simbólicos se describen utilizando el cálculo Pi aplicado como lenguaje de modelado. Esto permite la descripción de protocolos en una sintaxis funcional similar a ML.
fuente