A graph $G$ has a nowhere-zero $k$-flow if and only if every block of $G$ has a nowhere-zero $k$-flow I want to prove that a graph $G$ has a nowhere-zero $k$-flow if and only if every block of $G$ has a nowhere-zero $k$-flow.
I have an intuitive proof outline here.
If $G$ has a nowhere-zero $k$-flow, then every block within $G$ must also have a nowhere-zero $k$-flow because the flow is conserved. On the other hand, if every block of $G$ has a nowhere-zero $k$-flow, then we can say that for any cut-set in $G$, the capacity of the edges in the cut-set is greater than or equal to $k$. This means that $G$ also has a nowhere-zero $k$ flow.
Is this correct? How can I make it more formal?
 A: There is one important detail, and some formality, missing from this proof.
A block decomposition of a graph $G$ writes $G$ as the union of blocks $G_1, G_2, \dots, G_t$ so that every edge of $G$ is in exactly one of the blocks. The blocks are maximal $2$-connected subgraphs: there is no larger $2$-connected subgraph of $G$ containing any of the $G_i$.
Going from nowhere-zero flows on $G_1, G_2, \dots, G_t$ to a nowhere-zero flow on $G$ is almost as easy as in the proof outline, but we must be specific about how it is obtained. Suppose that $\varphi_1, \dots, \varphi_t$ are nowhere-zero flows on the blocks. Then for every edge $e \in E(G)$ we first find the $i$ such that $e \in E(G_i)$, then define $\varphi(e) = \varphi_i(e)$. We must check that:

*

*The values of $\varphi$ are strictly between $0$ and $k$ in absolute value, which is immediate because they are taken from the values of $\varphi_1, \dots, \varphi_t$.

*$\varphi$ really is a flow: for every vertex $v$, the sum of $\varphi$ over edges incident on $v$ is $0$. We prove this by splitting up the sum into the sums of $\varphi_i$ over edges from $G_i$ incident on $v$, over every block $G_i$ containing $v$.

Neither of these takes much work, but going the other way does - and at that point, we really have to use the definition of a block. Suppose we have a nowhere-zero $k$-flow $\varphi$ on $G$. It is possible to define a function $\varphi_i$ on the edges of each block $G_i$ by taking $\varphi_i(e) = \varphi(e)$ for every edge $e \in E(G_i)$. But how do you know this is a flow? At every vertex $v$ of $G$, the sum of $\varphi$-values is $0$; but it does not follow immediately that this sum is $0$ for just the edges in every block containing $v$.
One possible strategy for how to do this is:

*

*Prove the following lemma: if $v$ is a cut vertex of $G$, then the sum of $\varphi$-values on edge from $v$ to any component of $G-v$ is $0$. (Hint: consider a sum over all vertices in one component of $G-v$.)

*Apply the lemma to the block decomposition by inducting on the structure of the block-cut tree (pulling off the leaf blocks one at a time).

