of *edges*, $\sSrc_G,\sTgt_G\colon E_G\to V_G$ are the *source* and *target mappings* and $\sLab_G\colon E_G\to\Lambda$ is the *labelling function*.

Let $G,H$ be two $\Lambda$-labelled graphs. A *graph morphism* $\phi\colon G\to H$ consists of two functions $\phi_V\colon V_G\to V_{H}$, $\phi_E\colon E_G\to E_{H}$, such that for each edge $e\in E_G$ we have $\fSrc[H]{\phi_E(e)} = \phi_V(\fSrc[G]{e})$, $\fTgt[H]{\phi_E(e)} = \phi_V(\fTgt[G]{e})$ and $\fLab[H]{\phi_E(e)} = \fLab[G]{e}$. If $\phi_V,\phi_E$ are both bijective, $\phi$ is an isomorphism. The category having ($\Lambda$-labelled) graphs as objects and graph morphisms as arrows is denoted by $\GR$.

We shall often write $\phi$ instead of $\phi_V$ or $\phi_E$ to avoid clutter. The graph morphisms in our diagrams will be indicated by and thick edges. In the category

$\GR$, where the objects are labelled graphs over the label alphabet $\Lambda$, the subobject classifier $\mathtt{true}$ is displayed to the right where every $\Lambda$-labelled edge represents several edges, one for each $\lambda \in \Lambda$.

$\quad \mathtt{true}:$

The subobject classifier $\mathtt{true} \colon \mathbf{1} \rat \Omega$ from the terminal object $\mathbf{1}$ to $\Omega$ allows us to single out a subgraph $X$ of a graph $Y$, by mapping $Y$ to $\Omega$ in such a way that all elements of $X$ are mapped to the image of $\mathtt{true}$[ (see also Def. 