Para mostrar que uma linguagem é livre de contexto, é suficiente que se crie um autômato de pilha ou uma gramática livre de contexto para expressá-la.
Para demontrar que uma linguagem não é livre do contexto, utilizamos o lema do bombeamento para lingagens livres de contexto, de forma análoga às linguagens regulares.
O lema do bombeamento para linguagens livres de contexto define que, se $L$ é uma linguagem livre de contexto, então:
Assim como no caso das linguagens regulares, a prova é por contradição.
Assumimos que $L$ é uma LLC, e que existe $w \in L$, logo $w = a^{n}b^{n}c^{n}$.
Pelo lema do bombeamento, $w = uxvyz$ e $|xvy| \le n$, logo, sabemos que $xvy$ só pode conter:
É impossível conter $a$, $b$ e $c$, porque $xvy$ não é grande o suficiente para isso (uma vez que $|xvy| \le n$).
Agora, bombeamos “para baixo”, fazendo com que $i = 0$, e a palavra resultante $uvw$ não pode mais conter o mesmo número de $a$, $b$ e $c$, porque a palavra $xy$ só pode conter, no máximo, dois dos símbolos, e portanto o resultado não fará parte de $L$.
Para essa demonstração vamos partir do mesmo princípio do exemplo anterior e assumir que $i = j = k$, e assim como antes, $xvy$ não pode conter o mesmo número de $a$, $b$ e $c$, logo, se $xvy$ contém:
Como conseguimos uma contradição para todos os casos, a linguagem não é livre de contexto.
Para demonstrar esse caso, precisamos ter cuidado na escolha da palavra para analisar, pois se escolhermos $0^{n}10^{n}1$, poderímos dividir a palavra como:
\[\underbrace{000\dots000}_{u}\underbrace{0}_{x}\underbrace{1}_{v}\underbrace{0}_{y}\underbrace{000\dots 000}_{w}\]E conseguiríamos bombear $x^{i}vy^{i}$.
Mas se escolhermos a palava $0^{n}1^{n}0^{n}1^{n}$, podemos demonstrar que essa palavra não pode ser bombeada.
Logo, $L = ww$ não é uma LLC.
As LLC são fechadas para a união.
Dado um autômato de pilha $M_1$ que reconhece $L_1$ e um autômato de pilha $M_2$ que reconhece $L_2$, basta criar um automato de pilha não determinístico $M_3$ que reconhece $M_1$ e $M2$, e decide por um ou outro caminho sem consumir a entrada ($\varepsilon$) e sem modificar a pilha. O autômoto $M_3$ reconhecerá $L_3 = L_1 \cup L_2$.
As LLC são fechadas para a concatenação.
Dada uma gramática $G_1 = (V_1, T_1, P_1, S_1)$ e uma gramática $G_2 = (V_2, T_2, P_2, S_2)$, podemos criar uma gramática $G_3$ como
\[G_3 = (V_1 \cup V_2 \cup {S}, T_1 \cup T_2, P_1 \cup P_2 \cup \{S \rightarrow S_1 S_2\}, S)\]Claramente, $G_3$ é uma linguagem livre de contexto e formada pela concatenação de uma palavra de $L_1$ e uma palavra de $L_2$.
As linguagens livres de contexto não são fechadas para a intersecção.
Sejam $L_1 = \{a^{n}b^{n}c^{m} | n \ge 0, m \ge 0\}$ e $L_2 = \{a^{m}b^{n}c^{n} | n \ge 0, m \ge 0\}$, ambas linguagens são livres de contexto (Desafio: você consegue demonstrar isso?), pela intersecção das duas linguagens, podemos obter $L_3$
\[L_3 = \{ a^{n}b^{n}c^{n} | n \ge 0 \}\]Como sabemos que $L_3$ não é uma linguagem livre de contexto, demonstramos que a intersecção não é fechada para as LLC pro contra-exemplo.
Como a intersecção pode ser representada em termos da união e do complemento, e considerando que a intersecção não é fechada para as linguagens livres de contexto, não se pode afirmar que o complemento de uma linguagem livre de contexto é livre de contexto.