︠6c4bafe1-1dea-42bc-8508-1981293bc85e︠ load('http://math.uchicago.edu/~ronen/sage/triangulated_surface.sage') #Create an L-shaped table of discriminant disc disc = 12 [TS,K,mD,pl] = LTable(disc) show(TS.show(),aspect_ratio=1,title='TS', frame=True) ︡8c1b6cb9-e429-409f-8551-027c12d7fbfc︡{"once":false,"file":{"show":true,"uuid":"b1152651-704b-4ea0-93e0-7a01aa6c3800","filename":"/projects/4a5f0542-5873-4eed-a85c-a18c706e8bcd/.sage/temp/compute18dc0/3048/tmp_NX66Yb.svg"}}︡ ︠9e87396f-dcf8-49d2-ae6d-a25dc4349780︠ #One can simply multiply TS by a matrix in GL_2(K) mat = matrix( [[ 2,1 ], [ 1,1 ]]) TSn = TS*mat show(TSn.show(),aspect_ratio=1,title='TSn') ︡1098686c-0046-4af5-b9c6-3ddfb0add3d4︡{"once":false,"file":{"show":true,"uuid":"21fd23dd-ba89-4fb9-942c-fead23aecbf2","filename":"/projects/4a5f0542-5873-4eed-a85c-a18c706e8bcd/.sage/temp/compute18dc0/3048/tmp_vqpc3c.svg"}}︡ ︠339e872c-fa37-43c2-9b13-42703417ebbc︠ #One can easily give a delaunay triangulation of TSn TSn = TSn.delaunay() show(TSn.show(),aspect_ratio=1,title='Delaunay triangulation of TSn') ︡2da9ed26-cc87-4f41-b9b9-c3756a7534e6︡{"once":false,"file":{"show":true,"uuid":"f1ac85ba-d9c9-4b54-b5ea-854acbb76a20","filename":"/projects/4a5f0542-5873-4eed-a85c-a18c706e8bcd/.sage/temp/compute18dc0/3048/tmp_N986vL.svg"}}︡ ︠21ebaa97-e51a-4673-b260-da27251476bc︠ #Compute fundamental domain and generators for SL(TS) by exploring the well-girthed spine print "\n\n ===== Exploring the well-girthed spine ===== \n\n" load('http://math.uchicago.edu/~ronen/sage/wg_spine.sage') wg = wg_spine(TS) wg.explore_spine() print "\n\n ===== Generators for SL(TS) ====== \n" for m in wg.SL_gens: print m,"," print "\n\n ===== Fundamental domain vertices for SL(TS) ====== \n" print wg.fundamental_domain_verts() ︡edcaeb1f-ddb0-442c-8337-806031c3293a︡{"stdout":"\n\n ===== Exploring the well-girthed spine ===== \n\n\n"}︡{"stdout":"[wg_spine.explore_wg_spine] Warning: TS appears to have multiple Delaunay triangulations. This may cause problems. If TS is an L-shaped table, you should be fine. You can also try replacing TS with TS*mat for a matrix mat.\nVerts: "}︡{"stdout":" 1 Edges: 0 Open edges: 3 SL gens: 0 Depth: "}︡{"stdout":"1.53565945799\nVerts: "}︡{"stdout":" 2 Edges: 1 Open edges: 4 SL gens: 0 Depth: 1.0\nVerts: "}︡{"stdout":" 3 Edges: 2 Open edges: 5 SL gens: 0 Depth: 1.38566416984\nVerts: "}︡{"stdout":" 3 Edges: 3 Open edges: 3 SL gens: 1 Depth: 1.53565945799\nVerts: "}︡{"stdout":" 3 Edges: 4 Open edges: 1 SL gens: 2 Depth: 5.52500506126\n ======== FINISHED ========== "}︡{"stdout":"\nVerts: 3 Edges: 5 Open edges: 0 SL gens: 3\n"}︡{"stdout":"\n\n ===== Generators for SL(TS) ====== \n\n"}︡{"stdout":"[ 1 0]\n[-1/6*mD - 1 1] ,\n[1 3]\n[0 1] ,\n[ mD + 3 -2*mD - 3]\n[2/3*mD + 2 -mD - 3] ,\n"}︡{"stdout":"\n\n ===== Fundamental domain vertices for SL(TS) ====== \n\n"}︡{"stdout":"[-1/2*mD, 1/2*mD - 3, 0, -1/2*mD + 3, +Infinity]\n"}︡ ︠556baa64-e98c-41e7-ac89-b6e7bce95bdc︠ wg.spine.show(title='Well-girthed Spine') # display a graph isomorphic to the well-girthed spine show(wg.draw_spine_H(),title='Fundamental domain for SL(TS)') # display a lift of the spine and a fundamental domain in H ︡aa75d27e-89ca-48c2-bdb8-868a38a45eeb︡{"once":false,"file":{"show":true,"uuid":"0f5e56c2-23be-430e-bb8b-45664f77fd70","filename":"/projects/4a5f0542-5873-4eed-a85c-a18c706e8bcd/.sage/temp/compute18dc0/3048/tmp_muXA8N.svg"}}︡{"once":false,"file":{"show":true,"uuid":"6b7f996e-10de-4432-abe2-5619a5f0c9c3","filename":"/projects/4a5f0542-5873-4eed-a85c-a18c706e8bcd/.sage/temp/compute18dc0/3048/tmp_gBlAqc.svg"}}︡ ︠1e770a48-f715-49f9-aa84-a56c0f64c84a︠