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.

A226193 The number of medial quasigroups of order n, up to isomorphism.

Original entry on oeis.org

1, 1, 5, 13, 19, 5, 41, 73, 116, 19, 109, 65, 155, 41, 95, 669, 271, 116, 341, 247, 205, 109, 505, 365, 1084, 155, 1574, 533, 811, 95, 929, 4193, 545, 271, 779, 1508, 1331, 341, 775, 1387, 1639, 205, 1805, 1417, 2204, 505, 2161, 3345, 4388, 1084, 1355, 2015, 2755, 1574, 2071, 2993, 1705, 811, 3421, 1235, 3659, 929, 4756
Offset: 1

Views

Author

W. Edwin Clark, May 30 2013

Keywords

Comments

See the Wikipedia link for "Medial magma" for definitions. This article also contains the Bruck-Toyoda theorem which characterizes medial quasigroups in terms of abelian groups.

Programs

  • GAP
    # gives the number of medial quasigroups over SmallGroup(n,k)
    LoadPackage("loops");
    MQ := 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];
                    if f*g=g*f then count := count + 1; fi;
                    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;
    # David Stanovsky, Nov 12 2015
  • Maple
    a:=proc(n)
    if n = 1 then
         return 1;
      else
    return MAGMA:-Enumerate(n,'medial','quasigroup');
    end if;
    end proc;

Extensions

a(9)-a(63) from David Stanovsky, Nov 12 2015