Ho ripensato a questo problema e penso di avere una prova completa. È un po 'più complicato di quanto mi aspettassi. I commenti sono molto graditi! Aggiornamento: ho inviato questa prova su arXiv, nel caso in cui ciò sia utile a qualcuno: http://arxiv.org/abs/1207.2819
Sia un linguaggio senza contesto rispetto a un alfabeto . Sia un automa pushdown che riconosce , con stack alfabeto . Indichiamo conil numero di stati di . Senza perdita di generalità, possiamo supporre che le transizioni di aprano il simbolo più in alto della pila e non spingano alcun simbolo sulla pila o spingano in pila il simbolo più in alto precedente e qualche altro simbolo.Σ A L Γ | A | A ALΣALΓ|A|AA
Definiamoe la lunghezza di pompaggio e mostrerà che tutto tale che ha una decomposizione della forma tale che , e .p = | A | ( | Γ | + 1 ) p ′ w ∈ L | w | > p w = u v x y z | v x y | ≤ p | v y | ≥ 1 ∀ n ≥ 0 , u v n xp′=|A|2|Γ|p=|A|(|Γ|+1)p′w∈L|w|>pw=uvxyz|vxy|≤p|vy|≥1∀n≥0,uvnxynz∈L
Sia tale che . Sia un percorso accettante di lunghezza minima per (rappresentato come una sequenza di transizioni di ), denotiamo la sua lunghezza con. Possiamo definire, per, la dimensione della pila nella posizione del percorso accettante. Per tutti , definiamo un
livello su come un insieme di tre indici con tale che:| w | > p π w A | π | 0 ≤ i < | π | s iow∈L|w|>pπwA|π|0≤i<|π|siN > 0 N π i , j , k 0 ≤ i < j < k ≤ piN>0Nπi,j,k0≤i<j<k≤p
- si=sk,sj=si+N
- per tutte le tali che ,i ≤ n ≤ j s i ≤ s n ≤ s jni≤n≤jsi≤sn≤sj
- per tutte le tali che , .j ≤ n ≤ k s k ≤ s n ≤ s knj≤n≤ksk≤sn≤sk
(Per un esempio di questo, vedere l'immagine per il caso 2 di seguito che illustra un livello ).N
Definiamo il livello di come la massima tale che ha un
livelloQuesta definizione è motivata dalla seguente proprietà: se la dimensione dello stack su un percorso diventa maggiore del suo livello , i simboli dello stack più profondi di livelli non verranno mai visualizzati. Ora distingueremo due casi: , nel qual caso sappiamo che la stessa configurazione per lo stato dell'automa e i simboli più in alto dello stack si incontrano due volte nei primi passi di , oppureπ N π N π l l l < p ′ l p + 1 π l ≥ p ′ v ylπNπNπlll<p′lp+1πl≥p′e deve esserci una posizione di impilamento e non di impilamento che può essere ripetuta un numero arbitrario di volte, da cui costruiamo e .vy
Caso 1. . Definiamo le configurazioni di come coppie di uno stato di e una sequenza di simboli di pila (in cui pile di dimensioni inferiori a rappresentate riempiendole con con uno speciale simbolo vuoto, motivo per cui usiamo quando si definisce ). Per definizione, ci sono
tali configurazioni, che è inferiore a . Quindi, nei primi primi passi di , la stessa configurazione si incontra due volte in due posizioni diverse, diciamo . Indicato da A A l l l | Γ | + 1 pl<p′AAlll|Γ|+1p p p + 1 π i < j i j w i j π i ≤ j w = u v x y z y z = ε u = w|A|(|Γ|+1)lpp+1πi<jiˆ (resp.
) la posizione dell'ultima lettera di letta al punto (resp.
) di . Abbiamo . Quindi, possiamo considerare con , , , . (Con denotiamo le lettere di da compreso a esclusivo.) Per costruzione, .jˆwijπiˆ≤jˆw=uvxyzyz=ϵ v= w i ⋯ j x= w j ⋯ | w | w x ⋯ y wxy | vxy | ≤pu=w0⋯iˆv=wiˆ⋯jˆx=wjˆ⋯|w|wx⋯ywxy|vxy|≤p
Dobbiamo anche mostrare che , ma questo segue dalla nostra osservazione sopra: i simboli dello stack più profondi di non vengono mai visualizzati, quindi non c'è modo di distinguere configurazioni uguali secondo la nostra definizione e un percorso di accettazione per è costruito da quello di ripetendo i passaggi tra e , volte.l u V n x W i j n∀n≥0,uvnxynz=uvnx∈Lluvnxwijn
Infine, abbiamo anche , perché se , quindi, poiché abbiamo la stessa configurazione ai passaggi e in , sarebbe un percorso accettante per , contraddicendo la minimalità di .v = ϵ i j π π ′ = π 0 ⋯ i π j ⋯ | π | w π|v|>0v=ϵijππ′=π0⋯iπj⋯|π|wπ
(Si noti che questo caso equivale ad applicare il lemma di pompaggio per le lingue normali codificando in modo rigido i simboli di pila più in alto nello stato dell'automa, il che è adeguato perché è abbastanza piccolo da garantire che sia maggiore del numero di stati di questo automa Il trucco principale è che dobbiamo adattarci a
-transitions.)l | w | εll|w|ϵ
Caso 2. . Lascia che sia un livello . A qualsiasi dimensione dello stack , , associamo l' ultimo push e il primo pop . Per definizione, e . Ecco un'illustrazione di questa costruzione. Per semplificare il disegno, ometto la distinzione tra le posizioni del percorso e le posizioni delle parole che dovremo fare in seguito. i , j , k p ′ h s i ≤ h ≤ s j lp ( h ) = max ( { y ≤ j | s y = h } ) fp ( h ) = min ( { y ≥ j | s y = h } ) i ≤ lp ( hl≥p′i,j,kp′hsi≤h≤sj
lp(h)=max({y≤j|sy=h})
fp(h)=min({y≥j|sy=h})j ≤ fp ( h ) ≤ ki≤lp(h)≤jj≤fp(h)≤k
Diciamo che lo stato completo di una pila di dimensioni è il triplo formato da:h
- lo stato dell'automa in posizionelp(h)
- il simbolo dello stack più in alto nella posizionelp(h)
- lo stato dell'automa in posizionefp(h)
Ci sono possibili stati pieni, e stack tra e
, quindi, dal principio pidgeonhole, esistono due stack dimensioni con
tale che gli stati completi a ed sono gli stessi. Come nel caso 1, definiamo con , , e le posizioni delle ultime lettere di lette nelle posizioni corrispondenti in . Abbiamo fattore dovep ′ + 1 s i s j g , h s i ≤ g < h ≤ s j g g ) v = w ^ lp ( g ) ⋯ ^ lp ( h )p′p′+1sisjg,hsi≤g<h≤sjg^ lp ( g ) ^ lp ( h ) ^ fp ( h ) ^ fp ( g ) w π w = u v x y z u = w 0 ⋯ ^ lp (hlp(ˆg)lp(ˆh)fp(ˆh)fp(ˆg)wπw=uvxyzu=w0⋯lp(ˆg),
,
,
e .v=wlp(ˆg)⋯lp(ˆh) y = w ^ fp ( h ) ⋯ ^ fp ( g ) z = w ^ fp ( g ) ⋯ | w |x=wlp(ˆh)⋯fp(ˆh)y=wfp(ˆh)⋯fp(ˆg)z=wfp(ˆg)⋯|w|
Questa fattorizzazione assicura che (perché dalla nostra definizione di livelli).k ≤ p|vxy|≤pk≤p
Dobbiamo anche dimostrare che . Per fare ciò, osserva che ogni volta che ripetiamo , partiamo dallo stesso stato e dallo stesso stack top e non pop sotto la nostra posizione corrente nello stack (altrimenti dovremmo spingere di nuovo nella posizione corrente, violando la massima di ), così possiamo seguire lo stesso percorso in e spingere la stessa sequenza di simboli in pila. Per la massimalità di e la minimalità di , durante la lettura di , non compariamo sotto la nostra posizione corrente nello stack, quindi il percorso seguito nell'automa è lo stesso indipendentemente dal numero di volte che abbiamo ripetutov lp ( g ) A lp ( h ) fp ( h ) x v w v v v fp ( g ) A u v n x y n z w∀n≥0,uvnxynz∈Lvlp(g)Alp(h)fp(h)xv. Ora, se ripetiamo tutte le volte che ripetiamo , poiché partiamo dallo stesso stato, poiché abbiamo inserito la stessa sequenza di simboli nello stack con le nostre ripetizioni di , e poiché non facciamo più pop di quello che ha impilati per minimalità di , possiamo seguire lo stesso percorso in e far apparire la stessa sequenza di simboli dallo stack. Quindi, un percorso di accettazione da può essere costruito dal percorso di accettazione per .wvvvfp(g)Auvnxynzw
Infine, abbiamo anche , perché come nel caso 1, se e , possiamo costruire un percorso di accettazione più breve per rimuovendo e .v = ϵ y = ϵ w π lp ( g ) ⋯ lp ( h ) π fp ( h ) ⋯ fp ( g )|vy|>1v=ϵy=ϵwπlp(g)⋯lp(h)πfp(h)⋯fp(g)
Quindi, abbiamo una fattorizzazione adeguata in entrambi i casi e il risultato è dimostrato.
(Il merito è di Marc Jeanmougin per avermi aiutato con questa prova.)