|
|
A001329
|
|
Number of nonisomorphic groupoids with n elements.
(Formerly M4760 N2035)
|
|
58
|
|
|
1, 1, 10, 3330, 178981952, 2483527537094825, 14325590003318891522275680, 50976900301814584087291487087214170039, 155682086691137947272042502251643461917498835481022016
(list;
graph;
refs;
listen;
history;
text;
internal format)
|
|
|
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
|
Eric Weisstein's World of Mathematics, Groupoid
|
|
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
|
|
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]]
);
|
|
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
|
|
CROSSREFS
|
|
|
KEYWORD
|
nonn,nice,changed
|
|
AUTHOR
|
|
|
EXTENSIONS
|
|
|
STATUS
|
approved
|
|
|
|