The following is a list of the functions available in the RiG package.
IsAffineIndecomposableQuandle(
quandle ) ;
checks if the quandle is an affine quandle. This function only works with indecomposable quandles. For example:
gap> r := SmallQuandle(5,1);; gap> IsAffineIndecomposableQuandle(r); true gap> s := SmallQuandle(6,1);; gap> IsAffineIndecomposableQuandle(s); false
AbelianRack(
n ) ;
TrivialRack(
n ) ;
creates an abelian rack of size n. For example:
gap> r := TrivialRack(3);; gap> Display(r); rec( isRack := true, matrix := [ [ 1, 2, 3 ], [ 1, 2, 3 ], [ 1, 2, 3 ] ], labels := [ 1 .. 3 ], size := 3, basis := "", comments := "", inn := "", aut := "", env := "" )
AffineCyclicRack(
n,
x )
creates an affine rack associated to the cyclic group of order n and the multiplication by x. For example, the dihedral rack of size 3 can be obtained as:
gap> r := AffineCyclicRack(3,2);; gap> Display(r); rec( isRack := true, matrix := [ [ 1, 3, 2 ], [ 3, 2, 1 ], [ 2, 1, 3 ] ], labels := [ 1 .. 3 ], size := 3, basis := "", comments := "", inn := "", aut := "", env := "" )
AffineRack(
field,
field_element )
creates an affine rack associated to field and the multiplication by the field_element. For example:
gap> r := AffineRack(GF(3), Z(3));; gap> Display(r); rec( isRack := true, matrix := [ [ 1, 3, 2 ], [ 3, 2, 1 ], [ 2, 1, 3 ] ], labels := [ 1 .. 3 ], size := 3, basis := "", comments := "", inn := "", aut := "", env := "" )
AlexanderRack(
n,
s,
t )
returns the Alexander rack of size n associated to s and t. If s=1−t then the result is the Alexander quandle.
CyclicRack(
n )
returns the cyclic rack of order n. For example:
gap> r := CyclicRack(3);; gap> Display(r); rec( isRack := true, matrix := [ [ 2, 3, 1 ], [ 2, 3, 1 ], [ 2, 3, 1 ] ], labels := [ 1 .. 3 ], size := 3, basis := "", comments := "", inn := "", aut := "", env := "" )
CoreRack(
group )
returns the core rack of the group group. For example:
gap> r := CoreRack(CyclicGroup(3));; gap> Display(r); rec( isRack := true, matrix := [ [ 1, 3, 2 ], [ 3, 2, 1 ], [ 2, 1, 3 ] ], labels := [ 1 .. 3 ], size := 3, basis := "", comments := "", inn := "", aut := "", env := "" )
DihedralRack(
n )
creates a dihedral rack of size n. For example:
gap> r := DihedralRack(5);; gap> Display(r.matrix); [ [ 1, 5, 4, 3, 2 ], [ 3, 2, 1, 5, 4 ], [ 5, 4, 3, 2, 1 ], [ 2, 1, 5, 4, 3 ], [ 4, 3, 2, 1, 5 ] ]
DirectProductOfRack(
rack1,
rack2 )
returns the direct product of rack1 and rack2. For example:
gap> r := DirectProductOfRacks(DihedralRack(3), TrivialRack(2));; gap> Display(r.matrix); [ [ 1, 2, 5, 6, 3, 4 ], [ 1, 2, 5, 6, 3, 4 ], [ 5, 6, 3, 4, 1, 2 ], [ 5, 6, 3, 4, 1, 2 ], [ 3, 4, 1, 2, 5, 6 ], [ 3, 4, 1, 2, 5, 6 ] ]
HomogeneousRack(
group,
automorphism )
TwistedHomogeneousRack(
group,
automorphism )
creates a (twisted)homogeneous rack associated to the automorphism of the group given. For example:
gap> f := ConjugatorAutomorphism(SymmetricGroup(3), (1,2)));; gap> r := HomogeneousRack(SymmetricGroup(3), f);; gap> Display(r.matrix); [ [ 1, 6, 3, 5, 4, 2 ], [ 4, 2, 6, 1, 5, 3 ], [ 1, 6, 3, 5, 4, 2 ], [ 5, 3, 2, 4, 1, 6 ], [ 4, 2, 6, 1, 5, 3 ], [ 5, 3, 2, 4, 1, 6 ] ]
RackByListOfPermutations(
list )
returns the rack given by the list of permutations given in list. For example:
gap> r := RackFromListOfPermutations([(2,3),(1,3),(1,2)]);; gap> Display(r.matrix); [ [ 1, 3, 2 ], [ 3, 2, 1 ], [ 2, 1, 3 ] ]
Rank(
rack)
return the rank of rack. If rack is a quandle, the result is 1.
AutomorphismGroup(
rack )
returns the group of automorphism of rack. For example:
gap> AutomorphismGroup(TrivialRack(3)); Group([ (), (2,3), (1,2), (1,2,3), (1,3,2), (1,3) ])
InnerGroup(
rack )
returns the inner group of the rack. For example
gap> InnerGroup(DihedralRack(3)); Group([ (2,3), (1,3), (1,2) ]) gap> InnerGroup(TrivialRack(5)); Group(())
IsomorphismRack(
r,
s )
computes an isomorphism between the racks r and s if they are
isomorphic and returns fail
otherwise.
gap> a := Rack(AlternatingGroup(4), (1,2,3));; gap> b := Rack(AlternatingGroup(4), (1,3,2));; gap> c := AbelianRack(4); gap> IsomorphismRacks(a,b); (3,4) gap> IsomosphismRacks(a,c); fail
IsMorphism (
f,
r,
s )
Checks if f is a rack morphism from r to s
gap> r := SmallQuandle(6,1);; gap> s := DihedralRack(3);; gap> for f in Hom(r,s) do Print("Is f=", f, ", a rack morphism? ", IsMorphism(f, r, s), "\n"); od; Is f=[ 1, 1, 1, 1, 1, 1 ], a rack morphism? true Is f=[ 1, 1, 2, 2, 3, 3 ], a rack morphism? true Is f=[ 1, 1, 3, 3, 2, 2 ], a rack morphism? true Is f=[ 2, 2, 1, 1, 3, 3 ], a rack morphism? true Is f=[ 2, 2, 2, 2, 2, 2 ], a rack morphism? true Is f=[ 2, 2, 3, 3, 1, 1 ], a rack morphism? true Is f=[ 3, 3, 1, 1, 2, 2 ], a rack morphism? true Is f=[ 3, 3, 2, 2, 1, 1 ], a rack morphism? true Is f=[ 3, 3, 3, 3, 3, 3 ], a rack morphism? true
IsQuotient (
r,
s )
checks if there exists an epimorphism of racks from r to s The following example shows that the two indecomposable quandles of size 6 are not simple.
gap> IsQuotient(SmallQuandle(6,1), DihedralRack(3)); [ 1, 1, 2, 2, 3, 3 ] gap> IsQuotient(SmallQuandle(6,2), DihedralRack(3)); [ 1, 1, 2, 2, 3, 3 ]
gap> IsQuotient(DihedralRack(4), TrivialRack(2)); [ 1, 2, 1, 2 ]
Rack(
matrix ) F
creates a rack structure over the set X={1,·.·,n} with the structure given by matrix. For example, to get the abelian rack of two elements:
gap> a := AbelianRack(2);; gap> b := Rack([[1,2],[1,2]]);; gap> Display(b.matrix); [ [ 1, 2 ], [ 1, 2 ] ] gap> a=b; true
Rack(
group,
group_element ) F
creates a rack structure from the conjugacy class in group of group_element. For example, the rack associated to the vertices of the tetrahedron is the rack of the conjugacy class of (1,2,3) in the alternating group in four letters:
gap> r := Rack(AlternatingGroup(4), (1,2,3));; gap> Display(r.matrix); [ [ 1, 3, 4, 2 ], [ 4, 2, 1, 3 ], [ 2, 4, 3, 1 ], [ 3, 1, 2, 4 ] ]
Rack(
set )
creates a rack structure from the elements of the set. For example:
gap> set := Set([(1,2),(2,3),(1,3)]);; gap> Rack(set) = Rack(SymmetricGroup(3), (1,2)); true
BoundaryMap(
rack,
n ) F
computes the rack boundary map.
RackHomology (
rack,
order ) F
RackCohomology (
rack,
order ) F
computes the abelian rack (co)homology.
gap> RackCohomology(DihedralRack(3),2); [ 1, [ ] ] gap> RackCohomology(TrivialRack(3),2); [ 9, [ ] ] gap> RackHomology(TrivialRack(2),2); [ 4, [ ] ] gap> RackHomology(DihedralRack(4),2); [ 4, [ 2, 2 ] ]
QuantumSymmetrizer(
rack,
q,
n )
computes the quantum symmetrizer of degree n.
Dimension(
nichols_datum,
n )
computes the dimension in degree n of the Nichols algebra nichols_datum In the following example we compute all dimensions of a known 12-dimensional Nichols algebra.
gap> r := DihedralRack(3);; gap> q := [ [ -1, -1, -1 ], [ -1, -1, -1 ], [ -1, -1, -1 ] ];; gap> n := NicholsDatum(r, q, Rationals);; gap> for i in [0..5] do Print("Degree ", i, ", dimension=", Dimension(n,i), "\n"); od; Degree 0, dimension=1 Degree 1, dimension=3 Degree 2, dimension=4 Degree 3, dimension=3 Degree 4, dimension=1 Degree 5, dimension=0
Relations4GAP(
nichols_datum,
n )
returns the relation in degree n of the Nichols algebra nichols_datum The relations are returned in gbnp format. In the following example we calculate all relations in degree two of a 12-dimensional Nichols algebra.
gap> LoadPackage("gbnp"); gap> r := DihedralRack(3);; gap> q := [ [ -1, -1, -1 ], [ -1, -1, -1 ], [ -1, -1, -1 ] ];; gap> rels := Relations4GAP(r, q, 2);; gap> PrintNPList(rels); a^2 b^2 ab + bc + ca ac + ba + cb c^2
RackOrbit(
rack,
i )
returns the orbit of the element i, given by the action of the inner group.
gap> r := DihedralRack(4);; gap> RackOrbit(r, 1); [1, 3]
Nr_k (
rack,
n )
returns the number of j such that the braided orbit of (1,j) has n elements.
gap> Check := function(rack) > local n,s,d; > d := Size(rack); > s := 0; > for n in [3..d^2] do > s := s+(n-2)*Nr_k(rack,n)/(2*n); > od; > if s <= 1 then > return s; > else > return fail; > fi; > end; gap> a4 := AlternatingGroup(4);; gap> s4 := SymmetricGroup(4);; gap> s5 := SymmetricGroup(5);; gap> Check(RackFromAConjugacyClass(a4, (1,2,3))); 1/2 gap> Check(RackFromAConjugacyClass(s4, (1,2))); 2/3 gap> Check(RackFromAConjugacyClass(s4, (1,2,3,4)); 2/3 gap> Check(RackFromAConjugacyClass(s5, (1,2))); 1 gap> Check(AffineCyclicRack(5,2)); 1 gap> Check(AffineCyclicRack(5,3)); 1 gap> Check(AffineCyclicRack(7,5)); 1 gap> Check(AffineCyclicRack(7,3)); 1 gap> Check(DihedralRack(3)); 1/3
Nr_l (
rack,
n )
returns the number of braided orbits with n elements, when rack is of group-type.
Braiding (
rack )
returns the braiding given by rack.
gap> Display(Braiding(TrivialRack(2))); [ [ 1, 0, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 0, 1 ] ]
SubracksUpToIso (
rack,
subr,
n )
returns all the subracks of rack containing subr of size less or equal than n (up to rack isomorphism).
gap> r := DihedralRack(8);; gap> subracks := SubracksUpToIso(r,[1],8);; gap> for s in subracks do > Print(Size(s),"\n"); > od; 1 8 4 2
IsConnected (
rack )
IsIndecomposable (
rack )
returns true if the rack is indecomposable (i.e. connected).
gap> r := DihedralRack(3);; gap> IsIndecomposable(r); true gap> s := DihedralRack(4);; gap> IsIndecomposable(s); false
IsHomogeneous (
rack )
returns true is the automorphism group of the rack acts transitively on rack.
IsHomologous(
rack,
q1,
q2 )
TorsionGenerators(
rack,
n )
SecondCohomologyTorsionGenerators(
rack )
LocalExponent(
rack,
i,
j )
LocalExponents(
rack )
Degree(
rack )
RackAction(
rack,
i,
j )
InverseRackAction(
rack,
i,
j )
Hom(
rack1,
rack2 )
Permutations(
rack )
returns the list of permutations generating the rack.
gap> r := TetrahedronRack();; gap> Permutations(r); [ (2,3,4), (1,4,3), (1,2,4), (1,3,2) ]
HurwitzOrbit(
rack,
vector )
computes the Hurwitz orbit of the vector
gap> r := DihedralRack(3); gap> HurwitzOrbit(r, [1,1,1]); [ [ 1, 1, 1 ] ] gap> HurwitzOrbit(r, [1,2,3]); [ [ 1, 2, 3 ], [ 3, 1, 3 ], [ 1, 1, 2 ], [ 2, 3, 3 ], [ 3, 2, 1 ], [ 1, 3, 1 ], [ 3, 3, 2 ], [ 2, 1, 1 ] ]
HurwitzOrbits(
rack,
n )
returns the list of all n-Hurwitz orbits associated to the rack rack.
gap> r := DihedralRack(3);; gap> HurwitzOrbits(r, 3); [ [ [ 1, 1, 1 ] ], [ [ 1, 1, 2 ], [ 1, 3, 1 ], [ 2, 1, 1 ], [ 1, 2, 3 ], [ 3, 2, 1 ], [ 3, 1, 3 ], [ 3, 3, 2 ], [ 2, 3, 3 ] ], [ [ 1, 1, 3 ], [ 1, 2, 1 ], [ 3, 1, 1 ], [ 1, 3, 2 ], [ 2, 3, 1 ], [ 2, 1, 2 ], [ 2, 2, 3 ], [ 3, 2, 2 ] ], [ [ 1, 2, 2 ], [ 3, 1, 2 ], [ 2, 3, 2 ], [ 3, 3, 1 ], [ 2, 1, 3 ], [ 3, 2, 3 ], [ 2, 2, 1 ], [ 1, 3, 3 ] ], [ [ 2, 2, 2 ] ], [ [ 3, 3, 3 ] ] ]
HurwitzOrbitsRepresentatives(
rack,
n )
returns the list of representatives of all n-Hurwitz orbits of the rack rack.
gap> r := DihedralRack(3);; gap> HurwitzOrbitsRepresentatives(r, 3); [ [ 1, 1, 1 ], [ 1, 1, 2 ], [ 1, 1, 3 ], [ 1, 2, 2 ], [ 2, 2, 2 ], [ 3, 3, 3 ] ]
HurwitzOrbitsRepresentativesWS(
rack,
n )
returns the list of representatives of all n-Hurwitz orbits of the rack rack. The sizes of each orbit are included.
gap> r := DihedralRack(3);; gap> SizesHurwitzOrbits(r, 3); [ 1, 8 ] gap> HurwitzOrbitsRepresentativesWS(r, 3); [ [ [ 1, 1, 1 ], 1 ], [ [ 1, 1, 2 ], 8 ], [ [ 1, 1, 3 ], 8 ], [ [ 1, 2, 2 ], 8 ], [ [ 2, 2, 2 ], 1 ], [ [ 3, 3, 3 ], 1 ] ]
NrHurwitzOrbits(
rack,
n,
size )
returns the number of n-Hurwitz orbits of a given size
gap> r := DihedralRack(3);; gap> NrHurwitzOrbits(r, 3, 8); 3
SizesHurwitzOrbits(
rack,
n )
returns the sizes all n-Hurwitz orbits of rack.
gap> r := TetrahedronRack();; gap> SizesHurwitzOrbits(r, 3); [ 1, 8, 12 ]
SmallIndecomposableQuandle(
size,
number )
returns the indecomposable quandle.
TetrahedronRack()
returns the rack associated to the vertices of the tetrahedron.
gap> r := TetrahedronRack();; gap> Display(r.matrix); [ [ 1, 3, 4, 2 ], [ 4, 2, 1, 3 ], [ 2, 4, 3, 1 ], [ 3, 1, 2, 4 ] ]
Example manual