Solution (source code)

= Solution

Generate four partial-product <bits> with <AND gates>:
$$
p_{00}=x_0y_0,\quad p_{10}=x_1y_0,\quad p_{01}=x_0y_1,\quad p_{11}=x_1y_1.
$$
The <binary multiplication> expansion is $XY=p_{00}+2(p_{10}+p_{01})+4p_{11}$. Add the two weight-two <bits> with a <half adder>, then add its <carry> to $p_{11}$ with a second <half adder>. The complete <combinational logic> is
$$
\begin{aligned}
z_0&=p_{00},&z_1&=p_{10}\oplus p_{01},&c&=p_{10}\land p_{01},\\
z_2&=p_{11}\oplus c,&z_3&=p_{11}\land c.
\end{aligned}
$$
Thus \b[four <AND gates> for the partial products and two <half adders> suffice]. Each <half adder> contains one <exclusive or> gate and one <AND gate>. In the largest case $3\times3=9$, these equations produce $1001$, including the necessary fourth output <bit>.