$i,j,m\in \{1,\ldots,k\}$ we have $g_ig_j=g_m$ exactly if $h_ih_j=h_m$. We iteratively define the refinement $\chi_i$ in the classical way just like it is defined for graphs, that is for $\bar{g}:=(g_1,\dots,g_k)\in G^k$ we have $\chi_i(\bar{g}):=$ $$\left( \chi_{i-1}(\bar{g}),{\{\!\!\{}
\newcommand{\rmulset}{\}\!\!\}}(\chi_{i-1}(\bar{g}_{|1\leftarrow x}),\dots,\chi_{i-1}(\bar{g}_{|k\leftarrow x}))\mid x\in G\rmulset\right).$$

#### Version II:

In the definition for graphs, the initial coloring of a tuple takes into account the subgraph induced by the tuple. In analogy to this, one might argue that for groups the initial coloring needs to take into account the subgroup generated by the tuple. Thus, in Version II, we define an initial coloring $\chi_0$ on $k$-tuples of group elements such that $(g_1,\dots,g_k)$ and $(h_1,\dots,h_k)$ obtain the same color if and only if there is a map with $g_i\mapsto h_i$ which extends to an isomorphism from $\langle g_1,\ldots, g_k\rangle $ to $\langle h_1,\ldots, h_k \rangle$. In this case we will also say the tuples agree in their *marked isomorphism type*. The iterative refinement is again performed in the classical way.

#### Version III:

For Version III, we encode groups as graphs, execute the WL-algorithm for graphs and pull back the coloring. For this choose an isomorphism-preserving, invertible functor $\Gamma_{\bullet}$ that maps finite groups $G$ to finite (simple) graphs 