Faculté of Mathématiques, Informatique and Mécanique Université

Transcription

Faculté of Mathématiques, Informatique and Mécanique Université
Faculté of Mathématiques, Informatique and Mécanique
Université de Varsovie, Pologne
Mikołaj Bojańczyk
Évaluation automatique d'exercices de théorie des langages formels.
On peut distinguer deux grands groupes d'exercices en fonction de la
difficulté de leurs évaluation.
Dans le premier groupe, on retrouve les
exercices suffisamment simples pour que leurs solutions soient aisément
vérifiables mécaniquement, par exemple « calculer 2+2 ». Un autre exemple
est tiré de la théorie des automates : « écrire un automate déterministe qui
vérifie si l'entrée contient un nombre pair de a » ; une solution peut
effectivement être vérifiée automatiquement en utilisant un algorithme
d'équivalence d'automates. Dans le second groupe, il est nécessaire de
transiger sur la rigueur de l'évaluation. Une approche classique consiste à
tester la solution sur des exemples. C'est en particulier l'approche usuelle pour
évaluer des exercices de programmation.
Le défi est donc de réaliser une évaluation rigoureuse de problèmes non
triviaux. Un scénario idéal en mathématiques et informatique pourrait être le
suivant : un étudiant tente de prouver un fait mathématique pendant que le
système d'évaluation vérifie la preuve et interagit en cas d'erreurs. En toute
généralité, ce scénario semble actuellement hors de portée. L'une des raisons
provient de la nécessité d'avoir un format de preuve simple de lecture à la fois
pour les machines et pour les humains. Les systèmes existants manipulant des
preuves, par exemple l'assistant de preuve COQ, sont bien trop difficiles
d'accès pour une utilisation dans un cadre pédagogique, et ce en dépit d'un
effort substantiel pour les rendre accessibles. Une autre difficulté réside dans la
complexité algorithmique propre à ces questions.
Il semble néanmoins raisonnable d’appréhender ce problème en
restreignant sont champ d'application. Ainsi, la théorie des langages formels
semble se prêter tout particulièrement à ces questions. En effet, les modèles
étudiés (automates finis ou à pile) peuvent réaliser des calculs intéressants
tout en possédant de bonnes propriétés algorithmiques—en particulier, les
problèmes du vide et de l'appartenance sont décidables, contrairement aux
autres domaines où ces problèmes se réduisent souvent à l'arrêt. Cet équilibre
entre l'expressivité des modèles et leurs (bonnes) propriétés algorithmiques,
est le sujet central de cette discipline. C'est aussi pour cette raison que la
théorie des langages formels est un bon candidat pour l'évaluation
automatique d'exercices.
Illustrons cela par un exemple. Un exercice d'introduction classique aux
automates non-déterministes est le suivant : « Prouvez que si un langage est
régulier, alors son image miroir est également un langage régulier »
Pour prouver cela, un étudiant doit montrer que si A est un automate nondéterministe, alors il existe un automate non-déterministe qui reconnaît l'image
miroir des mots acceptés par A. La solution est très simple, il suffit de prendre
les mêmes états et le même alphabet, d'échanger états initiaux et finaux, et de
définir le nouvel ensemble de transitions :
{(q,a,p) : (p,a,q) ∈ δ}
où δ est l'ensemble de transitions de A (l'automate original). Cette solution,
ainsi que d'autres qui lui sont équivalentes, peut être exprimée de manière
compréhensible à la fois pour les humains et pour les ordinateurs. Pour des
exercices plus difficiles, l'étudiant pourrait avoir besoin de constructions plus
sophistiquées, exprimables dans (le langage de) la théorie des ensembles.
L'objectif de ce stage est de participer à la création d'un outil
d'évaluation automatique des exercices de théorie des langages formels. Le
texte entré par l'étudiant devrait être lisible par une machine tout en utilisant
la même syntaxe que celle utilisée sur tableau en cours, sans interférences de
l'outil d'évaluation.

Documents pareils