as_reduction fixed to reduce also powers of y

This commit is contained in:
jgarnek 2024-06-13 11:11:28 +00:00
parent 63c189e753
commit 73372ac15d

View File

@ -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) 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) fct1 = Rxyz(fct1*denom_norm.function)
fct2 = Rxyz(fct2*denom_norm.function) fct2 = Rxyz(fct2*denom_norm.function)
f_super = Rxyz(AS.quotient.polynomial)
m_super = AS.quotient.exponent
if fct2 != 1: if fct2 != 1:
return as_reduction(AS, fct1)/as_reduction(AS, fct2) return as_reduction(AS, fct1)/as_reduction(AS, fct2)
@ -21,10 +23,10 @@ def as_reduction(AS, fct):
for a in fct1.monomials(): for a in fct1.monomials():
degrees_zi = [a.degree(z[i]) for i in range(n)] degrees_zi = [a.degree(z[i]) for i in range(n)]
d_div = [a.degree(z[i])//p 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 change = 1
d_rem = [a.degree(z[i])%p for i in range(n)] 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) result += RxyzQ(monomial)
if change == 0: if change == 0: