[proofplan]
Part (i) is proved by writing a basis of $C_1 \mid C_2$ in terms of bases of $C_1$ and $C_2$. The natural candidates are the concatenated vectors $(x_i \mid x_i)$ for $x_i$ running over a basis of $C_1$, and the padded vectors $(0 \mid y_j)$ for $y_j$ running over a basis of $C_2$. We verify spanning by unpacking the definition of $C_1 \mid C_2$, and linear independence by projecting onto the second half. Part (ii) has two halves: the lower bound $\geq \min\{2 d(C_1), d(C_2)\}$ follows from a case split on whether the $y$ component is zero, with the Hamming triangle inequality used when $y \neq 0$; the upper bound $\leq \min\{2 d(C_1), d(C_2)\}$ follows by exhibiting explicit codewords $(x \mid x)$ of weight $2 w(x)$ and $(0 \mid y)$ of weight $w(y)$ for minimum-weight choices of $x \in C_1$ and $y \in C_2$.
[/proofplan]
[step:Record the Hamming weight and triangle inequality]
For $a \in \mathbb{F}_2^n$ the Hamming weight $w(a) = |\{i : a_i \neq 0\}|$ satisfies the [Triangle Inequality for Hamming Weight](/theorems/???):
\begin{align*}
w(a + b) \leq w(a) + w(b), \qquad a, b \in \mathbb{F}_2^n.
\end{align*}
For a concatenation $(a \mid b) \in \mathbb{F}_2^{2n}$ the weight splits additively, because the two halves have disjoint coordinate supports:
\begin{align*}
w(a \mid b) = w(a) + w(b).
\end{align*}
For a linear code $C \subseteq \mathbb{F}_2^m$ the minimum distance equals the minimum nonzero weight:
\begin{align*}
d(C) = \min\{w(c) : c \in C,\ c \neq 0\}.
\end{align*}
[/step]
[step:Assemble the candidate basis of $C_1 \mid C_2$]
Let $x_1, \dots, x_k \in \mathbb{F}_2^n$ be a basis of $C_1$, so $k = \operatorname{rank}(C_1)$, and let $y_1, \dots, y_\ell \in \mathbb{F}_2^n$ be a basis of $C_2$, so $\ell = \operatorname{rank}(C_2)$. Consider the collection of $k + \ell$ vectors in $\mathbb{F}_2^{2n}$:
\begin{align*}
B := \{\,(x_i \mid x_i) : 1 \leq i \leq k\,\} \cup \{\,(0 \mid y_j) : 1 \leq j \leq \ell\,\}.
\end{align*}
We show $B$ is contained in $C_1 \mid C_2$, spans $C_1 \mid C_2$, and is linearly independent.
**Containment.** For $(x_i \mid x_i)$: take $x = x_i \in C_1$ and $y = 0 \in C_2$; then $(x \mid x + y) = (x_i \mid x_i)$. For $(0 \mid y_j)$: take $x = 0 \in C_1$ and $y = y_j \in C_2$; then $(x \mid x + y) = (0 \mid y_j)$. Both are in $C_1 \mid C_2$.
**Spanning.** Any element of $C_1 \mid C_2$ has the form $(x \mid x + y)$ with $x \in C_1$, $y \in C_2$. Writing $x = \sum_{i=1}^k \alpha_i x_i$ and $y = \sum_{j=1}^\ell \beta_j y_j$ with $\alpha_i, \beta_j \in \mathbb{F}_2$, we obtain
\begin{align*}
(x \mid x + y) = \left(\sum_i \alpha_i x_i \ \Big|\ \sum_i \alpha_i x_i + \sum_j \beta_j y_j \right) = \sum_i \alpha_i (x_i \mid x_i) + \sum_j \beta_j (0 \mid y_j),
\end{align*}
which is an $\mathbb{F}_2$-linear combination of elements of $B$.
**Linear independence.** Suppose $\sum_i \alpha_i (x_i \mid x_i) + \sum_j \beta_j (0 \mid y_j) = 0$. Looking at the first half of $\mathbb{F}_2^{2n}$ (coordinates $1, \dots, n$) gives
\begin{align*}
\sum_{i=1}^k \alpha_i x_i = 0 \in \mathbb{F}_2^n.
\end{align*}
Since $x_1, \dots, x_k$ are linearly independent in $\mathbb{F}_2^n$, every $\alpha_i = 0$. Substituting back, looking at the second half yields $\sum_j \beta_j y_j = 0$, and by linear independence of $y_1, \dots, y_\ell$, every $\beta_j = 0$. Hence $B$ is linearly independent.
[guided]
Why pick the basis elements in this asymmetric form — $(x_i \mid x_i)$ from $C_1$ and $(0 \mid y_j)$ from $C_2$? Because the bar product $(x \mid x + y)$ is parameterised by a pair $(x, y) \in C_1 \times C_2$. Setting $y = 0$ gives the "diagonal" vectors $(x \mid x)$, which carry the $C_1$-content; setting $x = 0$ gives the "padded" vectors $(0 \mid y)$, which carry the $C_2$-content. A linear combination of these two types recovers a generic $(x \mid x + y)$: the $x$ comes from the first type, and the correction $y$ in the second slot comes from the second type.
The projection trick for independence is worth naming. Define the two halving projections
\begin{align*}
\pi_L: \mathbb{F}_2^{2n} &\to \mathbb{F}_2^n, & (a \mid b) &\mapsto a, \\
\pi_R: \mathbb{F}_2^{2n} &\to \mathbb{F}_2^n, & (a \mid b) &\mapsto b.
\end{align*}
These are $\mathbb{F}_2$-linear. Applying $\pi_L$ to the hypothetical relation $\sum \alpha_i (x_i \mid x_i) + \sum \beta_j (0 \mid y_j) = 0$ annihilates the $(0 \mid y_j)$ terms (because their left half is $0$) and reduces the equation to $\sum \alpha_i x_i = 0$, forcing all $\alpha_i = 0$ by independence of the $x_i$. Then $\pi_R$ applied to what remains forces all $\beta_j = 0$. The two halves are extracted cleanly because the two families of basis vectors have non-overlapping "support regions" in the concatenated structure.
[/guided]
[/step]
[step:Conclude part (i) from the basis count]
Step 2 shows $B$ is a basis of $C_1 \mid C_2$. Its cardinality is
\begin{align*}
|B| = k + \ell = \operatorname{rank}(C_1) + \operatorname{rank}(C_2).
\end{align*}
Hence $\operatorname{rank}(C_1 \mid C_2) = \operatorname{rank}(C_1) + \operatorname{rank}(C_2)$, proving (i).
[/step]
[step:Prove the lower bound $d(C_1 \mid C_2) \geq \min\{2 d(C_1), d(C_2)\}$]
Let $c = (x \mid x + y) \in C_1 \mid C_2$ be a nonzero codeword, with $x \in C_1$, $y \in C_2$. We split on whether $y$ is zero.
**Case 1: $y = 0$.** Then $c = (x \mid x)$, and since $c \neq 0$, we have $x \neq 0$. Using the weight-splitting identity for concatenations,
\begin{align*}
w(c) = w(x \mid x) = w(x) + w(x) = 2 w(x) \geq 2\, d(C_1),
\end{align*}
where the final inequality is $w(x) \geq d(C_1)$ because $x$ is a nonzero element of $C_1$.
**Case 2: $y \neq 0$.** Then $y$ is a nonzero element of $C_2$, so $w(y) \geq d(C_2)$. We use the weight-splitting identity and the Hamming triangle inequality $w(a + b) \leq w(a) + w(b)$ applied to $a = x$, $b = x + y$ (so $a + b = y$ in $\mathbb{F}_2^n$ because characteristic 2 makes $x + x = 0$):
\begin{align*}
w(c) = w(x \mid x + y) = w(x) + w(x + y) \geq w\bigl(x + (x + y)\bigr) = w(y) \geq d(C_2).
\end{align*}
The middle inequality is the triangle inequality for Hamming weight.
Combining the two cases, every nonzero codeword of $C_1 \mid C_2$ has weight at least $\min\{2 d(C_1), d(C_2)\}$, so
\begin{align*}
d(C_1 \mid C_2) \geq \min\{\,2\, d(C_1),\ d(C_2)\,\}.
\end{align*}
[guided]
The split on $y = 0$ versus $y \neq 0$ is forced by where the minimum-weight codeword can sit. When $y = 0$, the concatenation is a perfect copy $(x \mid x)$ so the weight simply doubles $w(x)$, and minimising over $x \in C_1 \setminus \{0\}$ gives the factor $2\, d(C_1)$. When $y \neq 0$, the second half $x + y$ differs from the first half $x$, and the weight budget is split between them; the Hamming triangle inequality lets us trade two separate weights $w(x), w(x+y)$ for a single sum-weight $w(y)$.
A common pitfall: one might hope the bound is $d(C_1) + d(C_2)$ or $\min\{d(C_1), d(C_2)\}$ by looking at the two halves naively. It is neither. The doubling factor for $C_1$ comes from the redundant copy of $x$ in both halves, and the $d(C_2)$ floor — not doubled — comes from the fact that $y$ appears only in the second half.
[/guided]
[/step]
[step:Prove the upper bound $d(C_1 \mid C_2) \leq \min\{2 d(C_1), d(C_2)\}$]
We exhibit codewords of $C_1 \mid C_2$ whose weights are exactly $2 d(C_1)$ and $d(C_2)$.
**Attaining $2 d(C_1)$.** Let $x^\star \in C_1$ be a nonzero codeword with $w(x^\star) = d(C_1)$ (it exists because $C_1$ is nonzero). Set $y = 0 \in C_2$. Then $(x^\star \mid x^\star + 0) = (x^\star \mid x^\star) \in C_1 \mid C_2$ has weight
\begin{align*}
w(x^\star \mid x^\star) = w(x^\star) + w(x^\star) = 2\, d(C_1).
\end{align*}
**Attaining $d(C_2)$.** Let $y^\star \in C_2$ be a nonzero codeword with $w(y^\star) = d(C_2)$ (it exists because $C_2$ is nonzero). Set $x = 0 \in C_1$. Then $(0 \mid 0 + y^\star) = (0 \mid y^\star) \in C_1 \mid C_2$ has weight
\begin{align*}
w(0 \mid y^\star) = w(0) + w(y^\star) = 0 + d(C_2) = d(C_2).
\end{align*}
Both codewords are nonzero, so
\begin{align*}
d(C_1 \mid C_2) \leq w(x^\star \mid x^\star) = 2\, d(C_1), \qquad d(C_1 \mid C_2) \leq w(0 \mid y^\star) = d(C_2),
\end{align*}
giving $d(C_1 \mid C_2) \leq \min\{\,2\, d(C_1),\ d(C_2)\,\}$.
[/step]
[step:Combine the two bounds to conclude part (ii)]
Steps 4 and 5 together give
\begin{align*}
\min\{\,2\, d(C_1),\ d(C_2)\,\} \leq d(C_1 \mid C_2) \leq \min\{\,2\, d(C_1),\ d(C_2)\,\},
\end{align*}
so $d(C_1 \mid C_2) = \min\{\,2\, d(C_1),\ d(C_2)\,\}$, proving (ii). Combined with (i), the proof is complete.
[/step]