cp's OEIS Frontend

This is a front-end for the Online Encyclopedia of Integer Sequences, made by Christian Perfect. The idea is to provide OEIS entries in non-ancient HTML, and then to think about how they're presented visually. The source code is on GitHub.

A260645 The number of central quasigroups (also known as T-quasigroups, or quasigroups affine over an abelian group) of order n, up to isomorphism.

Original entry on oeis.org

1, 1, 5, 19, 19, 5, 41, 385, 231, 19, 109, 95, 155, 41, 95, 41387, 271, 231, 341, 361, 205, 109, 505, 1925, 3337, 155, 36118, 779, 811, 95, 929, 19823665, 545, 271, 779, 4389, 1331, 341, 775, 7315, 1639, 205, 1805, 2071, 4389, 505, 2161, 206935, 18099, 3337, 1355, 2945, 2755, 36118, 2071, 15785, 1705, 811, 3421, 1805, 3659, 929, 9471
Offset: 1

Views

Author

David Stanovsky, Nov 12 2015

Keywords

Comments

A quasigroup (G,*) is called central if it admits an affine representation over an abelian group (G,+), that is, if x*y = f(x)+g(y)+c where f,g are automorphisms of (G,+) and c in G.

Crossrefs

Cf. A226193.

Programs

  • GAP
    # gives the number of central quasigroups over SmallGroup(n, k)
    LoadPackage("loops");
    CQ := function( n, k )
        local G, ct, elms, inv, A, f_reps, count,f, Cf, O, g_reps, g, Cfg, W, unused, c, Wc;
        G := SmallGroup( n, k );
        G := IntoLoop( G );
        ct := CayleyTable( G );
        elms := Elements( G );
        inv := List( List( [1..n], i -> elms[i]^(-1) ), x -> x![1] );
        A := AutomorphismGroup( G );
        f_reps := List( ConjugacyClasses( A ), Representative );
        count := 0;
        for f in f_reps do
            Cf := Centralizer( A, f );
            O := OrbitsDomain( Cf, A );
            g_reps := List( O, x -> x[1] );
            for g in g_reps do
                Cfg := Intersection( Cf, Centralizer( A, g ) );
                W := Set( [1..n], w -> ct[w][ inv[ ct[w^f][w^g] ] ] );
                unused := [1..n];
                while not IsEmpty( unused ) do
                    c := unused[1];
                    count := count + 1;
                    if Size(W) = Length(unused) then
                        unused := [];
                    else
                        Wc := Set( W, w -> ct[w][c] );
                        Wc := Union( Orbits( Cfg, Wc ) );
                        unused := Difference( unused, Wc );
                    fi;
                od;
            od;
        od;
        return count;
    end;