Accueil |

Model checking

Le Model Checking est une technique de vérification automatique des systèmes informatiques ( logiciels, circuits logiques, protocoles de communications ). Il s'agit de tester algorithmiquement si un modèle donné, le système lui-même ou une abstraction du système, satisfait une spécification logique, généralement formulée en termes de logique temporelle.

La première étape du Model Checking consiste à  exprimer le modèle considéré au moyen d'un graphe orienté, formé de nÅ“uds et de transitions. Chaque nÅ“ud représente un état du système, chaque transition représente une évolution possible du système d'un état donné vers un autre état. Parallèlement, le système est décrit par un ensemble de propositions logiques atomiques ( e.g. i=2, le processeur 3 est en attente, ... ). Chaque état du graphe orienté est étiquetté par l'ensemble des propositions atomiques vraies à  ce point d'exécution. Un tel graphe est appelé Structure de Kripke.

La deuxième étape du Model Checking consiste à  exprimer la négation de la formule de logique temporelle que nous souhaitons tester. La négation de cette formule est donc elle-même transcrite sous forme d'une structure de Kripke, capable de reconnaitre exactement l'ensemble des exécutions satisfaisant la négation de la formule donnée.

La troisième et dernière étape consiste à  réaliser le produit cartésien des deux structures de Kripke obtenues précédemment. Si le langage reconnu par le produit est vide, alors le système satisfait la formule de logique. Sinon, toute séquence appartenant au langage du produit constitue un contre-exemple à  la spécification.