Computing fields

In [1]:
import snappy
M = snappy.Manifold('9_42')
M.num_tetrahedra()
Out[1]:
5
In [2]:
M.tetrahedra_shapes('rect')
Out[2]:
[-0.0498076371809592 + 0.754729041075072*I,
 2.08706156652033 + 1.31923328094554*I,
 0.456479061953074 + 0.453623389764418*I,
 -0.102214228622113 + 1.09531892327087*I,
 -0.0498076371809579 + 0.754729041075070*I]
In [3]:
tf = M.tetrahedra_field_gens()
In [4]:
K, aan, shapes = tf.find_field(prec=200, degree=20, optimize=True)
In [5]:
K
Out[5]:
Number Field in z with defining polynomial x^5 - x^4 - 2*x^2 + 2*x - 1
In [6]:
shapes
Out[6]:
[-1/2*z^4 + 1/2*z^3 + 1/2*z^2 + z - 1/2,
 -z^4 + z^2 + 2*z + 1,
 z,
 -z^4 + z^3 + 2*z - 1,
 -1/2*z^4 + 1/2*z^3 + 1/2*z^2 + z - 1/2]
In [7]:
place = aan.place(prec=200)
In [8]:
[place(z) for z in shapes]
Out[8]:
[-0.049807637180958933670553104753007962624155224030283158702630 + 0.75472904107507083893231585935228435161174929986911092933248*I,
 2.0870615665203293888960480975648816961460415544550049173450 + 1.3192332809455434262111739588962863117557536655389697249524*I,
 0.45647906195307436043775384617177443745999303757075077391923 + 0.45362338976441924989886653252353898870681697349905885964335*I,
 -0.10221422862211434438479951822915082087107068943290978804726 + 1.0953189232708698128976542173394371304890771220070452651322*I,
 -0.049807637180958933670553104753007962624155224030283158702630 + 0.75472904107507083893231585935228435161174929986911092933248*I]
In [9]:
vector([place(z) for z in shapes]) - vector(M.tetrahedra_shapes('rect', bits_prec=200))
Out[9]:
(5.0561999132621776370545520436963509454795798870859482956447e-61, 0.00000000000000000000000000000000000000000000000000000000000, 0.00000000000000000000000000000000000000000000000000000000000, 1.4001784375187568841074144121005279541328067379622626049478e-60, 5.0561999132621776370545520436963509454795798870859482956447e-61)
In [10]:
G = M.fundamental_group()
In [11]:
G
Out[11]:
Generators:
   a,b
Relators:
   aaaabbABBBAbb
In [12]:
G.SL2C('a')
Out[12]:
[-0.821577951417641 - 0.131699294279912*I -0.611297239409496 + 0.177002658317521*I]
[ 0.611297239409486 - 0.177002658317519*I -0.821577951417663 - 0.131699294279911*I]
In [13]:
hf = M.holonomy_matrix_entries()
In [14]:
hf.find_field(200, 20)
Out[14]:
(Number Field in z with defining polynomial x^10 - 9/4*x^8 + 37/16*x^6 - 11/8*x^4 + 7/16*x^2 - 1/16,
 <ApproxAN: -0.6112972394094834 + 0.17700265831752082*I>,
 [16*z^8 - 20*z^6 + 9*z^4 - z^2 - 1,
  z,
  -z,
  16*z^8 - 20*z^6 + 9*z^4 - z^2 - 1,
  16*z^8 - 20*z^6 + 9*z^4 - z^2 - 1,
  -32*z^9 + 88*z^7 - 94*z^5 + 53*z^3 - 16*z,
  z,
  -32*z^8 + 56*z^6 - 46*z^4 + 19*z^2 - 2])

Ptolemy coordinates and other representations

In [15]:
M = snappy.Manifold('9_42')
In [16]:
p = M.ptolemy_variety(2, obstruction_class='all')
In [17]:
sols = p.retrieve_solutions()
len(sols)
Trying to retrieve solutions from http://ptolemy.unhyperbolic.org/data/pgl2/LinkExteriors/05_tetrahedra/9_42__sl2_c0.magma_out ...
Parsing...
Trying to retrieve solutions from http://ptolemy.unhyperbolic.org/data/pgl2/LinkExteriors/05_tetrahedra/9_42__sl2_c1.magma_out ...
Parsing...
Out[17]:
2
In [18]:
sol = sols[1][0]
In [19]:
sol['c_1100_2']
Out[19]:
Mod(1/2*x^4 - x^3 - 3/2*x^2 + 3/2*x + 1, x^5 - 2*x^4 - 3*x^3 + 5*x^2 + 2*x - 4)
In [20]:
sol.complex_volume_numerical()
Out[20]:
[2.28256541272287 E-14 - 0.737093975081899*I, -4.05686022423682 - 0.396409091246282*I, 4.05686022423682 - 0.396409091246282*I, 1.37361777135409 - 0.0575109546368828*I, -1.37361777135409 - 0.0575109546368828*I]
In [21]:
direct_sols = p.compute_solutions(engine='sage')

Finding a Dehn surgery description

In [22]:
C = snappy.CubicalOrientableClosedCensus[0]
C.volume()
Out[22]:
8.61241520146162
In [23]:
C.length_spectrum(1.5)
Out[23]:
mult length                           topology      parity
2    0.650499699847517 + 1.99338703094258*I circle        orientation-preserving
2    0.888244428690885 - 2.74173865461261*I circle        orientation-preserving
1    1.06127506188915 - 1.57079632687617*I circle        orientation-preserving
1    1.30099939969908 - 2.29641124529539*I circle        orientation-preserving
2    1.39968675337251 - 2.57045230735293*I circle        orientation-preserving
In [24]:
C.dual_curves()
Out[24]:
[  0: orientation-preserving curve of length 0.650499699848421 + 1.99338703094274*I,
   1: orientation-preserving curve of length 0.650499699848421 + 1.99338703094274*I,
   2: orientation-preserving curve of length 0.888244428690910 - 2.74173865461260*I,
   3: orientation-preserving curve of length 0.888244428690911 - 2.74173865461259*I,
   4: orientation-preserving curve of length 1.06127506190504 - 1.57079632679490*I,
   5: orientation-preserving curve of length 1.30099939969685 - 2.29641124529410*I,
   6: orientation-preserving curve of length 1.30099939969684 - 2.29641124529411*I,
   7: orientation-preserving curve of length 1.39968675337423 - 2.57045230734446*I,
   8: orientation-preserving curve of length 1.77648885738182 + 0.799707997954394*I,
   9: orientation-preserving curve of length 1.77648885738182 + 0.799707997954394*I,
  10: orientation-preserving curve of length 1.77648885738182 + 0.799707997954398*I,
  11: orientation-preserving curve of length 1.95149909954526 - 0.303024214351363*I,
  12: orientation-preserving curve of length 2.10736692656005 - 2.41433989265159*I,
  13: orientation-preserving curve of length 2.12255012381007 + 3.14159265358979*I,
  14: orientation-preserving curve of length 2.33947207059892 + 3.14159265358979*I,
  15: orientation-preserving curve of length 2.60199879939368 - 1.69036281659137*I,
  16: orientation-preserving curve of length 2.64165585710440 - 1.26582374901036*I,
  17: orientation-preserving curve of length 2.77947330292213 + 0.482508655240562*I,
  18: orientation-preserving curve of length 2.95744687707172 + 2.31613672015368*I,
  19: orientation-preserving curve of length 2.95744687707173 + 2.31613672015365*I,
  20: orientation-preserving curve of length 3.04745463358726 - 2.45501524709417*I,
  21: orientation-preserving curve of length 3.04745463358722 - 2.45501524709425*I,
  22: orientation-preserving curve of length 3.18382518571511 - 1.57079632679490*I,
  23: orientation-preserving curve of length 3.39233761953915 + 0.343052257785730*I,
  24: orientation-preserving curve of length 3.44485419423751 + 2.92720873832218*I,
  25: orientation-preserving curve of length 4.06649945160046 - 0.555373658431228*I]
In [25]:
C1 = C.drill(0)
C1.identify()
Out[25]:
[]
In [26]:
C2 = C1.drill(0)
C2.identify()
Out[26]:
[]
In [27]:
C3 = C2.drill(0)
C4 = C3.drill(0)
C4.identify()
Out[27]:
[L14n63250(0,0)(0,0)(0,0)(0,0)]
In [28]:
C4 = C4.filled_triangulation()
E = snappy.Manifold('L14n63250')
C4.is_isometric_to(E, True)
Out[28]:
[0 -> 2   1 -> 0  2 -> 3  3 -> 1
 [-2 -1]  [2 1]   [1  0]  [-1 0]
 [-3 -1]  [3 1]   [2 -1]  [-2 1]
 Does not extend to link, 0 -> 0  1 -> 2   2 -> 1  3 -> 3
 [2 1]   [-2 -1]  [1  0]  [-1 0]
 [3 1]   [-3 -1]  [2 -1]  [-2 1]
 Does not extend to link, 0 -> 2  1 -> 0   2 -> 3  3 -> 1
 [2 1]   [-2 -1]  [-1 0]  [1  0]
 [3 1]   [-3 -1]  [-2 1]  [2 -1]
 Does not extend to link, 0 -> 0   1 -> 2  2 -> 1  3 -> 3
 [-2 -1]  [2 1]   [-1 0]  [1  0]
 [-3 -1]  [3 1]   [-2 1]  [2 -1]
 Does not extend to link]
In [29]:
E.dehn_fill([(2, 3), (1, 2), (2, 3), (1, 2)])
E.is_isometric_to(C)
Out[29]:
True