| Ilya Zakharevich on Thu, 4 May 2000 18:13:10 -0400 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: Bug in Mod (2.0.15) |
On Tue, Mar 07, 2000 at 02:06:45PM +0100, Karim BELABAS wrote:
> (13:01) gp > \y
> simplify = 0 (off)
> (13:01) gp > u = Mod(z,x^2+y^2+t^2)
> %6 = Mod(Mod(x, x^2 + y^2), x^2 + (y^2 + t^2))
>
> which is an incorrect object...
But is a "much more correct" answer. What I see is the following:
simplify() assumes that any ring in which POLMODs live is a ring of
principal ideals. (This assumption is hidden in the algorithm of
converting to the lowest common denominator when combining POLMODs
with different moduli).
Thus I would guess that
a) a way to represent an element in a quotient by a non-principal
ideal in terms of the PARI type system;
b) a change of simplify() to support this convention;
would immediately make PARI able to do calculations in any algebra
with finite number of generators - without any change to the
calculation engine.
To solve "a": if we can canonically associate to any ideal I a
sequence of generators p1, ... pk, then we can represent x mod I by
Mod(...Mod(Mod(x, p1), p2), ... pk)
I can be wrong, but do not Groebner bases give a canonical system of
generators of any ideal? Then if all my assumptions are valid, then
adding a function to calculate the Groebner basis of the ideal
generated by [q1,...,qn] and making simplify() use this function may
be all what is required...
Ilya