Definición
Una técnica automática de verificación que explora exhaustivamente el espacio de estados de un modelo formal de sistema (habitualmente un sistema de transición de estados finitos) para determinar si el modelo satisface una especificación expresada en una lógica temporal o modal, proporcionando trazas contraejemplo cuando la propiedad se viola.

Principio

Principio
Traducir el sistema a un modelo de estados finito o simbólico, expresar la propiedad deseada en una lógica de especificación (p. ej. LTL, CTL) y realizar una búsqueda exhaustiva (explícita, simbólica, acotada o reducida por orden parcial) de los estados alcanzables para comprobar la propiedad; los contraejemplos son trazas de ejecución concretas que violan la propiedad.

Demostración

Demostración
Verificar una propiedad de seguridad LTL en un sistema concurrente de estados finitos usando model checking simbólico con BDDs o bounded model checking basado en SAT: si la propiedad falla, la herramienta devuelve una traza finita que muestra la secuencia de transiciones que conduce a la violación, útil para depuración.

Aplicación incorrecta

Aplicación incorrecta
Aplicar model checking ingenuamente a sistemas de estados infinitos sin abstracción, asumir que bounded model checking prueba propiedades no acotadas, o interpretar erróneamente contraejemplos producidos bajo abstracciones (contraejemplos espurios) como errores reales.

Consecuencia

Consecuencia
Model checking proporciona detección automática de errores guiada por contraejemplos y, cuando es factible, garantías de corrección para el modelo explorado; exige formalizar con precisión el comportamiento y los requisitos del sistema pero se enfrenta al problema de explosión del espacio de estados que limita la escalabilidad.

Inversión

Inversión
En lugar de exploración exhaustiva de estados, puede emplearse verificación deductiva o demostración automática que razonan simbólicamente sobre clases de comportamientos; la inversión intercambia automatización y contraejemplos concretos por generalidad y obligaciones de prueba.

Límite

Límite
Más adecuado para sistemas finitos o finitamente representables, o para sistemas susceptibles de abstracción correcta; diferentes lógicas y tipos de modelos (temporales, probabilísticos, híbridos) requieren algoritmos extendidos. Model checking comprueba la corrección del modelo respecto a una especificación, no la implementación real ni las suposiciones del entorno salvo que estén modeladas.

Tensión semántica

Tensión semántica
Existe tensión entre model checking de estado explícito, métodos simbólicos (BDD, SAT/SMT) y enfoques de abstracción/ refinamiento: las decisiones afectan la escalabilidad, la interpretabilidad de contraejemplos y si los resultados son exhaustivos o acotados. También hay un compromiso entre búsqueda totalmente automática y técnicas de prueba interactivas.

Síntesis

Síntesis
Model checking es un análisis automatizado y exhaustivo de un modelo formal frente a especificaciones temporales o lógicas que proporciona contraejemplos concretos para depuración y, cuando procede, garantías de corrección; su eficacia depende de la representación, la abstracción y las técnicas de búsqueda que mitiguen la explosión del espacio de estados.