An hypothesis for self-dual convolutional codes After trying to characterize self-dual convolutional codes of rate $\frac{1}{2}$ and $\frac{2}{4}$ I stumbled upon the following observation:
I was explicitely looking at the necessary condition
$$(0)=G(z)*H(z)^T\stackrel{(1)}{=}G(z)*G(z)^T=(g_1(z),g_2(z)) 
\begin{pmatrix}
g_1(z) \\
g_2(z)
\end{pmatrix}=g_1^2(z)+g_2^2(z),$$
where $(1)$ follows from the code being self-dual. There are non-constant polynomial solutions here (for $p\equiv 1 \ mod \ 4$), but in this case I always seem to find an element in $ker(H(z))=ker(G(z))$, which is not in $span(G(z))$. And this is a contradiction. This made me think of the hypothesis that
any generator matrix of a self-dual convolutional code must have all its entries in $\mathbb{F}_q$.
Is this statement true?
 A: When $q\equiv1\pmod4$ there is, indeed, an element $i\in\Bbb{F}_q$ such that $i^2+1=0$.
This means that
$$0=g_1(z)^2+g_2(z)^2=g_1(z)^2-(ig_2(z))^2=(g_1(z)-ig_2(z))(g_1(z)+ig_2(z)).$$
The polynomial ring $\Bbb{F}_q[z]$ is an integral domain, so this implies that either
$g_1(z)+ig_2(z)=0$ or $g_1(z)-ig_2(z)=0$. In either case we have
$$
\gcd(g_1(z),g_2(z))=g_1(z).
$$
But, it is usually required that the generator matrix of a convolutional code is canonical (the term used by at least McEliece's chapter in the Handbook). One of the properties of a canonical generator matrix is that its maximal size minors, here $g_1(z)$ and $g_2(z)$, must have $\gcd=1$. McEliece uses the term basic for this, don't know about your textbook. Anyway, unless you have this property your generator matrix will be catastrophic, and that is excluded by every telecommunication engineer and researcher.
So the conditions $g_1(z)^2+g_2(z)^2=0$ and $G(z)=(g_1(z),g_2(z))$ canonical together imply, as you suspected, that $g_1(z)$ and $g_2(z)$ must both be constants from $\Bbb{F}_q$.

Whenever I teach a course on convolutional codes, I never consider alphabet fields other than $\Bbb{F}_2$ :-) There the condition $g_1(D)^2+g_2(D)^2=0$ is rather pointless because Freshman's Dream tells us that this happens iff $g_1(D)=g_2(D)$. The dual of a binary $(2,1)$ convolutional code is, in a sense, always equivalent to the original code simply becase if $G(D)=(g_1(D),g_2(D))$ is the generator matrix of a code $\mathcal{C}$, then $(g_2(D),g_1(D))$ is the generator matrix of $\mathcal{C}^\perp$ by virtue of $2g_1(D)g_2(D)=0$.

In the case of $(4,2)$ codes the game is probably more interesting. Too late an hour for me to delve there now.
