{"id":19301270,"url":"https://github.com/fuglede/burau","last_synced_at":"2026-01-05T02:10:42.387Z","repository":{"id":60721957,"uuid":"296723815","full_name":"fuglede/burau","owner":"fuglede","description":"Search for non-trivial elements of the kernel of the Burau representation of the four-strand braid group.","archived":false,"fork":false,"pushed_at":"2023-04-10T19:36:34.000Z","size":40,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-18T06:49:33.631Z","etag":null,"topics":["braid","braid-groups","braids","burau","hacktoberfest","math","mathematical-physics","mathematics","quantum-field-theory","representation-theory","topological-quantum-computation","topology"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fuglede.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-09-18T20:30:59.000Z","updated_at":"2023-04-10T13:20:15.000Z","dependencies_parsed_at":"2022-10-03T20:31:40.075Z","dependency_job_id":null,"html_url":"https://github.com/fuglede/burau","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fuglede%2Fburau","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fuglede%2Fburau/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fuglede%2Fburau/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fuglede%2Fburau/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fuglede","download_url":"https://codeload.github.com/fuglede/burau/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244780393,"owners_count":20509361,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["braid","braid-groups","braids","burau","hacktoberfest","math","mathematical-physics","mathematics","quantum-field-theory","representation-theory","topological-quantum-computation","topology"],"created_at":"2024-11-09T23:17:23.260Z","updated_at":"2026-01-05T02:10:42.346Z","avatar_url":"https://github.com/fuglede.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Burau\n=====\n\nMethods for finding kernel elements of the :math:`B_4` Burau representation,\nor helping to show that no non-trivial elements of the kernel exist.\n\nBackground\n----------\nHere, we follow the lead from Bigelow [0]_ and consider a particular family of\npairs of curves in the four-punctured disc. We follow more or less the same\nprescription as in Bigelow's C implementation currently available at::\n\n    https://github.com/freshbugs/burau4/blob/master/iv.c\n\nand in particular, we thank Bigelow for useful ideas on how to represent the\ncurves: We place the four punctures in a square, identifing them in our\nexplanation via compass directions. In the notation of [0], we let\n:math:`\\alpha` denote the curve connecting the two south punctures, ordered so\nthat the code below does not have any sign mistakes::\n\n    ╳  ╳\n\n    ╳──╳\n\nThe curve :math:`\\beta` is more complicated. The two north punctures are placed\nat the middle of two caps, each consisting of a given number of parallel\ncurves, the two south punctures at the middle of two such multi-cups, two\nvertical strands are pulled south from each of the two north punctures, and a\nmulti-cap extending above the two north caps ensures that everything can be\ntied together.\n\nAs an example, suppose ``cap_west = 2``, ``cap_east = 1``, ``cup_west = 3``,\nand ``cup_east = 2``. Then, joining the north and south halves of the picture,\nwe have::\n\n    num_strands = 2 * (cup_west + cup_east) = 10\n\nstrands, and to tie things together, we need an outer cap containing::\n\n   cap_outer = cup_west + cup_east - (cap_west + cap_east + 1) = 1\n\nstrand. At the end of the day, we get a picture that looks as follows (not\nincluding the drawing of :math:`\\alpha`)::\n\n    ┌─────────────────┐\n    │ ┌───────┐       │\n    │ │ ┌───┐ │ ┌───┐ │\n    │ │ │ ╳ │ │ │ ╳ │ │\n    │ │ │ │ │ │ │ │ │ │\n    │ │ │╳│ │ │ │ │╳│ │\n    │ │ └─┘ │ │ │ └─┘ │\n    │ └─────┘ │ └─────┘\n    └─────────┘\n\nNote that for this picture to make sense, we must require that::\n\n    cup_west + cup_east - (cap_west + cap_east) \u003e 0.\n\nOur goal is to calculate, in the notation of Bigelow [0]_,\n:math:`\\int_\\beta \\alpha`. As such, we follow :math:`\\beta` from the northwest\npuncture to the northeast puncture, along the way keeping track of\nintersections with :math:`\\alpha`. Each intersection contributes a summand\n:math:`\\pm t^k`, in which the sign of the coefficient is determined by whether\nwe intersect from the north or the south, and whose power is determined by the\ncurrent \"level\". To determine this power, we picture our four-punctured disk as\nthe vertical projection of a parking garage that extends infinitely up and down\n(see Wikipedia [1]_ for an illustration), with a copy of :math:`\\alpha` living\nin each level. We start at level 0 of the garage, and as we move along, we may\nencounter four \"ramps\" that take us between different levels::\n\n    down             up\n   ──────╳        ╳──────\n     up             down\n\n    down             up\n   ──────╳        ╳──────\n     up             down\n\nWith the example :math:`\\beta` above, we first encounter an :math:`\\alpha` at\nlevel 0 from the north, giving us a summand of :math:`t^0`. Then, we loop\naround, encounter two ramps, both of which take us down a level, before we\nencounter :math:`\\alpha` from the north again, now at level -2, giving us a\nsummand of :math:`t^{-2}`. A bit later, we get a :math:`t^{-4}` before we loop\nall the way around, encounter four down-ramps, then intersect :math:`\\alpha`\nfrom the south, this time changing the sign, so we get a :math:`-t^{-8}` and a\nbit later a :math:`-t^{-10}`. Adding all of these up, we find that\n\n.. math::\n\n    \\int_\\beta \\alpha = 1 + t^{-2} + t^{-4} - t^{-8} - t^{-10}\n\nTo show that the Burau representation of :math:`B_4` is not faithful amounts to\nfinding a non-trivial :math:`\\beta` so that the above polynomial is 0.\n\nUsage\n-----\n\nThe package can be installed from PyPI::\n\n    pip install burau\n\nor it can be obtained from `conda-forge \u003chttps://anaconda.org/conda-forge/burau\u003e`_::\n\n    mamba install -c conda-forge burau\n\nThe above example can be reproduced using the functionality of this Python\nmodule as follows:\n\n\u003e\u003e\u003e from burau.curve import calculate_polynomial\n\u003e\u003e\u003e calculate_polynomial(cap_west=2, cap_east=1, cup_west=3, cup_east=2)\n(DictType[int64,int64]\u003civ=None\u003e({0: 1, -2: 1, -4: 1, -8: -1, -10: -1}), True, 5)\n\nHere, the first output is a dictionary mapping a power of the polynomial to the\ncoefficient of that power. The second output indicates that the curve beta is\na connected curve (an example for which this is not the case is the\ninput (1, 1, 3, 3)). The third output is the number of crossings with\n:math:`\\alpha` encountered along the way.\n\nA kernel element thus corresponds to the empty dictionary. The implementation\nuses Numba under the hood to improve the speed of the calculation. We also\nprovide a more vanilla Python implementation which is about 100x slower than\nthe Numba-friendly one, but is easier to read and can be used if system\nrestrictions make it impossible to run Numba.\n\nReferences\n----------\n.. [0] Bigelow, Stephen (1999). \"The Burau representation is not faithful\n       for n = 5\". Geometry \u0026 Topology. 3: 397–404. arXiv:math/9904100.\n       doi:10.2140/gt.1999.3.397.\n.. [1] https://en.wikipedia.org/wiki/Burau_representation..\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffuglede%2Fburau","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffuglede%2Fburau","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffuglede%2Fburau/lists"}