Dimostriamo prima che ogni stringa del linguaggio puo' essere generata dalla grammatica.
Prendiamo una stringa akbhck-h,
questa si puo' generare nel seguente modo:
partendo da S utilizziamo k (che puo' anche essere 0) volte la produzione S -> aSc,
ottenendo akSck, con la produzione S -> A
otteniamo akAck.
L'uso della produzione
Ac -> bA (che ogni volta che viene applicata aggiunge una b ed elimina una c)
per h (che puo' anche essere 0) volte, ci porta ad akbhAck-h.
La produzione A -> ε ci restituisce ora
akbhck-h.
Passiamo ora a dimostrare che ogni stringa di terminali generata dalla grammatica
e' una stringa di L.
Per arrivare ad una stringa di terminali, partendo da S possiamo applicare S -> A
oppure S -> aSc quante volte vogliamo, diciamo k.
Nel primo caso otteniamo A e possiamo arrivare ad una stringa (vuota) di terminali solo
utilizzando la produzione A -> ε. La stringa vuota appartiene ad L.
Nel secondo caso otteniamo akAck. A partire da questa stringa
possiamo ottenere una stringa di terminali solo utilizzando la produzione Ac -> bA
un certo numero di volte h (anche 0) e poi la produzione A -> ε.
Cosi' facendo, poiche' ad ogni applicazione di Ac -> bA viene aggiunta una b
a sinistra della A e viene eliminata una c alla sua destra, otteniamo
akbhck-h, che appartiene ad L.