Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Fetching latest commit…
Cannot retrieve the latest commit at this time.
|Failed to load latest commit information.|
branched Copyright 2013, 2014 by Alden Walker firstname.lastname@example.org math.uchicago.edu/~akwalker Released under the GPL Usage: ./branched -v[n] [-w] [-d] <genus> <nboundaries <loops> -v: verbose -w: find complementary regions and winding numbers -d: display a preset genus 3 example ************** Introduction **************** branched finds the minimal configuration of the loops and then produces a cellulation of the surface which is built of cells which are complementary regions. In its current state, it finds a minimal configuration (and displays it), then (if asked) it finds the complementary regions (and displays them with their winding numbers). It is intended to eventually work with branched surfaces (hence the name), but that functionality is in development. The winding numbers are computed relative to an arbitrary complementary region. Notice that they will *not* make much sense if the collection of loops isn't homologically trivial. Moira Chas (Stony Brook) has some Java applets on her web site http://www.math.sunysb.edu/~moira/ which compute self-intersections of a single loop on a surface with one boundary component. branched has been tested to agree with this applet on a bunch of inputs. ************** Installation ******************* You need to have the X11 development libraries installed (you probably do); it expects them to be either in your include path (probably the case for linux) or at /usr/X11R6/ (probably the case for OSX). Just type "make" to make. ************** Execution ******************* Input: <genus> and <nboundaries> give the genus and number of boundaries, respectively, and <loops> is a space-separated list of words in the surface group. Surface group presentation: The surface group is generated by two letters for each genus, and one letter for each boundary, starting at the beginning of the alphabet. The relator is always the product of the commutators and all the boundary generators, so for example a genus 2 surface has the presentation <a,b,c,d | [a,b][c,d]>, and a genus 2 surface with two boundary components has the presentation <a,b,c,d,e,f | [a,b][c,d]ef> Display format: The surface is displayed as a polygon together with the gluing pattern. Boundary edges are bold. The convention is that a letter "a" corresponds to the loop *entering* the polygon edge labeled "a". Note that the order of the polygon edges is different from the order of the letters in the relator. Geodesicifying: branched will rewrite the input words as geodesics. This happens *even in the case of a free group* (surface with boundary), in which case you may find that your word has been rewritten using the boundary loop generators. You may also find that it has been rewritten to another word of the same length. This is due to the program finding a *unique* geodesic representative, so it has to make an (arbitrary) choice. Examples: ./branched 1 1 abAABB ab ./branched 1 1 AAAbABaaBab ABabaaB Ab ./branched 2 0 AdbcBCbaBD ./branched 2 0 ADDBdcBDaDCbcd ./branched 2 0 ADDBdcBDaDCbcd CCda a AcDadbAcd AC ./branched 2 2 AeefffaCfcFBCFBacadB AEbeFbCaeCD AAcdcbFeD ./branched 10 0 AtClEaltqIQndFmtElaRENBnIbLHsdBjeBBPKTP DcSIfLhlNbbSgeThqP AKscqDlbPOSQIGQCNftRQO T ./branched 6 8 AtClEaltqIQndFmtElaRENBnIbLHsdBjeBBPKTP DcSIfLhlNbbSgeThqP AKscqDlbPOSQIGQCNftRQO T