L = L(G)と表示する方法は?


22

正式な文法を与えることによって正式な言語を指定することは頻繁に行われます。言語を記述するだけでなく、言語を解析するため、または適切な科学を行うためにも文法が必要です。すべての場合において、手元の文法が正しいこと、つまり希望する単語を正確に生成することが重要です。

正式な証明を省略して、なぜ文法が目的の言語の適切な表現であるのかを高レベルで議論することができます。しかし、何らかの理由で疑問がある場合、または正式な証拠が必要な場合はどうでしょうか?適用できる手法は何ですか?

これは参照質問になると思われます。したがって、少なくとも1つの例で説明されているが、多くの状況をカバーする、一般的で教訓的に提示された答えを与えるように注意してください。ありがとう!

回答:


21

文法は本質的に再帰的なオブジェクトなので、答えは明らかです。そうは言っても、仕様を正しくするのは難しい場合があります。続編では、いくつかの創造的な前処理が行われていれば、多くの文法的正しさの証明を機械的なステップに減らすことを可能にする手法を説明します。

基本的な考え方は、自分自身を文法と言語の言葉に制限しないことです。このように文法の構造を把握することは困難です。代わりに、文法が作成できる一連のについて議論します。さらに、1つの困難な証明目標を、より扱いやすい多くの小さな目標に分割します。

LET、非端末と形式文法、端子、ルール及び開始シンボル。我々は、によって表すから誘導することができる文の集合所与であり、。によって生成される言語はです。いくつかのに対してを表示したいとします。T δ S N θ G S δ α θ G G=(N,T,δ,S)NTδSNϑ(G)SδG LG = θ G T * L = LG L T *αϑ(G)SαGL(G)=ϑ(G)TL=L(G)LT

仮説

これについては次のとおりです。を定義して、M1,,Mk(NT)

  1. ϑ(G)=i=1kMiおよび
  2. Ti=1kMi=L

2.は通常定義によって明確になりますが、1はいくつかの重大な作業を必要とします。2つの項目を合わせると、必要に応じて明確に示されます。LG = LMiL(G)=L

表記を簡単にするために、ます。M=i=1kMi

岩だらけの道

このような証明を実行するには、2つの主要な手順があります。

  • (良い)どのように見つけるか?Mi
    1つの戦略は、文法が機能するフェーズを調査することです。すべての文法がこの考えに従うわけではありません。一般に、これは創造的なステップです。文法を自分で定義できれば助かります。ある程度の経験があれば、このアプローチでより扱いやすい文法を定義できます。

  • 証明する方法1.?
    あらゆる等式と同様に、2つの方向があります。

    • Gϑ(G)M:の生成に対する(構造的)帰納。G
    • M 私は SMϑ(G):通常、を含むものから始まるによる1つの帰納法。MiS

これは、取得するのと同じくらい具体的です。詳細は手元の文法と言語に依存します。

言語を考える

L={anbncmn,mN}

文法とによって与えられますδG=({S,A},{a,b,c},δ,S)δ

SScAAaAbε

であることを示したい。この文法が機能する段階は何ですか?さて、最初にを生成し、次にます。これにより、選択、つまり、c m a n b n M iL=L(G)cmanbnMi

M0={ScmmN},M1={anAbncmm,nN},M2={anbncmm,nN}.

と、項目2はすでにの世話をしています。1.に向かって、発表されたように2つの部分に証明を分割します。M 0T * = M 1T * = M2=LM0T=M1T=

ϑ(G)M

の規則に沿って構造誘導を実行します。G

IA:以来成功した我々のアンカー。S=Sc0M0

IH:という文のセットについて、も知っていると仮定します。X MXϑ(G)XM

IS:う任意。が持つ形式や次に適用されるルールが何であれ、残さないことを示さなければなりません。これは、ケースを完全に区別することで行います。帰納法の仮説により、(正確に)次のいずれかの場合が当てはまることがわかります。α MαXϑ(G)MαM

  • 、W = S 、C 、M、M N MwM0、つまり、一部の場合はです。 2つのルールを適用できます。どちらも文を導き出します。 w=ScmmN
    M
    • ScmScm+1M0
    • ScmAcm=a0Ab0cmM1
  • 、W = A N 、B N 、C 、M、M N NwM1、つまり一部の: w=anAbncmm,nN
    • wan+1Abn+1cmM1
    • wanbncmM2ます。
  • ワットT *wM3:、それ以上の派生は不可能です。wT

すべてのケースを正常に処理したので、導入は完了しました。

ϑ(G)M

ごとに1つの(単純な)証明を実行します。「後の」が「前の」を使用してアンカーできるように、プルーフを連鎖する方法に注意してください。M i M iMiMiMi

  • m S c 0 = S S S cM1:上誘導を実行し、に固定し、ステップでを使用します。mSc0=SSSc
  • 、M nはA 、C 、M S * S C M A C M A AとBM2:を任意の値に固定し、を超えて誘導します。前の証明でそのを使用して固定します。ステップはを介して進行。mnAcmSScmAcmAaAb
  • 、M N N S * N B 、N C 、M A N 、B N 、C 、MM3:任意のに対して、の前の証明を使用します。m,nNSanAbncmanbncm

これで、1の証明の2番目の方向は終わりです。これで完了です。

文法が線形であることを大いに活用していることがわかります。非線形文法の場合、複数の変数パラメーター(証明内)を持つが必要です。文法を制御できる場合、これはシンプルに保つことを教えてくれます。相当するこの文法を抑止する例として考えてください: GMiG

SaAbCεAaAbεCcCε

運動

文法を与える

L={bkal(bc)manbok,l,m,n,oN,ko,2l=n,m2}

そしてその正しさを証明します。

問題がある場合、文法:

検討制作してG=({S,Br,Bl,A,C},{a,b,c},δ,S)

SbSbBlBrBlbBlbABrBrbAbAaAaaCCbcCbcbc

および:Mi

M0={biSbiiN}M1={biBlbooN,io}M2={bkBrbikN,ik}M3={bkaiAa2ibok,o,iN,ko}M4={bkal(bc)iCa2lbok,o,l,iN,ko}M5=L

非線形文法はどうですか?

コンテキストフリー言語のクラスの特徴的な機能はDyck言語です。本質的に、すべてのコンテキストフリー言語は、Dyck言語と通常言語の共通部分として表現できます。残念ながら、Dyck言語は線形ではありません。つまり、このアプローチに本質的に適した文法を与えることはできません。

もちろん、まだを定義して証明を行うことはできますが、入れ子になった帰納法とそうでないものではより困難になります。私が知っている一般的な方法は、ある程度役立つことがあります。少なくともすべての必要な単語を生成し、適切な量の単語(長さごと)を生成することを示すように、仮説を変更します。正式には、Mi

  1. ϑ(G)Lおよび
  2. N N|L(G)Tn|=|LTn|すべての。nN

このようにして、元の仮説から「簡単な」方向に自分自身を制限し、言語の構造を活用して、文法が持つ複雑すぎる機能を無視することができます。もちろん、無料のランチはありませんごとに生成する単語を数えるというまったく新しいタスクを取得します。幸いなことに、これは扱いやすいことがよくあります。詳細についてはこちらこちらをご覧ください¹。あなたは私の学士論文でいくつかの例を見つけることができます。N NG nN

曖昧で文脈に依存しない文法の場合、私たちは仮説1と思考の上限に戻っているのではないかと心配しています。


  1. カウントに特定の方法を使用すると、文法が明確であるというボーナスが得られます。また、これは、2を証明することができないため、曖昧な文法ではテクニックが失敗しなければならないことも意味します。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.