Hi All,

Code:

sage: bits=3
sage: 
sage: k=GF(2^bits,'a')
sage: P=PolynomialRing(k,1+bits+bits+bits-1+(1<<bits),['y'] + 
['a{0}'.format(g) for g in xrange(bits)] + ['b{0}'.format(g) for g in 
xrange(bits)] + ['c{0}'.format(g) for g in xrange(1,bits)] + 
['p{0}'.format(g) for g in xrange(1<<bits)])
sage: 
sage: A1=sum([P('(a{0})*y^{0}'.format(g)) for g in xrange(bits)])
sage: A2=sum([P('(b{0})*y^{0}'.format(g)) for g in xrange(bits)])
sage: A3=sum([P('(c{0})*y^{0}'.format(g)) for g in xrange(1,bits)])
sage: pol = sum([P('(p{0})*y^{0}'.format(g)) for g in xrange(1<<bits)])
sage: 
sage: pol=pol.subs({P("y"):A2})
sage: pol=A1.subs({P("y"):pol})
sage: pol=pol+A3
sage: 
sage: print "pol = {0}".format(pol)
sage: print "~"*20
sage: pol=pol.mod(P("y^{0}+y".format(1<<bits)))
sage: print "pol = {0}".format(pol)

Output: 
pol = y^28*a2*b2^14*p7^2 + y^26*a2*b1^2*b2^12*p7^2 + 
y^24*a2*b1^4*b2^10*p7^2 + y^24*a2*b0^2*b2^12*p7^2 + y^24*a2*b2^12*p6^2 + 
y^22*a2*b1^6*b2^8*p7^2 + y^20*a2*b1^8*b2^6*p7^2 + 
y^20*a2*b0^2*b1^4*b2^8*p7^2 + y^20*a2*b0^4*b2^10*p7^2 + 
y^20*a2*b1^4*b2^8*p6^2 + y^18*a2*b1^10*b2^4*p7^2 + 
y^18*a2*b0^4*b1^2*b2^8*p7^2 + y^20*a2*b2^10*p5^2 + y^16*a2*b1^12*b2^2*p7^2 
+ y^16*a2*b0^2*b1^8*b2^4*p7^2 + y^16*a2*b0^6*b2^8*p7^2 + 
y^18*a2*b1^2*b2^8*p5^2 + y^16*a2*b1^8*b2^4*p6^2 + y^16*a2*b0^4*b2^8*p6^2 + 
y^14*a2*b1^14*p7^2 + y^16*a2*b0^2*b2^8*p5^2 + y^12*a2*b0^2*b1^12*p7^2 + 
y^12*a2*b0^4*b1^8*b2^2*p7^2 + y^12*a2*b0^8*b2^6*p7^2 + y^16*a2*b2^8*p4^2 + 
y^12*a2*b1^12*p6^2 + y^10*a2*b0^4*b1^10*p7^2 + y^10*a2*b0^8*b1^2*b2^4*p7^2 
+ y^12*a2*b1^8*b2^2*p5^2 + y^8*a2*b0^6*b1^8*p7^2 + 
y^8*a2*b0^8*b1^4*b2^2*p7^2 + y^8*a2*b0^10*b2^4*p7^2 + y^10*a2*b1^10*p5^2 + 
y^8*a2*b0^4*b1^8*p6^2 + y^8*a2*b0^8*b2^4*p6^2 + y^14*a1*b2^7*p7 + 
y^6*a2*b0^8*b1^6*p7^2 + y^13*a1*b1*b2^6*p7 + y^12*a2*b2^6*p3^2 + 
y^8*a2*b0^2*b1^8*p5^2 + y^12*a1*b1^2*b2^5*p7 + y^12*a1*b0*b2^6*p7 + 
y^4*a2*b0^10*b1^4*p7^2 + y^4*a2*b0^12*b2^2*p7^2 + y^12*a1*b2^6*p6 + 
y^11*a1*b1^3*b2^4*p7 + y^10*a2*b1^2*b2^4*p3^2 + y^8*a2*b1^8*p4^2 + 
y^4*a2*b0^8*b1^4*p6^2 + y^10*a1*b1^4*b2^3*p7 + y^10*a1*b0*b1^2*b2^4*p7 + 
y^10*a1*b0^2*b2^5*p7 + y^2*a2*b0^12*b1^2*p7^2 + y^10*a1*b1^2*b2^4*p6 + 
y^9*a1*b1^5*b2^2*p7 + y^9*a1*b0^2*b1*b2^4*p7 + y^8*a2*b1^4*b2^2*p3^2 + 
y^8*a2*b0^2*b2^4*p3^2 + y^10*a1*b2^5*p5 + y^4*a2*b0^8*b2^2*p5^2 + 
y^8*a1*b1^6*b2*p7 + y^8*a1*b0*b1^4*b2^2*p7 + y^8*a1*b0^3*b2^4*p7 + 
a2*b0^14*p7^2 + y^9*a1*b1*b2^4*p5 + y^8*a1*b1^4*b2^2*p6 + 
y^8*a1*b0^2*b2^4*p6 + y^7*a1*b1^7*p7 + y^8*a2*b2^4*p2^2 + y^6*a2*b1^6*p3^2 
+ y^8*a1*b0*b2^4*p5 + y^2*a2*b0^8*b1^2*p5^2 + a2*b0^12*p6^2 + 
y^6*a1*b0*b1^6*p7 + y^6*a1*b0^2*b1^4*b2*p7 + y^6*a1*b0^4*b2^3*p7 + 
y^8*a1*b2^4*p4 + y^6*a1*b1^6*p6 + y^5*a1*b0^2*b1^5*p7 + 
y^5*a1*b0^4*b1*b2^2*p7 + y^4*a2*b0^2*b1^4*p3^2 + y^4*a2*b0^4*b2^2*p3^2 + 
y^6*a1*b1^4*b2*p5 + a2*b0^10*p5^2 + y^4*a1*b0^3*b1^4*p7 + 
y^4*a1*b0^4*b1^2*b2*p7 + y^4*a1*b0^5*b2^2*p7 + y^5*a1*b1^5*p5 + 
y^4*a1*b0^2*b1^4*p6 + y^4*a1*b0^4*b2^2*p6 + y^3*a1*b0^4*b1^3*p7 + 
y^4*a2*b1^4*p2^2 + y^6*a1*b2^3*p3 + y^2*a2*b0^4*b1^2*p3^2 + a2*b0^8*p4^2 + 
y^4*a1*b0*b1^4*p5 + y^2*a1*b0^5*b1^2*p7 + y^2*a1*b0^6*b2*p7 + 
y^5*a1*b1*b2^2*p3 + y^4*a1*b1^4*p4 + y^2*a1*b0^4*b1^2*p6 + y*a1*b0^6*b1*p7 
+ y^4*a2*b2^2*p1^2 + y^4*a1*b1^2*b2*p3 + y^4*a1*b0*b2^2*p3 + a2*b0^6*p3^2 + 
y^2*a1*b0^4*b2*p5 + a1*b0^7*p7 + y^4*a1*b2^2*p2 + y^3*a1*b1^3*p3 + 
y*a1*b0^4*b1*p5 + a1*b0^6*p6 + y^2*a2*b1^2*p1^2 + a2*b0^4*p2^2 + 
y^2*a1*b0*b1^2*p3 + y^2*a1*b0^2*b2*p3 + a1*b0^5*p5 + y^2*a1*b1^2*p2 + 
y*a1*b0^2*b1*p3 + a1*b0^4*p4 + y^2*a1*b2*p1 + a2*b0^2*p1^2 + a1*b0^3*p3 + 
y*a1*b1*p1 + a1*b0^2*p2 + y^2*c2 + a2*p0^2 + a1*b0*p1 + y*c1 + a1*p0 + a0
~~~~~~~~~~~~~~~~~~~~
pol = y^7*a2*b1^14*p7^2 + y^7*a2*b2^14*p7^2 + y^10*a2*b1^10*p5^2 + 
y^8*a2*b0^4*b1^8*p6^2 + y^8*a2*b0^8*b2^4*p6^2 + y^14*a1*b2^7*p7 + 
y^6*a2*b0^8*b1^6*p7^2 + y^6*a2*b1^8*b2^6*p7^2 + y^6*a2*b0^2*b1^4*b2^8*p7^2 
+ y^6*a2*b0^4*b2^10*p7^2 + y^9*a2*b0^2*b2^8*p5^2 + y^13*a1*b1*b2^6*p7 + 
y^5*a2*b0^2*b1^12*p7^2 + y^5*a2*b0^4*b1^8*b2^2*p7^2 + y^5*a2*b0^8*b2^6*p7^2 
+ y^5*a2*b1^2*b2^12*p7^2 + y^12*a2*b2^6*p3^2 + y^8*a2*b0^2*b1^8*p5^2 + 
y^6*a2*b1^4*b2^8*p6^2 + y^12*a1*b1^2*b2^5*p7 + y^12*a1*b0*b2^6*p7 + 
y^4*a2*b0^10*b1^4*p7^2 + y^4*a2*b0^12*b2^2*p7^2 + y^4*a2*b1^10*b2^4*p7^2 + 
y^4*a2*b0^4*b1^2*b2^8*p7^2 + y^9*a2*b2^8*p4^2 + y^12*a1*b2^6*p6 + 
y^5*a2*b1^12*p6^2 + y^11*a1*b1^3*b2^4*p7 + y^3*a2*b0^4*b1^10*p7^2 + 
y^3*a2*b0^8*b1^2*b2^4*p7^2 + y^3*a2*b1^4*b2^10*p7^2 + 
y^3*a2*b0^2*b2^12*p7^2 + y^10*a2*b1^2*b2^4*p3^2 + y^8*a2*b1^8*p4^2 + 
y^6*a2*b2^10*p5^2 + y^4*a2*b0^8*b1^4*p6^2 + y^10*a1*b1^4*b2^3*p7 + 
y^10*a1*b0*b1^2*b2^4*p7 + y^10*a1*b0^2*b2^5*p7 + y^2*a2*b0^12*b1^2*p7^2 + 
y^2*a2*b1^12*b2^2*p7^2 + y^2*a2*b0^2*b1^8*b2^4*p7^2 + y^2*a2*b0^6*b2^8*p7^2 
+ y^5*a2*b1^8*b2^2*p5^2 + y^10*a1*b1^2*b2^4*p6 + y^3*a2*b2^12*p6^2 + 
y^9*a1*b1^5*b2^2*p7 + y^9*a1*b0^2*b1*b2^4*p7 + y*a2*b0^6*b1^8*p7^2 + 
y*a2*b0^8*b1^4*b2^2*p7^2 + y*a2*b0^10*b2^4*p7^2 + y*a2*b1^6*b2^8*p7^2 + 
y^8*a2*b1^4*b2^2*p3^2 + y^8*a2*b0^2*b2^4*p3^2 + y^10*a1*b2^5*p5 + 
y^4*a2*b0^8*b2^2*p5^2 + y^4*a2*b1^2*b2^8*p5^2 + y^2*a2*b1^8*b2^4*p6^2 + 
y^2*a2*b0^4*b2^8*p6^2 + y^8*a1*b1^6*b2*p7 + y^8*a1*b0*b1^4*b2^2*p7 + 
y^8*a1*b0^3*b2^4*p7 + a2*b0^14*p7^2 + y^9*a1*b1*b2^4*p5 + 
y^8*a1*b1^4*b2^2*p6 + y^8*a1*b0^2*b2^4*p6 + y^7*a1*b1^7*p7 + 
y^8*a2*b2^4*p2^2 + y^6*a2*b1^6*p3^2 + y^8*a1*b0*b2^4*p5 + 
y^2*a2*b0^8*b1^2*p5^2 + a2*b0^12*p6^2 + y^6*a1*b0*b1^6*p7 + 
y^6*a1*b0^2*b1^4*b2*p7 + y^6*a1*b0^4*b2^3*p7 + y^8*a1*b2^4*p4 + 
y^6*a1*b1^6*p6 + y^5*a1*b0^2*b1^5*p7 + y^5*a1*b0^4*b1*b2^2*p7 + 
y^4*a2*b0^2*b1^4*p3^2 + y^4*a2*b0^4*b2^2*p3^2 + y^6*a1*b1^4*b2*p5 + 
a2*b0^10*p5^2 + y^4*a1*b0^3*b1^4*p7 + y^4*a1*b0^4*b1^2*b2*p7 + 
y^4*a1*b0^5*b2^2*p7 + y^5*a1*b1^5*p5 + y^4*a1*b0^2*b1^4*p6 + 
y^4*a1*b0^4*b2^2*p6 + y^3*a1*b0^4*b1^3*p7 + y^4*a2*b1^4*p2^2 + 
y^6*a1*b2^3*p3 + y^2*a2*b0^4*b1^2*p3^2 + a2*b0^8*p4^2 + y^4*a1*b0*b1^4*p5 + 
y^2*a1*b0^5*b1^2*p7 + y^2*a1*b0^6*b2*p7 + y^5*a1*b1*b2^2*p3 + 
y^4*a1*b1^4*p4 + y^2*a1*b0^4*b1^2*p6 + y*a1*b0^6*b1*p7 + y^4*a2*b2^2*p1^2 + 
y^4*a1*b1^2*b2*p3 + y^4*a1*b0*b2^2*p3 + a2*b0^6*p3^2 + y^2*a1*b0^4*b2*p5 + 
a1*b0^7*p7 + y^4*a1*b2^2*p2 + y^3*a1*b1^3*p3 + y*a1*b0^4*b1*p5 + a1*b0^6*p6 
+ y^2*a2*b1^2*p1^2 + a2*b0^4*p2^2 + y^2*a1*b0*b1^2*p3 + y^2*a1*b0^2*b2*p3 + 
a1*b0^5*p5 + y^2*a1*b1^2*p2 + y*a1*b0^2*b1*p3 + a1*b0^4*p4 + y^2*a1*b2*p1 + 
a2*b0^2*p1^2 + a1*b0^3*p3 + y*a1*b1*p1 + a1*b0^2*p2 + y^2*c2 + a2*p0^2 + 
a1*b0*p1 + y*c1 + a1*p0 + a0

I expect that the degree of the polynomial will be less than 2^bits=8. 
However, for the third monomial (y^10*a2*b1^10*p5^2) degree is equal to 10 
and the largest is 12. Moreover:

sage: pol=P("y^10*a2*b1^10*p5^2").mod(P("y^{0}+y".format(1<<bits)))
sage: print "pol = {0}".format(pol)

Output:
pol = y^3*a2*b1^10*p5^2

Where is the problem?

Machine:
linux: Linux pcen 3.0.0-16-generic #28-Ubuntu SMP Fri Jan 27 17:44:39 UTC 
2012 x86_64 x86_64 x86_64 GNU/Linux
sage: 'Sage Version 4.8, Release Date: 2012-01-20'

Oleksandr

-- 
To post to this group, send email to sage-support@googlegroups.com
To unsubscribe from this group, send email to 
sage-support+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sage-support
URL: http://www.sagemath.org

Attachment: Polynomial.sage
Description: Binary data

Reply via email to