c
Éditions H&K Publié dans les Annales des Concours 1/17
X Informatique MP 2013 — Corrigé
Ce corrigé est proposé par Guillaume Batog (Professeur en CPGE) ; il a été relu
par Benjamin Monmege (ENS Cachan) et Vincent Puyhaubert (Professeur en CPGE).
En logique propositionnelle, on décrit la syntaxe des formules construites à partir
d’un ensemble de variables et à l’aide des connecteurs logiques ¬,∨,∧. Puis on définit
la sémantique de ces formules à l’aide d’une relation de satisfiabilité d’une valuation
des variables sur une formule. Dans la logique temporelle présentée dans ce problème,
on ajoute des connecteurs temporels X(juste après), G(désormais), F(un jour)
et U(jusqu’à) dont la sémantique est précisée par une relation de satisfiabilité d’un
mot usur une formule ϕ. Ce sujet a pour objectif d’étudier les langages de mots
reconnus par une formule de cette logique. Il est composé de 4 parties, qu’il est
préférable de traiter dans l’ordre.
•La première partie, préliminaire, permet de se familiariser avec la logique tem-
porelle. Elle doit être traitée assez rapidement mais avec rigueur car les ques-
tions, faciles en apparence, recèlent des cas particuliers cachés.
•Dans la deuxième partie, on transforme toute formule en une formule normalisée
(sans connecteurs Fet G) qui lui est logiquement équivalente (c’est-à-dire ayant
le même langage de mots). Puis on écrit une fonction vérifiant si un mot satisfait
une formule normalisée. L’algorithmique sous-jacente consiste simplement à
parcourir des arbres représentant les formules. La dernière question, portant
sur une étude de complexité, est la plus ardue du problème.
•La troisième partie présente une méthode plus efficace pour vérifier si un mot
satisfait une formule. On montre en fin de partie qu’elle peut être vue comme
l’exécution d’un mot sur un automate, qui peut être construit à partir de
la formule.
•La quatrième partie débute par deux questions classiques sur les automates.
Elles apportent une aide précieuse pour écrire ensuite une fonction décidant si
une formule est satisfiable (c’est-à-dire si son langage de mots est non vide).
Pour traiter cette question, il est nécessaire d’avoir bien compris les ressorts de
la troisième partie. Enfin, la dernière question, indépendante de tout le reste,
propose un exemple de langage rationnel qui n’est pas un langage de mots
satisfaisant une formule de la logique temporelle.
Outre que les notions abordées sont nouvelles aux concours, la difficulté de ce
sujet tient au fait qu’il est impossible de traiter les questions de programmation
sans avoir réussi à répondre aux questions théoriques qui les précèdent, excepté pour
les fonctions faciles qui ne rapportaient que peu de points. L’intrication (naturelle)
entre logique et automates en fait un sujet intéressant pour qui souhaite avoir un
aperçu d’un domaine d’étude de l’informatique théorique appliquée à la vérification
de programmes.
Téléchargé gratuitement sur www.Doc-Solus.fr .