In knot theory several knot invariants have been found over the last decades. This paper concerns itself with invariants of several of those invariants, namely the Homology of racks, quandles, biracks and biquandles. The software described in this paper calculates the rack, quandle and degenerate homology groups of racks and biracks. It works for any rack/quandle with finite elements where there are homology coefficients in _{k}_{k}_{3}. We also provide a second function to test if a set with a given action (or with both actions) gives rise to a quandle or biquandle. The program is provided as an R package and can be found at

This introduction is divided into two parts: First, we are going to give some mathematical background before introducing the software itself.

Racks and Quandles were first described by John Conway and Gavin Wraith in 1959 in unpublished correspondence. In [

∀^{c}

^{a}

Biracks and Biquandles are defined similarly, now with two operations, satisfying the following axioms:

^{bcb}^{cbc}

_{bcb}_{cbc}

_{b}^{cb}^{c}_{bc}

^{a}_{a}

In addition, both operations satisfy the rack axiom 1.

Here, the up and down actions allow us to introduce a switch map via _{a}_{a}, f^{a}^{a}_{a}^{b}

^{a}_{a}

Yang Baxter Equation: _{1}_{2}_{1} = _{2}_{1}_{2}, where _{1}(_{2}(

This reformulation is more amenable to computational work.

The homology of the biquandle is defined as follows:

Let X be a birack. Then _{1}_{2}… _{n}_{i}

We define a boundary homomorphism by:

and

Furthermore, we have a subchain complex _{1}_{2}…_{n}_{i}_{i}_{i+1} for some i. Together with the boundary homomorphism,

Using both of those chain complexes, we can define the biquandle chain complex via the quotient chain complex,

We can then define the birack, biquandle and degenerate homology groups in the usual way. In addition, we have the following long exact sequence of homology groups:

The algorithm for the homology calculation is described in [

The software, which is provided as an R package, can be accessed on github. It provides two primary functions. One of these calculates the homology of racks and biracks, whilst the other verifies if a rack or birack is induced by a given set with one or two actions.

This software is implemented in R. It has been tested on MacOS X, CentOS/Ubuntu and Windows without any problems.

The algorithm for the homology calculation is described in the paper [

The program is divided into the following two main parts: The calculation of the boundary matrix and the subsequent calculation of the Homology. For a graphical description see the following Figure

library(proftools)

Rprof(tmp <- tempfile(), line.profiling = T); homology(4,5,F);Rprof(append=F); pd <- readProfileData(tmp)

plotProfileCallGraph(pd,style=google.style,score=“total”,nodeSizeScore = “none”,layout=”dot”,rankDir = “LR”)

Call graph for the calculation of the

The boundary matrices are computed using the functions

After both boundary matrices have been calculated, they are returned to the

As an aside, those two functions should be the only ones that would have to be called by the user in order to calculate a homology.

Following on with the algorithm described in [

Using the function

Finally. The homology group is obtained using the diagonal of the smith normal form.

The second function of this package, the testing if a give operation or operations give rise to a quandle or biquandle is done via the function

The results of the program have been compared to known results and in addition,

Additionally, a few tests have been provided in test/testthat.R.

Any OS that can install and run R (at least version 3.0.0).

R 3.0.0+.

The more RAM, the higher the homology groups that can be calculated.

Presently, output is on screen, but can be changed to a file, if necessary.

Required input devices: keyboard only.

The program requires the R standard installation [

English

Support is currently provided via Github issues.

This software can be used to calculate the homology groups of most racks and biracks. It is very easy to adapt for application to other eracks/biracks. Furthermore we believe that it can easily be extended to the calculation of Cohomology groups. Finally, the possibility of quickly identifying if a given action/set of actions gives rise to a rack/birack, is very useful.

We would like to thank all contributors and developers of the R software, in particular the authors of the packages used in this program as well as of RStudio.

The authors have no competing interests to declare.