I also think that the regex primality test is outside of CFG, but I've never proven that, so don't rely on it ;-)

Doesn't the pumping lemma that you cited also show what you claim? Specifically, if there were a CFG that recognised exactly the strings of

`1`s of prime length, then we would have the assertion that any sufficiently large prime

`s` could be written as

`s = u + v + x + y + z`, with everyone non-negative and

`v + y` at least

`1`, in such a way that

`u + x + i*(v + y) + z` was also prime for every non-negative

`i`. However, in that case,

- if
`u + x + z = 0`, then we can take `i` to be composite, so that `u + x + z + i*(v + y) = i*(v + y)` is composite;
or
- otherwise, we may take
`i = (v + y + 2)*(u + x + z)`, so that `u + x + z + i*(v + y) = (v + y + 1)^2*(u + x + z)` is composite.

This is a contradiction.

UPDATE: Forgot to handle the case `u + x + z = 0`.

UPDATE 2: Oops, and I was quite sloppy in my choice of `i` even when `u + x + z` is positive. I think that it's OK now.

Comment onRe^5: check for square-number with a regexSelectorDownloadCode