Previous | About HAP: Knots and Quandles | next

Knots and Quandles Sub-package by Cédric FRAGNAUD and Graham ELLIS

A quandle (Q, ▹) is a non-empty set Q equipped with a binary operation ▹ : Q × Q → Q satisfying the following axioms:
1/ ∀ a ∈ Q, a ▹ a = a.
2/ ∀ a, b ∈ Q, ∃! c ∈ Q such that a = c ▹ b.
3/ ∀ a, b, c ∈ Q, (a ▹ b) ▹ c = (a ▹ c) ▹ (b ▹ c).
One can check that for any group G and n ∈ ℤ, the magma (G, ▹) forms a quandle with the operation x ▹ y = y-nxyn , ∀ x, y ∈ G. Such a quandle is called the n-Fold Conjugation Quandle.
A quandle Q is said to be connected if the inner automorphism group Inn Q acts transitively on Q. In other words, Q is connected if and only if for each pair a, b in Q there are a1, a2, . . . , an in Q such that a ▹ a1 ▹· · · ▹ an = b.
A quandle Q is said to be latin if ∀ a, b ∈ Q, ∃ c ∈ Q such that a = b ▹ c.

gap> Q:=Quandle(5,21); <magma with 5 generators> gap> Display(MultiplicationTable(Q)); [ [ 1, 3, 4, 5, 2 ], [ 3, 2, 5, 1, 4 ], [ 4, 5, 3, 2, 1 ], [ 5, 1, 2, 4, 3 ], [ 2, 4, 1, 3, 5 ] ] gap> IsConnected(Q); true gap> IsLatin(Q); true
gap> G:=DihedralGroup(64);; gap> Q:=ConjugationQuandle(G,1); <magma with 19 generators> gap> Size(Q); 64 gap> IsConnected(Q); false

Let Q be a set, e an element in Q, G a permutation group, and stigma an element in G.
Then (Q,G,e,stigma) describes a Quandle Envelope if :

- G is a transitive group on Q.

- stigma ∈ Z(Ge), the center of the stabilizer of e.

- ⟨stigmaG⟩ = G (that is, the smallest normal subgroup of G containing stigma is all of G).

From a Quandle Envelope (Q,G,e,stigma), we can construct a Quandle (Q, ▹):

for all x,y in Q, x ▹ y=(ŷ(stigma))(x) , where ŷ ∈ G satisfies ŷ(e)=y.

Such a quandle is connected. This property is used to construct all the connected quandles of size n.

gap> Q:=[1..9];; e:=2;; G:=TransitiveGroup(9,15);; st:=(1,8,7,4,9,5,3,6);;
gap> IsQuandleEnvelope(Q,G,e,st); QE:=QuandleQuandleEnvelope(Q,G,e,st);
true
<magma with 9 generators>
gap> IsQuandle(QE); IsConnected(QE);
true
true
gap> ConnectedQuandles(20); time;
[ <magma with 20 generators>, <magma with 20 generators>, <magma with 20 generators>,
<magma with 20 generators>, <magma with 20 generators>, <magma with 20 generators>,
<magma with 20 generators>, <magma with 20 generators>, <magma with 20 generators>,
<magma with 20 generators> ]
3364296

Let's denote Rx the mapping defined by Rx : Q→Q, y ↦y▹x. We define the right multiplication group G of a quandle Q by G=〈Rx, x ∈ Q〉. We also define the automorphism group Aut(Q)={f:Q→Q}. It can be proven that Rx is a subgroup of Aut(Q).
gap> Q:=ConnectedQuandle(8,2);; q:=Random(Q); m6 gap> A:=AutomorphismGroupQuandle(Q);; a:=Random(A);; gap> q^a; m4 gap> R:=RightMultiplicationGroupOfQuandle(Q);; r:=Random(R);; gap> q^r; m3

A knot is an embedding of the circle S1 in ℝ3.
To study these structures, we use knot diagrams, which are projections of these knots into ℝ2, defined, for instance, by f : ℝ3 → ℝ2; (x,y,z) → (x,y) subject to the constraint that the preimage of any (x, y) ∈ ℝ2 contains at most two points.
Crossing points occur when the preimage of a point in ℝ2 contains more than one point.
At these crossing points, we denote the point in the preimage that is nearer to the ℝ2 plane as the under-crossing point and the point farther away as the over-crossing point. An arc is a line that connects two crossing points in the knot diagram, with a line break occurring when an undercrossing point is mapped to the arc.
We may give a knot diagram an orientation, i.e. a direction of travelling around the knot. This allows us to categorize crossings as either positive or negative:
There exists different ways to describe a knot diagram: Planar Diagram, Gauss Code, Dowker Notation, Conway Notation.

An other way to describe a knot is to use quandles. From a knot K, we can construct the knot quandle Q(K), whose generators are the arcs of K, and relations are associated to the crossings: This figure gives us "a ▹ b = c" at a negative crossing, and "a ▹-1 b = c" (or "c ▹ b = a") at a positive one.
gap> K:=PureCubicalKnot(3,1);; gap> G:=GaussCodeOfPureCubicalKnot(K);; gap> P:=PresentationKnotQuandle(G); rec( generators := [ 1 .. 3 ], relators := [ [ [ 3, 2 ], 1 ], [ [ 1, 3 ], 2 ], [ [ 2, 1 ], 3 ] ] )
From this example, we see that the generators of the Trefoil Knot Quandle are the arcs 1, 2 and 3; these generators satisfy the relations above. Nb: [[a1 ,a2 ],a3 ] means a1 ▹ a2 = a3, no matter if we consider a positive or negative crossing.
We can also easily go from a Planar Diagram representation of a knot to a its Gauss Code (with orientations of crossings).
gap> PD:=PlanarDiagramKnot(3,1); [ [ 1, 4, 2, 5 ], [ 3, 6, 4, 1 ], [ 5, 2, 6, 3 ] ] gap> G:=PD2GC(PD); [ [ [ -1, 3, -2, 1, -3, 2 ] ], [ -1, -1, -1 ] ]
Using quandles, we can construct an knot invariant: a list made of the number of Homomorphisms beetween the knot (in the form of a record) and a connected quandle.
gap> K:=PresentationKnotQuandleKnot(8,2); rec( generators := [ 1 .. 8 ], relators := [ [ [ 8, 2 ], 1 ], [ [ 2, 5 ], 1 ], [ [ 2, 6 ], 3 ], [ [ 3, 7 ], 4 ], [ [ 4, 8 ], 5 ], [ [ 6, 1 ], 5 ], [ [ 6, 3 ], 7 ], [ [ 7, 4 ], 8 ] ] ) gap> Q:=ConnectedQuandle(9,2);; gap> NumberOfHomomorphisms(K,Q); time; 9
The following code shows how the humber of quandle homomorphisms K--->Q from a knot quandle K to a finite quandle Q can be used to distinguish between knots. The code establishes that by using only connected finite quandles Q of order <=13 one can distinguish between all prime knots on at most eight crossings.

gap> L:=[];; #List of prime knots on <= 8 crossings
gap> for n in [1..8] do
> for i in [1..NumberOfPrimeKnots(n)] do
> Add(L,PresentationKnotQuandleKnot(n,i));
> od;od;
gap> inv:=function(K,n); #A knot invariant
> return List(ConnectedQuandles(n),x->NumberOfHomomorphisms(K,x));
> end;;
gap> C:=Classify(L,K->inv(K,3));;
gap> List(C,Size);
[ 11, 23, 1 ]
gap> C4:=RefineClassification(C,K->inv(K,4));;
gap> List(C4,Size);
[ 8, 3, 6, 17, 1 ]
gap>
gap> C5:=RefineClassification(C4,K->inv(K,5));;
gap> List(C5,Size);
[ 5, 2, 1, 1, 1, 1, 1, 1, 4, 3, 12, 1, 1, 1 ]
gap> C6:=RefineClassification(C5,K->inv(K,6));;
gap> List(C6,Size);
[ 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 4, 3, 12, 1, 1, 1 ]
gap> C7:=RefineClassification(C6,K->inv(K,7));;
gap> List(C7,Size);
[ 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 2, 8, 2, 1, 1, 1 ]
gap> C8:=RefineClassification(C7,K->inv(K,8));;
gap> List(C8,Size);
[ 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 6, 2, 2, 1, 1, 1 ]
gap> C9:=RefineClassification(C8,K->inv(K,9));;
gap> List(C9,Size);
[ 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1 ]
gap> C10:=RefineClassification(C9,K->inv(K,10));;
gap> List(C10,Size);
[ 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1 ]
gap> C11:=RefineClassification(C10,K->inv(K,11));;
gap> List(C11,Size);
[ 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]
gap> List(C12,Size);
[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]
gap> C13:=RefineClassification(C12,K->inv(K,13));;
gap> List(C13,Size);
[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ]

Previous Page | Contents | Next page