{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Code from the article \"Closed Saddle Connections on the Dodecahedron\" by Jayadev Athreya, David Aulicino, and W. Patrick Hooper" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Updated to work with Sage 9.0 (and prior versions) on Apr. 27, 2020." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Code from §6: Unfoldings of the Platonic solids" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "def build_adj_oct(sheet, triangle):\n", " i = sheet;\n", " oct_adj_base = 8*[None]\n", " oct_adj_base[0] = [(i-1,7),(i,3),(i,1)]\n", " oct_adj_base[1] = [(i-1,6),(i,4),(i,0)]\n", " oct_adj_base[2] = [(i,7),(i,5),(i,3)]\n", " oct_adj_base[3] = [(i+1,6),(i,0),(i,2)]\n", " oct_adj_base[4] = [(i+1,7),(i,1),(i,5)]\n", " oct_adj_base[5] = [(i,6),(i,2),(i,4)]\n", " oct_adj_base[6] = [(i,5),(i+1,1),(i-1,3)]\n", " oct_adj_base[7] = [(i,2),(i+1,0),(i-1,4)]\n", " prelim_adj = [oct_adj_base[triangle%8][(k-i)%3] for k in range(3)]\n", " return [[item[0]%3, item[1]%8] for item in prelim_adj]\n", "\n", "def build_adj_cube(sheet, square):\n", " i = sheet;\n", " cube_adj_base = 6*[None]\n", " cube_adj_base[0] = [(i-1,4), (i,1), (i+1,5), (i,3)]\n", " cube_adj_base[1] = [(i,4), (i,2), (i,5), (i,0)]\n", " cube_adj_base[2] = [(i+1,4), (i,3), (i-1,5), (i,1)]\n", " cube_adj_base[3] = [(i+2,4), (i,0), (i+2,5), (i,2)]\n", " cube_adj_base[4] = [(i+2,3), (i-1,2), (i,1), (i+1,0)]\n", " cube_adj_base[5] = [(i,1), (i+1,2), (i+2,3), (i+3,0)]\n", " prelim_adj = [cube_adj_base[square%6][(k-i)%4] for k in range(4)]\n", " return [[item[0]%4, item[1]%6] for item in prelim_adj]\n", "\n", "def build_adj_icosa(sheet, triangle):\n", " i = sheet;\n", " icos_adj_base = 20*[None]\n", " icos_adj_base[0] = [(i,19),(i,3),(i,1)]\n", " icos_adj_base[1] = [(i,18),(i,8),(i,0)]\n", " icos_adj_base[2] = [(i,17),(i,5),(i,3)]\n", " icos_adj_base[3] = [(i,16),(i,0),(i,2)]\n", " icos_adj_base[4] = [(i,15),(i,7),(i,5)]\n", " icos_adj_base[5] = [(i,14),(i,2),(i,4)]\n", " icos_adj_base[6] = [(i,13),(i,9),(i,7)]\n", " icos_adj_base[7] = [(i,12),(i,4),(i,6)]\n", " icos_adj_base[8] = [(i,11),(i,1),(i,9)]\n", " icos_adj_base[9] = [(i,10),(i,6),(i,8)]\n", " icos_adj_base[10] = [(i,9),(i-1,18),(i+1,12)]\n", " icos_adj_base[11] = [(i,8),(i-1,13),(i+1,19)]\n", " icos_adj_base[12] = [(i,7),(i-1,10),(i+1,14)]\n", " icos_adj_base[13] = [(i,6),(i-1,15),(i+1,11)]\n", " icos_adj_base[14] = [(i,5),(i-1,12),(i+1,16)]\n", " icos_adj_base[15] = [(i,4),(i-1,17),(i+1,13)]\n", " icos_adj_base[16] = [(i,3),(i-1,14),(i+1,18)]\n", " icos_adj_base[17] = [(i,2),(i-1,19),(i+1,15)]\n", " icos_adj_base[18] = [(i,1),(i-1,16),(i+1,10)]\n", " icos_adj_base[19] = [(i,0),(i-1,11),(i+1,17)]\n", " prelim_adj = [icos_adj_base[triangle%20][(k+2*i)%3] for k in range(3)]\n", " return [[item[0]%6, item[1]%20] for item in prelim_adj]\n", "\n", "def build_adj_dodec(sheet, pent): #explains how all 120 pentagons are glued together\n", " #sheet is between 0 and 9\n", " #pent is between 0 and 11\n", " i = sheet;\n", " # To define the adjacencies of pentagons, we take i = 1 or 2 depending on which\n", " # puts it in the position of horizontal edge on bottom\n", " # Then a rotation of the lists will give the correct identification\n", " # The place in this list is the pentagon, but it needs to be rotated by j\n", " # creating a list of list of tuples\n", " #pentagons in the net labeled, left flower has horizontal bottom = F_0, below it is F_1, counterclockwise around for F_2,..,F_5\n", " #F_6 is center of other flower, F_7 above it, counterclockwise around for F_8, ..., F_11.\n", " dodec_adj_base = 12*[None] #initializing list of adjacencies\n", " dodec_adj_base[0] = [(i,1),(i,2),(i,3),(i,4),(i,5)] #adjacencies of F_0\n", " dodec_adj_base[1] = [(i,0),(i+1,5),(i+4,10),(i-4,9),(i-1,2)] #adjacencies of F_1\n", " dodec_adj_base[2] = [(i-1,3),(i,0),(i+1,1),(i-2,9),(i,8)] #adjacencies of F_2\n", " dodec_adj_base[3] = [(i+4,7),(i-1,4),(i,0),(i+1,2),(i+2,8)] #adjacencies of F_3\n", " dodec_adj_base[4] = [(i-4,7),(i-2,11),(i-1,5),(i,0),(i+1,3)] #adjacencies of F_4\n", " dodec_adj_base[5] = [(i+1,4),(i,11),(i+2,10),(i-1,1),(i,0)] #adjacencies of F_5\n", " dodec_adj_base[6] = [(i,7),(i,8),(i,9),(i,10),(i,11)] #adjacencies of F_6\n", " dodec_adj_base[7] = [(i,6),(i+1,11),(i+4,4),(i-4,3),(i-1,8)] #adjacencies of F_7\n", " dodec_adj_base[8] = [(i-1,9),(i,6),(i+1,7),(i-2,3),(i,2)] #adjacencies of F_8\n", " dodec_adj_base[9] = [(i+4,1),(i-1,10),(i,6),(i+1,8),(i+2,2)] #adjacencies of F_9\n", " dodec_adj_base[10] = [(i-4,1),(i-2,5),(i-1,11),(i,6),(i+1,9)] #adjacencies of F_10\n", " dodec_adj_base[11] = [(i+1,10),(i,5),(i+2,4),(i-1,7),(i,6)] #adjacencies of F_11\n", " prelim_adj = [dodec_adj_base[pent%12][(k+2*i)%5] for k in range(5)]\n", " return [[item[0]%10, item[1]%12] for item in prelim_adj]" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import itertools\n", "\n", "# These are for the Platonic solids with odd polygon faces to construct the base surface\n", "\n", "def double_triangle_oct_top(): # gives the list of all triangles with horizontal base\n", " return list(itertools.product(*[range(3), range(0,8,2)]))\n", "\n", "def double_triangles_oct():\n", " return [[list(top),build_adj_oct(top[0],top[1])[0]] for top in double_triangle_oct_top()]\n", "\n", "def squares():\n", " return list(itertools.product(*[range(4), range(6)]))\n", "\n", "def double_triangle_top(): # gives the list of all triangles with horizontal base\n", " odd_array = [range(1,6,2), range(1,20,2)]\n", " even_array = [range(0,6,2), range(0,20,2)]\n", " return list(itertools.product(*odd_array)) + list(itertools.product(*even_array))\n", "\n", "def double_triangles():\n", " return [[list(top),build_adj_icosa(top[0],top[1])[0]] for top in double_triangle_top()]\n", "\n", "def double_pent_top(): # gives the list of all pentagons with horizontal base\n", " odd_array = [list(range(1,10,2)), list(range(7,12)) + [0]]\n", " even_array = [range(0,9,2), range(1,7)]\n", " return list(itertools.product(*odd_array)) + list(itertools.product(*even_array))\n", "\n", "def double_pent(): # gives list of 60 double pentagons\n", " return [[top,build_adj_dodec(top[0],top[1])[4]] for top in double_pent_top()]" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def perm_sq(abcd):\n", " #This only gives useful information for abcd = 1 or 2\n", " sq_list = squares()\n", " total = []\n", " i = 0\n", " perm_a_sub = []\n", " perm_a = []\n", " while len(total) < 20:\n", " total += perm_a_sub\n", " total.sort()\n", " if len(total) != 0:\n", " i_list = [j for j in range(len(total)) if j != total[j]]\n", " if i_list == []:\n", " i = len(total)\n", " else:\n", " i = i_list[0]\n", " perm_a_sub = []\n", " while i not in perm_a_sub:\n", " perm_a_sub += [i]\n", " i = sq_list.index(tuple(build_adj_cube(sq_list[i][0], sq_list[i][1])[abcd]))\n", " perm_a.append(tuple(perm_a_sub))\n", " return perm_a\n", "\n", "def perm_odd(plat_solid, abcd, top_list, double_list, upper_limit = 55):\n", " bot_list = [tri[1] for tri in double_list]\n", " total = []\n", " i = 0\n", " perm_a_sub = []\n", " perm_a = []\n", " while len(total) < upper_limit:\n", " total += perm_a_sub\n", " total.sort()\n", " if len(total) != 0:\n", " i_list = [j for j in range(len(total)) if j != total[j]]\n", " if i_list == []:\n", " i = len(total)\n", " else:\n", " i = i_list[0]\n", " perm_a_sub = []\n", " while i not in perm_a_sub:\n", " perm_a_sub += [i]\n", " if plat_solid == 5:\n", " i = bot_list.index(build_adj_dodec(top_list[i][0],top_list[i][1])[abcd])\n", " elif plat_solid == 4:\n", " i = bot_list.index(build_adj_icosa(top_list[i][0],top_list[i][1])[abcd])\n", " elif plat_solid == 3:\n", " i = bot_list.index(build_adj_oct(top_list[i][0],top_list[i][1])[abcd])\n", " perm_a.append(tuple(perm_a_sub))\n", " return perm_a" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Code from §7: The Arithmetic Platonic Solids" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "from surface_dynamics.all import *\n", "\n", "def zer_to_60(perm,t=60):\n", " '''\n", " This replaces the 0 in the permutation with t\n", " It addresses the issue that permutations take values in the natural numbers\n", " '''\n", " return [tuple([t if j==0 else j for j in tup]) if 0 in tup else tup for tup in perm];" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "[(0, 7, 6), (1, 3, 4), (2, 11, 5), (8, 10, 9)]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "[(0, 11, 9), (1, 7, 10), (2, 3, 8), (4, 5, 6)]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#Monodromy permutations for the octahedron\n", "show(perm_odd(3,1,double_triangle_oct_top(),double_triangles_oct(),9))\n", "show(perm_odd(3,2,double_triangle_oct_top(),double_triangles_oct(),9))\n", "oct_perm_0 = zer_to_60(perm_odd(3,1,double_triangle_oct_top(),double_triangles_oct(),9),12)\n", "oct_perm_1 = zer_to_60(perm_odd(3,2,double_triangle_oct_top(),double_triangles_oct(),9),12)\n", "octahedron = Origami(oct_perm_0, oct_perm_1)\n", "H_octa = octahedron.veech_group()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "[(0, 22, 14, 11),\n", " (1, 4, 15, 5),\n", " (2, 10, 12, 23),\n", " (3, 16, 13, 17),\n", " (6, 9, 8, 7),\n", " (18, 19, 20, 21)]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "[(0, 1, 2, 3),\n", " (4, 20, 17, 6),\n", " (5, 8, 16, 18),\n", " (7, 10, 21, 11),\n", " (9, 22, 19, 23),\n", " (12, 15, 14, 13)]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#Monodromy permutations for the cube\n", "show(perm_sq(0))\n", "show(perm_sq(1))\n", "cube_perm_0 = zer_to_60(perm_sq(0),24)\n", "cube_perm_1 = zer_to_60(perm_sq(1),24)\n", "cube = Origami(cube_perm_0, cube_perm_1)\n", "H_cube = cube.veech_group()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[(0, 45, 13, 17, 9), (1, 49, 14, 16, 8), (2, 48, 10, 15, 7), (3, 47, 11, 19, 6), (4, 46, 12, 18, 5), (20, 21, 22, 23, 24), (25, 30, 38, 56, 53), (26, 34, 39, 57, 52), (27, 33, 35, 58, 51), (28, 32, 36, 59, 50), (29, 31, 37, 55, 54), (40, 44, 43, 42, 41)]\n", "[(0, 4, 3, 2, 1), (5, 33, 36, 48, 40), (6, 32, 37, 49, 44), (7, 31, 38, 45, 43), (8, 30, 39, 46, 42), (9, 34, 35, 47, 41), (10, 19, 27, 23, 55), (11, 18, 26, 24, 59), (12, 17, 25, 20, 58), (13, 16, 29, 21, 57), (14, 15, 28, 22, 56), (50, 51, 52, 53, 54)]\n" ] } ], "source": [ "#Monodromy permutations for the icosahedron\n", "print(perm_odd(4, 1, double_triangle_top(), double_triangles()))\n", "print(perm_odd(4, 2, double_triangle_top(), double_triangles()))\n", "icos_perm_0 = zer_to_60(perm_odd(4, 1, double_triangle_top(), double_triangles()))\n", "icos_perm_1 = zer_to_60(perm_odd(4, 2, double_triangle_top(), double_triangles()))\n", "icosahedron = Origami(icos_perm_0, icos_perm_1)\n", "H_icos = icosahedron.veech_group()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Proof for the Octahedron:\n", "Number of Cusps = 2\n", "Slope 1 yields cylinders given by a permutation that is a product of 2-cycles:\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "(1,8)(2,9)(3,5)(4,7)(6,11)(10,12)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Vertical yields cylinders given by a permutation that is a product of 3-cycles.\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "(1,7,10)(2,3,8)(4,5,6)(9,12,11)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Both directions are distinct periodic directions. No zero appears twice in any square.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 152 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "print('Proof for the Octahedron:')\n", "print('Number of Cusps = ' + str(len(H_octa.cusps())))\n", "print('Slope 1 yields cylinders given by a permutation that is a product of 2-cycles:')\n", "show(PermutationGroupElement(oct_perm_0)*PermutationGroupElement(oct_perm_1))\n", "print('Vertical yields cylinders given by a permutation that is a product of 3-cycles.')\n", "show(PermutationGroupElement(oct_perm_1))\n", "print('Both directions are distinct periodic directions. No zero appears twice in any square.')\n", "octahedron.show()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Proof for the cube:\n", "Number of Cusps = 3\n", "Vertical yields cylinders given by a permutation that is a product of 4-cycles.\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "(1,2,3,24)(4,20,17,6)(5,8,16,18)(7,10,21,11)(9,22,19,23)(12,15,14,13)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Slope 1 yields cylinders given by a permutation that is a product of 3-cycles.\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "(1,20,11)(2,21,5)(3,18,23)(4,14,7)(6,22,13)(8,10,15)(9,16,12)(17,24,19)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Slope 2 yields cylinders given by a permutation that is a product of 2-cycles.\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "(1,14)(2,15)(3,12)(4,8)(5,20)(6,16)(7,22)(9,10)(11,19)(13,24)(17,18)(21,23)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "All 3 directions are distinct periodic directions. No zero appears on both the top and bottom of any cylinder.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 294 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "print('Proof for the cube:')\n", "print('Number of Cusps = ' + str(len(H_cube.cusps())))\n", "print('Vertical yields cylinders given by a permutation that is a product of 4-cycles.')\n", "show(PermutationGroupElement(cube_perm_1))\n", "print('\\n'+'Slope 1 yields cylinders given by a permutation that is a product of 3-cycles.')\n", "show(PermutationGroupElement(cube_perm_0)*PermutationGroupElement(cube_perm_1))\n", "print('\\n'+'Slope 2 yields cylinders given by a permutation that is a product of 2-cycles.')\n", "show(PermutationGroupElement(cube_perm_0)*PermutationGroupElement(cube_perm_0)*PermutationGroupElement(cube_perm_1))\n", "print('\\n'+'All 3 directions are distinct periodic directions. No zero appears on both the top and bottom of any cylinder.')\n", "cube.show()" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Proof for the Icosahedron:\n", "Number of Cusps = 3\n", "Vertical yields cylinders given by a permutation that is a product of 5-cycles.\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "(1,60,4,3,2)(5,33,36,48,40)(6,32,37,49,44)(7,31,38,45,43)(8,30,39,46,42)(9,34,35,47,41)(10,19,27,23,55)(11,18,26,24,59)(12,17,25,20,58)(13,16,29,21,57)(14,15,28,22,56)(50,51,52,53,54)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Slope 1/3 yields cylinders given by a permutation that is a product of 3-cycles.\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "(1,29,10)(2,28,11)(3,27,12)(4,26,13)(5,17,43)(6,18,42)(7,19,41)(8,15,40)(9,16,44)(14,60,25)(20,55,38)(21,59,37)(22,58,36)(23,57,35)(24,56,39)(30,54,49)(31,50,48)(32,51,47)(33,52,46)(34,53,45)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Slope 1/2 yields cylinders given by a permutation that is a product of 2-cycles.\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "(1,15)(2,19)(3,18)(4,17)(5,42)(6,41)(7,40)(8,44)(9,43)(10,31)(11,32)(12,33)(13,34)(14,30)(16,60)(20,56)(21,55)(22,59)(23,58)(24,57)(25,45)(26,46)(27,47)(28,48)(29,49)(35,52)(36,51)(37,50)(38,54)(39,53)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "All 3 directions are distinct periodic directions. No zero appears on both the top and bottom of any cylinder.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 720 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "print('Proof for the Icosahedron:')\n", "print('Number of Cusps = ' + str(len(H_icos.cusps())))\n", "print('Vertical yields cylinders given by a permutation that is a product of 5-cycles.')\n", "show(PermutationGroupElement(icos_perm_1))\n", "print('\\n'+'Slope 1/3 yields cylinders given by a permutation that is a product of 3-cycles.')\n", "show(PermutationGroupElement(icos_perm_0)*PermutationGroupElement(icos_perm_0)*PermutationGroupElement(icos_perm_0)*PermutationGroupElement(icos_perm_1))\n", "print('\\n'+'Slope 1/2 yields cylinders given by a permutation that is a product of 2-cycles.')\n", "show(PermutationGroupElement(icos_perm_0)*PermutationGroupElement(icos_perm_0)*PermutationGroupElement(icos_perm_1))\n", "print('\\n'+'All 3 directions are distinct periodic directions. No zero appears on both the top and bottom of any cylinder.')\n", "icosahedron.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Code from $\\S$ 7.2" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "H_octa = octahedron.veech_group()\n", "H_cube = cube.veech_group()\n", "H_icos = icosahedron.veech_group()\n", "Arith_Plat_Solids = [(H_octa,'Octahedron'), (H_cube,'Cube'), (H_icos,'Icosahedron')]" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Octahedron\n", "4\n", "[Infinity, 1]\n", "[3, 1]\n", "0\n", "1\n", "0\n", "\n", "\n", "Cube\n", "9\n", "[Infinity, 2, 1]\n", "[4, 2, 3]\n", "1\n", "0\n", "0\n", "\n", "\n", "Icosahedron\n", "10\n", "[Infinity, 2, 1]\n", "[5, 2, 3]\n", "0\n", "1\n", "0\n", "\n", "\n" ] } ], "source": [ "for i in range(3):\n", " H_plat = Arith_Plat_Solids[i][0]\n", " print(Arith_Plat_Solids[i][1])\n", " print(H_plat.index()) #index in SL(2, Z)\n", " print(H_plat.cusps()) #list of cusps\n", " print([H_plat.cusp_width(cusp) for cusp in H_plat.cusps()])\n", " print(H_plat.nu2()) #Number of orbifold points of order 2\n", " print(H_plat.nu3()) #Number of orbifold points of order 3\n", " print(H_plat.genus())\n", " print('\\n')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Code from $\\S$9: The dodecahedron unfolding" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You need a recent version of FlatSurf to run this code. Directions to install FlatSurf are here: https://github.com/videlec/sage-flatsurf" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Load the 'flatsurf' package:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "from flatsurf import *" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Define $F={\\mathbb Q}(s)$ where $s=2 \\sin \\frac{\\pi}{5}$" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "Number Field in s with defining polynomial x^4 - 5*x^2 + 5 with s = 1.175570504584947?" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "1.17557050458495" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "s_AA = AA(2*sin(pi/5))\n", "F. = NumberField(s_AA.minpoly(), embedding=s_AA)\n", "show(F)\n", "show(s.n())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The top and bottom pentagons with side length two:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAGDCAYAAAAxhIflAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi40LCBodHRwOi8vbWF0cGxvdGxpYi5vcmcv7US4rQAAIABJREFUeJzt3Xl8VNX9//HXvbMHkhCWJBOSIFWrUhQEcUGLihUXBJFgq61b1VoVba3tt1/tplattv5casWtdWnr19LqgKJBFoEk7GsIqwiyQ9iXQJZJ7r3n90ckNRowCTNzZvk8H495PL5Jb+a+h/nGd+6Zc841lFIKIYQQ4ktM3QGEEELEJykIIYQQLZKCEEII0SIpCCGEEC2SghBCCNEiKQghhBAtkoIQQgjRIikIIYQQLZKCEEII0SIpCCGEEC2SghBCCNEiKYgoUkpRVVWFbHclhEhEUhBRdOjQITIzMzl06JDuKEII0WZSEEIIIVokBSGEEKJFUhBCCCFaJAURBWPGjKFXr14MGDBAdxTRWgsWwIAB0KsXvP227jRCxAVD7igXPVVVVWRmZnLw4EEyMjJ0xxFH4zgQDIKxC9KBDS5YvRpOPll3MiG0cusOIIR2hw/Dt3ahbgTDB3xow+b1UhAi5ckQk0ht9ftRFbfB7bB5ViGr3j4N53IDp/ZBqFqrO50QWskVhEhdu2fjzPo+dl0VFZ5/URnIgtw69pidOKv6dgIf9cM4+0XoeaPupEJoIZ9BRJF8BhGnHBtWPo5a/gj7XeexxP9/1Jo9mh3iUoc4PXwvBQ1/R51wA8aAMeCR91CkFhliEqmlZitq2mDU8kf41Psb5gRKvlIOALaRzlL/myzxv4W96X2cif1g70INgYXQRwriKF566SXOOOMMMjIyyMjI4LzzzuOjjz7SHUscjy3v4RT3Ibx3PXMD0/nU9wjKOPYo6zbPDyhNK6eqrjNqykBY9RQoJ0aBhdBLCuIo8vPzefLJJ1m0aBGLFi1i8ODBXH311axcuVJ3NNFWVi0svBtmXsMuNYiStKXsdV/Y6h+vMU9kVmAW6zw/h6W/RE2/HGp3RDGwEPFBPoNog86dO/PUU09x2223tep4+QwiDhxYiTPrOji0jhXeZ9jkuRMMo91P19WaSr/wTXjcNubAv0PeFREMK0R8kSuIVrBtm7Fjx1JdXc1555131OPC4TBVVVXNHkITpWDty6hJZ1FTrSgLLGST967jKgeAPe5LKQlUsMc5C0quhCU/BzscodBCxBcpiGNYvnw5HTt2xOfzceeddzJ+/Hh69ep11OOfeOIJMjMzmx4FBQUxTCuahPehZo6ChXexyXULZYEFHHL1jtjT15vZzPd/yArfszif/AVn8kCo+jRizy9EvJAhpmOor69n8+bNHDhwgFAoxN/+9jdKS0uPWhLhcJhw+L9/TVZVVVFQUCBDTLG0qwxn1g+w66tZ6v0bOzwjo3q6THsJ/cPXk8Y2jAEvQM+bj/sqRYh4IQXRBt/5znc48cQTeeWVV1p1vHwGEUOOBSseQ614lP3u81nie4taszAmp3apw/QO/4TChjdQPa7HOPtlWTMhkoIMMbWBUqrZFYKIE9WbUR8PRq14lE+9v2OOf3rMygHANjpS4X+dxf63sTd/iFPcF/bMj9n5hYgW2WrjKH71q19xxRVXUFBQwKFDhxg7diwlJSVMmjRJdzTxRZtDOPNup95JZ3GghH3ub2uLst1zPQdc59C/7vtkTr0A44xHodcvwZC/w0RikoI4ip07d3LjjTdSWVlJZmYmZ5xxBpMmTeLSSy/VHU0AWDWw5H5Y9wo73SOpSPsrDUZn3amoMb/BrMBMTql/iJMqfgU7PsYY+E8IBHVHE6LN5DOIKJLPIKLkwIrP1zZ8xgrvc2zy3BGXHwx3tabRL3wjHncD5nl/h+5X6o4kRJvIta9IHErBpy+iJg2gutqgNLCITd4fx2U5AOxxX0JJoILdzjlQOhQW3ydrJkRCkYIQiSG8F1V2DSwazUbXrZQFFnDY9S3dqb5WvdmNBf4PWOH7M86al3AmnwtVa3THEqJVpCBE/NtZilPcF6tyJgv941nhH4NjBHSnaj3DYIP3J8xMm0/toVrUxH7w2RuNV0RCxDEpCBG/HAuW/Q41bTD7rRMpCVSwwzNCd6p2q3L1pTSwmC2u62H+rajZ34f6g7pjCXFUUhBRMGbMGHr16sWAAQN0R0lc1ZtQUy9ErXicNd6HmeOfRp2ZrzvVcbONDlT4/8Zi/1jsLRNxJvaFPfN0xxKiRTKLKYpkFlM7bX4XZ96PCDsZLPa9zX73+boTRUXA2cBZdd8n016I0edROO2XYLp0xxKiiVxBiPhh1cD8O2DWtezkO5SmLU3acgCoNXsyK1DGWu8DqIpfo6YPgZrtumMJ0USuIKJIriDaYP8ynFnXoQ5vZIX3z2z23B6301ejoYs1g/7hG/C4wpgD34TuV+mOJIRcQQjNlIJPx6Amn011jZuywCI2e3+UUuUAsNd9ceOaCTUQSofBop+CXac7lkhxUhBCn7o9qLIRsOgeNrp+9PnahqPfbyPZ1ZtdWeB/n+W+v+CsfQVn0rlwcLXuWCKFSUEIPXbOwJnYB6tyFgsC77PC/xccw687lX6GwUbvPcwMzKfmcBj10Vnw2WuyZkJoIQUhYsuxoOK3qGmXsN/6JiWBZex0D9edKu5Uufo0Dre5fgDzb0fNvg7qD+iOJVKMFISIncMbUVMHoVY+wRrvo8zxf0yd2V13qrhlGx1Y5n+VRf7/YG+Z3Hifid1zdMcSKUQKQsTGpv/gTOxL3f7tzE4rY63v12DInP/WqPRcS0laBQfru6OmDoIVj4Nj644lUoAURBTISuovsKpR838Es7/HDi6jJG0p+10DdadKOLVmD2YHSlnr/RVq2W9xpn0HarbpjiWSnKyDiKKUXwexv+LztQ2bWe59ni2eW1Nu+mo0dLFK6Be+Aa+rFvO8NyBfPsMR0SFXECLylII1z6Mmnc3hGh9lgcVs8d4m5RAhe90XUZJWwS71bSi7GhbdK2smRFRIQYjIqtuNKh0Oi3/KBvddzAzM47DrVN2pkk6D0YWF/vEs843BWftXnI/OhoOrdMcSSUYKQkTOjuk4xX2wdsxlfuADVvqfk7UN0WQYbPLeTVlgITXVduOaiXWvypoJETFSEOL4OQ2w9Feo6d9hn30aMwLL2OWWvYRi5ZDrdMoCC9nkugkW/Bg167tQv193LJEEpCDE8Tm8AWfKt1Gr/sQn3j8w1z+FsJmnO1XKsY00lvtfZpH/XaytH3++ZmK27lgiwUlBiPbbOBY1sS/hAzuZlTaLdb4HZG2DZpWeIkrTKjjQUNi4ZmL572XNhGg3KQjRdlY1au6tMOd6tnMlJWlLOeA6V3cq8blas5A5/hl86v0tavkjqGmDoWar7lgiAUlBiLbZV44zsR/Oxn9T7n+DJf63sYxM3anElyjDzae+h5kTmEF473qc4j6w5T3dsUSCkYIQraMUfPIcavK5HK5NozRtCVs9t8jahji3zz3o8zUTF8LMa2Dh3WDV6o4lEoQURBQk3VYbdbtRJVfBkp+xwX03MwPzqDZP0Z1KtFKD0ZmF/hDLfC/hrHsDZ9LZcGCl7lgiAchWG1GUFFtt7PgYZ/aNWA025b432eW+UncicRzS7RWcFb6ODuozjP7Pwkk/lqtAcVRyBSFa5jTA0gdQ04ewz+5NSaBCyiEJHHL1pjSwkE2uH8LCu1AzR0F4n+5YIk5JQYivOrweZ8oFOKueZrX3Seb6JxM2g7pTiQhxjADL/S+y0D8Oa/sMnIl9YddM3bFEHJKCEM1tfBtV3Je6A3uYnTabz3y/BEP+3yQZ7fBcQ0mgggMNJ6A+vgiWPdx4xz8hPie/+aJRw2HU3Ftgzg/YbgyjNK2cA66zdacSUVZnFjDbP4M13odQKx5FfTwYqjfrjiXihBSEgH1LcD7qh7PxXcr9f2eJ/y0sI0E/VBdtZ7hY6/sdcwKlhPdtbBxy2jJOdyoRB6QgUplyYPUzqMnncqg2/fO1DTfJrJYUtc99ASVpFexUg2FmESy4E6wa3bGERlIQqap2J6pkKJT/nPXunzArMIdq85u6UwnNGowsFvnfocL3CvZn//h8zcQK3bGEJlIQqahyKs7EPjTsXMK8wEes8v8/HMOnO5WIF4bBZu8dlAUWUV1toiYNgLUvyX0mUpAURCqx66H8lzBjCHvtMygJVLDbfbnuVCJOHXb1oiwwn42u22Dh3aiykRDeqzuWiCEpiCiIy602Dq3DmXI+zupnWel7inn+SYTNXN2pRJxzjAAr/C+wwP8eVmVZ430mdpbqjiViRLbaiKK42Wpjw/+hFtxJLTks8v2Lg644Ki6RMPzOVvqFb6CzNROj92+g92/BdOuOJaJIriCSWcMh1JybYO4NbDNHUBIol3IQ7VZn5jPHP4013kdQKx5vXFxXvUl3LBFFUhDJau+ixvs2bBpPuf8flPv/iW2k604lEp3hYq3vN8wOlFK3b0vjkNPmd3WnElEiBZFslAOrn0ZNGcihuk6UpJWz1XOj7lQiyex3n09JWgU7uBRmXQsLfixrJpKQFEQyqd2BmnEFlP+Cz9z3MTMwmxrzJN2pRJKyjE4s9v+bCt9fsT/7J85HZ8H+ZbpjiQiSgkgW2yfjFPehYVcF8wKTWe3/E8rw6k4lkp1hsNl7O2WBxVTXeFCTz4ZPx8iaiSSREgXxxBNPMGDAANLT08nOzmbEiBGsWbPmmD/z5ptvYhjGVx51dXUxSt1Kdj0s+QWUXM4e50xmBCrY7R6iO5VIMYddp1EWmM8G1x2w6B5U2Qio26M7ljhOKVEQpaWljB49mnnz5jF16lQsy2LIkCFUV1cf8+cyMjKorKxs9vD7/TFK3QpVa3GmDMT55HlW+p5mvn8i9WaO7lQiRTmGn5X+51kQmIBVORtnYh/YOUN3LHEcUmIS86RJk5p9/cYbb5Cdnc3ixYsZNGjQUX/OMAxyc+N0Mdn6f6AW3k0dQRalzeWgq7/uREIAsNM9jBKzgjPDN9Jl2iUY3/o1nP6QrJlIQClxBfFlBw8eBKBz587HPO7w4cP06NGD/Px8rrrqKsrLy495fDgcpqqqqtkj4hqqULNvgHk3s9UcRUlgiZSDiDt1Znfm+qfyifcx1MoncKYOgsMbdccSbZRyK6mVUlx99dXs37+fmTOPfpvFefPmsW7dOk4//XSqqqr485//zMSJE6moqODkk09u8WcefvhhHnnkka98P2IrqfcswJl9PU7Nbpb5XmKb5wfH/5xCRFmWPZf+dd/HZ+7HPOdV6PFd3ZFEK6VcQYwePZri4mJmzZpFfn5+q3/OcRz69evHoEGDeP7551s8JhwOEw6Hm76uqqqioKDg+AtCObD6/6Eqfs1B80wW+/9FjXli+59PiBhzq4OcUfdjulv/Rp14O0b/58DdQXcs8TVSalDw3nvvZcKECZSVlbWpHABM02TAgAGsXbv2qMf4fD58vghvm11biZpzM8bOqazz/i9rvL+X6asi4VhGJkv8/2K3NYTT19+LsWsW5gVjIauP7mjiGFLiMwilFPfccw/jxo1j+vTp9OzZs13PsXTpUoLBYBQSHsX2j3CK+1C/ezlzA1P4xPeklINIXIbBFs+tlAUWc7jGj5p0Nqx5XtZMxLGUKIjRo0fz1ltv8fbbb5Oens6OHTvYsWMHtbW1TcfcdNNNPPjgg01fP/LII0yePJn169ezdOlSbrvtNpYuXcqdd94Z/cB2GBbfDyVXssc5i5JABXvcl0b/vELEwGHXqcwMzGOD+y5Y/FNU6XBZMxGnUmKI6aWXXgLgoosuavb9N954g1tuuQWAzZs3Y5r/7csDBw5wxx13sGPHDjIzMznzzDMpKyvj7LPPjm7Yqk9xZl0HB1awyvcsGzw/ASMlelykEMfwsdL/HLvdl3LmjltwF5+Bef5bkDtYdzTxBSn3IXUstel+EErBhr+jFt5DDd1Z7PsXB139YhNUCI18TiX9wjfSxZqO0esBOOMRMD26YwlSZIgp7jVUoeb8AOb9kC3mdykNLJZyECkjbAaZ65/CJ94/oFb9CWfKIDi8QXcsgRSEfnvm4xT3xd5czGL/21T4X8c2OupOJURsGSbrfA8wK202dQd2oib2hY1jdadKeVIQuigHVj6JmnoBVeFsStPK2e65XncqIbQ64Dqn8XeBoTDnetTcW8E69p5pInqkIHSorURNH4Kq+BXrPP/DrMBMasxv6E4lRFxoXDPxf5T738DZ+B+cif1h37G3uRHRIQURBWPGjKFXr14MGNDC/Z+3FeMUn0H97lXMC0zlE98fUIZ8ICdEM4bBVs8tlKYt4XBtGmryufDJc7JmIsZkFlMUNZvF1MEHS/8X1vyZne6hLPW9Qb3ZTXdEIeKeqcKcGv4VJzY8gwpeiXHem+CX351YkIKIoqaC2LKIjstuhwOrWOV7ig2ee8EwdMcTIqFkWxM5M3wLbo/r8zUTl+iOlPRkiCmaPu9eNeXb1B6qZWbafDZ4fyLlIEQ77HJfSUmggn12b9T0S2HpA+A06I6V1KQgoqX+IGrerQBsdY2iNLCYKldfzaGESGyNayYms9r3R5xVT+NMuQAOr9cdK2lJQUTDnnk4E/tib50KwAr/C9iGbG0sREQYJp95/4fZabOpO7AHVdwXNv5Ld6qkJAURSY4NK/+AmnIBVeFcZqbN0p1IiKR1wHU2pWnlbDOHw5zvo+b+EBoO646VVKQgIqVmG2r6paiK37DW+wCzAmXUmSfoTiVEUrOMDMr9b1Hu/wfOxndwPuoH+5bojpU0pCAiYesHjfdt2LOGuYFprPE9JmsbhIihrZ4bKU0r51BtRuOaidXPNO5WII6LFMTxsOtg0U+gbDi71UBKAhXsdV+sO5UQKanaPJmZgTl85v4plP8cVTIUanfqjpXQpCDa6+BqnEnn4Kx9leW+v7DA/z71ZlfdqYRIacrwstr/FPMCk2jYuQRnYh+onKo7VsJKiRsGRZRS8NlrqEU/ocboweLAfKpcze+rW1w8hokTx+A4tqaQQqS23e7LmGEuo1/4ZrrNGAKn/Q+c8Ri45Ja9bSErqdui/gBq/h0YW95hk+dHrPQ9e8zpqzU1VVx3XSZjxx4kLe1rbhgkhIg85fCNhmc5LfwgZPXBvOBfkH6S7lQJQ4aYWmv3nMb7NmydwiL/f1jmf1XWNggR7wyT9d6fMyttDnVVB1ATz4QN/6c7VcKQgvg6jg0rHkNNHcTB+u6UpFVQ6blWdyohRBscdJ1FSWAJW82RMPcG1JyboOGQ7lhxTwriWGq2oqZdglr2O9Z6f8XsQCm1Zg/dqYQQ7WAb6Sz1/50l/n/ibBqPM7Ef7F2kO1Zck4I4mq3v4xT3Ibx3HXMD01nj+z3KkM/0hUh02zw3UJJWzqG6TqgpA2H107Jm4iikIL7MqoWF90DZCHapb1OSVsFe90W6UwkhIqjGPImZgdl85vkZlP8CNeMKqN2hO1bckYL4ooOrGtc2rPsby3xjWOgfT4PRRXcqIUQUKMPLat8fmReYTMOuCpziPrB9su5YcUUKAhrXNqx7FfXRWdRU25QFFrLJe7fct0GIFLDbPYQZgWXscfpByeVQ/j9g1+uOFRekIOr3o2ZeCwt+zCbXTZQFFnLIdbruVEKIGKo3s5nvL2al72mc1X/GmTIQqtbqjqVdahfErlk4xX2wtk1jkf9dlvtfxjbSdKcSQuhgmKz33s+stHnUVlWhPjoT1v9DdyqtUnNajmPDysdRyx/hgHsgS9L+j1qzMGJPL1ttCJG4Drr6URpYwunheymYdzNqx1SMAWPAk3q7IaTeVhvVW1BzboDds/jU+1vWen8TtemrstWGEImte8PbnBG+EzMtu3Gbji4DdEeKqdQaYtoyHmdiH8J71zMnMINPfQ/L2gYhxFFt83yf0rSlVNV1aVwzsepPKbVmIjUKwqqFhXfDzJHsUhdRklbBPvcg3amEEAmgxvwGswKzWOf5BWrpA6jpl6fMmonkL4gDK3AmnY2z7g2W+V5ioT9Eg9FZdyohRAJRhodPfE8wLzCF+t3LcYrPgO0f6Y4VdclbEErB2pdRkwZQU60+X9twp6xtEEK02x73dygJLGOPMwBKroTF94Md1h0rapKzIML7UDNHwcK72OT6IaWBhRxy9dadSgiRBOrNbsz3f8gK33M4n47BmTwQqj7VHSsqkq8gdpU1rm3YPoOF/nEs97+IYwR0pxJCJBPDYIP3p8wMzKP20GHUR/1g/ZuNIxdJJHkKwrFg2cOojy/mgNWTkkAFOzzX6E4lhEhiVa4zKQ0sZov5PZj3Q9ScH0BDle5YEZMcBVG9GfXxYNSKR1njfYjZ/hnUmQW6UwkhUoBtdKTC/xqL/f/C3lyMU9wX9szXHSsiEn8RwOYQzrzbqXfSWRwoZZ/7At2JZCW1EClou+c69rvO4ay675M59QKMMx6FXr8EI3H/Dk/cldRWDSy5H9a9QqW7iAr/X2kwsnSnakZWUguRegzVwCn1D3NS/ROQMxhj4D8hENQdq10Ss9oOLMf5aAD2Z/+gwvcqi/zvxF05CCFSU+OaiceZG/iY+t2rGtdMbCvWHatdEqsglIJPX0RNGkB1jYuywCI2e38kaxuEEHFnr3swJYFl7HbOhdKrYPF9CbdmInEKIrwXVXYNLBrNRtftlAXmc9jVS3cqIYQ4qnqzKwv8E1juex5nzUs4k8+FqjW6Y7VaYhTEztLGtQ2VM1ngf48V/hdkbYMQIjEYBhu99zIzbQE1h+pQE/vBZ68nxJqJ+C4Ix4Jlv0NNu5j9DSdREqhgp+dq3amEEKLNqlx9KAssYovr+zD/NtTs66H+oO5YxxS/BVG9CTX1QtSKP7DG+3vmBKZRZ+brTiWEEO1mGx2o8P+VRf5/Y2+ZhDOxL+yZpzvWUcXnOojN7+DM+xFhpxOL08rY7xoY8wjvvPMEc+eOY9u2T/B6A5x66kBuvvmP5OefEvMsQojkUun5LgdcZ9O/7vt0mnIBRp/fw2n/C6ZLd7Rm4usKwqqB+XfArO+ygyGUpC3VUg4AK1aUMnToaJ56ah6///1UbNvioYeGUFdXrSWPECK51JonMDtQxlrvg6iK36CmXwo123THaiZ+FsrtX4Yz6zrU4Y2s8D7PZs9tcTV99eDB3dx4YzZ/+EMpvXu3fLOhhoYwDQ3/ncZWU1PFrbcWyEI5IcQxdbFm0D98Ax5XGHPgm9D9Kt2RgHgYYlIKPh2DKv8F1cYpLAos5rDrNN2pvqK6uvHDpPT0o99s6J13nmDs2EdiFUkIkST2ui+mxKygT/g2ckuHwTfvhTP/BC6/1lx6ryDq9qDm3Yqx/QPWe+5lte9POIbef5CWKKV4/PGrOXx4P08+OfOox8kVhBDiuCjFCQ0v8q36n0PGKZgXjIVMfX8w6/sMYucMnIl9sHbMYUFgAiv9z8dlOQC88so9bNy4jF/84l/HPM7j8ZGWltHsIYQQrWYYbPSOpiywgJrDDaiPzoLPXtO2ZiL2BeE0QMVvUNMuYZ91SuPaBvewmMdorVdeuZcFCybw2GMz6NpVptkKIaLvkOuMxq2EXDfA/NtRs74H9QdiniO2BXF4I87UC1Ern+QT72PM9U+lzuwe0witpZTi5ZfvYe7ccTz22HRyc3vqjiSESCG2kcYy/yss8r+DtXVq430mds+JaYbYFcSm/+BM7Et4fyWz0maxzvcrMOJrzu8XvfzyaEpL3+IXv3ibQCCd/ft3sH//DsLhWt3RhBAppNIzitK0pRyoz0dNHQQrHocY3Wsm+h9SW9WoRT/FWP8a29zfY5n/FSwjM6qnjIThw1ueYvvTn77BJZfc0qrnkPtBCCEixVAWJ9c/yjfrH0N1G4R5/j8hLbrD3tGd5rp/Kc7M61DVW1juf40t7h/G1dqGY5kwIT6WhwghBIAy3Hzqe4S9rsH023sD3uI+mOe9DvnR258uskNM27ZBcTFs2gRrnkdNOofDtQFK05awxXNrwpSDEELEq73uCylJW8ouNQjKRsCie2FPJUycCKtWRfRckbuCWLwYBg8GVYW6y4XRx2aD56es9v0Rx/BF7DRCCJHqGowuLPSPo0fDy/T+9GdQ+irms/WwwwVvvgk33BCR80TuCuKFF8CqwvmDQUNPk/nFt7DS/5yUgxBCRINhsMl7F2Vzn6DG8qAeBQptePLJiJ0iclcQGRlgg9FB8dl732BXbb+IPXWiKS4ew8SJY3BiNNNACJG6DjmnsfyfvTnvV/PBADIjNwkocrOY9uyBK69Enb+Qg7nZzMxdDZ2Pvm9RKpBZTEKIqGtooPf8b9Oj+wLMp/Lggw+hb9+IPHXkhpi6doUFCzDuep1OBbvwd5JtsYUQIurcLvLO3Ix57mjYsjVi5QDRWCh3wkiU4SFojYv4UwshhGguy5mHz6mEE74b8eeOfEF4MyE4hDw7FPGnFkII0VywIYTjy4Wukb+5WlS22jAKisiyZuFzdkTj6YUQQgAoRZ4dwiy8Jiq3K43OXkz5w8EwybXGR+XphRBCQKazmICzCQqKovL80SkIXxfIvliGmYQQIoqCVgjH0wWyL4zK80dtN1ejsIguVgketTdapxBCiNR1ZHip4Gowo7OtXvS2+84fATjkWu9H7RRCCJGq0p0VdLDXRm14CaJZEIFc6PZt8iwZZhJCiEgLWiEcdybkXhK1c0R1u2+jsIiuu3+BWx1MiHtARIpstSGEiLbG4aVh4IrefnfRvaNcwUhMGsixPojqaeLN0KGjGTNmFU8/vVB3FCFEEurgrCHdXhHV4SWIdkGk5eN0PkeGmYQQIoKCDSGUqwMEL4vqeaJ+T2qzsIhsexIudTjapxJCiJSQZ4cg70pwB6J6nqgXBIVFmKqObOujqJ9KCCGSXcDZQKa9BKNwVNTPFf2C6PgNnE5nEpRhJiGEOG5BaxzK9DdeQURZ9AuCxmGmXPtDTFUbi9MJIUTSyrNDjZ89eDpG/VwxKQgKinCparpZU2JyOiGESEZ+ZytZ1lyMwujOXjoiNgWReSpOei8ZZhJCiOOQa41HGR7oPiwm54tNQQBmjyKC9gQMVR+rUwp5MRLEAAAgAElEQVQhRFLJs0ONK6e9nWJyvpgVBAWjcKuDdLWnx+yUQgiRLLzOLjpbM2Mye+mIqG610Uyn03E6nESwPsRu9+UxO60OstWGECLScq33AAO6Xx2zcxpKKRWzsy19gIZP/sbktB0oI3bdpEtNTRXXXZfJ2LEHSUvL0B1HCJHAzq0dQtfONsZ3psXsnLEbYgIoKMLj7KWzXRbT0wohRCLzqH10sWbEbPbSEbEtiM5n4QQKZTaTEEK0QY41AQMbCq6J6XljWxCGgVlYRJ49HpQT01MLIUSiyrNCqK7nQyAY0/PGtiAACovwOZVk2XNjfmohhEg0blVFN2sKZoyHl0BHQXQ9D8cXlGEmIYRohWyrGJN6KBgZ83PHviAME7PwGrrbIYjhBCohhEhEeda7OFkDoENhzM8d+4IAKCjC72wm01mk5fRCCJEIXKqabPsjzB6xH14CXQWRPQjH00WGmYQQ4hiyrUm4VG3Uby16NHoKwnTLMJMQQnyNoBXCyewD6SdpOb++5cwFRaR99jfSneUccp2hLUY0yFYbQojjZao6cuwPMQv/R18GbWfOGYzjziTPeldbhGgZOnQ0Y8as4umnF+qOIoRIUN3sqbjVIdAwvfUIfQXh8mLmD2/cvlYIIUQzwYYQTvqpkNlLWwZ9BQFQWERHexUd7U+0xhBCiHhiqAZynQlaFsd9kd6CyB2CcnWQ2UxCCPEFXe0ZeJz92mYvHaG3INwB6H6VDDMJIcQXBK0QTto3IKuv1hx6CwIwCovIsMtJc9brjiKEEPopm6A9vnFxnGFojaK9IAhegTL9UR1mWrGijEcfHcYtt+QxfLjBvHnvHfP45ctLGD7c+Mpj61b5rEQIEV1d7Jl4nd3ah5dA5zqIIzwdIXg5eTtCfOaNznzfcLianj37cMklP+TJJ1v/j/7SS2ua3QkuI6NbNOIJIUSToBXC8edjdhmgO0ocFASNw0ydtt2I39lKnZkf8efv3/8K+ve/os0/l5mZTceOnSKeRwghWqQc8uxxmD1HgaF/gCcuCoLuw1CGh6A1jg3en+hO0+S++86koaGOgoJefPe7v+GMMy4+5vENDWEaGsJNX9fUVEU7ohAiiWQ58/E526FwlO4oQLwUhDcTci8lb3eIDegviKysIKNHv8pJJ/WnoSHMjBn/5Le/vYTHHy+hd+9BR/25d955grFjH4lhUiFEMgk2hHB8OZhdB+qOAsRLQdA4zJRVeTs+ZwdhM1drlvz8U8jPP6Xp61NPPY89e7bw3nv/75gFce21DzJixP1NX9fUVHHrrQVRzSqESBJKkeeEMHtcA6ZLdxogHmYxHZF/NRgmudaxZxjpcsop57J9+9pjHuPx+EhLy2j2EEKI1sh0lhCwN2rde+nL4qcgfF0g+6K4XTS3fn05WVmxvWG4ECJ1BK0QjqczZF+oO0qTuBligsZhpi4778Wj9tJgdInY89bWHqaycl3T1zt3bmD9+qWkp3emW7dC/v73B9m3bxs/+9k/AHj//efIyTmBwsJvYVn1zJjxFnPmhHjggfgsLyFEglOKPDuE2eNqMD260zSJq4Ig/xpYOJpcawJbPD+M2NOuW7eIX//6vzOQXnut8XOCwYNv5r773mT//kp2797c9L9bVj2vv/4L9u3bhtcboLDwW/zud8WcddaVEcskhBBHpDsr6WB/CgXP6o7SjKFUfN3STU0ZxK4DGSwIfKg7ynGrqaniuusyGTv2oHweIYQ4qm+GH+Fk5xnMol3g8umO0yR+PoP4nFFYRDdrCm51UHcUIYSIiTz7Xcz8YXFVDhCHBUHBSEwayLES/wpCCCG+TgfnU9LtFXGx99KXxV9BdCjA6Xy23CNCCJESgg0hlJkGwct0R/mK+PqQ+nNm4SiyKx7CpaqxjQ6647RZcfEYJk4cg+PYuqMIIeJcnh2C7kPBnaY7ylfE3xUEQGERLlVLtvWR7iTtMnToaMaMWcXTTy/UHUUIEccCzkYy7cUYcbQ47ovisyA6fgMns68MMwkhklrQGocyfZAXn1Po47MgALNHEbn2h5iqTncUIYSIijz73cbPHjzpuqO0KG4LgoIiXOow3ewpupMIIUTE+Z1tZFlzMeJw9tIR8VsQmafhpJ9GsEGGmYQQySfXGo8y3JA/THeUo4rfggDMHqMI2hMwVL3uKEIIEVF5dghyvwPeLN1RjiquC4KCItzqAF3tGbqTCCFExHidXXS2yuJ6eAnivSA6nYHT4USC1ru6kwghRMQ03fcm/2q9Qb5GfBeEYWAWFhG038NQlu40QggREXl2qPG+D/5uuqMcU3wXBEBBEV5nD53tmbqTCCHEcfOo/XSxpsft4rgvisutNprpMgAnUEDQCrHXffHXHx8HZKsNIcTR5FgTMLEa738T5+LufhAtWvwzwmv/zZS0rWDE/0XPEXI/CCHEl51dO5xumfswL5ulO8rXSoz/2hYU4XMqyXLm6U4ihBDt5lZVdLOnYPaI/+ElSJSC6DYQx5dLsEFmMwkhEle2VYypwlAwUneUVkmMgjBMzMJryLPHQQKMiAkhREvyrBBO1lnQoYfuKK2SGAUBUFBEwNlEprNYdxIhhGgzl6oh2/4IMwFmLx2ROAWRfSGOp4tsAS6ESEjdrEm4VE1c3lr0aBKnIEw3ZuEIutvvyjCTECLh5FkhnMwzIONk3VFaLXEKAqCgiDR7HenOct1JhBCi1UwVJsf+IKGGlyDRCiLnEhx3pgwzCSESSld7Km51KKGGlyDRCsLlxcwfRndbCkIIkTiCDSGcjqdAZi/dUdok/rfa+LKCIjpufIsOzhqqzVN0p2mRbLUhhDjCUA0Enfcxe9wFhqE7Tpsk1hUEQPAylKtDXN9pbujQ0YwZs4qnn16oO4oQQrMudgkeZz8UjNIdpc0SryDcAeg+tHG7XCGEiHNBK4ST1hOy+uqO0maJVxCAUVBEpr2ENGe97ihCCHF0yibPHt+491KCDS9BghYEeVeiTD+51jjdSYQQ4qi62LPwOrsSbvbSEYlZEJ6OELyM7jLdVQgRx3KtEI6/O3Q5W3eUdknMggCMwlF0sufhd7bqjiKEEF+lHPLscY2L4xLoPjZflJipAbpfhTI85FrjdScRQoiv6OQswO9sgwRbPf1FiVsQ3k6Q+53GvZmEECLOBBtCON5s6Hq+7ijtlrgFARiFRWRZM/E6O3VHEUKI/1KK7s67mIXXgOnSnabdErog6H41GCZB6z3dSYQQokmmU07A3piws5eOSLytNr7I3xW6XUhwX4hN/Fh3miay1YYQqS1ohXA8WZg5F+mOclwS+woCMHqMoos1A4/apztKE9lqQ4gUphR5dgizYASYHt1pjkvCFwT512Bgk2NN0J1ECCHo6Kyig70m4YeXIBkKIpALXc8nz5LZTEII/fKsd3HcGZD7Hd1RjlviFwSNs5m6WVNxqyrdUYQQKS7PDmF0vwpcPt1RjltSFAQFIzGpJ8f6UHcSIUQK6+CsJd1ejpHAi+O+KDkKokMhTuez5VakQgitgg0hlJkGwct1R4mI5CgIwCwsItv+CJeqjthzrlhRxqOPDuOWW/IYPtxg3jxZbyGEOLo8OwTdrwR3mu4oEZE0BUFBES5VS7Y1KWJPGQ5X07NnH+6444WIPacQIjkFnE1k2oswkmD20hGJvVDui9JPxMnsQ7D6XSo9kXmD+ve/gv79r4jIcwkhklvQCqFMH0b3obqjREzyXEHQOMyUa3+Iqeq0nL+hIUxNTVWzhxAiNeTZIcgdAp503VEiJnmuIAAKi3At/x3d7KnsdA+L+enfeecJxo59JObnFULo5XO2k2XNgcI3dUeJqOQqiMxeOOmnEawNaSmIa699kBEj7m/6uqamiltvLYh5DiFEbAWt8SjDjZE/XHeUiEqqISZoHGYK2u9jqPqYn9vj8ZGWltHsIYRIfnl2CHIuAW+W7igRlXQFQWERbnWArvYM3UmEECnA6+yms1WaNIvjvii5hpgAOvXBSfsGwYYQu92XHddT1dYeprJyXdPXO3duYP36paSnd6Zbt8LjTSqESAK5R+5Hkz9Cb5AoSL6CMAzMHkUE17zJMvUSGO2/m9O6dYv49a8vbvr6tdcaP18YPPhm7rvvzeNNKoRIAkE7hOo2CMPfTXeUiEu+ggAoGIV39VN0sWey131Ru5/m9NMvYsIEFblcQoik4lH76WpNwyx8VneUqEi+zyAAugzACRTI3kxCiKjKsT7AxIKCkbqjREVyFoRhYBaOJM8eB8rRnUYIkaSCVginy0BIy9MdJSqSsyAACooaF68483QnEUIkIZc6RLY9GTMJZy8dkbwF0XUgji+HYIMMMwkhIi/HKsZU4aQdXoJk/ZAawHRhFlxD3voQq9T/A8OI2amLi8cwceIYHMeO2TmFELEVtEI4Wf0xO56gO0rUJO8VBEDhqMYteJ0lMT3t0KGjGTNmFU8/vTCm5xVCxIZL1ZBjT8QsHKU7SlQld0FkX4jj6SKzmYQQEdXNmoxL1UAS3fuhJcldEKYbs+Bq8ux3Qcl6BiFEZATtEE7G6ZBxsu4oUZXcBQFQUEQHey3pzgrdSYQQScBUYXKtDzB7JPfVA6RCQeReguPOkGEmIUREdLU/xq2qkn54CVKhIFw+zPxhjdvxCiHEcQo2hHA6fhMyv6U7StQlf0EAFIwi3V5BB+dT3UmEEAnMUA0Enfcxe4yK6dR5XVKjIIKXoVwdZNGcEOK4dLFL8Tj7UmJ4CVKlINwByLuycTaTEEK0U9B6FyftBMg6U3eUmEjeldRfYhQWkbnlOgLOBmrNnlE9l6ykFiIJKZs8ezzmiTemxPASpMoVBEDelSjTR9AaF/VTyUpqIZJPZ3s2XmdXygwvQSoVhCcdgpfLbCYhRLsErRCOvzt0PUd3lJhJnYKgcZgpy5qL39mmO4oQIpEohzx7HGbhSDBS5z+bqfNKAboPQxkecmMwzCSESB6dnIX4na0pNbwEqVYQ3k6Qe4kMMwkh2iTY8C6ONxu6XaA7SkylVkEARkERna2ZjR82CSHE11GK7k4Is3AEmC7daWIq5QqC/KsByLXe0xxECJEIMpylBOwNKTe8BKlYEP5ukH2RDDMJIVolaIVwPFmQc7HuKDGXegVB42ymLtZ0PGqf7ihCiHimFN3tdzELrgbToztNzKVkQVBwDQY2OdYE3UmEEHGso7OKDvaalBxeghTaaqOZQBDVZSB5B0Ns9dwS8aeXrTaESA5BK4RypWPkXqo7ihapeQUBmD2K6GZNabzxR4TJVhtCJIfudgjyrwKXT3cULVK2ICgowqSebKtYdxIhRBxKc9aRbi/DSNHhJUjlguhQiJM1gDy5FakQogXBhhDKTIO8K3RH0SZ1C4LGYaZs+yNcqlp3FCFEnOluh6D7FeBO0x1Fm5QuCAqKcKkasq1JupMIIeJIwNlEpr0wpYeXINULIv0knMwzCMowkxDiC4LWOJThhe5DdUfRKrULAjALi8ixP8RUYd1RhBBxIs8OQXAIeDJ0R9Eq5QuCwlG41SG62lN1JxFCxAGfU0knaw5G4SjdUbSTgsjshdPxVIINMswkhIBcazwYLsgfrjuKdlIQNM5mCjrvY6gG3VGEEJrl2SHIGQzeLN1RtEvNrTa+rKAIz8rH6WrPYLd7yHE/nWy1IURi8jq76WKVYBS+pDtKXJArCICsvjhpPSM2m0m22hAiMeVa7zf+H/kj9AaJE1IQAIaB2WMUQfs9UPJXvxCpKmiHoNu3wZ+tO0pckII4oqAIr7OLLvYs3UmEEBq41QG6WtNk9tIXSEEc0WUAjj+fXFk0J0RKyrU+wKQBCq7RHSVuSEEcYZiYhSMb919Rju40QogYC1rv4nQ5D9K6644SN6QgvqiwCJ+znSxnvu4kQogYcqlDZNuTMQtTe++lL0upgnjxxRfp2bMnfr+f/v37M3PmzOYHdD0fx5tNsCHEtGlvMny48ZVHfX2dnvBCiKjJsSY2brdTMFJ3lLiSMusg/v3vf3Pffffx4osvcv755/PKK69wxRVXsGrVKgoLCxsPMl2YhSPJ2xACvkVaWgYvvbSm2fN4vf7YhxdCRFXQCuFk9cfs2FN3lLiSMlcQzzzzDLfddhu33347p512Gs899xwFBQW89NKXFsQUFhGwN5KftgnDMMjKym32EEIkF1PVkmNPlOGlFqTEFUR9fT2LFy/mgQceaPb9IUOGMGfOnOYHZ1+I4+lMn86LqK09zG239cBxbHr27MsPfvAoJ5545lHP09AQpqHhv7vC1tRE/n7XQojIyrYmN940LMXv/dCSlCiIPXv2YNs2OTk5zb6fk5PDjh07mh9sejALruas2mn89KdvcMIJZ1BTU8UHH/yZ//3f83n++Qry8k5u8TzvvPMEY8c+Eq2XIYSIgqD1Lk5Gb8yMb+qOEndSoiCOMAyj2ddKqa98D4CCIrLWv8HwQWdyyNUbgNNOO5+f/awfH374F+644/kWn//aax9kxIj7m76uqani1lsLIvcChBARZaowufYHmIU/0x0lLqVEQXTt2hWXy/WVq4Vdu3Z95aoCgNzv4LgzCFqhpoIwTZOTTx7A9u1rj3oej8eHx+OLaHYhRPR0tafhVlUgnz+0KCU+pPZ6vfTv35+pU5vfFGjq1KkMHDjwqz/g8mF0H9a47e/nlFKsX7+UrKxgtOMKIWIkaIVwOn4TMnvrjhKXUqIgAO6//37+9re/8frrr7N69Wp+9rOfsXnzZu68804AbrrpJh588MGm4/8z1yLdXk7tzmmsX7+U55+/jQ0blnLFFXfqeglCiAgyVANB+73G2UstDTWL1BhiAvje977H3r17+f3vf09lZSW9e/dm4sSJ9OjRA4DNmzdjmv/ty8WVXRnW1aCi+DLGzOjMN75xJk88UcY3v3m2rpcghIigLnYpHmefDC8dg6GUUrpDxCs181qqtm+gLG1Ru36+pqaK667LZOzYg6SlpfbNz4WIN6fX3UWhZxLm1evlCuIoUmaIqT2MgiIy7cUEnI26owghIknZ5NnjMQtHSjkcgxTEsXQfijJ9BK1xupMIISKosz0Hr7MTCuTeD8ciBXEsnnQIXtZsNpMQIvEFrRCOPw+6nqM7SlyTgvgaRkERWdYc/M423VGEEJGgHPLs0OfDS/KfwGNJmVlM7ZY/DGW4ybXGs9F7T6t+pLh4DBMnjsFx5P7WQsSbTs5C/M5W2XupFWQWUyuo6Zezb0+YOYEZbfo5mcUkRPw5re6XfMN4E3NkJZgu3XHimlxftYJRWERnqwyvs1t3FCHE8VCKPCeEWTBCyqEVpCBaI38EALnWe5qDCCGOR4ZTQZq9Hgpl9lJrSEG0hr8bKvtCmc0kRIILWiEcTxbkXKw7SkKQgmgls7CILtY0PGq/7ihCiHbKs0OY+cPB9OiOkhCkIFor/xpMLHKsCbqTCCHaoaO9io72apm91AZSEK2VlofTZSB5lgwzCZGIglYI5eoIwUt1R0kYUhBtYPYYRTd7Ci51SHcUIUQb5dkh6H4VuPy6oyQMKYi2KBiJqcLkWMW6kwgh2iDN+YwMuwJDZi+1iRREW3TogZN1FkEZZhIioQQbQigzAHmX646SUGSrjTYyC4vIWfYoLlWDbaS1eIxstSFEfMmz34W8K8DdQXeUhCJXEG1VUIRL1dDNmnTUQ4YOHc2YMat4+umFMQwmhGhJwNlMJ3shhtw5rs2kINoq42ScjNNlNpMQCSLXGocyvI0fUIs2kYJoB7PHKHLsDzFVWHcUIcTXyLNDEBwCHtkws62kINqjoAi3qqKr/bHuJEKIY/A5O8iyZsvwUjtJQbRHZi+cjqcQbHhXdxIhxDHkWuPBcEH34bqjJCQpiPYwDMweRQSd9zFUg+40QoijyLPfheyLwddZd5SEJAXRXgVFeJz9dLFLdCcRQrTA6+yhi1Uqw0vHQQqivbLOxEnrKYvmhIhTOdb7gNN0PxfRdlIQ7fX5MFOePR6ULIgTIt7k2SHoNggCObqjJCwpiONRUITX2UVne7buJEKIL3CrA3S1PpbhpeMkW20cjy5n4/i7E7TeZZ97UNO3ZasNIfTKtT7ApAEKRuqOktAMpZTSHSKhLfoJdevGMTVtMxjNL8hqaqq47rpMxo49SFqaLNIRIlYG1I4gO2Mn5uVzdUdJaDLEdLwKivA72+jkLNCdRAgBuNRhsu3JmD1keOl4SUEcr24X4HizCTbIbCYh4kG2NRFT1cmtRSNACuJ4mS7Mwmvo7oRARuuE0C7PCuF06gcde+qOkvCkICKhoIiAvYFMp1x3EiFSmqlqybGLZXgpQqQgIiHnIhxPliyaE0KzbGsyLlUtw0sRIgURCaYHs+DqxoU5MswkhDZBK4ST8S3IOEV3lKQgBREpBUV0sNfQ0VmlO4kQKclQ9eTaH2DK4riIkYKIlNxLUa50GWYSQpNu9jTc6iAUjtIdJWnISupIcfkgfxjdt4Z4rriLrKQWIsZyrRBOh5MxM3vrjpI05AoigozCItLtZXz3iiGMGbOKp59eqDuSECnBUBZ59nuNs5cMQ3ecpCEFEUnBy1FmmiyaEyLGutileJy9MnspwqQgIsmdBt2vaJzNJISImaAVwgn0gM79dUdJKlIQEWYUjCLTXkTA2aQ7ihCpQTkE7fGYhSNleCnCpCAirftQlOkjaI3TnUSIlNDZnoPP2SGzl6JACiLSPOmQO0SGmYSIkaAVwvHnQddzdUdJOlIQUWAUFpFlzcbrVOqOIkRyU4o8O4RZcM1X7scijp/8i0ZD/nCU4SbX+kB3EiGSWidnIX5nC8jq6aiQgogGoyPsySV31VONX1dV6c0jRLKxbXj5JYITbsOp84KSvZeioV0rqZVSHDp0KNJZEl44HCYcDsOrr+KduxXP8Mbvd5lzBx0GD9YbTohksno11M4l/dTPOFxSDxN/Aq+/rjtV3EtPT8dow0yvdt2TuqqqiszMzLb+mBBCCI0OHjxIRkZGq49vV0G05gpiwIABLFz49VtNVFVVUVBQwJYtW1oVvLXPq+PYpiuIRYvg2mvZYVgMaIBVjz1G93vvjausx3NsPLxnyfq6onFsUr6uJUvg8supCocpALY8/jgZ99wTn1nbcWy03rO2XkG0a4jJMIyvDe1yudrUVBkZGa06vi3Pq+3Y/HxYuBDeew8eeYT0m2+O6L9XPBwLet+zZH1d0Tw2qV7XRRc1/iH24Yfw4INk3HOP/I614XlbK2ofUo8ePVr782o9tm9fuP12feeP8rFtEY0Myfq6onms7vNH/NjeveHuu/WdP8rHtkW0nrddQ0yRdOTzjLaOjSWCrVu3Nl0m5ufn644TMcn6nsnrSjzJ+tri5XW5Hn744Ye1nf1ICJeLiy66CLc7uW5PEQ6Heeqpp3jwwQfp0KGD7jgRlazvmbyuxJOsry0eXpf2K4hkFi9/BQghRHvIQjkhhBAtkiuIKDoyHbitU8uEECIeSEEIIYRokQwxCSGEaJEUhBBCiBbFrCCUUjz88MPk5eURCAS46KKLWLly5TF/5uGHH8YwjGaP3NzcGCVObS+++CI9e/bE7/fTv39/Zs6cedRj33zzza+8T4ZhUFdXF8PE7VdWVsawYcPIy8vDMAzee+893ZHapK35S0pKWny/PvnkkxglPj5PPPEEAwYMID09nezsbEaMGMGaNWt0x2q19uTX9TsWs4L405/+xDPPPMMLL7zAwoULyc3N5dJLL/3aPZ2+9a1vUVlZ2fRYvnx5jBKnrn//+9/cd999/PrXv6a8vJxvf/vbXHHFFWzevPmoP5ORkdHsfaqsrMTv98cwdftVV1fTp08fXnjhBd1R2qW9+desWdPs/Tr55JOjlDCySktLGT16NPPmzWPq1KlYlsWQIUOorq7WHa1V2ptfy++YigHHcVRubq568sknm75XV1enMjMz1csvv3zUn3vooYdUnz59YhFRfMHZZ5+t7rzzzmbfO/XUU9UDDzzQ4vFvvPGGyszMjEW0qAPU+PHjdcdot9bknzFjhgLU/v37Y5Qqunbt2qUAVVpaqjtKu7Qmv67fsZhcQWzYsIEdO3YwZMiQpu/5fD4uvPBC5syZc8yfXbt2LXl5efTs2ZPrrruO9evXRztuSquvr2fx4sXN3iuAIUOGHPO9Onz4MD169CA/P5+rrrqK8vLyaEcVx+nMM88kGAxyySWXMGPGDN1x2u3gwYMAdO7cWXOS9mltfh2/YzEpiB07dgCQk5PT7Ps5OTlN/1tLzjnnHP7xj38wefJk/vrXv7Jjxw4GDhzI3r17o5o3le3Zswfbttv0Xp166qm8+eabTJgwgX/961/4/X7OP/981q5dG4vIoo2CwSCvvvoqoVCIcePGccopp3DJJZdQVlamO1qbKaW4//77ueCCC+jdu7fuOG3W2vzafseicVny1ltvqQ4dOjQ9SkpKFKC2b9/e7Ljbb79dXXbZZa1+3sOHD6ucnBz19NNPRzqy+Ny2bdsUoObMmdPs+4899pg65ZRTWvUctm2rPn36qHvvvTcaEaOKFBhiaslVV12lhg0bFoVE0XX33XerHj16qC1btuiO0i7tzR+r37Go7AI1fPhwzjnnnKavw+Ew0HglEQwGm76/a9eur/yleiwdOnTg9NNPl79Mo6hr1664XK6vXC205b0yTZMBAwbI+5RAzj33XN566y3dMdrk3nvvZcKECZSVlSXkbsnHkz9Wv2NRGWJKT0/npJNOanr06tWL3Nxcpk6d2nRMfX09paWlDBw4sNXPGw6HWb16dbOSEZHl9Xrp379/s/cKYOrUqa1+r5RSLF26VN6nBFJeXp4w75dSinvuuYdx48Yxffp0evbsqTtSm0Qif8x+x6J6ffIFTz75pMrMzFTjxo1Ty5cvV9dff70KBoOqqqqq6ZjBgwerv/zlL01f//znP1clJSVq/fr1at68eeqqq65S6enpauPGjbGKnZLGjh2rPB6Pep0xPhYAAAGqSURBVO2119SqVavUfffdpzp06ND0737jjTc2m9H08MMPq0mTJqnPPvtMlZeXqx/+8IfK7Xar+fPn63oJbXLo0CFVXl6uysvLFaCeeeYZVV5erjZt2qQ7Wqt8Xf4HHnhA3XjjjU3HP/vss2r8+PHq008/VStWrFAPPPCAAlQoFNL1EtrkrrvuUpmZmaqkpERVVlY2PWpqanRHa5XW5I+X37GYFYTjOOqhhx5Subm5yufzqUGDBqnly5c3O6ZHjx7qoYceavr6e9/7ngoGg8rj8ai8vDw1cuRItXLlylhFTmljxoxRPXr0UF6vV/Xr16/ZFLwLL7xQ3XzzzU1f33fffaqwsFB5vV7VrVs3NWTIkK98hhHPjkz7/PLji68xnn1d/ptvvlldeOGFTcf/8Y9/VCeeeKLy+/0qKytLXXDBBaq4uFhP+HZo6bUC6o033tAdrVVakz9efsdksz4hhBAtkr2YhBBCtEgKQgghRIukIIQQQrRICkIIIUSLpCCEEEK0SApCCCFEi6QghBBCtEgKQgghRIukIIQQQrRICkIIIUSLpCCEEEK06P8DInrBA/MozOcAAAAASUVORK5CYII=\n", "text/plain": [ "Graphics object consisting of 3 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 3 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pentagon_top = 2 * polygons.regular_ngon(5, field=F)\n", "pentagon_bottom = (-1) * pentagon_top\n", "show(pentagon_top.plot())\n", "show(pentagon_bottom.plot())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Matrices in the Veech group of the double pentagon:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "'R=' [-1/2*s^2 + 3/2 -1/2*s]\n", "[ 1/2*s -1/2*s^2 + 3/2]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "'T=' [ 1 -6/5*s^3 + 4*s]\n", "[ 0 1]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "'J=' [ 1 0]\n", "[ 0 -1]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "R = Matrix(F, [[ cos(pi/5), -sin(pi/5) ],\n", " [ sin(pi/5), cos(pi/5) ]] )\n", "show(\"R=\", R)\n", "T = Matrix(F, [[ 1, 2*cot(pi/5) ],\n", " [ 0, 1 ]] )\n", "show(\"T=\", T)\n", "J = Matrix(F, [[ 1, 0 ],\n", " [ 0, -1 ]] )\n", "show(\"J=\", J)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will build a surface `Dtilde` with vertices in $F^2$:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "S = Surface_dict(F)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Add the pentagon with labels given by `(sheet, pent)`. The pentagons will be either top or bottom and this can be decided by looking at the list generated by `double_pent_top()`." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "top_indices = double_pent_top()\n", "for sheet in range(10):\n", " for pent in range(12):\n", " if (sheet, pent) in top_indices:\n", " S.add_polygon(pentagon_top, label=(sheet,pent))\n", " else:\n", " S.add_polygon(pentagon_bottom, label=(sheet,pent))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Declare a base label." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "S.change_base_label((0,0))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Glue the edges of the polygons as specified by `build_adj_dodec`:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "for sheet in range(10):\n", " for pent in range(12):\n", " adj = build_adj_dodec(sheet,pent)\n", " for edge in range(5):\n", " S.change_edge_gluing((sheet,pent), edge, tuple(adj[edge]), edge)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Make it so the surface can no longer be changed:" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "S.set_immutable()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Declare `Dtilde` to be the translation surface based on `S`." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "Dtilde = TranslationSurface(S)\n", "# The following line would print an error message if S \n", "# does not define a translation surface.\n", "TestSuite(Dtilde).run()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following code computes the permutations `r` and `t`. Warning: This code takes a long time to run: about 24 hours on a fast computer." ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "# Change the following to True to actually run the code.\n", "run_the_code = False\n", "\n", "if run_the_code:\n", " # This is for a progress indicator.\n", " import sys\n", " progress = 0\n", " from datetime import datetime\n", " start = datetime.now()\n", " count = 0\n", " \n", " gens = [(R,'R'), (T,'T')] \n", " for gen,letter in gens:\n", " gen.set_immutable()\n", " gens_action = {gen:{} for gen,letter in gens} \n", " Dtilde_canonicalized = Dtilde.canonicalize()\n", " leaves = [Dtilde_canonicalized]\n", " surface_to_index = {Dtilde_canonicalized: 1}\n", " w = {1: ''}\n", " while len(leaves)>0: \n", " old_leaves = leaves\n", " leaves = []\n", " for leaf in old_leaves:\n", " count += 1\n", " leaf_index = surface_to_index[leaf]\n", " for gen, letter in gens:\n", " image_surface = (gen*leaf).canonicalize()\n", " if image_surface in surface_to_index:\n", " image_index = surface_to_index[image_surface]\n", " else:\n", " image_index = len(surface_to_index)+1\n", " surface_to_index[image_surface] = image_index\n", " leaves.append(image_surface)\n", " w[image_index] = letter + w[leaf_index]\n", " gens_action[gen][leaf_index] = image_index\n", " if progress < floor(100*count/2106):\n", " # Give some feedback on progress made.\n", " progress = floor(100*count/2106)\n", " current = datetime.now()\n", " change = (current - start).total_seconds()\n", " expected = change*(2106 - count)/count\n", " print(str(progress) + \"% complete (\" + str(floor(expected)) +\" seconds remaining)\")\n", " sys.stdout.flush()\n", " N = len(surface_to_index)\n", " r = Permutation( [ gens_action[R][i] for i in range(1,N+1) ] )\n", " t = Permutation( [ gens_action[T][i] for i in range(1,N+1) ] )\n", "else:\n", " # Just the answer:\n", " N = 2106\n", "\n", " # Read the permuation r from a file:\n", " f = open(\"r_permutation.txt\", \"r\")\n", " r = Permutation(eval(f.readline()))\n", " f.close()\n", "\n", " # Read the permuation t from a file:\n", " f = open(\"t_permutation.txt\", \"r\")\n", " t = Permutation(eval(f.readline()))\n", " f.close()\n", " \n", " # Read the dictionary w from a file.\n", " f = open(\"dodecahedron_words.txt\", \"r\")\n", " w = eval(f.readline())\n", " f.close()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As a sanity check, we observe that the words in the dictionary `w` are ordered as claimed by Remark 9.3 of the paper." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "# This function compares two words in the ordering described\n", "# in Remark 9.3.\n", "def compare_words(w1,w2):\n", " # return -1 if w1 < w2\n", " # return 0 if w1 = w2\n", " # return 1 if w1 > w2.\n", " if len(w1) < len(w2):\n", " return -1\n", " if len(w1) > len(w2):\n", " return 1\n", " # The words have equal length.\n", " # Now we compare the letters in reverse order.\n", " for i in range(1, len(w1)+1):\n", " if w1[-i] < w2[-i]:\n", " return -1\n", " if w1[-i] > w2[-i]:\n", " return 1\n", " # All letters match.\n", " return 0\n", "\n", "# Now we check the ordering.\n", "for i in range(1, N+1):\n", " for j in range(i+1, N+1):\n", " assert compare_words(w[i],w[j])==-1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following code computes the permuation `j`." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "rinv = ~r # The inverse permuation of r\n", "tinv = ~t # The inverse permuation of t\n", "def index_of_phi_of_word(word):\n", " # Given a word in the letters \"R\" and \"T\", this function computes\n", " # the surface index of the surface phi(word)(tildeD).\n", " index = 1\n", " for letter in reversed(word):\n", " if letter == \"R\":\n", " index = rinv(index)\n", " elif letter == \"T\":\n", " index = tinv(index)\n", " return index\n", "j = Permutation([index_of_phi_of_word(w[i]) for i in range(1,2107)])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following code computes `wordlist` which contains one word representing each $\\langle T,J\\rangle$ orbit in $V_+(P)(\\tilde D)$." ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "['',\n", " 'RT',\n", " 'RRT',\n", " 'RTT',\n", " 'RTRT',\n", " 'RRTT',\n", " 'RTTT',\n", " 'RTRRT',\n", " 'RRTRT',\n", " 'RTTRT',\n", " 'RRRTT',\n", " 'RTRTT',\n", " 'RRTTT',\n", " 'RTTRRT',\n", " 'RTRTRT',\n", " 'RRTTRT',\n", " 'RTTTRT',\n", " 'RTRRTT',\n", " 'RRTRTT',\n", " 'RTTRTT',\n", " 'RRRTTT',\n", " 'RTRTTT',\n", " 'RRTTTT',\n", " 'RTTTTT',\n", " 'RTTRRRT',\n", " 'RTRTRRT',\n", " 'RRTTRRT',\n", " 'RTRRTRT',\n", " 'RRTRTRT',\n", " 'RTRTTRT',\n", " 'RRTTTRT',\n", " 'RTTTTRT',\n", " 'RTRRRTT',\n", " 'RRTRRTT',\n", " 'RTTRRTT',\n", " 'RRRTRTT',\n", " 'RTRTRTT',\n", " 'RRTTRTT',\n", " 'RTTTRTT',\n", " 'RTRRTTT',\n", " 'RTTRTTT',\n", " 'RRTTTTT',\n", " 'RTTTTTT',\n", " 'RRTTRRRT',\n", " 'RTTTRRRT',\n", " 'RTRRTRRT',\n", " 'RRRTTRRT',\n", " 'RTTRRTRT',\n", " 'RTRTRTRT',\n", " 'RRTTRTRT',\n", " 'RTTTRTRT',\n", " 'RTRRTTRT',\n", " 'RRTRTTRT',\n", " 'RRRTTTRT',\n", " 'RTRTTTRT',\n", " 'RRTTTTRT',\n", " 'RTTRRRTT',\n", " 'RTRTRRTT',\n", " 'RRTTRRTT',\n", " 'RTTRTRTT',\n", " 'RRRTTRTT',\n", " 'RTRTTRTT',\n", " 'RRTTTRTT',\n", " 'RTTTTRTT',\n", " 'RRTRRTTT',\n", " 'RTTRRTTT',\n", " 'RRTRTTTT',\n", " 'RRRTTTTT',\n", " 'RRTTTTTT',\n", " 'RTTTTTTT',\n", " 'RTRTTRRRT',\n", " 'RRTTTRRRT',\n", " 'RTRTRTRRT',\n", " 'RTRTRRTRT',\n", " 'RRTTRRTRT',\n", " 'RRTRTRTRT',\n", " 'RTTRTRTRT',\n", " 'RTRRRTTRT',\n", " 'RRTRRTTRT',\n", " 'RTRTRTTRT',\n", " 'RRTRTTTRT',\n", " 'RTTRTTTRT',\n", " 'RRRTTTTRT',\n", " 'RTRTTTTRT',\n", " 'RTRRTRRTT',\n", " 'RRTRTRRTT',\n", " 'RTTRTRRTT',\n", " 'RRRTTRRTT',\n", " 'RRTTTRRTT',\n", " 'RRTRRTRTT',\n", " 'RTTRRTRTT',\n", " 'RTRTRTRTT',\n", " 'RRTTRTRTT',\n", " 'RTTTRTRTT',\n", " 'RTRRTTRTT',\n", " 'RRTRTTRTT',\n", " 'RRRTTTRTT',\n", " 'RRTTTTRTT',\n", " 'RTRTRRTTT',\n", " 'RTTTRRTTT',\n", " 'RRTRRTTTT',\n", " 'RTTRRTTTT',\n", " 'RRRTRTTTT',\n", " 'RRTTRTTTT',\n", " 'RTRRTTTTT',\n", " 'RTRTTTTTT',\n", " 'RRTTTTTTT',\n", " 'RRTTRTRRRT',\n", " 'RTRRTTRRRT',\n", " 'RTTRTTRRRT',\n", " 'RTRTRRTRRT',\n", " 'RRTTRRTRRT',\n", " 'RTRRTRTRRT',\n", " 'RRTRTRTRRT',\n", " 'RTTRTRTRRT',\n", " 'RRRTTRRTRT',\n", " 'RRTRTTRTRT',\n", " 'RRTRRRTTRT',\n", " 'RRRTTRTTRT',\n", " 'RTTRTTTTRT',\n", " 'RTRRTRRRTT',\n", " 'RRTRTRRRTT',\n", " 'RTTRTRRRTT',\n", " 'RRTRRTRRTT',\n", " 'RRRTTTRRTT',\n", " 'RTRTRRTRTT',\n", " 'RRTTRRTRTT',\n", " 'RTTTRRTRTT',\n", " 'RTRRRTTRTT',\n", " 'RRRTRTTRTT',\n", " 'RTRTRTTRTT',\n", " 'RTTRTTTRTT',\n", " 'RRRTTTTRTT',\n", " 'RRTTTTTRTT',\n", " 'RTRRTRRTTT',\n", " 'RTTRTRRTTT',\n", " 'RTRTTRRTTT',\n", " 'RRTTTRRTTT',\n", " 'RTRRRTRTTT',\n", " 'RRRTRTTTTT',\n", " 'RTRRTTTTTT',\n", " 'RRTRTTTTTT',\n", " 'RTTTRRRTRRT',\n", " 'RTRTRTRTRRT',\n", " 'RTTRRRTTRRT',\n", " 'RTRRTTRRTRT',\n", " 'RRTRTTRRTRT',\n", " 'RTTTRRTRTRT',\n", " 'RTRRTRTRTRT',\n", " 'RTTRTRTRTRT',\n", " 'RRTRTRRTTRT',\n", " 'RTRTRTRTTRT',\n", " 'RTRRTRTTTRT',\n", " 'RTRTRTRRRTT',\n", " 'RRTRTRTRRTT',\n", " 'RTRTTRTRRTT',\n", " 'RTTRRTTRRTT',\n", " 'RRRTRTTRRTT',\n", " 'RTRRTTTRRTT',\n", " 'RRRTRRTTRTT',\n", " 'RRTTRRTTRTT',\n", " 'RRTRTRTTRTT',\n", " 'RRTTTRTTRTT',\n", " 'RTTRTTTTRTT',\n", " 'RTTTTTTTRTT',\n", " 'RRRTRTRRTTT',\n", " 'RTTTTTRRTTT',\n", " 'RRTRRRTRTTT',\n", " 'RTTRRTTRTTT',\n", " 'RTRRTRRTTTT',\n", " 'RRTTTRRTTTT',\n", " 'RRTTRRTTTTT',\n", " 'RTRTRTTTTTT',\n", " 'RRTTRTTTRRRT',\n", " 'RRTRTRTRTRRT',\n", " 'RTRTTRTRTRRT',\n", " 'RRTTTRTRRTRT',\n", " 'RTRTRTTRRTRT',\n", " 'RTRTTRRTRTRT',\n", " 'RTTRTTRTRTRT',\n", " 'RRTTRRTTRTRT',\n", " 'RTTRTRRRTTRT',\n", " 'RTRTRTRRTTRT',\n", " 'RRTRTRTRTTRT',\n", " 'RRRTTRTRTTRT',\n", " 'RRTTRTRTRRTT',\n", " 'RRTRRTTTRRTT',\n", " 'RTTTTTTRTRTT',\n", " 'RTTTRTTTTRTT',\n", " 'RTTTTTTRRTTT',\n", " 'RRTTRTTRTTTT',\n", " 'RRTRTTTRTRRRT',\n", " 'RTTRRTRTTTRRT',\n", " 'RTRTTRRTRRTRT',\n", " 'RRTRTTRRTRTRT',\n", " 'RTRTRRTRTRTRT',\n", " 'RTRRTRTRTRTRT',\n", " 'RTRTTRRTTRTRT',\n", " 'RTRRRTRTTTTRT',\n", " 'RTTRRTTTTTTRT',\n", " 'RRTTTRTTRTRTT',\n", " 'RRRTRTRTRRTTT',\n", " 'RTTRRTTTRRTRRT',\n", " 'RRTTRTRRTRTRRT',\n", " 'RRTRTRTRTRTRRT',\n", " 'RRTRRTRTRTRTRT',\n", " 'RRTTTTRRTRTRTT',\n", " 'RTRTTTTTTRRTTT',\n", " 'RTRTTTRTTRRTRRT',\n", " 'RRTTTRRTRTRTRRT',\n", " 'RRTRTRRTTRRTTRT']" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "equiv = {i:{i} for i in range(1,2107)}\n", "for index1 in range(1,2107):\n", " index2 = t(index1)\n", " for index3 in equiv[index2]:\n", " equiv[index1].add(index3)\n", " equiv[index3] = equiv[index1]\n", " index2 = j(index1)\n", " for index3 in equiv[index2]:\n", " equiv[index1].add(index3)\n", " equiv[index3] = equiv[index1]\n", "equivalence_classes = { frozenset(equiv[i]) for i in range(1,2107) }\n", "indexlist = [min(eqclass) for eqclass in equivalence_classes]\n", "indexlist.sort()\n", "wordlist = [w[i] for i in indexlist]\n", "coset_reps = wordlist\n", "show(coset_reps)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This gives the total number of cusps up to the action by the $V_{\\pm}(\\tilde D)$:" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "211" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(coset_reps)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Code from § 10: Closed saddle connections on the dodecahedron " ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "#Auxiliary Functions.\n", "import ast\n", "\n", "def python_to_sage(perm):\n", " return PermutationGroupElement(zer_to_60([tuple(j) for j in perm]))\n", "\n", "def sage_to_python(perm):\n", " '''\n", " This compensates for the annoying fact that sage doesn't treat\n", " permutations as tuples.\n", "\n", " perm is a string in the following form\n", " perm = ((.)()()()(..), (.)()()(..), (...), (...))\n", " '''\n", " perm = perm.replace('((', '([(').replace('))', ')])').replace('), (', ')], [(').replace(')(', '),(')\n", " return tuple(ast.literal_eval(perm))\n", "\n", "def sn_n(perm, elt, power=1):\n", " '''\n", " This is the action of an element of S_n on the set of n natural numbers\n", " If power = 1, the action is by the element,\n", " and if power = -1, the action is by its inverse.\n", " perm is a python element\n", " '''\n", " elt_perm = [tup for tup in perm if elt in tup];\n", " if elt_perm == []:\n", " return elt\n", " else:\n", " elt_fin = elt_perm[0]\n", " return elt_fin[(elt_fin.index(elt)+power) %len(elt_fin)]" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "There are 0 trajectories renormalized to short saddle connections.\n", "There are 31 trajectories renormalized to long saddle connections:\n", "['RRRTT', 'RTTTRT', 'RTRTRTT', 'RRRTTRRT', 'RRTTRTRT', 'RRTRTTTT', 'RRTTRRTRT', 'RRTRTRRTT', 'RRTRRTTTT', 'RTRRTTTTT', 'RRTTRTRRRT', 'RTRRTTRRRT', 'RTRRTRTRRT', 'RRTRTTRTRT', 'RRRTTRTTRT', 'RRRTTTTRTT', 'RTRTRTRTRRT', 'RTTRTRTRTRT', 'RTRTRTRTTRT', 'RRTTTRTTRTT', 'RRTTRTTTRRRT', 'RTRTTRTRTRRT', 'RRTTTRTRRTRT', 'RTTRTRRRTTRT', 'RRRTTRTRTTRT', 'RRTRRTTTRRTT', 'RTTTTTTRTRTT', 'RTTRRTRTTTRRT', 'RTRTTRRTRRTRT', 'RRTTTRTTRTRTT', 'RTTRRTTTRRTRRT']\n" ] } ], "source": [ "x = [python_to_sage(perm_odd(5, i, double_pent_top(), double_pent())) for i in range(4)]\n", "\n", "def gam_r(x):\n", " return (x[2]*x[3]**(-1), x[2], x[2]*x[0]**(-1), x[2]*x[1]**(-1))\n", "\n", "def gam_t(x):\n", " return (x[0]*x[1]**(-1), x[1], x[1]*x[2]*(x[3]**(-1))*x[2], x[1]*x[2])\n", "\n", "def vert_cycle(n,x):\n", " '''\n", " x is a quadruple of python elements\n", " '''\n", " sheet_cycle = [n];\n", " end = -1;\n", " n8 = n\n", " while end != n:\n", " n1 = sn_n(x[3],n8,-1)\n", " sheet_cycle.append(n1)\n", " n2 = sn_n(x[2],n1)\n", " sheet_cycle.append(n2)\n", " n3 = sn_n(x[1],n2,-1)\n", " sheet_cycle.append(n3)\n", " n4 = sn_n(x[0],n3)\n", " sheet_cycle.append(n4)\n", " n5 = sn_n(x[3],n4)\n", " sheet_cycle.append(n5)\n", " n6 = sn_n(x[2],n5,-1)\n", " sheet_cycle.append(n6)\n", " n7 = sn_n(x[1],n6)\n", " sheet_cycle.append(n7)\n", " n8 = sn_n(x[0],n7,-1)\n", " if n8 != n:\n", " sheet_cycle.append(n8)\n", " end = n8\n", " return sheet_cycle\n", "\n", "def vert_to_self_long(vert):\n", " vert0_to_vert2 = [(0,i%8,vert[i]) for i in range(2,24,8) if vert[0] == vert[i]] # This searches among the long horizontal saddle connection 0,2\n", " return vert0_to_vert2\n", "\n", "def vert_to_self_short(vert):\n", " vert0_to_vert3 = [(0,i%8,vert[i]) for i in range(3,24,8) if vert[0] == vert[i]] # This searches among the short horizontal saddle connection 0,3\n", " return vert0_to_vert3\n", "\n", "\n", "def sage_mon_gen_fcn(coset_rep):\n", " fcn0 = '(x)'\n", " fcn1 = ''\n", " for i in coset_rep:\n", " if i == 'T':\n", " fcn1 += 'gam_t('\n", " if i == 'R':\n", " fcn1 += 'gam_r('\n", " fcn = fcn1 + fcn0\n", " for i in coset_rep:\n", " fcn += ')'\n", " return fcn\n", "\n", "def traj_to_self_search_short(sheet = 1):\n", " coset_traj_to_self_short = []\n", " for coset in coset_reps:\n", " y = sage_to_python(str(eval(sage_mon_gen_fcn(coset))))\n", " coset_search = vert_to_self_short(vert_cycle(sheet,y))\n", " if len(coset_search) > 0:\n", " coset_traj_to_self_short.append((coset_reps.index(coset),coset,coset_search))\n", " return coset_traj_to_self_short\n", "\n", "def traj_to_self_search_long(sheet = 1):\n", " coset_traj_to_self_long = []\n", " for coset in coset_reps:\n", " y = sage_to_python(str(eval(sage_mon_gen_fcn(coset))))\n", " coset_search = vert_to_self_long(vert_cycle(sheet,y))\n", " if len(coset_search) > 0:\n", " coset_traj_to_self_long.append((coset_reps.index(coset),coset))\n", " return coset_traj_to_self_long\n", "\n", "print('There are '+ str(len(traj_to_self_search_short())) + ' trajectories renormalized to short saddle connections.')\n", "print('There are '+ str(len(traj_to_self_search_long())) + ' trajectories renormalized to long saddle connections:')\n", "traj_to_self_coset_list = [item[1] for item in traj_to_self_search_long()]\n", "print([item[1] for item in traj_to_self_search_long()])" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "31" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(traj_to_self_coset_list)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is the list of 31 coset representatives:" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['RRRTT',\n", " 'RTTTRT',\n", " 'RTRTRTT',\n", " 'RRRTTRRT',\n", " 'RRTTRTRT',\n", " 'RRTRTTTT',\n", " 'RRTTRRTRT',\n", " 'RRTRTRRTT',\n", " 'RRTRRTTTT',\n", " 'RTRRTTTTT',\n", " 'RRTTRTRRRT',\n", " 'RTRRTTRRRT',\n", " 'RTRRTRTRRT',\n", " 'RRTRTTRTRT',\n", " 'RRRTTRTTRT',\n", " 'RRRTTTTRTT',\n", " 'RTRTRTRTRRT',\n", " 'RTTRTRTRTRT',\n", " 'RTRTRTRTTRT',\n", " 'RRTTTRTTRTT',\n", " 'RRTTRTTTRRRT',\n", " 'RTRTTRTRTRRT',\n", " 'RRTTTRTRRTRT',\n", " 'RTTRTRRRTTRT',\n", " 'RRRTTRTRTTRT',\n", " 'RRTRRTTTRRTT',\n", " 'RTTTTTTRTRTT',\n", " 'RTTRRTRTTTRRT',\n", " 'RTRTTRRTRRTRT',\n", " 'RRTTTRTTRTRTT',\n", " 'RTTRRTTTRRTRRT']" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "traj_to_self_coset_list" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Appendix C" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "# Define the double pentagon surface Pi_5\n", "double_pentagon_surface = Surface_dict(base_ring=F)\n", "double_pentagon_surface.add_polygon(pentagon_top, label=0)\n", "double_pentagon_surface.add_polygon(pentagon_bottom, label=1)\n", "for i in range(5):\n", " double_pentagon_surface.change_edge_gluing(0,i,1,i)\n", "double_pentagon_surface.change_base_label(0)\n", "Pi5 = TranslationSurface(double_pentagon_surface)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Polygon: (0, 0), (2, 0), (-s^2 + 4, -s^3 + 3*s), (1, -s^3 + 4*s), (s^2 - 2, -s^3 + 3*s)\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 3 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "print(Pi5.polygon(0))\n", "show(Pi5.polygon(0).plot())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The function `str_to_vect` takes a string `coset_rep` in 'R' and 'T' and applyies the inverse of the corresponding matrix in $\\langle R, T\\rangle$ to the vector $(2 \\varphi, 0)$. When applied to a coset representative, this gives the holonomy of a long closed saddle connection on $\\tilde D$." ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [], "source": [ "phi = F((1+sqrt(5))/2)\n", "\n", "def str_to_vect(coset_rep, index=0):\n", " # This is the holonomy of the saddle connection sigma_0.\n", " v_fin = vector([2*phi,0])\n", " for i in coset_rep:\n", " if i == 'T':\n", " v_fin = T.inverse()*v_fin\n", " elif i == 'R':\n", " v_fin = R.inverse()*v_fin\n", " return v_fin" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following function `preferred_vect` takes a vector $v$ obtained as above and outputs a vector of the form $R^k v$ pointed in a direction in $[0,\\frac{3 \\pi}{5})$ such that the corresponding saddle connection on $\\Pi_5$ has a cylinder with equal holonomy on the left. This is the normalization used in Appendix C." ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [], "source": [ "from flatsurf.geometry.surface_objects import SaddleConnection\n", "\n", "def preferred_vect(v):\n", " sector0 = vector(F,[1,0])\n", " sector1 = vector(F,[cos(3*pi/5),sin(3*pi/5)])\n", " # Form the list of rotated images of v under powers of R\n", " # that point in directions with angle in [0, 3*pi/5].\n", " possible_vectors = []\n", " for i in range(10):\n", " w = R^i * v\n", " if det(matrix([sector0, w]))>=0 and det(matrix([w, sector1]))>0:\n", " possible_vectors.append(w)\n", " # Sanity check that there are three vectors in our list.\n", " assert len(possible_vectors) == 3\n", " # For each of these vectors, construct the corresponding saddle connection\n", " # on Pi5, and return the one with the short cylinder on the left.\n", " for j in range(3):\n", " w = possible_vectors[j]\n", " # Construct the saddle connection leaving vertex 0 of polygon 0\n", " # with direction w.\n", " sc = SaddleConnection(Pi5, (0,0), w)\n", " if sc.holonomy() == w:\n", " # At this point we know sc is a long saddle connection.\n", " start = sc.start_tangent_vector()\n", " end = sc.end_tangent_vector()\n", " # If we rotate the start tangent vector by 180 degrees\n", " # counterclockwise and we find a scalar multiple of the end\n", " # tangent vector, then we know the short cylinder is on the left.\n", " if sc.start_tangent_vector().counterclockwise_to(-w). \\\n", " differs_by_scaling(sc.end_tangent_vector()):\n", " return w" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we form Table 3 of Appendix C." ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Coset Rep Exact Vector Length of Trajectory Vector of Trajectory\n", "1 & $RRRTT$ & $ \\left(-3 s^{2} + 12,\\,-5 s^{3} + 19 s\\right) $ & 16.2386 & (7.85410, 14.2128) \\\\\n", "2 & $RRRTTRRT$ & $ \\left(-21 s^{2} + 76,\\,-5 s^{3} + 19 s\\right) $ & 49.0816 & (46.9787, 14.2128) \\\\\n", "3 & $RTTTRT$ & $ \\left(-19 s^{2} + 72,\\,-7 s^{3} + 25 s\\right) $ & 49.1630 & (45.7426, 18.0171) \\\\\n", "4 & $RRTRTTTT$ & $ \\left(-16 s^{2} + 59,\\,-33 s^{3} + 120 s\\right) $ & 94.9181 & (36.8885, 87.4567) \\\\\n", "5 & $RTRRTTRRRT$ & $ \\left(-29 s^{2} + 106,\\,-27 s^{3} + 99 s\\right) $ & 98.0031 & (65.9230, 72.5173) \\\\\n", "6 & $RRTTRTRRRT$ & $ \\left(-30 s^{2} + 109,\\,-27 s^{3} + 98 s\\right) $ & 98.2417 & (67.5410, 71.3418) \\\\\n", "7 & $RRTRRTTTT$ & $ \\left(12 s^{2} - 41,\\,-41 s^{3} + 148 s\\right) $ & 110.117 & (-24.4164, 107.376) \\\\\n", "8 & $RTRRTTTTT$ & $ \\left(-18 s^{2} + 67,\\,-39 s^{3} + 142 s\\right) $ & 111.810 & (42.1246, 103.572) \\\\\n", "9 & $RTRTRTT$ & $ \\left(-23 s^{2} + 84,\\,-39 s^{3} + 141 s\\right) $ & 114.941 & (52.2148, 102.396) \\\\\n", "10 & $RRTTRTRT$ & $ \\left(3 s^{2} - 10,\\,-55 s^{3} + 199 s\\right) $ & 144.704 & (-5.85410, 144.586) \\\\\n", "11 & $RRRTTTTRTT$ & $ \\left(13 s^{2} - 42,\\,-55 s^{3} + 199 s\\right) $ & 146.570 & (-24.0344, 144.586) \\\\\n", "12 & $RRTTRRTRT$ & $ \\left(-68 s^{2} + 247,\\,-21 s^{3} + 76 s\\right) $ & 162.687 & (153.026, 55.2268) \\\\\n", "13 & $RRTRTRRTT$ & $ \\left(-66 s^{2} + 239,\\,-27 s^{3} + 98 s\\right) $ & 164.109 & (147.790, 71.3418) \\\\\n", "14 & $RTRRTRTRRT$ & $ \\left(-57 s^{2} + 208,\\,-63 s^{3} + 229 s\\right) $ & 211.047 & (129.228, 166.856) \\\\\n", "15 & $RRRTTRTTRT$ & $ \\left(-87 s^{2} + 318,\\,-29 s^{3} + 105 s\\right) $ & 211.985 & (197.769, 76.3215) \\\\\n", "16 & $RRTTRTTTRRRT$ & $ \\left(-82 s^{2} + 297,\\,-79 s^{3} + 286 s\\right) $ & 277.395 & (183.679, 207.870) \\\\\n", "17 & $RRTRTTRTRT$ & $ \\left(-168 s^{2} + 609,\\,-53 s^{3} + 192 s\\right) $ & 401.859 & (376.830, 139.606) \\\\\n", "18 & $RTTRTRRRTTRT$ & $ \\left(-103 s^{2} + 374,\\,-135 s^{3} + 487 s\\right) $ & 422.378 & (231.658, 353.182) \\\\\n", "19 & $RTTTTTTRTRTT$ & $ \\left(-88 s^{2} + 319,\\,-149 s^{3} + 536 s\\right) $ & 435.359 & (197.387, 388.041) \\\\\n", "20 & $RRTRRTTTRRTT$ & $ \\left(-98 s^{2} + 356,\\,-158 s^{3} + 572 s\\right) $ & 470.627 & (220.567, 415.740) \\\\\n", "21 & $RRTTTRTTRTT$ & $ \\left(40 s^{2} - 145,\\,-209 s^{3} + 756 s\\right) $ & 556.471 & (-89.7214, 549.190) \\\\\n", "22 & $RTRTRTRTRRT$ & $ \\left(-155 s^{2} + 562,\\,-171 s^{3} + 619 s\\right) $ & 568.635 & (347.795, 449.872) \\\\\n", "23 & $RRRTTRTRTTRT$ & $ \\left(-150 s^{2} + 544,\\,-198 s^{3} + 716 s\\right) $ & 619.524 & (336.705, 520.038) \\\\\n", "24 & $RRTTTRTRRTRT$ & $ \\left(-158 s^{2} + 572,\\,-198 s^{3} + 716 s\\right) $ & 628.894 & (353.649, 520.038) \\\\\n", "25 & $RTTRTRTRTRT$ & $ \\left(-362 s^{2} + 1312,\\,-114 s^{3} + 412 s\\right) $ & 865.091 & (811.728, 299.131) \\\\\n", "26 & $RTTRRTRTTTRRT$ & $ \\left(-241 s^{2} + 876,\\,-277 s^{3} + 1003 s\\right) $ & 909.040 & (542.946, 729.083) \\\\\n", "27 & $RTRTRTRTTRT$ & $ \\left(-380 s^{2} + 1377,\\,-125 s^{3} + 452 s\\right) $ & 912.920 & (851.853, 328.283) \\\\\n", "28 & $RTRTTRTRTRRT$ & $ \\left(-253 s^{2} + 916,\\,-279 s^{3} + 1009 s\\right) $ & 926.224 & (566.363, 732.888) \\\\\n", "29 & $RTTRRTTTRRTRRT$ & $ \\left(-15 s^{2} + 56,\\,-375 s^{3} + 1357 s\\right) $ & 986.655 & (35.2705, 986.025) \\\\\n", "30 & $RTRTTRRTRRTRT$ & $ \\left(15 s^{2} - 52,\\,-395 s^{3} + 1429 s\\right) $ & 1038.64 & (-31.2705, 1038.17) \\\\\n", "31 & $RRTTTRTTRTRTT$ & $ \\left(-650 s^{2} + 2352,\\,-282 s^{3} + 1020 s\\right) $ & 1631.66 & (1453.72, 740.945) \\\\\n" ] } ], "source": [ "# List index, holonomy vector, approximate length, \n", "# and approximate holonomy vector for each coset. \n", "sadd_conn_total = []\n", "for coset_rep in traj_to_self_coset_list:\n", " vect = preferred_vect(str_to_vect(coset_rep))\n", " sadd_conn_total.append( (coset_rep, vect, vect.norm().n(digits=6), vect.n(digits=6)) )\n", "# Sort by length:\n", "sadd_conn_total_sort = sorted(sadd_conn_total, key=lambda x: x[2])\n", "\n", "print('', 'Coset Rep','Exact Vector', 'Length of Trajectory','Vector of Trajectory')\n", "# The following prints the Table 3 of the appendix.\n", "for i in enumerate(sadd_conn_total_sort):\n", " print(str(i[0]+1) + ' & ' + \\\n", " '$' + str(i[1][0]) + '$ & ' + \\\n", " '$' + latex(i[1][1]) + '$ & ' + \\\n", " str(i[1][2]) + ' & ' + \\\n", " str(i[1][3]) + ' \\\\\\\\')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we sanity check our saddle connection combinatorial length formula. The following function evaluates the combinatorial length formula described in remark C.2. We compare the results of applying the formula to the combinatorial length computed by FlatSurf." ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 0 mistakes in the formula.\n" ] } ], "source": [ "def combinatorial_length_of_long_sc(hol):\n", " a = hol[0][0]\n", " b = hol[0][2]\n", " c = hol[1][1]\n", " d = hol[1][3]\n", " assert hol[1] > 0\n", " if det(matrix(F,[hol,[cos(pi/5),sin(pi/5)]]))>0:\n", " return -b-c-4*d\n", " elif det(matrix(F,[hol,[cos(2*pi/5),sin(2*pi/5)]]))>0:\n", " return a+3*b-d-1\n", " else:\n", " assert det(matrix(F,[hol,[cos(3*pi/5),sin(3*pi/5)]]))>0\n", " return 2*c+6*d-1\n", "\n", "error_count = 0\n", "for i,data in enumerate(sadd_conn_total_sort):\n", " vect = data[1]\n", " sc = SaddleConnection(Pi5, (0,0), vect)\n", " traj = sc.trajectory()\n", " l = combinatorial_length_of_long_sc(sc.holonomy())\n", " if traj.combinatorial_length() != l:\n", " print(\"Saddle connection %s predicted combinatorial length is %s, but the actual length is %s.\" \n", " % (i,l,traj.combinatorial_length()))\n", "print(\"Found %s mistakes in the formula.\" % error_count)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Appendix D" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will find all saddle connections of length less than 622 and then analyze them." ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "L = 622" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following represents the indices of surfaces representing each of the coset used in Table 3. We order the collections to match the table." ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[frozenset({25, 33, 48, 64, 90, 122, 168, 221, 299, 393}),\n", " frozenset({133, 135, 241, 243, 425, 427, 704, 708, 817, 1083}),\n", " frozenset({45, 86, 160, 285, 494, 671, 1034, 1434, 1658, 1702}),\n", " frozenset({202, 290, 361, 502, 610, 816}),\n", " frozenset({394, 660, 1021}),\n", " frozenset({390, 656, 827}),\n", " frozenset({356, 602, 951, 1704, 1759, 1974}),\n", " frozenset({366, 485, 618, 794, 971, 1190}),\n", " frozenset({97, 180, 319}),\n", " frozenset({145, 204, 261, 363, 459, 614, 762, 962, 967, 1002}),\n", " frozenset({571, 909, 1304, 1305, 1695}),\n", " frozenset({250, 439, 728, 1059, 1460, 1818}),\n", " frozenset({302, 518, 836, 1008, 1408, 1782}),\n", " frozenset({418, 692, 719, 1064, 1101, 1285, 1464, 1509, 1856, 1895}),\n", " frozenset({483, 792, 1186, 1601, 1861}),\n", " frozenset({1031, 1941}),\n", " frozenset({460, 611}),\n", " frozenset({1161, 1577}),\n", " frozenset({1275, 1666, 1675, 1831, 1960, 1964}),\n", " frozenset({1248, 1653, 1777, 1950, 2011, 2022}),\n", " frozenset({901, 1277, 1677}),\n", " frozenset({697, 807, 1070, 1203, 1472, 1621, 1836, 1917, 1932, 2052}),\n", " frozenset({1181, 1283, 1626, 1737}),\n", " frozenset({1106,\n", " 1163,\n", " 1457,\n", " 1469,\n", " 1500,\n", " 1513,\n", " 1579,\n", " 1761,\n", " 1816,\n", " 1829,\n", " 1848,\n", " 1858,\n", " 2035,\n", " 2049,\n", " 2106}),\n", " frozenset({749, 1131, 1540}),\n", " frozenset({1488, 1580, 1765, 1909, 2066}),\n", " frozenset({787, 1178, 1363, 1365, 1747, 1998}),\n", " frozenset({1073, 1206, 1474, 1510, 1596, 1624}),\n", " frozenset({1821, 1957, 1995}),\n", " frozenset({1506, 1640, 1852, 1919}),\n", " frozenset({1670})]" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sc_index_to_equivalence_class = []\n", "for i in range(31):\n", " coset_rep = sadd_conn_total_sort[i][0]\n", " coset_index = index_of_phi_of_word(coset_rep)\n", " for equiv_class in equivalence_classes:\n", " if coset_index in equiv_class:\n", " sc_index_to_equivalence_class.append(equiv_class)\n", " break\n", "sc_index_to_equivalence_class" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The union of all the sets in the list above is the collection of indices of surfaces with closed long horizontal saddle connections." ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [], "source": [ "all_closed_indices = set()\n", "for equiv_class in sc_index_to_equivalence_class:\n", " all_closed_indices = all_closed_indices.union(equiv_class)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following is the generalized continued fraction algorithm applied to a vector." ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [], "source": [ "# Let r denote R^-1 and t denote T^-1.\n", "# Given a vector v representing the holonomy of a saddle connection,\n", "# the following returns a word in r and t, which when viewed as a matrix\n", "# carries v to either (2, 0) or (2*phi, 0).\n", "# We return the pair consisting of the group element applied, \n", "# as a string in r and t and the resulting vector (2,0) or (2*phi, 0).\n", "def vector_to_word(v):\n", " assert v[1] >= 0\n", " w = v\n", " word = \"\"\n", " while w[1] != 0:\n", " if det(matrix(F,[[cos(pi/5),sin(pi/5)],w])) >= 0:\n", " w = R^-1 * w\n", " word = \"r\" + word\n", " else:\n", " w = T^-1 * w\n", " word = \"t\" + word\n", " return (word, w)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Below we find all saddle connections of length less than $L$. Then we analyze them to figure out which coset the belong to and store them in a dictionary if they are shorter than any other closed saddle connection found so far that represents the same coset.\n", "\n", "This is a long calculation which takes about 7 hours and is skipped by default. Set `do_long_calculation = True` to do the computation." ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "scrolled": false }, "outputs": [], "source": [ "do_long_calculation = False\n", "\n", "if do_long_calculation:\n", " # Obtain the saddle connections of length less than L:\n", " print(\"Finding all saddle connections of length less than %s leaving vertex 0 of polygon 0.\" % L)\n", " print(\"This will take approximately 75 minutes.\")\n", " from datetime import datetime\n", " start = datetime.now()\n", " sc_list = Pi5.saddle_connections(L^2, initial_label=0, initial_vertex=0)\n", " end = datetime.now()\n", " print(\"Found %s saddle connections of length less than %s.\" % (len(sc_list), L))\n", " print(\"That calculation took %s seconds.\" % (end - start).total_seconds())\n", " # This will store the holonomies of the shortest \n", " # saddle connections found for each coset:\n", " shortest = 31*[None]\n", "\n", " import sys\n", " print(\"Checking saddle connections:\")\n", " sys.stdout.flush()\n", " progress = 0\n", " start = datetime.now()\n", "\n", " for i, sc in enumerate(sc_list):\n", " if progress < floor(100*i/len(sc_list)):\n", " # Give some feedback on progress made.\n", " progress = floor(100*i/len(sc_list))\n", " current = datetime.now()\n", " change = (current - start).total_seconds()\n", " expected = change*(len(sc_list)-i)/i\n", " print(str(progress) + \"% complete (\" + str(floor(expected)) +\" seconds remaining)\")\n", " sys.stdout.flush()\n", " word, reduced_vector = vector_to_word(sc.holonomy())\n", " if reduced_vector != vector([2*phi,0]):\n", " # This is a short saddle connection.\n", " # Discard it!\n", " continue\n", " # Index of the translation cover of the dodecahedron:\n", " index = 1\n", " for letter in reversed(word):\n", " if letter == \"r\":\n", " # Perform the R^-1 action on surface indices\n", " index = rinv(index)\n", " if letter == \"t\":\n", " # Perform the T^-1 action on surface indices\n", " index = tinv(index)\n", " if index in all_closed_indices:\n", " # Run only if long horizontal saddle connections are closed\n", " for j in range(31):\n", " if index in sc_index_to_equivalence_class[j]:\n", " # We belong to the j-th coset.\n", " # Check if it is the first found for this coset or if it is \n", " # shorter than anything else found for this coset.\n", " if shortest[j] is None or \\\n", " F(sc.holonomy().norm()^2) < F(shortest[j].norm()^2):\n", " # Store the holonomy off.\n", " shortest[j] = sc.holonomy()\n", " break\n", "else:\n", " # We give the result of the computation and then run some sanity checks.\n", " shortest = [ vector(F, (-6*s^2 + 23, -3*s^3 + 10*s)), # 1\n", " vector(F, (-21*s^2 + 76, -5*s^3 + 19*s)), # 2\n", " vector(F, (-22*s^2 + 78, -4*s^3 + 16*s)), # 3\n", " vector(F, (-36*s^2 + 131, -19*s^3 + 68*s)), # 4\n", " vector(F, (-42*s^2 + 154, -8*s^3 + 28*s)), # 5\n", " vector(F, (-43*s^2 + 156, -7*s^3 + 25*s)), # 6\n", " vector(F, (-48*s^2 + 176, -4*s^3 + 14*s)), # 7\n", " vector(F, (-42*s^2 + 153, -23*s^3 + 82*s)), # 8\n", " vector(F, (-46*s^2 + 166, -20*s^3 + 72*s)), # 9\n", " vector(F, (-52*s^2 + 183, -3*s^3 + 12*s)), # 10\n", " vector(F, (-63*s^2 + 232, -9*s^3 + 31*s)), # 11\n", " vector(F, (-70*s^2 + 253, -17*s^3 + 62*s)), # 12\n", " vector(F, (-72*s^2 + 261, -11*s^3 + 40*s)), # 13\n", " vector(F, (-90*s^2 + 327, -23*s^3 + 82*s)), # 14\n", " vector(F, (-92*s^2 + 332, -20*s^3 + 74*s)), # 15\n", " vector(F, (-111*s^2 + 408, -43*s^3 + 153*s)), # 16\n", " vector(F, (-61*s^2 + 226, -5*s^3 + 17*s)), # 17\n", " vector(F, (-123*s^2 + 446, -17*s^3 + 61*s)), # 18\n", " vector(F, (-89*s^2 + 326, -13*s^3 + 45*s)), # 19\n", " vector(F, (-132*s^2 + 479, -19*s^3 + 68*s)), # 20\n", " vector(F, (-109*s^2 + 390, -13*s^3 + 49*s)), # 21\n", " vector(F, (-93*s^2 + 334, -19*s^3 + 71*s)), # 22\n", " vector(F, (-115*s^2 + 416, -39*s^3 + 141*s)), # 23\n", " vector(F, (-130*s^2 + 473, -33*s^3 + 118*s)), # 24\n", " vector(F, (-159*s^2 + 576, -13*s^3 + 47*s)), # 25\n", " vector(F, (-116*s^2 + 418, -6*s^3 + 22*s)), # 26\n", " vector(F, (-165*s^2 + 592, -11*s^3 + 41*s)), # 27\n", " vector(F, (-164*s^2 + 590, -34*s^3 + 126*s)), # 28\n", " vector(F, (-152*s^2 + 556, -12*s^3 + 42*s)), # 29\n", " vector(F, (-143*s^2 + 522, -23*s^3 + 83*s)), # 30\n", " vector(F, (-272*s^2 + 984, -48*s^3 + 174*s))] # 31\n", " for i in range(31):\n", " word, reduced_vect = vector_to_word(shortest[i])\n", " assert reduced_vect == vector([2*phi,0])\n", " # Compute the index of the associated surface\n", " index = 1\n", " for letter in reversed(word):\n", " if letter == \"r\":\n", " # Perform the R^-1 action on surface indices\n", " index = rinv(index)\n", " if letter == \"t\":\n", " # Perform the T^-1 action on surface indices\n", " index = tinv(index)\n", " assert index in sc_index_to_equivalence_class[i]\n", " # Check that it is indeed non-strictly shorter than our coset representative.\n", " assert F(sadd_conn_total_sort[i][1].norm()^2) >= F(shortest[i].norm()^2)" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [], "source": [ "# We use the following to help format the words in the Table 4.\n", "def string_to_free_group_element(string):\n", " G. = FreeGroup()\n", " g = G.one()\n", " for letter in string:\n", " if letter == \"R\":\n", " g = g*R\n", " else:\n", " g = g*T\n", " return g" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we compare what we found to the lengths of holonomy vectors in Table 3. \n", "\n", "We form a new table only listing the the shorter trajectories. This is Table 4 of the appendix." ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Inverse of Coset Rep Exact Vector Length of Trajectory Vector of Trajectory\n", "10 & $\\big(T^2(T^2R)^2\\big)^{-1}$ & $ \\left(-52 s^{2} + 183,\\,-3 s^{3} + 12 s\\right) $ & 111.521 & (111.138, 9.23305) \\\\\n", "16 & $\\big(TR^3T^3(TR^3)^2TR\\big)^{-1}$ & $ \\left(-62 s^{2} + 227,\\,-89 s^{3} + 326 s\\right) $ & 277.350 & (141.318, 238.647) \\\\\n", "17 & $\\big(T^2(T^2R)^2R^2\\big)^{-1}$ & $ \\left(-48 s^{2} + 174,\\,-34 s^{3} + 126 s\\right) $ & 142.196 & (107.666, 92.8855) \\\\\n", "18 & $\\big(T^2RT(RTR^2)^2\\big)^{-1}$ & $ \\left(-88 s^{2} + 319,\\,-75 s^{3} + 272 s\\right) $ & 279.518 & (197.387, 197.910) \\\\\n", "19 & $\\big(T^2RT(TR^3)^3\\big)^{-1}$ & $ \\left(-64 s^{2} + 234,\\,-54 s^{3} + 198 s\\right) $ & 205.478 & (145.554, 145.035) \\\\\n", "20 & $\\big(T(TR)^2R(RT)^2R^2\\big)^{-1}$ & $ \\left(-94 s^{2} + 341,\\,-81 s^{3} + 294 s\\right) $ & 300.613 & (211.095, 214.025) \\\\\n", "21 & $\\big(T^2RT^3R^3TR\\big)^{-1}$ & $ \\left(-109 s^{2} + 390,\\,-13 s^{3} + 49 s\\right) $ & 242.130 & (239.366, 36.4832) \\\\\n", "22 & $\\big(TRT^3(TR)^2R^2\\big)^{-1}$ & $ \\left(-93 s^{2} + 334,\\,-19 s^{3} + 71 s\\right) $ & 212.102 & (205.477, 52.5981) \\\\\n", "23 & $\\big(T(R^2TR)^4R^2T^2R^2\\big)^{-1}$ & $ \\left(-66 s^{2} + 239,\\,-89 s^{3} + 322 s\\right) $ & 276.716 & (147.790, 233.944) \\\\\n", "24 & $\\big((TR)^2RT^2R^3TR\\big)^{-1}$ & $ \\left(-83 s^{2} + 302,\\,-91 s^{3} + 331 s\\right) $ & 305.441 & (187.297, 241.275) \\\\\n", "25 & $\\big(T^2(T^2R^3)^2TR^2\\big)^{-1}$ & $ \\left(-159 s^{2} + 576,\\,-13 s^{3} + 47 s\\right) $ & 357.899 & (356.267, 34.1320) \\\\\n", "26 & $\\big(T^6R^3T^2R^2\\big)^{-1}$ & $ \\left(-116 s^{2} + 418,\\,-6 s^{3} + 22 s\\right) $ & 258.195 & (257.692, 16.1150) \\\\\n", "27 & $\\big(T^2(T^2R)^2TR^3\\big)^{-1}$ & $ \\left(-165 s^{2} + 592,\\,-11 s^{3} + 41 s\\right) $ & 365.237 & (363.976, 30.3278) \\\\\n", "28 & $\\big(TRT^2(T^2R)^2R^2\\big)^{-1}$ & $ \\left(-164 s^{2} + 590,\\,-34 s^{3} + 126 s\\right) $ & 375.042 & (363.358, 92.8855) \\\\\n", "29 & $\\big(T^3(TR)^2R^2T^2R^3\\big)^{-1}$ & $ \\left(-117 s^{2} + 424,\\,-85 s^{3} + 311 s\\right) $ & 347.229 & (262.310, 227.512) \\\\\n", "30 & $\\big(T^2R^2(TR^3T)^2R^3\\big)^{-1}$ & $ \\left(-143 s^{2} + 522,\\,-23 s^{3} + 83 s\\right) $ & 329.919 & (324.379, 60.2066) \\\\\n", "31 & $\\big(T(TR^3TR)^2RTR^2\\big)^{-1}$ & $ \\left(-272 s^{2} + 984,\\,-48 s^{3} + 174 s\\right) $ & 621.137 & (608.105, 126.569) \\\\\n" ] } ], "source": [ "shortest_table = {}\n", "for i in range(31):\n", " if shortest[i] is not None:\n", " if F(shortest[i].norm()^2) < F(sadd_conn_total_sort[i][1].norm()^2):\n", " v = shortest[i]\n", " word = vector_to_word(v)[0]\n", " coset_rep_inv = string_to_free_group_element(\n", " \"\".join(reversed(word.replace(\"r\",\"R\").replace(\"t\",\"T\"))))\n", " vect = preferred_vect(v)\n", " shortest_table[i] = (coset_rep_inv, vect, vect.norm().n(digits=6), \n", " vect.n(digits=6))\n", "print('', 'Inverse of Coset Rep','Exact Vector', 'Length of Trajectory','Vector of Trajectory')\n", "for i,data in shortest_table.items():\n", " print(str(i+1) + ' & ' + \\\n", " '$\\\\big(' + str(data[0]).replace('*','') + '\\\\big)^{-1}$ & ' + \\\n", " '$' + latex(data[1]) + '$ & ' + \\\n", " str(data[2]) + ' & ' + \\\n", " str(data[3]) + ' \\\\\\\\')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we check our combinatorial length formula for our new list of saddle connections." ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 0 mistakes in the formula.\n" ] } ], "source": [ "error_count = 0\n", "for i,data in shortest_table.items():\n", " vect = data[1]\n", " sc = SaddleConnection(Pi5, (0,0), vect)\n", " traj = sc.trajectory()\n", " l = combinatorial_length_of_long_sc(sc.holonomy())\n", " if traj.combinatorial_length() != l:\n", " print(\"Saddle connection %s predicted combinatorial length is %s, but the actual length is %s.\" \n", " % (i,l,traj.combinatorial_length()))\n", "print(\"Found %s mistakes in the formula.\" % error_count)" ] } ], "metadata": { "kernelspec": { "display_name": "SageMath 9.0", "language": "sage", "name": "sagemath" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 2 }