Так, є. Визначте без контексту вираз як термін, породжений наступною граматикою:
g::=||||||ϵcg⋅g⊥g∨gμα.gαEmpty stringCharacter c in alphabet ΣConcatenationFailing patternDisjunctionRecursive grammar expressionVariable expression
Це всі конструктори для звичайних мов, за винятком зірки Клінова, яку замінює загальний оператор фіксованої точки та змінний механізм відліку. (Зірка Клейна не потрібна, оскільки її можна визначити як g ∗ ≜ μ α .μα.g .)g∗≜μα.ϵ∨g⋅α
Інтерпретація контекстного вираження вимагає обліку інтерпретації вільних змінних. Отже, визначте середовище
як мапу від змінних до мов (тобто, підмножини
Σ ∗ ), і нехай [ ρ | α : L ] - функція, яка поводиться як ρ на всіх входах, крім α , і яка повертає мову L для α .ρΣ∗[ρ|α:L]ραLα
Тепер визначте інтерпретацію без контексту виразу таким чином:
[[ϵ]]ρ[[c]]ρ[[g1⋅g2]]ρ[[⊥]]ρ[[g1∨g2]]ρ[[α]]ρ[[μα.g]]ρwhereL0Ln+1========={ϵ}{c}{w1⋅w2∣|w1∈[[g1]]ρ∧w2∈[[g2]]ρ}∅[[g1]]ρ∪[[g2]]ρρ(α)⋃n∈NLn∅Ln∪[[g]][ρ|α:Ln]
Використовуючи теорему Кнастера-Тарського, легко зрозуміти, що інтерпретація - найменше фіксований вираз.μα.g
Досить просто (хоч і не зовсім тривіально) показати, що ви можете надати без контексту вираження, що походить на тій же мові, що і будь-яка граматика без контексту, і навпаки. Нетривіальність виникає з того, що без контекстних виразів вкладені фіксовані точки, а безконтекстні граматики дають вам одну фіксовану точку над кортежем. Це вимагає використання леміки Бекіча, яка точно говорить про те, що вкладені нерухомі точки можуть бути перетворені в одну фіксовану точку над твором (і навпаки). Але це єдина тонкість.
EDIT: Ні, я не знаю стандартного посилання на це: я розробив це для власного інтересу. Однак, це явна конструкція, на яку я впевнений, що вона була винайдена раніше. Деякі випадкові Googling розкривають Joost Winter, недавню книгу Marcello Bonsangue та Яна Руттена "Без
контексту", "Coalgebraically" , де вони дають варіант цього визначення (вимагаючи, щоб усі фіксовані точки були захищені), які вони також називають виразами без контексту.