예, 와 After ( β ) 는 문맥이없는 언어입니다. 내가 그것을 증명하는 방법은 다음과 같습니다. 먼저, 정리 (핵심)입니다. 만약 L은 다음 CF입니다 :Before(β)After(β)L
Before(L,β)={γ | ∃δ.γβδ∈L}
과
After(L,β)={γ | ∃δ.δβγ∈L}
CF입니다.
증명? 들면 비 결정적 유한 상태를 구성하는 변환기 T β 그 검색 문자열 동시에 그것을 보는 모든 입력 심볼을 출력하고 것은 비 결정적 검색 β . 마다 T의 β는 의 첫 번째 심볼보고 β 는 비 결정적 포크와 하나는보고가 완료 될 때까지 출력 심볼을 중단 β가 아니면 벗어나있는 심볼보고보고 β는 , 각각의 경우에 중단한다. T β 가 β를 보는 경우Before(L,β)TββTββββTββ전체적으로 중지시 수락합니다. 이것이 허용하는 유일한 방법입니다. β 와 편차가있는 경우β 와 있으면 거부합니다.
보조 정리는 경우 핸들의 경우에 jiggered 수 있습니다 (같은 자신과 겹쳐 수 B b는 -을 찾고 유지 β 도 이전에 대한 검사의 중심부에있는 동안 β 실제로 (여러 번) 또는 표시, 원래 비 determinisic 포크는 이미 처리합니다). βababββ
Tβ(L)=Before(L,β)Before(L,β) 따라서이다 CF.
After(L,β)Before(L,β)
After(L,β)=rev(Before(rev(L),rev(β)))
Actually, now that I see the reversal argument, it would be even easier to start with After(L,β), since the transducer for that is simpler to describe and verify -- it outputs the empty string while looking for a β. When it finds β it forks non-deterministically, one fork continuing to look for further copies of β, the other fork copying all subsequent characters verbatim from input to output, accepting all the while.
What remains is to make this work for sentential forms as well as CFLs. But that is pretty straightforward, since the language of sentential forms of a CFG is itself a CFL. You can show that by replacing every non-terminal X throughout G by say X′, declaring X to be a terminal, and adding all productions X′→X to the grammar.
I'll have to think about your question on unambiguity.