On Aug 14, 7:54 am, Nathan Dunfield <[email protected]> wrote:
> You can find code I wrote to compute the Alexander polynomial using a
> mix of Sage and Magma here:
>
> http://dunfield.info/fibered-faces/
>
> If you don't have Magma, it shouldn't be too hard to port what's in
> "alexander.magma" into Sage, and indeed this would be a worthwhile
> project.
I just realized that the code I referred to above used the old Python<-
>SnapPea inverface, not SnapPy. Below is a code snippet for using
"alexander.magma" with Sage and SnapPy. An usage example:
sage: attach alexander.py
sage: M = snappy.Manifold("8^2_4")
sage: alexander_polynomial(M)
a^5 + 2*a^4 - 2*a^3*b + a^2*b^2 + a^3 - 2*a^2*b + 2*a*b^2 + b^2
Best,
Nathan
----Contents of "alexander.py"-----------------------------
import os, sys, re, string, snappy
#------------------------------------------------
#
# Computing Alexander polynomials via Magma
#
#------------------------------------------------
magma.load("alexander.magma")
magma.eval("""
DeconstructPolynomial := function(p)
return [Exponents(m) : m in Monomials(p)], Coefficients(p);
end function;
""")
def sage_poly_from_magma(poly):
exponents, coeffs = poly.DeconstructPolynomial(nvals=2)
exponents, coeffs = exponents.sage(), coeffs.sage()
n = len(exponents[0])
R = PolynomialRing(Rationals(), list(string.lowercase[:n]))
gens = R.gens()
def make_term(exp, c):
ans = c
for i in range(len(exp)):
ans = ans * gens[i]**exp[i]
return ans
return sum(
[ make_term(exponents[i], coeffs[i]) for i in range(len
(exponents))])
def alexander_polynomial(manifold):
G = manifold.fundamental_group()
if len(G.generators()) == 1 and len(G.relators()) == 0:
return PolynomialRing(ZZ, "a")(1)
G = magma(manifold.fundamental_group())
return sage_poly_from_magma(G.AlexanderPolynomial())
--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sage-support
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---