はい、および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ββ
それはかなり明らかだ、及びCFLのは、有限状態変換の下で閉じているので、前に(L 、βが)、したがって、CFであります Tβ(L)=Before(L,β)Before(L,β)
同様の議論がにも当てはまります。または、Before(L 、β )からの文字列反転で行うこともできます。CFLも反転して閉じられます。After(L,β)Before(L,β)
After(L,β)=rev(Before(rev(L),rev(β)))
実際、反転引数が表示されたので、で開始するのがさらに簡単になります。そのためのトランスデューサーは、記述と検証がより簡単であるためです-βを探しながら空の文字列を出力します。βが見つかると、それは非決定的に分岐し、1つの分岐はさらにβのコピーを探し続け、もう1つの分岐は入力から出力にすべての後続文字を逐語的にコピーし、しばらく受け入れます。After(L,β)βββ
残っているのは、CFLだけでなく文型に対してもこの作業を行うことです。しかし、CFGの文型の言語はそれ自体がCFLであるため、これは非常に簡単です。あなたはすべての非ターミナル置き換えることであることを示すことができる全体でGと言うことでX "、宣言Xは、端末であることを、すべての作品の追加X " → Xを文法に。XGX′XX′→X
曖昧さに関するあなたの質問について考えなければなりません。