Karim BELABAS on Tue, 1 Oct 2002 15:43:11 +0200 (MEST)


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: Bug rnfconductor


On 1 Oct 2002, Xavier-François Roblot wrote:
> with the latest CVS development version:
>
> ? bnf = bnfinit(y^4 + 4*y^3 - 49*y^2 - 106*y + 787);
> ? pol = x^3 + (-1/29*y^3 - 3/29*y^2 + 81/29*y - 236/29);
> ? setrand(1); rnfconductor(bnf, pol)
> %3 = [[[2, 0, 0, 0; 0, 2, 0, 0; 0, 0, 2, 0; 0, 0, 0, 2], []], [9, [3,
> 3], [[0, -1, -1, -1]~, [21, 4, 0, 1; 0, 1, 0, 0; 0, 0, 3, 2; 0, 0, 0,
> 1]]], [3, 2; 0, 1]]
> ? setrand(2); rnfconductor(bnf, pol)
> %4 = [[[2, 0, 0, 0; 0, 2, 0, 0; 0, 0, 2, 0; 0, 0, 0, 2], []], [9, [3,
> 3], [[0, -1, -1, 0]~, [21, 4, 0, 1; 0, 1, 0, 0; 0, 0, 3, 2; 0, 0, 0,
> 1]]], [3, 1; 0, 1]]
>
> Note the change in the last entry of the result (congruence subgroup)
> from [3, 2; 0, 1] to [3, 1; 0, 1]. The second one is the correct one, by
> the way. The bug doesn't show up in the stable version.

This not a bug.

Note also the change in the _second_ entry (3rd component): [0, -1, -1, -1]~
--> [0, -1, -1, 0]~

The output is in the form [conductor, gen, Artin group]. The norm group
refers to a bnr computed with respect to the _true_ conductor, ie not the
original one, in particular it is given wrt gen [ = bnr.gen ], and of course
there's nothing canonical about these generators, so changing the random seed
"changes" the norm group [ not its index of course ].

    Karim.

P.S: conductor() uses a highly inefficient algorithm, via orderofquotient(),
computing many full bnr for different moduli, and many bnrisprincipal for
each bnr, where the only question is whether all x = 1 mod^* (f / v), (x,f) = 1
[ v a place in the support of the divisor f ] belong to the congruence
subgroup or not [ and if so, incrementally for f / v^2, ... ].

This can be checked trivially in (O_K / f)^* for the original f, since
(O_K/f)^* / (O_K/(f/v))^* is cyclic with "obvious" generator. Using the
general formalism for exact sequence of abelian groups from Cohen's (second)
book is a real waste in this case.

This code is copy-pasted in discrayrelall() and should be fixed here as well.
I'll do it one of these days -- once I'm done checking late bug reports:-(
-- 
Karim Belabas                    Tel: (+33) (0)1 69 15 57 48
Dép. de Mathematiques, Bat. 425  Fax: (+33) (0)1 69 15 60 19
Université Paris-Sud             Email: Karim.Belabas@math.u-psud.fr
F-91405 Orsay (France)           http://www.math.u-psud.fr/~belabas/
--
PARI/GP Home Page: http://www.parigp-home.de/