cmap#
An implementation of open combinatorial maps. See [DV22] for a comprehensive overview of combinatorial maps in relation to string diagrams.
A combinatorial map is fully described by a pair of permutations \(v\) and \(e\) acting on a set of ports \(P\) (also called darts or half-edges) where:
\(v\) is an arbitrary permutation whose decomposition induces a node for each cycle, giving an orientation on ports;
\(e\) is a fixpoint-free involution, hence its cycle decomposition only contains transpositions which are to be understood as wires of the map.
A map morphism from \((P, v, e)\) to \((P', v', e')\) is then defined as a function \(f : P \rightarrow P'\) such that:
\(f\) defines a homomorphism of the underlying graph: \(e; f = f; e'\);
\(f\) respects orientation: \(v; f = f; v'\).