Sí hay. Defina una expresión sin contexto como un término generado por la siguiente gramática:
g::=||||||ϵcg⋅g⊥g∨gμα.gαEmpty stringCharacter c in alphabet ΣConcatenationFailing patternDisjunctionRecursive grammar expressionVariable expression
Estos son todos los constructores para lenguajes regulares, excepto la estrella de Kleene, que se reemplaza por un operador general de punto fijo , y un mecanismo de referencia variable. (La estrella de Kleene no es necesaria, ya que se puede definir como g ∗ ≜ μ α .μα.g .)g∗≜μα.ϵ∨g⋅α
La interpretación de una expresión libre de contexto requiere tener en cuenta la interpretación de las variables libres. Por lo tanto, defina un entorno
como un mapa de variables a idiomas (es decir, subconjuntos de
), y deje que sea la función que se comporta como en todas las entradas excepto , y que devuelve el idioma para .Σ ∗ [ ρ | α : L ] ρ α L αρΣ∗[ρ|α:L]ραLα
Ahora, defina la interpretación de una expresión sin contexto de la siguiente manera:
[[ϵ]]ρ[[c]]ρ[[g1⋅g2]]ρ[[⊥]]ρ[[g1∨g2]]ρ[[α]]ρ[[μα.g]]ρwhereL0Ln+1========={ϵ}{c}{w1⋅w2∣|w1∈[[g1]]ρ∧w2∈[[g2]]ρ}∅[[g1]]ρ∪[[g2]]ρρ(α)⋃n∈NLn∅Ln∪[[g]][ρ|α:Ln]
Usando el teorema de Knaster-Tarski, es fácil ver que la interpretación de es la menos fija de la expresión.μα.g
Es sencillo (aunque no del todo trivial) mostrar que puede dar una expresión sin contexto derivando el mismo lenguaje que cualquier gramática libre de contexto, y viceversa. La no trivialidad surge del hecho de que las expresiones sin contexto tienen puntos fijos anidados, y las gramáticas sin contexto le dan un solo punto fijo sobre una tupla. Esto requiere el uso del lema de Bekic, que dice precisamente que un punto fijo anidado se puede convertir en un único punto fijo sobre un producto (y viceversa). Pero esa es la única sutileza.
EDITAR: No, no conozco una referencia estándar para esto: lo resolví por mi propio interés. Sin embargo, es una construcción bastante obvia que estoy seguro de que se ha inventado antes. Algunos buscadores casuales en Google revelan el reciente documento de Context-Free Languages, Coalgebraically de Joost Winter, Marcello Bonsangue y Jan Rutten
, donde dan una variante de esta definición (que requiere que todos los puntos fijos estén protegidos) que también llaman expresiones libres de contexto.