This is an algorithm I made accompanying my Master's thesis. It is used to calculate topological invariants of manifolds given some parameters.
The main point of these algorithms is to calculate and verify a reciprocity formula, the formula looks like this:
Where
This can be done with the reciprocity_formula function where you pass as arguments the matrices
however, its use can be much simpler than that:
At the base level it can compute gauss sums like:
It can also do the following operations:
- Isolate the invertible part of a symmetric matrix (while keeping the symmetry) using the function split_matrix
- Calculate the cokernel of a symmetric matrix on the field of integers (i.e. the quotient group
$\mathbb{Z}^n/L\mathbb{Z}^n$ ) with the function compute_cokernel - Split the finite part of the above group into a direct sum of cyclic groups (using the same function)
- Calculate a linking form that corresponds to a given (linking) matrix (again with the same function)
- Calculate the integer linking matrix of a lens space L(p,q) (using Saveliev's method) with the function linking_mat_of_lens_space
- Perform the second Kirby move on symmetric (linking) matrices with the function K2
Very briefly, we can create a manifold by acting on a set of curves inside
where
One thing this algorithm does is calculate the homology by calculating the above cokernel. It does that in two steps, first it isolates the invertible part from the non invertible part of the matrix using only the allowed moves (Kirby moves), bringing it into a form
If you are unfamiliar with the last expression it just means that points of
(4,2)
(2,4)
And we wanted to see how this group would look like, visually it would look like this:
with the blue and orange parts acting as portals. Of course not shown explicitly in the figure there would also be "portals" connecting the top and bottom side of the shape. In order to find and calculate the properties of the above group we had to be able to do the following operations:
- Find a way to show which points are within the group. (done by is_within function)
- Find all the unique points that are in the group. (done by set_of_points_within function)
- Find the cyclic group decomposition of our group. (done by compute_cokernel and its subordinate functions)
For the last point we need to say that since
As it is evident, another main function of this algorithm is the compute_cokernel one. It takes one input of a symmetric matrix and gives five outputs. These are:
- a list like the following
$[p_k , p_{k-1},...,p_1]$ - the list of generators of the groups
$\mathbb{Z}_{p_k} ... \mathbb{Z}_1$ - the linking form of the matrix in the basis of the above generators
- the corank of the matrix (i.e. the dimension minus the rank which corresponds to the number of (infinite)
$\mathbb{Z}$ groups in its decomposition) - the reduced matrix which is the invertible of the matrix after we separate invertible and non invertible
more will be added on the above explanation
The following is a topological invariant of our manifold
where
More information will be added soon. References to all of these are in my Master's Thesis and possibly a future paper.