Example #1
0
def alexander_polynomial(braid, t=t, modulus=None, seifert=False):
    """ Calculate Alexander Polynomial."""
    if seifert:
        M = Matrix(seifert_matrix(braid).tolist())
        if modulus is None:
            apoly = M - t*M.transpose()
        else:
            apoly = (M - t*M.transpose()) % modulus
        apoly = apoly.det()
    else:
        deleted = False
        h = generators(braid)
        M = alexander_matrix(braid, t, modulus)
        for i in range(len(braid)):
            if h[i] == 0:
                deleted = True
                M.row_del(i)
                M.col_del(i)
                break
        if not deleted:
            M.row_del(-1)
            M.col_del(-1)
        apoly = M.det()
    return _normalize_apoly(apoly)