Bill Allombert on Sat, 22 May 2004 16:29:38 +0200

 Re: peculiar galoisinit() behavior

On Fri, May 21, 2004 at 08:07:08PM -0400, Igor Schein wrote:
> Hi,
> ? r128=polcompositum(r64,r4)[1];
> ? #
>    timer = 1 (on)
> ? gal=galoisinit(r128);
>   ***   Warning: Combinatorics too hard : would need 140737488355328 tests!
>  I'll skip it but you will get a partial result....
>   ***   Warning: Combinatorics too hard : would need 140737488355328 tests!
>  I'll skip it but you will get a partial result....
>   ***   Warning: Combinatorics too hard : would need 140737488355328 tests!
>  I'll skip it but you will get a partial result....
> time = 5mn, 21,510 ms.
> ? r64=galoisfixedfield(gal,gal.group[3])[1];
> time = 2,600 ms.
> ? r16=polredabs(nfsubfields(r64,16)[50][1],16)
> time = 48,320 ms.
> %6 = x^16 - 172*x^14 + 9028*x^12 - 141304*x^10 + 665760*x^8 - 615584*x^6 + 170688*x^4 - 15232*x^2 + 256
> ? bnf=bnfinit(subst(r16,x,y));
> time = 3,650 ms.
> ? matsize(nffactor(bnf,r128))
> time = 6,360 ms.
> %8 = [16, 2]
> \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
>
> So we have a contradiction - p64 is a subfield of p128, and p16 is a
> subfield of p64, yet p16 is not a subfield of p128?  It can only mean
> that p64 is in fact not a subfield of p128, and galoisinit() returned
> a corrupted structure.  Now, I can make an obvious guess it has to do
> with the partial result warnings.  However, *partial* doesn't usually
> imply *wrong*, but it seems to be the case here.

p64 is Galois, so it is a safe bet it _is_ a subfield of p128!
What criterium do you use to assert that p16 is not a subfield of p128 ?
For what I see, you just proved that r128 factor over r16 as a product
of 16 polynomials of degree 8, which imply that r16 is a subfield of
r128.

For what it worth,
? matsize(nffactor(bnf,r64))
%43 = [16, 2]

Cheers,
Bill.