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...