OFFSET
0,3
COMMENTS
The number of isomorphism classes of closed binary operations on a set of order n.
The term "magma" is also used as an alternative for "groupoid" since the latter has a different meaning in e.g. category theory. - Joel Brennan, Jan 20 2022
REFERENCES
N. J. A. Sloane, A Handbook of Integer Sequences, Academic Press, 1973 (includes this sequence).
N. J. A. Sloane and Simon Plouffe, The Encyclopedia of Integer Sequences, Academic Press, 1995 (includes this sequence).
LINKS
Philip Tureček, Table of n, a(n) for n = 0..27
J. Berman and S. Burris, A computer study of 3-element groupoids Lect. Notes Pure Appl. Math. 180 (1994) 379-429 MR1404949
M. A. Harrison, The number of isomorphism types of finite algebras, Proc. Amer. Math. Soc., 17 (1966), 731-737.
Eric Postpischil, Posting to sci.math newsgroup, May 21 1990
Marko Riedel, Counting non-isomorphic binary relations, Mathematics Stack Exchange question.
N. J. A. Sloane, Overview of A001329, A001423-A001428, A258719, A258720.
T. Tamura, Some contributions of computation to semigroups and groupoids, pp. 229-261 of J. Leech, editor, Computational Problems in Abstract Algebra. Pergamon, Oxford, 1970. (Annotated and scanned copy)
Philip Turecek, Maple program
Philip Tureček, Counting Finite Magmas, arXiv:2305.00269 [math.CO], 2023.
Eric Weisstein's World of Mathematics, Groupoid
Wikipedia, Magma (algebra)
FORMULA
a(n) = Sum_{1*s_1+2*s_2+...=n} (fixA[s_1, s_2, ...]/(1^s_1*s_1!*2^s_2*s2!*...)) where fixA[s_1, s_2, ...] = Product_{i, j>=1} ( (Sum_{d|lcm(i, j)} (d*s_d))^(gcd(i, j)*s_i*s_j)). - Christian G. Bower, May 08 1998, Dec 03 2003
a(n) is asymptotic to n^(n^2)/n! = A002489(n)/A000142(n) ~ (e*n^(n-1))^n / sqrt(2*Pi*n). - Christian G. Bower, Dec 03 2003
MAPLE
with(numtheory);
with(group):
with(combinat):
pet_cycleind_symm :=
proc(n)
local p, s;
option remember;
if n=0 then return 1; fi;
expand(1/n*add(a[l]*pet_cycleind_symm(n-l), l=1..n));
end;
pet_flatten_term :=
proc(varp)
local terml, d, cf, v;
terml := [];
cf := varp;
for v in indets(varp) do
d := degree(varp, v);
terml := [op(terml), seq(v, k=1..d)];
cf := cf/v^d;
od;
[cf, terml];
end;
bs_binop :=
proc(n)
option remember;
local dsjc, flat, p, q, len,
cyc, cyc1, cyc2, l1, l2, res;
if n=0 then return 1; fi;
if n=1 then return 1; fi;
res := 0;
for dsjc in pet_cycleind_symm(n) do
flat := pet_flatten_term(dsjc);
p := 1;
for cyc1 in flat[2] do
l1 := op(1, cyc1);
for cyc2 in flat[2] do
l2 := op(1, cyc2);
len := lcm(l1, l2); q := 0;
for cyc in flat[2] do
if len mod op(1, cyc) = 0 then
q := q + op(1, cyc);
fi;
od;
p := p * q^(l1*l2/len);
od;
od;
res := res + p*flat[1];
od;
res;
end;
MATHEMATICA
magmas[n_] := (
rul1 = {{a[i_], j_}, {a[k_], l_}} :> sum[i, k]^(j*l*GCD[i, k]*(2-Boole[i==k]));
rul2 = {a[r_], s_} :> If[Mod[lcm, r]==0, r*s, 0];
trans[mo_] := (
listc = FactorList@mo;
list = listc[[2;; ]];
sum[i_, k_] := (
lcm = LCM[i, k];
Plus@@(list/.rul2)
);
pairs = Select[Tuples[list, 2], OrderedQ];
listc[[1, 1]]^listc[[1, 2]]*Times@@(pairs/.rul1)
);
trans/@CycleIndexPolynomial[SymmetricGroup@n, Array[a, n]]
);
(* Philip Turecek, May 25 2022 *)
PROG
(Sage)
R.<a> = InfinitePolynomialRing(QQ)
@cached_function
def Z(n):
if n==0:
return R.one()
return sum(a[k]*Z(n-k) for k in (1..n))/n
def magmas(n):
P = Z(n)
q = 0
c = P.coefficients()
count = 0
for m in P.monomials():
r = 1
T = m.variables()
S = list(T)
for u in T:
i = R.varname_key(str(u))[1]
j = m.degree(u)
D = 0
for d in divisors(i):
D += d*m.degrees()[-d-1]
r *= D^(i*j^2)
S.remove(u)
for v in S:
k = R.varname_key(str(v))[1]
l = m.degree(v)
D = 0
for d in divisors(lcm(i, k)):
try:
D += d*m.degrees()[-d-1]
except:
break
r *= D^(gcd(i, k)*j*l*2)
q += c[count]*r
count += 1
return q
# Philip Turecek, Nov 20 2022
CROSSREFS
KEYWORD
nonn,nice
AUTHOR
EXTENSIONS
More terms from Christian G. Bower, May 08 1998
STATUS
approved