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.