diff --git a/as_covers/as_reduction.sage b/as_covers/as_reduction.sage index a76555d..54c9168 100644 --- a/as_covers/as_reduction.sage +++ b/as_covers/as_reduction.sage @@ -13,6 +13,8 @@ def as_reduction(AS, fct): denom_norm = prod(as_function(AS, fct2).group_action(g) for g in AS.group.elts if g != AS.group.one) fct1 = Rxyz(fct1*denom_norm.function) fct2 = Rxyz(fct2*denom_norm.function) + f_super = Rxyz(AS.quotient.polynomial) + m_super = AS.quotient.exponent if fct2 != 1: return as_reduction(AS, fct1)/as_reduction(AS, fct2) @@ -21,10 +23,10 @@ def as_reduction(AS, fct): for a in fct1.monomials(): degrees_zi = [a.degree(z[i]) for i in range(n)] d_div = [a.degree(z[i])//p for i in range(n)] - if d_div != n*[0]: + if d_div != n*[0] or a.degree(y) >= m_super: change = 1 d_rem = [a.degree(z[i])%p for i in range(n)] - monomial = fct1.monomial_coefficient(a)*x^(a.degree(x))*y^(a.degree(y))*prod(z[i]^(d_rem[i]) for i in range(n))*prod((z[i]+AS.rhs[i])^(d_div[i]) for i in range(n)) + monomial = fct1.monomial_coefficient(a)*x^(a.degree(x))*y^(a.degree(y)%m_super)*f_super^(a.degree(y)//m_super)*prod(z[i]^(d_rem[i]) for i in range(n))*prod((z[i]+AS.rhs[i])^(d_div[i]) for i in range(n)) result += RxyzQ(monomial) if change == 0: