The unique loop (quasigroup with unit) $L$ of order $5$ satisfying $x^2 = 1$ for all $x \in L$

Recall that a quasigroup is a pair $(Q, \ast)$, where $Q$ is a set and $\ast$ is a binary product $$\ast: Q \times Q \to Q$$ satisfying the Latin square property, namely that for all $x, y \in Q$ there is a unique $a \in Q$ such that $y = ax$ and a unique $b \in Q$ such that $y = x b$, or equivalently, that the multiplication table of $\ast$ is a Latin square. A quasigroup $(Q, \ast)$ is a loop iff it has an identity element, that is an element $1$ such that $1\ast x = x = x\ast 1$ for all $x \in Q$.

This question asks about constructing a loop $(L, \ast)$ on a set $L$ of five elements (denote $L = \{1, a, b, c, d\}$) that satisfies the involution condition $x^2 = 1$ for all $x \in L$. My answer there shows that there is only one such loop up to isomorphism; its multiplication table is: $$ \begin{array}{c|ccccc} \ast & 1 & a & b & c & d \\ \hline 1 & 1 & a & b & c & d \\ a & a & 1 & c & d & b \\ b & b & d & 1 & a & c \\ c & c & b & d & 1 & a \\ d & d & c & a & b & 1 \end{array}.$$ (Note that it is nonassociative, as $(ab)d = a \neq ac = a(bd)$.)

Even without the involution condition, this example is minimal in the sense that any loop of order $< 5$ is in fact a group. (Up to isomorphism there are six loops of order $5$: This one, the group $(\mathbb{Z}_5, +)$, and four other non-groups.)

So, given that this example is both minimal and unique, it's natural to ask:

Is there a more informative/interesting way to view the loop structure $\ast$ on $L$ than via its multiplication table? That is, does it arise naturally in some other setting?


There are 4 quasi-quaternion groups, strictly $abc, adb, acd, bdc$, (even, odd, even, odd permutations of 3 of $abcd$) with $xy=z, yz=x, zx=y, (xy)z=x(yz)=1$.

They can be visualised on 4 tetrahedral directed graphs, with $x\to y$ implying we follow the arrow, otherwise follow the blank edge.

Quasi-group order 5 on 4 tetrahedral directed graphs

These can be combined into a tetrahedron with each face given a clockwise or anti-clockwise spin (all faces have the same spin in this case - viewed from outside the tetrahedron). Adding the identity involves adding bidirectional edges and loops.

The idea can be extended to other solids with 3 edges per vertex, e.g. the cube and the dodecahedron.


A Loop with the involution condition you describe has $1$'s along it's main diagonal. Lets remove the $1$ from the Loop to define a related Quasigroup. We maintain the rest of the structure, but need to fill in the now empty entries on the main diagonal. Each row and column are missing a single element and there is only way to satisfy the Latin square condition: the new Quasigroup must be idempotent! Note that we can do the reverse process uniquely too, so there is a one to one correspondence between Loops with this involution condition and Idempotent Quasigroups, so this construction is not so arbitrary.

$\begin{array}{c|ccccc} \ast & 1 & a & b & c & d \\ \hline 1 & 1 & a & b & c & d \\ a & a & 1 & c & d & b \\ b & b & d & 1 & a & c \\ c & c & b & d & 1 & a \\ d & d & c & a & b & 1 \end{array} \Leftrightarrow \begin{array}{c|cccc} ? & a & b & c & d \\ \hline a & & c & d & b \\ b & d & & a & c \\ c & b & d & & a \\ d & c & a & b & \end{array} \Leftrightarrow \begin{array}{c|cccc} \lhd & a & b & c & d \\ \hline a & a & c & d & b \\ b & d & b & a & c \\ c & b & d & c & a \\ d & c & a & b & d \end{array}$

Now that we've done that, the Quasigroup we've constructed has a nice interpretation.

Consider a conjugacy class of elements of order $3$ from the Alternating Group on a set of $4$ elements, $A_4$. Say, $\{(1,2,3),(1,4,2),(1,3,4),(2,4,3)\}$. Define the operation $x\lhd y = xyx^{-1}$ where the implied operations on the right hand side are the usual multiplication of permutations, that is, our operation now conjugates elements.

Let

$a\rightarrow(1,2,3)$

$b\rightarrow(1,4,2)$

$c\rightarrow(2,4,3)$

$d\rightarrow(1,3,4)$

and we get our quasigroup!

For example $a\lhd b=(1,2,3)\lhd(1,4,2) = (1,2,3)(1,4,2)(1,2,3)^{-1}=(1,2,3)(1,4,2)(1,3,2)=(2,4,3)=c$

See also, conjugation and Quandles.


We can start by defining $ab=c$ and also note that if we have the four distinct elements as $\{w,x,y,z\}$, then if $wx=y, xw=z$, that is $xw$ is the only element unused. We also have the property that:

$$ab=c, bc=a, ca=b.$$

Using the 'opposite' rule, we therefore have:

$$ba=d, cb=d, ac=d.$$

We can now deduce the remaining operations, using the definition of a Latin Square.

$ad=b$ (from $ab=c$ and $ac=d$), so also $bd=c$ and $cd=a.$

with the corresponding opposites:

$$da=c, db=a, dc=b.$$

There are a few other points of interest: $(xy)x=y$, $(ab)(ca)=(cb)$, and if $y\ne z$ then $(xy)z=y(zx)$.

I wrote a JavaScript program, which originally was going to parse expressions from $L$, but at the moment just displays the multiplication tables for 3 elements.

<!DOCTYPE html>
<html>
<title>Quasigroup Explorer</title>
<style>
span {
width:200px;
height:32pt;
white-space:pre;
display:block;
}
#input {
background-color:red;
}
#output {
background-color:blue;
}
#parse {
text-align:center;
font:24pt tahoma;
background-color:green;
}
</style>
<body onkeydown='span();'>
<span id='input' ></span>
<span id='output' ></span>
<span id='parse' onclick='parse();'>parse</span>
</body>
<script>

mult=new Array;
mult[0]=[0,1,2,3,4];
mult[1]=[1,0,3,4,2];
mult[2]=[2,4,0,1,3];
mult[3]=[3,2,4,0,1];
mult[4]=[4,3,1,2,0];

function span(e) {
var key=event.keyCode;
if (key!=48 && key!=49 && key!=57 && key!=65 && key!=66 && key!=67 && key!=68 && key!=32) return;
var inp=input.textContent;
var chr='';
if (key=='48') chr=')';
if (key=='49') chr='1';
if (key=='57') chr='(';
if (key=='65') chr='a';
if (key=='66') chr='b';
if (key=='67') chr='c';
if (key=='68') chr='d';
if (key==32 && inp.length>0)  inp=inp.slice(0,-1);
inp+=chr;
input.textContent=inp;
}

function parse() {
var brk=0;
var inp=input.textContent;
var inpl=inp.length;
var i;
for (i=0;i<inpl;i++) if (inp[i]=='(') brk++;
}

out='';
c0=0;c4=0;
for (a=0;a<5;a++)
for (b=0;b<5;b++)
for (c=0;c<5;c++) {
x=mult[mult[a][b]][c];
out+='('+a+''+b+')'+c+'='+x+'<br>';
x=mult[b][mult[c][a]];
out+=b+'('+c+''+a+')='+x+'<br>';
}
output.innerHTML=out;

/* original
out='';
c0=0;c4=0;
for (a=0;a<5;a++)
for (b=0;b<5;b++)
for (c=0;c<5;c++) {
x=mult[mult[a][b]][c];
out+='('+a+''+b+')'+c+'='+x+'<br>';
if (x==0) c0++;
if (x==4) c4++;
x=mult[a][mult[b][c]];
out+=a+'('+b+''+c+')='+x+'<br>';
}
output.innerHTML=out;
*/

</script>
</html>