Tak jest. Zdefiniuj wyrażenie bezkontekstowe jako termin generowany przez następującą gramatykę:
sol: : =||||||ϵdosol⋅ g⊥sol∨ gμ α .solαPusta strunaZnak c w alfabecie ΣPowiązanieNiepowodzenie wzoruDysjunkcjaWyrażenie gramatyczne rekurencyjneZmienna ekspresja
To wszystko konstruktory dla zwykłych języków oprócz gwiazdy Kleene, która jest zastąpiona przez ogólny operator stałoprzecinkowy oraz zmienny mechanizm odniesienia. (Gwiazda Kleene nie jest potrzebna, ponieważ można ją zdefiniować jako g ∗ ≜ μ α .μ α .sol .)sol∗ ≜ μ α .ϵ∨g⋅α
Interpretacja wyrażenia bezkontekstowego wymaga uwzględnienia interpretacji zmiennych swobodnych. Zdefiniuj więc środowisko
jako mapę zmiennych do języków (tj. Podzbiorów
Σ ∗ ) i pozwól [ ρ | α : L ] jest funkcją, która zachowuje się jak ρ na wszystkich wejściach oprócz α , i która zwraca język L dla α .ρΣ∗[ρ|α:L]ραLα
Teraz zdefiniuj interpretację wyrażenia bezkontekstowego w następujący sposób:
[[ ϵ ]]ρ[[ c ]]ρ[[ g1⋅ g2)]]ρ[[ ⊥ ]]ρ[[ g1∨ g2)]]ρ[[ α ]]ρ[[ μ α .sol]]ρgdzieL.0L.n + 1========={ ϵ }{ c }{ w1⋅ w2)∣ |w1∈ [[ g1]]ρ ∧ w2)∈ [[ g2)]]ρ }∅[[ g1]]ρ ∪ [[ g2)]]ρρ(α)⋃n∈NLn∅Ln∪[[g]][ρ|α:Ln]
Korzystając z twierdzenia Knastera-Tarskiego, łatwo zauważyć, że interpretacja jest najmniej ustalonym wyrażeniem.μα.g
To proste (choć nie do końca trywialne), aby pokazać, że możesz podać wyrażenie bezkontekstowe, wywodzące się z tego samego języka, co każda gramatyka bezkontekstowa i odwrotnie. Nietrywialność wynika z faktu, że wyrażenia bezkontekstowe mają zagnieżdżone punkty stałe, a gramatyki bezkontekstowe dają jeden stały punkt nad krotką. Wymaga to użycia lematu Bekica, który mówi dokładnie, że zagnieżdżone punkty stałe można przekształcić w pojedynczy punkt stały nad produktem (i odwrotnie). Ale to jedyna subtelność.
EDYCJA: Nie, nie znam standardowego odniesienia do tego: opracowałem to dla własnego zainteresowania. Jednak jest to na tyle oczywista konstrukcja, że jestem pewien, że została wcześniej wynaleziona. Niektórzy przypadkowi Googling ujawniają niedawny artykuł Joosta Wintera, Marcello Bonsangue i Jana Ruttena
Języki bezkontekstowe, Coalgebraically , w którym podają wariant tej definicji (wymagający zachowania wszystkich stałych punktów), które nazywają także wyrażeniami bezkontekstowymi.