login
Number of nonisomorphic right involutory Płonka magmas with n elements.
5

%I #66 May 27 2023 22:38:41

%S 1,1,2,4,12,37,164,849,6081,56164,698921

%N Number of nonisomorphic right involutory Płonka magmas with n elements.

%C 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.

%C 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.

%D J. Płonka, "On k-cyclic groupoids", Math. Japon. 30 (3), 371-382 (1985).

%H A. Chirvasitu and G. Militaru, <a href="https://arxiv.org/abs/2305.14138">A universal-algebra and combinatorial approach to the set-theoretic Yang-Baxter equation</a>, arXiv:2305.14138 [math.QA], 2023.

%H Anna Romanowska and Barbara Roszkowska, <a href="https://doi.org/10.1515/dema-1987-1-224">On Some Groupoid Modes</a>, Demonstratio Mathematica, vol. 20, no. 1-2, 1987, pp. 277-290.

%o (Sage)

%o def right_involutory_plonka(n):

%o G = Integers(n)

%o Perm = SymmetricGroup(list(G))

%o M = [sigma for sigma in Perm if sigma == ~sigma]

%o def is_compatible(r):

%o 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) ])

%o def possible_extensions(r):

%o R = []

%o for m in M:

%o r_new = r+[m]

%o if is_compatible(r_new):

%o R += [r_new]

%o return R

%o def extend(R):

%o R_new = []

%o for r in R:

%o R_new += possible_extensions(r)

%o return R_new

%o i = 0

%o R = [[]]

%o while i < n:

%o R = extend(R)

%o i += 1

%o act = lambda sigma,r: [(~sigma)*r[(~sigma)(i)]*sigma for i in range(len(r))] # In Sage, the composition of permutations is reversed.

%o orbits = []

%o while R:

%o r = R.pop()

%o orb = []

%o for sigma in Perm:

%o orb += [tuple(act(sigma,r))]

%o try: R.remove(act(sigma,r))

%o except: pass

%o orbits += [set(orb)]

%o return len(orbits)

%o (Sage)

%o def right_involutory_plonka(n):

%o N = range(n)

%o Perm = SymmetricGroup(N)

%o M = [sigma for sigma in Perm if sigma == ~sigma]

%o def is_compatible(r,r_new):

%o length = len(r)

%o inds = range(length)

%o for i in inds:

%o if not r[i]*r_new == r_new*r[i]:

%o return [false]

%o for i in inds:

%o rni = r_new(i)

%o if i < rni < length:

%o if not r[rni] == r[i]:

%o return [false]

%o if rni == length:

%o if not r_new == r[i]:

%o return [false]

%o for i in inds:

%o for j in inds:

%o if r[i](j) == length:

%o if not r_new == r[j]:

%o return [false]

%o return true, r+[r_new]

%o def possible_extensions(r):

%o R = []

%o for m in M:

%o r_potential = is_compatible(r,m)

%o if r_potential[0]:

%o R += [r_potential[1]]

%o return R

%o def extend(R):

%o R_new = []

%o for r in R:

%o R_new += possible_extensions(r)

%o return R_new

%o R = [[]]

%o for i in N:

%o R = extend(R)

%o act = lambda sigma,r: [(~sigma)*r[(~sigma)(i)]*sigma for i in range(n)] # In Sage, the composition of permutations is reversed.

%o orbits = []

%o while R:

%o r = R.pop()

%o orb = []

%o for sigma in Perm:

%o r_iso = act(sigma,r)

%o orb += [tuple(r_iso)]

%o try: R.remove(r_iso)

%o except: pass

%o orbits += [set(orb)]

%o return len(orbits)

%Y A362821 is the labeled version.

%Y Cf. A001329 (magmas), A000041, A362382, A362385, A362642, A362822.

%K nonn,hard,more

%O 0,3

%A _Philip Turecek_, Apr 14 2023

%E a(8)-a(10) from _Andrew Howroyd_, Apr 17 2023