A simple recursive convolutional code $g_1(D)\in GF^2$
\begin{equation} g_{1}(D) = \frac{1}{1\oplus D} \end{equation}
is cascaded with $g_2(D)\in \mathbb{R}$
\begin{equation} g_{2}(D) = 1-D \end{equation}
to give an overall transfer function
\begin{equation} g_{c}(D) = \frac{1-D}{1 \oplus D} \end{equation}
Although the two systems $g_1{D}$ and $g_2(D)$ are linear individually, it is claimed that $g_c(D)$ is not. Can please someone suggest why is that the case?
The answer has more to do with engineering than mathematics. For your first filter, the input is a sequence of elements of $\mathbb F_2$ which an engineer treats as real numbers $0$ and $1$. The recursive filter output is also a sequence of elements of $\mathbb F_2$ but the engineer has effectively transformed $$y_n = x_n + y_{n-1} = x_n \oplus y_{n-1} ~\quad~ \text{equation in } \mathbb F_2$$ into $$y_{n} = x_{n} + y_{n-1} - 2x_{n}y_{n-1}~~\qquad \text{equation in } \mathbb R$$ The second filter sets $$z_n = y_{n} - y_{n-1}~~\qquad\text{equation in } \mathbb R$$ but notice that the output can take on values in $\{-1, 0, +1\}$ and so the overall cascade is not a linear filter regardless of whether an engineer or a mathematician is looking at it.