Based on my project groupHS, asocgen provides another implementation of finite groups in C99. As you might expect, this shift in programming languages threw all functional ambitions overboard. The focus was now on computational efficiency. With this the direction of the project changed as well which is reflected in the new name: asocgen ("associative generation") is as much about manipulating groups as it is about the search for associative structures: Groups.
For several decades now, all finite groups have been found, that is to say, have been classified. Nothing novel to be found but nevertheless I implemented a combinatorial search for groups based on a Cayley table representation. This works fairly well up to an order of, say 15 (powers of two be damned). The cubic scaling of associativity checks makes things difficult beyond a certain point. With that lesson in computation complexity I turned my attention to other challenges.
Without going into too much detail, group isomorphism was still on the menu and to that end I implemented a set of algorithms to find (minimal) generating sets, utilizing as much structure and as many computational shortcuts as possible. This involves combinatorial instruments which are a pain to implement with the primitive tools provided by plain C. Regardless, I succeeded in implementing functions to produce an isomorphism (a map) between two (isomorphic) groups that may (or may not) be efficient by utilizing minimal generating sets.
Besides that, almost all functionality of groupHS was reimplemented. Just as I set out to make this project presentable (envisioning a user-facing application) other interests took over and the project settled into the inactive state it since inhabits.