To show a language is context free we can create a context free grammar for it then show that it generates all strings in the language. Consider the following grammar $G$. ``` S -> aaaRbb R -> aRb | aaRb | eps ``` We must prove that $L(G) = L$. Proof: The variable $S$ in the grammar starts off with the smallest string in $L$. This string is $aaabb$ with $j=2$ and $i=3$ (since $0 < j = 2 < i = 3 < 2j = 4$). The repetition happens within the variable $R$. Consider the string $s = a^ib^j \in L$. We want to see whether the string $s' = a^{i+1}b^{j+1}$ is in $L$. The first three conditions are trivial ($0 < j+1 < i+1$). The last condition is quick to check: \begin{align} i+1 &< 2(j+1) \\ i+1 &< 2j+2 \\ i &< 2j+1 \\ \end{align} So $s' \in L$. We can show $s' = a^{i+2}b^{j+1} \in L$ similarly. The rules `R -> aaaRb`, `R -> aR`, and `R -> Rb` cannot be in our grammar as it can generate strings that are not in the language. As an example, the strings `aaaaaabb`, `aaaabb`, and `aaabbb` can be generated if we add the above rules which are not in $L$. Thus, $G$ is complete. Hence, $L(G) = L$. As for creating a pushdown automata, there are many guides on how to construct a PDA from CFG. The following links will be useful (just from a quick google search). 1. [Convert CFG to CNF][1] 2. [Convert CFG to GNF][2] 3. [Construct PDA from CFG][3] [1]: https://www.geeksforgeeks.org/converting-context-free-grammar-chomsky-normal-form/ [2]: https://www.geeksforgeeks.org/converting-context-free-grammar-greibach-normal-form/ [3]: https://www.javatpoint.com/automata-cfg-to-pda-conversion