\node (a) at (-1, 0) {$a$}; \node (a0) at (0, 0.75) {$a$}; \node (a1) at (0, -0.75) {$a$}; \draw[->] (a0) -- node[midway] (al) {} (a1); \draw[dashed,->] (a) to[] node[midway,above] {$\sigma$} ([xshift=-0.5em]al); \node (fi0) at (1, 0.75) {$a$}; \node (fi1) at (1, -0.75) {$b$}; \draw[->] (fi0) -- node[midway,right] (f) {f} (fi1); \node (fi0j1) at (4 + -0.75, 0.75) {$a$}; \node (fi0j0) at (4 + -0.75, -0.75) {$a$}; \node (fi1j1) at (4 + 0.75, 0.75) {$b$}; \node (fi1j0) at (4 + 0.75, -0.75) {$b$}; \draw[->] (fi0j1) -- (fi1j1) node[midway] (fs) {f}; \draw[->] (fi0j0) -- (fi1j0) node[midway,below] (gs) {f}; \draw[<-] (fi0j0) -- (fi0j1) node[midway,left] (p) {}; \draw[<-] (fi1j0) -- (fi1j1) node[midway,right] (q) {}; \node (sq) at (4, 0) {$\bullet$}; \draw[dashed,->] (f) to[out=20,in=160] node[midway,below] {$\sigma_0 \circ \sigma$} (sq);