Oui il y a. Définissez une expression sans contexte comme un terme généré par la grammaire suivante:
g::=||||||ϵcg⋅g⊥g∨gμα.gαEmpty stringCharacter c in alphabet ΣConcatenationFailing patternDisjunctionRecursive grammar expressionVariable expression
Il s'agit de tous les constructeurs pour les langages réguliers, à l'exception de l'étoile de Kleene, qui est remplacée par un opérateur à virgule fixe général , et un mécanisme de référence variable. (L'étoile de Kleene n'est pas nécessaire, car elle peut être définie comme g ∗ ≜ μ α .μα.g .)g∗≜μα.ϵ∨g⋅α
L'interprétation d'une expression sans contexte nécessite de tenir compte de l'interprétation des variables libres. Définissez donc un environnement
comme une carte des variables aux langages (c'est-à-dire des sous-ensembles de
Σ ∗ ), et laissez [ ρ | α : L ] soit la fonction qui se comporte comme ρ sur toutes les entrées sauf α , et qui renvoie le langage L pour αρΣ∗[ρ|α:L]ραLα .
Maintenant, définissez l'interprétation d'une expression hors contexte comme suit:
[[ϵ]]ρ[[c]]ρ[[g1⋅g2]]ρ[[⊥]]ρ[[g1∨g2]]ρ[[α]]ρ[[μα.g]]ρwhereL0Ln+1========={ϵ}{c}{w1⋅w2∣|w1∈[[g1]]ρ∧w2∈[[g2]]ρ}∅[[g1]]ρ∪[[g2]]ρρ(α)⋃n∈NLn∅Ln∪[[g]][ρ|α:Ln]
En utilisant le théorème de Knaster-Tarski, il est facile de voir que l'interprétation de μα.g est la moins fixe de l'expression.
Il est simple (bien que pas entièrement trivial) de montrer que vous pouvez donner une expression sans contexte dérivant le même langage que n'importe quelle grammaire sans contexte, et vice-versa. La non-trivialité vient du fait que les expressions sans contexte ont des points fixes imbriqués et que les grammaires sans contexte vous donnent un seul point fixe sur un tuple. Cela nécessite l'utilisation du lemme de Bekic, qui dit précisément qu'un point fixe imbriqué peut être converti en un seul point fixe sur un produit (et vice-versa). Mais c'est la seule subtilité.
EDIT: Non, je ne connais pas de référence standard pour cela: je l'ai élaboré pour mon propre intérêt. Cependant, c'est une construction suffisamment évidente pour être sûre qu'elle a déjà été inventée. Des recherches occasionnelles sur Google révèlent Joost Winter, Marcello Bonsangue et le récent article Context-Free Languages, Coalgebraically de Jan Rutten
, où elles donnent une variante de cette définition (exigeant que tous les points fixes soient gardés) qu'ils appellent également des expressions sans contexte.