Existe-t-il un algorithme / une procédure systématique pour tester si une langue est hors contexte?
En d'autres termes, étant donné un langage spécifié sous forme algébrique (pensez à quelque chose comme ), testez si le langage est hors contexte ou non. Imaginez que nous écrivons un service Web pour aider les élèves dans tous leurs devoirs; vous spécifiez la langue et le service Web affiche "sans contexte" ou "non sans contexte". Existe-t-il une bonne approche pour automatiser cela?
Il existe bien sûr des techniques de preuve manuelle, comme le lemme de pompage, le lemme d'Ogden, le lemme de Parikh, le lemme d'échange, et plus ici . Cependant, ils nécessitent chacun un aperçu manuel à un moment donné, il n'est donc pas clair comment transformer l'un d'eux en quelque chose d'algorithmique.
Je vois que Kaveh a écrit ailleurs que l'ensemble des langues non contextuelles n'est pas récursivement énumérable, il semble donc qu'il n'y ait aucun espoir qu'un algorithme fonctionne sur toutes les langues possibles. Par conséquent, je suppose que le service Web devrait pouvoir afficher "sans contexte", "pas sans contexte" ou "je ne peux pas le dire". Existe-t-il un algorithme qui serait souvent en mesure de fournir une réponse autre que "Je ne peux pas dire", dans de nombreuses langues que l'on est susceptible de voir dans les manuels? Comment construiriez-vous un tel service Web?
Pour que cette question soit bien posée, nous devons décider comment l'utilisateur spécifiera la langue. Je suis ouvert aux suggestions, mais je pense à quelque chose comme ça:
où est un mot-expressions et S est un système d'inégalités linéaires sur les variables de longueur, avec les définitions suivantes:
Chacun de est une expression verbale. (Ceux - ci représentent des variables qui peuvent contenir un mot dans Σ * .)
Chacun de est une expression verbale. (Implicitement, Σ = { a , b , c , … } , donc a , b , c , … représentent un seul symbole dans l'alphabet sous-jacent.)
Chacun d' est un mot-expression, si η est une variable de longueur.
La concaténation des expressions-mots est une expression-mot.
Chacun de est une variable de longueur. (Il s'agit de variables pouvant contenir n'importe quel nombre naturel.)
Chacun Est une variable de longueur. (Ils représentent la longueur d'un mot correspondant.)
Cela semble assez large pour gérer la plupart des cas que nous voyons dans les exercices de manuels. Bien sûr, vous pouvez remplacer toute autre méthode textuelle de spécification d'une langue sous forme algébrique, si vous le souhaitez.