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.