{\mathrel{\oplus}})$ and $(S' \lhd P', {{\mathrel{\downarrow'}}}, {\mathsf{o'}},
{{\mathrel{\oplus'}}})$ is a morphism $t \lhd q$ between the containers $S \lhd P$ and $S' \lhd P'$ that satisfies three laws:

1.  $\forall {\{s, p\}}.\, t\, (s {\mathrel{\downarrow}}q\, p) = t\, s {\mathrel{\downarrow'}}p$,

2.  $\forall {\{s\}}.\, {\mathsf{o}}\, {\{s\}} = q\, ({\mathsf{o'}}\, {\{t\, s\}})$,

3.  $\forall {\{s, p, p'\}}.\, q\, p {\mathrel{\oplus}}{\{s\}}\, q\, p' = q\, (p {\mathrel{\oplus'}}{\{t\, s\}}\, p')$.

In the special case $S = S' = 1$, laws 2 and 3 are the laws of a monoid morphism.

Recall the intuition that $t$ determines the shape of the data-structure that some given data-structure is sent to and $q$ identifies for every position in the data-structure returned a position in the given data-structure. These laws say that the positions in the sub-data-structure for any position in the resulting data-structure must map back to positions in the corresponding sub-data-structure of the given data-structure. This means that they can receive data only from those positions, other flows are forbidden. Morphisms between directed containers representing node-labelled tree datatypes are exactly upwards accumulations—this was one of the motivations for choosing the name ‘directed containers’.

The container representations of the head and drop-even functions for non-empty lists are 