Pumping Lemma for Kontekstfrie Sprog¶
Sætning
Hvis L er et kontekstfrit sprog, så findes der et p>0 således at for alle s\in L hvor |s|\geq p, findes der en opsplitning s=uvxyz således at:
- uv^ixy^iz\in L for alle i\geq0
- |vy|>0
- v og y er ikke begge tomme
- |vxy|\le p
- v og y skal findes inden for et vindue på p tegn
Anvendelse
Vise at L ikke er kontekstfrit (modstridsbevis):
- Antag L var kontekstfrit, så var der et p>0 så alle s\in L hvor |s|\geq p har en opsplitning så (1), (2) og (3) er overholdt.
- Men så finder vi en s\in L, \quad |s|\geq p, så ingen opsplitning kan overholde (1), (2) og (3)
Eksempel¶
L=\{a^nb^nc^n\ | \ n \geq 0\} (Kongeeksemplet på et ikke kontekstfrit sprog)
Antag at L var kontekstfrit. Så var der et p>0 så for alle s\in L hvor |s|\geq p findes en opsplitning så (1), (2) og (3) er overholdt.
MEN, så finder vi en s\in L, \quad |s|\geq p, så ingen opsplitning kan overholde (1), (2) og (3)
Vælg s=a^pb^pc^p, klart at |s|=3p\geq p
Undersøg nu alle mulige opsplitninger. $$ \underbrace{a...a}_p\ \underbrace{b...b}_p \ \underbrace{c...c}_p $$ Hvor kan v og y ligge henne?
- v eller y indeholder flere slags tegn.
- Så bliver (1) overtrådt; uv^ixy^i z har tegn i forkert rækkefølge
- v består af a'er.
- Men hvis (3) skal gælde, så må y bestå af a'er eller af b'er. Og så bliver (1) overtrådt:
- uv^ixy^i z har for få c'er
- Men hvis (3) skal gælde, så må y bestå af a'er eller af b'er. Og så bliver (1) overtrådt:
- v består af b'er.
- Men så skal y bestå af b'er eller af c'er, hvis (3) skal overholdes. Men så vil der være for få a'er.
- v består af c'er.
- Så skal y også kun bestå af c'er. Så vil der være for mange c'er
Ingen opsplitning er gyldig, DVS: L er ikke kontekstfrit.