Groups of order 2019

from itertools import product identity = (0, 1) h_list = [1, 255, 417] def elem(x): g, h = x g_ok = (0 <= g <= 672) h_ok = (h in h_list) return (g_ok and h_ok) group = product(range(673), h_list) assert(len([g for g in group]) == 2019) # closed under multiplicaton for x in group: for y in group: assert( elem(prod(x, y)) ) # multiplication is associative for x in group: for y in group: for z in group: xy_z = prod(prod(x, y),z) x_yz = prod(x, prod(y,z)) assert(xy_z == x_yz) # identity acts like its supposed to for x in group: assert( prod(x, identity) == x ) assert( prod(identity, x) == x ) # every element has an inverse for x in group: ginv = group_inv(x) assert( elem(ginv) ) assert( prod(x, ginv) == identity ) assert( prod(ginv, x) == identity ) Related postsGroups of semiprime orderOrders of finite simple groups The symbol for semidirect product is ⋊..It’s U+22CA in Unicode and
times in LaTeX. In general, the semidirect product depends on a choice of an action of the group H on the group G. Here the action is multiplication by an element of H..Different actions can result in different groups..Sometimes the particular choice of action is made explicit as a subscript on the ⋊ symbol. How did I find these numbers?.There are 672 non-zero numbers mod 673, so I picked a number, it happened to be 5, and raised it to the powers 672/3 and 2*672/3. . More details