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)