id,summary,reporter,owner,description,type,status,priority,milestone,component,resolution,keywords,cc,merged,author,reviewer,upstream,work_issues,branch,commit,dependencies,stopgaps
13609,symbolic arithmetic errors,llpamies,burcin,"Consider the following code:
{{{
ff. = GF(2**8, 'z')
poly. = PolynomialRing(ff, 3, 'c')
r1,r2 = var('r1,r2')
expression = -(c1*r2 - c2*r1)/c3
print expression.substitute(r1=z, r2=z)
}}}
This produces a TypeError: unsupported operand parent(s) for '*': 'Finite Field in z of size 2pow8' and 'Rational Field'. I know that 'expression' is not an element of the ring 'poly', but using a PolynomialRing is the only way I found to achieve symbolic arithmetic on finite fields.
However, the interesting story is that if I replace the expression by
{{{
expression = -(r2 - c2*r1)/c3
}}}
it work perfectly well, but if instead the expression is
{{{
expression = -(c1 + r2 - c2*r1)/c3
}}}
then I get a segmentation fault.
To make things a little bit more interesting I can rename r1 and r2 to a and b:
{{{
ff. = GF(2**8, 'z')
poly. = PolynomialRing(ff, 3, 'c')
a,b = var('a,b')
expression = -(c1*b - c2*a)/c3
print expression.substitute(a=z, b=z)
}}}
Then it works fine, but produces a segmentation fault for,
{{{
expression = -(c1 + b - c2*a)/c3
}}}
so you can think that it might be a problem with the use of the names r1 and r2. But this is not the case, if I rename the PolynomialRing variables instead, from c's to x's:
{{{
ff. = GF(2**8, 'z')
poly. = PolynomialRing(ff, 3, 'x')
r1,r2 = var('r1,r2')
expression = -(x1*r2 - x2*r1)/x3
print expression.substitute(r1=z, r2=z)
}}}
Then it works again for the first two expressions but produces a segmentation fault for the third too.
Any idea of what is going wrong here?
Apply [attachment:trac_13609-rebase.patch]",defect,closed,major,sage-6.2,symbolics,fixed,pynac segfault,,,Burcin Erocal,Jean-Pierre Flori,N/A,,e0d15a9bf67e292d23ff306e2a8e632a280debea,e0d15a9bf67e292d23ff306e2a8e632a280debea,"#13729, #13736",