Hybrid Sequence:
The starting point is $\lib{prg-real}^H$.
Factor out everything to do with $\seed$ into a new scope. This makes an instance of $\lib{prg-real}^G$ appear and has no effect on the adversary (calling program).
Since $G$ is a secure PRG, replacing $\lib{prg-real}^G$ with $\lib{prg-rand}^G$ has only negligible effect on the adversary (calling program).
The call to $\prgsamp_G$ can be inlined, causing no effect on the adversary (calling program).
Uniformly sampling $2\secpar$ bits is the same as uniformly (and independently) sampling its two halves.
We can repeat a similar sequence of steps, now focusing on the call to $G(B)$.
Concatenating $\secpar$ uniformly sampled bits with $2\secpar$ independent, uniformly sampled bits is the same as sampling $3\secpar$ uniform bits. The result of this change is the $\lib{prg-rand}^H$ library, which completes the proof.
$\lib{prg-real}^H$
$\prgsamp_H$( ):
$\seed \gets \bits^\secpar$
// $H(\seed)$:
$A $
$\| B $
${}:= {}$
$G(\seed)$
$\prgsamp_G()$
${}\gets \bits^{2\secpar}$
${}\gets \bits^\secpar$
$C \| D $
${}:= {}$
$G(B)$
$\prgsamp_G()$
${}\gets \bits^{2\secpar}$
return
$A \| C \| D$
$Y$
$\link$
$\lib{prg-real}^G$
$\prgsamp_G$( ):
$\seed \gets \bits^\secpar$
return $G(\seed)$
$\lib{prg-rand}^G$
$\prgsamp_G$( ):
$Y \gets \bits^{2\secpar}$
return $Y$