[proofplan]
We first compute that the total residual balance is zero, because every lower-bound contribution appears once with each sign. Then we prove the two implications by translating between an original feasible circulation $f$ and an auxiliary flow $h$: subtracting the lower bounds gives residual flow on original arcs, while the super-source and super-sink arcs account exactly for negative and positive residual balances. Finally, if an auxiliary flow has value $B$, the capacity bound out of $s^*$ forces all source arcs to be saturated, and conservation at the original vertices reconstructs a feasible circulation by adding the lower bounds back.
[/proofplan]
[step:Show that the positive and negative residual balances have the same total]
Let $A'$ denote the arc set of the auxiliary network $D'$, and let $c:A'\to\mathbb R$ denote its capacity function. Thus $c(a)=u(a)-l(a)$ for $a\in A$, $c(s^*,v)=-\hat b(v)$ when $\hat b(v)<0$, and $c(v,t^*)=\hat b(v)$ when $\hat b(v)>0$. For any $s^*$-$t^*$ flow $h:A'\to\mathbb R$, let $|h|$ denote its value, namely the net flow leaving $s^*$.
For each vertex $v\in V$, let $A^{-}(v)=\{a\in A: a=(w,v)\text{ for some }w\in V\}$ be the set of original arcs entering $v$, and let $A^{+}(v)=\{a\in A: a=(v,w)\text{ for some }w\in V\}$ be the set of original arcs leaving $v$. For each original arc $a=(x,y)\in A$, its lower bound $l(a)$ appears once in $\sum_{v\in V}\sum_{a\in A^{-}(v)}l(a)$ and once in $\sum_{v\in V}\sum_{a\in A^{+}(v)}l(a)$. Therefore the lower-bound contributions cancel when summing over all vertices:
\begin{align*}
\sum_{v\in V}\hat b(v)=\sum_{v\in V}b(v)-\sum_{v\in V}\sum_{a\in A^{-}(v)}l(a)+\sum_{v\in V}\sum_{a\in A^{+}(v)}l(a).
\end{align*}
Since every arc has exactly one head and one tail, this becomes
\begin{align*}
\sum_{v\in V}\hat b(v)=\sum_{v\in V}b(v)-\sum_{a\in A}l(a)+\sum_{a\in A}l(a)=0.
\end{align*}
Since $V$ is finite, we can split this finite sum into its positive, negative, and zero terms. Hence
\begin{align*}
\sum_{\{v\in V: \hat b(v)>0\}}\hat b(v)=\sum_{\{v\in V: \hat b(v)<0\}}-\hat b(v)=B.
\end{align*}
[guided]
We first isolate the bookkeeping caused by the lower bounds. Let $A'$ denote the arc set of the auxiliary network $D'$, and let $c:A'\to\mathbb R$ denote the auxiliary capacity function. Thus an original arc $a\in A$ has $c(a)=u(a)-l(a)$, an added arc $(s^*,v)$ has $c(s^*,v)=-\hat b(v)$ when $\hat b(v)<0$, and an added arc $(v,t^*)$ has $c(v,t^*)=\hat b(v)$ when $\hat b(v)>0$. For an $s^*$-$t^*$ flow $h:A'\to\mathbb R$, the notation $|h|$ denotes the value of the flow, equivalently the net flow leaving $s^*$.
For each vertex $v\in V$, define $A^{-}(v)=\{a\in A: a=(w,v)\text{ for some }w\in V\}$ and $A^{+}(v)=\{a\in A: a=(v,w)\text{ for some }w\in V\}$. When we sum the residual balances $\hat b(v)$ over all vertices, each lower bound $l(a)$ for an arc $a=(x,y)$ is counted once with a negative sign at its head $y$ and once with a positive sign at its tail $x$. Therefore
\begin{align*}
\sum_{v\in V}\hat b(v)=\sum_{v\in V}b(v)-\sum_{v\in V}\sum_{a\in A^{-}(v)}l(a)+\sum_{v\in V}\sum_{a\in A^{+}(v)}l(a).
\end{align*}
Since every original arc has exactly one head and one tail, the two lower-bound sums are both equal to $\sum_{a\in A}l(a)$. Using the hypothesis $\sum_{v\in V}b(v)=0$, we obtain
\begin{align*}
\sum_{v\in V}\hat b(v)=\sum_{v\in V}b(v)-\sum_{a\in A}l(a)+\sum_{a\in A}l(a)=0.
\end{align*}
Because $V$ is finite, this zero total can be split into positive, negative, and zero terms. Moving the negative terms to the other side gives
\begin{align*}
\sum_{\{v\in V: \hat b(v)>0\}}\hat b(v)=\sum_{\{v\in V: \hat b(v)<0\}}-\hat b(v)=B.
\end{align*}
This proves that the total capacity entering $t^*$ equals the total capacity leaving $s^*$.
[/guided]
[/step]
[step:Convert a feasible lower-bounded circulation into an auxiliary flow of value $B$]
Assume that $f:A\to\mathbb R$ is a feasible circulation with lower bounds and balances. Define a function $h:A'\to\mathbb R$ as follows. For $a\in A$, put
\begin{align*}
h(a):=f(a)-l(a).
\end{align*}
For $v\in V$ with $\hat b(v)<0$, put
\begin{align*}
h(s^*,v):=-\hat b(v).
\end{align*}
For $v\in V$ with $\hat b(v)>0$, put
\begin{align*}
h(v,t^*):=\hat b(v).
\end{align*}
For every original arc $a\in A$, the bounds $l(a)\le f(a)\le u(a)$ give
\begin{align*}
0\le h(a)=f(a)-l(a)\le u(a)-l(a)=c(a).
\end{align*}
For every added arc, the definition of $h$ equals its capacity, so $0\le h(e)\le c(e)$ for every $e\in A'\setminus A$.
It remains to verify flow conservation at each original vertex. Fix $v\in V$, and define $A^{-}(v)=\{a\in A: a=(w,v)\text{ for some }w\in V\}$ and $A^{+}(v)=\{a\in A: a=(v,w)\text{ for some }w\in V\}$. From the balance condition for $f$ and the definition of $\hat b(v)$, we obtain
\begin{align*}
\sum_{a\in A^{-}(v)}h(a)-\sum_{a\in A^{+}(v)}h(a)=\sum_{a\in A^{-}(v)}(f(a)-l(a))-\sum_{a\in A^{+}(v)}(f(a)-l(a)).
\end{align*}
Using the balance equation for $f$, this is
\begin{align*}
\sum_{a\in A^{-}(v)}h(a)-\sum_{a\in A^{+}(v)}h(a)=b(v)-\sum_{a\in A^{-}(v)}l(a)+\sum_{a\in A^{+}(v)}l(a)=\hat b(v).
\end{align*}
If $\hat b(v)>0$, the added arc $(v,t^*)$ carries exactly $\hat b(v)$ units out of $v$. If $\hat b(v)<0$, the added arc $(s^*,v)$ carries exactly $-\hat b(v)$ units into $v$. If $\hat b(v)=0$, no added arc incident with $s^*$ or $t^*$ is present at $v$. In all three cases, the total incoming $h$-flow at $v$ equals the total outgoing $h$-flow at $v$.
Thus $h$ is an $s^*$-$t^*$ flow in $D'$. Since no arc enters $s^*$, its value is the total flow leaving $s^*$:
\begin{align*}
|h|
=
\sum_{\{v\in V: \hat b(v)<0\}}h(s^*,v)
=
\sum_{\{v\in V: \hat b(v)<0\}}-\hat b(v)
=
B.
\end{align*}
Therefore the maximum $s^*$-$t^*$ flow value in $D'$ is at least $B$. Since the total capacity leaving $s^*$ is also $B$, no $s^*$-$t^*$ flow can have value greater than $B$. Hence the maximum value is exactly $B$.
[guided]
The purpose of the residual network is to remove the lower bounds first and then repair the vertex balances with source and sink arcs. Start with a feasible lower-bounded circulation $f:A\to\mathbb R$. On an original arc $a\in A$, define the residual flow by
\begin{align*}
h(a):=f(a)-l(a).
\end{align*}
This is the correct transformation because the lower capacity $l(a)$ has already been forced. The remaining usable capacity on $a$ is exactly $u(a)-l(a)$, and indeed
\begin{align*}
0\le f(a)-l(a)\le u(a)-l(a).
\end{align*}
Now define the flow on the added arcs by saturating them. When $\hat b(v)<0$, set
\begin{align*}
h(s^*,v):=-\hat b(v).
\end{align*}
When $\hat b(v)>0$, set
\begin{align*}
h(v,t^*):=\hat b(v).
\end{align*}
These quantities are non-negative by the conditions under which the arcs were added, and each equals the capacity of the corresponding added arc.
The main point is conservation at an original vertex $v\in V$. Define $A^{-}(v)=\{a\in A: a=(w,v)\text{ for some }w\in V\}$ and $A^{+}(v)=\{a\in A: a=(v,w)\text{ for some }w\in V\}$. Compute the net incoming residual flow on the original arcs:
\begin{align*}
\sum_{a\in A^{-}(v)}h(a)-\sum_{a\in A^{+}(v)}h(a)=\sum_{a\in A^{-}(v)}(f(a)-l(a))-\sum_{a\in A^{+}(v)}(f(a)-l(a)).
\end{align*}
Separating the $f$-terms from the lower-bound terms gives
\begin{align*}
\sum_{a\in A^{-}(v)}h(a)-\sum_{a\in A^{+}(v)}h(a)=\left(\sum_{a\in A^{-}(v)}f(a)-\sum_{a\in A^{+}(v)}f(a)\right)-\sum_{a\in A^{-}(v)}l(a)+\sum_{a\in A^{+}(v)}l(a).
\end{align*}
The balance equation for $f$ makes the parenthesized term equal to $b(v)$, so
\begin{align*}
\sum_{a\in A^{-}(v)}h(a)-\sum_{a\in A^{+}(v)}h(a)=b(v)-\sum_{a\in A^{-}(v)}l(a)+\sum_{a\in A^{+}(v)}l(a)=\hat b(v).
\end{align*}
So after subtracting the lower bounds, the original arcs alone leave vertex $v$ with net incoming excess $\hat b(v)$. If $\hat b(v)>0$, we remove exactly that excess by sending $\hat b(v)$ units along $(v,t^*)$. If $\hat b(v)<0$, the vertex has a deficit of incoming flow, and the arc $(s^*,v)$ supplies exactly $-\hat b(v)$ units. If $\hat b(v)=0$, no repair is needed. Thus conservation holds at every original vertex.
Finally, the value of this auxiliary flow is the total amount emitted by $s^*$:
\begin{align*}
|h|=\sum_{\{v\in V: \hat b(v)<0\}}h(s^*,v)=\sum_{\{v\in V: \hat b(v)<0\}}-\hat b(v)=B.
\end{align*}
Because the total capacity out of $s^*$ is $B$, no auxiliary flow can have value larger than $B$. Hence the maximum $s^*$-$t^*$ flow value is exactly $B$.
[/guided]
[/step]
[step:Convert an auxiliary flow of value $B$ into a feasible lower-bounded circulation]
Assume that the maximum $s^*$-$t^*$ flow value in $D'$ is $B$, and let $h:A'\to\mathbb R$ be an $s^*$-$t^*$ flow with value $B$. The total capacity of arcs leaving $s^*$ is
\begin{align*}
\sum_{\{v\in V: \hat b(v)<0\}}c(s^*,v)=\sum_{\{v\in V: \hat b(v)<0\}}-\hat b(v)=B.
\end{align*}
Since no arc enters $s^*$ and $|h|=B$, the total flow leaving $s^*$ equals the total capacity leaving $s^*$. Each summand satisfies $0\le h(s^*,v)\le c(s^*,v)$, so every arc $(s^*,v)$ is saturated:
\begin{align*}
h(s^*,v)=-\hat b(v)
\end{align*}
for every $v\in V$ with $\hat b(v)<0$.
Similarly, the total capacity entering $t^*$ is
\begin{align*}
\sum_{\{v\in V: \hat b(v)>0\}}c(v,t^*)=\sum_{\{v\in V: \hat b(v)>0\}}\hat b(v)=B.
\end{align*}
Since no arc leaves $t^*$ and the flow value is $B$, every arc $(v,t^*)$ is saturated:
\begin{align*}
h(v,t^*)=\hat b(v)
\end{align*}
for every $v\in V$ with $\hat b(v)>0$.
Define $f:A\to\mathbb R$ by
\begin{align*}
f(a):=h(a)+l(a)
\end{align*}
for every original arc $a\in A$. Since $0\le h(a)\le u(a)-l(a)$, we have
\begin{align*}
l(a)\le f(a)\le u(a)
\end{align*}
for every $a\in A$.
Fix $v\in V$, and define $A^{-}(v)=\{a\in A: a=(w,v)\text{ for some }w\in V\}$ and $A^{+}(v)=\{a\in A: a=(v,w)\text{ for some }w\in V\}$. Flow conservation for $h$ at $v$ gives, after moving the saturated super-source or super-sink contribution to the other side in the three possible cases,
\begin{align*}
\sum_{a\in A^{-}(v)}h(a)-\sum_{a\in A^{+}(v)}h(a)=\hat b(v).
\end{align*}
Therefore
\begin{align*}
\sum_{a\in A^{-}(v)}f(a)-\sum_{a\in A^{+}(v)}f(a)=\sum_{a\in A^{-}(v)}(h(a)+l(a))-\sum_{a\in A^{+}(v)}(h(a)+l(a)).
\end{align*}
Using the preceding identity for the $h$-terms, we get
\begin{align*}
\sum_{a\in A^{-}(v)}f(a)-\sum_{a\in A^{+}(v)}f(a)=\hat b(v)+\sum_{a\in A^{-}(v)}l(a)-\sum_{a\in A^{+}(v)}l(a)=b(v).
\end{align*}
Thus $f$ satisfies the lower and upper capacity bounds and the balance equation at every vertex, so $f$ is a feasible circulation for the original instance.
[guided]
We now reverse the construction. Assume there is an $s^*$-$t^*$ flow $h:A'\to\mathbb R$ with value $B$. The total capacity of arcs leaving $s^*$ is
\begin{align*}
\sum_{\{v\in V: \hat b(v)<0\}}c(s^*,v)=\sum_{\{v\in V: \hat b(v)<0\}}-\hat b(v)=B.
\end{align*}
Since no arc enters $s^*$, the value of $h$ is exactly the total flow leaving $s^*$. Each term is bounded above by its capacity, and the sum of the terms equals the sum of their capacities. Therefore every arc $(s^*,v)$ with $\hat b(v)<0$ is saturated:
\begin{align*}
h(s^*,v)=-\hat b(v).
\end{align*}
The same argument at $t^*$ uses the equality of the positive and negative residual balance totals. The total capacity entering $t^*$ is
\begin{align*}
\sum_{\{v\in V: \hat b(v)>0\}}c(v,t^*)=\sum_{\{v\in V: \hat b(v)>0\}}\hat b(v)=B.
\end{align*}
Since no arc leaves $t^*$ and the flow value is $B$, every arc $(v,t^*)$ with $\hat b(v)>0$ is saturated:
\begin{align*}
h(v,t^*)=\hat b(v).
\end{align*}
Now define the candidate original circulation $f:A\to\mathbb R$ by
\begin{align*}
f(a):=h(a)+l(a)
\end{align*}
for every original arc $a\in A$. Because $0\le h(a)\le u(a)-l(a)$, adding $l(a)$ gives
\begin{align*}
l(a)\le f(a)\le u(a).
\end{align*}
It remains to check the balance equation. Fix $v\in V$, and let $A^{-}(v)$ and $A^{+}(v)$ denote the original arcs entering and leaving $v$. Flow conservation for $h$ at $v$, together with the saturation identities for the possible added arc incident to $v$, gives
\begin{align*}
\sum_{a\in A^{-}(v)}h(a)-\sum_{a\in A^{+}(v)}h(a)=\hat b(v).
\end{align*}
Substituting $f(a)=h(a)+l(a)$, we obtain
\begin{align*}
\sum_{a\in A^{-}(v)}f(a)-\sum_{a\in A^{+}(v)}f(a)=\hat b(v)+\sum_{a\in A^{-}(v)}l(a)-\sum_{a\in A^{+}(v)}l(a)=b(v).
\end{align*}
Thus $f$ satisfies the capacity bounds and the prescribed balance at every vertex, so $f$ is a feasible circulation for the original instance.
[/guided]
[/step]
[step:Identify the equivalent saturation criteria]
The total capacity leaving $s^*$ is $B$, so an $s^*$-$t^*$ flow has value $B$ if and only if it saturates every arc leaving $s^*$. Since the first step proved that the total capacity entering $t^*$ is also $B$, and since no arc leaves $t^*$, a flow of value $B$ is equivalently a flow saturating every arc entering $t^*$. Combining the two implications above proves the stated feasibility criterion.
[guided]
The saturation criterion is only a capacity accounting statement. The total capacity of all arcs leaving $s^*$ is $B$. Therefore any $s^*$-$t^*$ flow has value at most $B$, and it reaches value $B$ exactly when the sum of the flows on those arcs equals the sum of their capacities. Since each individual flow is bounded above by its own capacity, equality of the sums forces every arc leaving $s^*$ to be saturated.
The same reasoning applies to $t^*$. The first step showed that the total capacity entering $t^*$ is also $B$, and the auxiliary construction has no arc leaving $t^*$. Thus a flow has value $B$ exactly when every arc entering $t^*$ is saturated. The forward and reverse constructions then give the equivalence between feasible lower-bounded circulations in the original network and maximum auxiliary flows of value $B$.
[/guided]
[/step]