\qquad \qquad \qquad \dnchange{j_i \in 
    \{0,1\}}, 
    j_{i+1} = 
    1-j_i, 
    i\in\{0,\dots,n-1\} 
    \dnchange{\text{ and } n \in \mathbb{N}}\}.
  \end{aligned}$$ That is, new paths can be formed by concatenating alternating path fragments from $P_0,P_1$. It is obvious to see that $+$ is commutative and one can also show associativity. $P=\emptyset$ is the unit. Subtraction simply returns the first parameter: $P_0-P_1 = P_0$.

We will now formally define annotations for objects via a functor from a given category to $\Mon$.

Given a category $\C$ and a functor $\mathcal{A} \colon \C \to \Mon$, an *annotation based on $\mathcal{A}$* for an object $X \in \C$ is an element $a \in \mathcal{A}(X)$. We write $\mathcal{A}_\phi$, instead of $\mathcal{A}(\phi)$, for the action of functor $\mathcal{A}$ on a $\C$-arrow $\phi$. We assume that for each object $X$ there is a *standard annotation* based on $\mathcal{A}$ that we denote by $s_X$, thus $s_X \in \mathcal{A}(X)$.

It can be shown quite straightforwardly that the forgetful functor mapping an annotated object $X[a]$, with $a \in \mathcal{A}(X)$, to $X$ is an op-fibration (or co-fibration [@j:categorical-logic-type-theory]), arising via the Grothendieck construction.

Our first example is an annotation of graphs with global multiplicities, counting nodes and edges, where the action of the functor is to 