Closed unhyperbolic closed 3 years ago
Another interesting thing: once M.high_precision()
has failed with the above error, quitting ipython
results in a segfault.
For me, the failure of
from spherogram.codecs import DTcodec
DTcodec([(20, 22, 24, 26, 28, 10, 8, 6, 4, 2, 18, 16, 14, 12)])
is deterministic, specifically it always fails.
Looking at picture for braid(2)
in PLink
, I see that it has a trivial twist that can be simplified by a Reidemeister I move. I wonder it DT notation, which is missing 1 extra bit per crossing to really specify the planar embedding, doesn't correctly handle this situation. Or in any event our implementation does not. A simpler example with the same traceback is
DTcodec([(2,6,8,4)])
However, if we specify the flip bits, as given by PLink
, I get no error:
DTcodec([(2,6,8,4)], flips=[0,1,1,0])
It must be some issue with how snappy.Triangulation
is storing and/or transferring the DT code. In your full example, braid(n)
will know the augmented flipped version and should hand that over.
Thanks. I checked in https://github.com/3-manifolds/SnapPy/commit/40c4909030c5ba22bf093ef35cf7204661cdb079 that fixes our original example.
For a non-prime knot, the DT notation is unaltered when flipping one of the components. I guess a trivial twist can be regarded as an extreme form of this.
Fixed by 40c4909.
The following code
or
sometimes succeeds and sometimes fails when trying to unpack
marked_arc[:2]
inDTFatGraph.bridge
stack.Background: The above DT codes were constructed as follows. Saul and I were trying to construct a family of two bridge knots with
which runs into the above problem when calling
HP._set_DTcode(DTcodec(DT))
to transfer the DT code from the low to the high precision manifold.