login

Year-end appeal: Please make a donation to the OEIS Foundation to support ongoing development and maintenance of the OEIS. We are now in our 61st year, we have over 378,000 sequences, and we’ve reached 11,000 citations (which often say “discovered thanks to the OEIS”).

A361720
Number of nonisomorphic right involutory Płonka magmas with n elements.
5
1, 1, 2, 4, 12, 37, 164, 849, 6081, 56164, 698921
OFFSET
0,3
COMMENTS
Alexandrul Chirvasitu and Gigel Militaru introduced the notion of a right Płonka magma as a magma X that satisfies (xy)z = (xz)y and x(yz) = xy for all x,y,z in X. It is called involutory, if it satisfies the additional property (xy)y = x for all x,y in X.
A right Płonka magma (X,*) is associative if and only if there exists an idempotent self-map f = f^2: X -> X such that x*y = f(x) for all x,y in X (the rows of the corresponding Cayley table must necessarily be constant). Thus the total number of associative right Płonka magmas on a given set of n elements is A000248 with A000041 as the corresponding number of isomorphism classes.
REFERENCES
J. Płonka, "On k-cyclic groupoids", Math. Japon. 30 (3), 371-382 (1985).
LINKS
A. Chirvasitu and G. Militaru, A universal-algebra and combinatorial approach to the set-theoretic Yang-Baxter equation, arXiv:2305.14138 [math.QA], 2023.
Anna Romanowska and Barbara Roszkowska, On Some Groupoid Modes, Demonstratio Mathematica, vol. 20, no. 1-2, 1987, pp. 277-290.
PROG
(Sage)
def right_involutory_plonka(n):
G = Integers(n)
Perm = SymmetricGroup(list(G))
M = [sigma for sigma in Perm if sigma == ~sigma]
def is_compatible(r):
return all([ r[i]*r[j] == r[j]*r[i] and r[r[i](j)] == r[j] for i in range(len(r)) for j in range(len(r)) if ZZ(r[i](j)) < len(r) ])
def possible_extensions(r):
R = []
for m in M:
r_new = r+[m]
if is_compatible(r_new):
R += [r_new]
return R
def extend(R):
R_new = []
for r in R:
R_new += possible_extensions(r)
return R_new
i = 0
R = [[]]
while i < n:
R = extend(R)
i += 1
act = lambda sigma, r: [(~sigma)*r[(~sigma)(i)]*sigma for i in range(len(r))] # In Sage, the composition of permutations is reversed.
orbits = []
while R:
r = R.pop()
orb = []
for sigma in Perm:
orb += [tuple(act(sigma, r))]
try: R.remove(act(sigma, r))
except: pass
orbits += [set(orb)]
return len(orbits)
(Sage)
def right_involutory_plonka(n):
N = range(n)
Perm = SymmetricGroup(N)
M = [sigma for sigma in Perm if sigma == ~sigma]
def is_compatible(r, r_new):
length = len(r)
inds = range(length)
for i in inds:
if not r[i]*r_new == r_new*r[i]:
return [false]
for i in inds:
rni = r_new(i)
if i < rni < length:
if not r[rni] == r[i]:
return [false]
if rni == length:
if not r_new == r[i]:
return [false]
for i in inds:
for j in inds:
if r[i](j) == length:
if not r_new == r[j]:
return [false]
return true, r+[r_new]
def possible_extensions(r):
R = []
for m in M:
r_potential = is_compatible(r, m)
if r_potential[0]:
R += [r_potential[1]]
return R
def extend(R):
R_new = []
for r in R:
R_new += possible_extensions(r)
return R_new
R = [[]]
for i in N:
R = extend(R)
act = lambda sigma, r: [(~sigma)*r[(~sigma)(i)]*sigma for i in range(n)] # In Sage, the composition of permutations is reversed.
orbits = []
while R:
r = R.pop()
orb = []
for sigma in Perm:
r_iso = act(sigma, r)
orb += [tuple(r_iso)]
try: R.remove(r_iso)
except: pass
orbits += [set(orb)]
return len(orbits)
CROSSREFS
A362821 is the labeled version.
Sequence in context: A114500 A148212 A139627 * A149844 A149845 A217616
KEYWORD
nonn,hard,more
AUTHOR
Philip Turecek, Apr 14 2023
EXTENSIONS
a(8)-a(10) from Andrew Howroyd, Apr 17 2023
STATUS
approved