[proofplan]
Since $\pi$ is a linear isomorphism, conditions (1) and (2) translate directly into the statement that $C$ is a linear subspace — a hypothesis already in force. The content of the theorem is therefore condition (3). We first show that multiplication by $X$ in $\mathbb{F}_2[X]/(X^n - 1)$ corresponds via $\pi$ to a single cyclic right-shift of the coefficient vector. Cyclic closure of $C$ is then the statement that $\pi^{-1}(C)$ is closed under multiplication by $X$. To upgrade this to closure under multiplication by arbitrary $f \in \mathbb{F}_2[X]/(X^n - 1)$, we decompose $f = \sum f_i X^i$ and iterate, using linearity of $\pi^{-1}(C)$.
[/proofplan]
[step:Translate the linearity conditions via the isomorphism $\pi$]
Recall that $C \subseteq \mathbb{F}_2^n$ is by hypothesis a linear code, meaning $C$ is a linear subspace of $\mathbb{F}_2^n$. The map $\pi$ is an $\mathbb{F}_2$-linear isomorphism of vector spaces, so $\pi^{-1}(C)$ is a linear subspace of $\mathbb{F}_2[X]/(X^n - 1)$. This is equivalent to the simultaneous validity of conditions (1) $0 \in \pi^{-1}(C)$ and (2) closure under addition, because a non-empty subset of an $\mathbb{F}_2$-vector space is a linear subspace iff it contains $0$ and is closed under addition (scalar multiplication reduces to $0 \cdot v = 0$ and $1 \cdot v = v$ over $\mathbb{F}_2$).
Therefore (1) and (2) hold automatically from the linearity hypothesis on $C$, independently of whether $C$ is cyclic.
[/step]
[step:Identify multiplication by $X$ modulo $X^n - 1$ with a cyclic shift]
Let $g(X) = \sum_{i=0}^{n-1} a_i X^i \in \mathbb{F}_2[X]/(X^n - 1)$, so that $\pi(g) = (a_0, a_1, \ldots, a_{n-1})$. Compute
\begin{align*}
X \cdot g(X) = \sum_{i=0}^{n-1} a_i X^{i+1} = a_0 X + a_1 X^2 + \cdots + a_{n-2} X^{n-1} + a_{n-1} X^n.
\end{align*}
In the quotient ring $\mathbb{F}_2[X]/(X^n - 1)$ we have $X^n \equiv 1$, so
\begin{align*}
X \cdot g(X) \equiv a_{n-1} + a_0 X + a_1 X^2 + \cdots + a_{n-2} X^{n-1} \pmod{X^n - 1}.
\end{align*}
Applying $\pi$:
\begin{align*}
\pi(X \cdot g(X)) = (a_{n-1}, a_0, a_1, \ldots, a_{n-2}).
\end{align*}
This is precisely the cyclic right-shift of $\pi(g) = (a_0, a_1, \ldots, a_{n-1})$.
[guided]
We want to understand what multiplication by $X$ does on the quotient ring side, because cyclicity of $C$ is defined on the vector side in terms of a cyclic shift. If we can match these two operations through $\pi$, then "closed under shifts" and "closed under multiplication by $X$" become the same condition.
Take $g(X) = \sum_{i=0}^{n-1} a_i X^i$ with coefficient vector $(a_0, \ldots, a_{n-1})$. Multiplying by $X$ in $\mathbb{F}_2[X]$ raises every exponent by $1$:
\begin{align*}
X g(X) = a_0 X + a_1 X^2 + \cdots + a_{n-2} X^{n-1} + a_{n-1} X^n.
\end{align*}
The issue is that $X^n$ is a degree-$n$ term, and elements of $\mathbb{F}_2[X]/(X^n - 1)$ are represented by polynomials of degree $< n$. We must reduce modulo $X^n - 1$, which means replacing $X^n$ by $1$:
\begin{align*}
X g(X) \equiv a_{n-1} + a_0 X + a_1 X^2 + \cdots + a_{n-2} X^{n-1} \pmod{X^n - 1}.
\end{align*}
Reading off coefficients of the powers $X^0, X^1, \ldots, X^{n-1}$ gives the vector
\begin{align*}
\pi(X g(X)) = (a_{n-1}, a_0, a_1, \ldots, a_{n-2}).
\end{align*}
This is exactly the operation that takes $(a_0, a_1, \ldots, a_{n-1})$ and sends it to $(a_{n-1}, a_0, \ldots, a_{n-2})$ — the cyclic right-shift. The "wraparound" of the cyclic shift corresponds precisely to the quotient relation $X^n \equiv 1$: the leftover high-degree term from ordinary polynomial multiplication is folded back into the constant term.
[/guided]
[/step]
[step:Prove the forward direction via iteration]
Assume $C$ is cyclic; we verify (3). Let $f \in \mathbb{F}_2[X]/(X^n - 1)$ and $g \in \pi^{-1}(C)$. Write $f = \sum_{i=0}^{n-1} f_i X^i$ with $f_i \in \mathbb{F}_2$. Then
\begin{align*}
fg = \sum_{i=0}^{n-1} f_i (X^i g) \quad \text{in } \mathbb{F}_2[X]/(X^n - 1).
\end{align*}
We first show $X^i g \in \pi^{-1}(C)$ for every $i \in \{0, 1, \ldots, n-1\}$, by induction on $i$.
*Base case* ($i = 0$): $X^0 g = g \in \pi^{-1}(C)$ by hypothesis.
*Inductive step*: assume $X^i g \in \pi^{-1}(C)$, i.e., $\pi(X^i g) \in C$. By the previous step, $\pi(X \cdot X^i g) = \pi(X^{i+1} g)$ is the cyclic right-shift of $\pi(X^i g)$. Since $C$ is cyclic and $\pi(X^i g) \in C$, we have $\pi(X^{i+1} g) \in C$, i.e., $X^{i+1} g \in \pi^{-1}(C)$.
So $X^i g \in \pi^{-1}(C)$ for all $0 \le i \le n-1$. Since $\pi^{-1}(C)$ is closed under addition (already established in Step 1), and since $f_i X^i g \in \{0, X^i g\} \subseteq \pi^{-1}(C)$,
\begin{align*}
fg = \sum_{i=0}^{n-1} f_i (X^i g) \in \pi^{-1}(C).
\end{align*}
This proves (3).
[/step]
[step:Prove the reverse direction by specialising to $f = X$]
Assume $\pi^{-1}(C)$ satisfies (1), (2), (3); we show $C$ is cyclic. Let $c = (c_0, c_1, \ldots, c_{n-1}) \in C$ and set $g := \pi^{-1}(c) = \sum_{i=0}^{n-1} c_i X^i \in \pi^{-1}(C)$. Applying condition (3) with $f = X$:
\begin{align*}
X \cdot g \in \pi^{-1}(C).
\end{align*}
By the computation in Step 2, $\pi(X \cdot g) = (c_{n-1}, c_0, \ldots, c_{n-2})$, which is the cyclic right-shift of $c$. Hence the cyclic shift of $c$ lies in $C$. Since $c \in C$ was arbitrary, $C$ is cyclic.
[/step]
[step:Conclude that the cyclic condition is equivalent to the ideal condition]
Combining both directions, $C$ is cyclic iff $\pi^{-1}(C)$ satisfies (1), (2), (3). Conditions (1) and (2) express closure under the additive subgroup structure; condition (3) expresses absorption by the ambient ring $\mathbb{F}_2[X]/(X^n - 1)$. These are precisely the axioms for $\pi^{-1}(C)$ to be an ideal of $\mathbb{F}_2[X]/(X^n - 1)$. This completes the proof.
[/step]