Bill Allombert on Wed, 02 Oct 2013 18:17:41 +0200

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

 Re: Galois subextensions question

On Mon, Sep 30, 2013 at 08:07:37PM -0500, Ariel Pacetti wrote:
>
> Dear Pari users,
>
> suppose I start with a degree n (say n small) polynomial for which I
> know the Galois closure is the whole S_n (this is not needed, but to
> easy the question). Then if I take any subgroup of S_n, there is an
> extension of Q fixed by this subgroup. Is there a way to compute
> such extension in GP without computing the whole Galois closure?
> (this is of huge dimension!). I couldn't find anything in this
> direction (since the original extension is not Galois).

I tried to solve the problem using resolvent polynomials.
I really need to find and read papers how to compute polynomials
invariants by some given group, but still I have made an attempt.

Please find a script with a function
subfieldgen(P,S) that takes a polynomial of degree n and a set of permutation
over 1..n and return a polynomial for the requested field, assuming the
precision is high enough (it uses algdep, since I did not implement coset
computation).

Some examples:
? \p1000
realprecision = 1001 significant digits (1000 digits displayed)
1) C5=<(1,2,3,4,5)> in S_5:
? subfieldgen(x^5-x-1,[[2,3,4,5,1]])
%1 = x^24-8*x^23+36*x^22-120*x^21+322*x^20-728*x^19+1353*x^18-1992*x^17+2086*x^16-654*x^15-2697*x^14+7552*x^13-10969*x^12+7513*x^11+5959*x^10-29088*x^9+47425*x^8-44550*x^7+20627*x^6+12434*x^5-26272*x^4+15863*x^3-110*x^2-9761*x+5877

2) D5=<(1,2,3,4,5),(2,5)(3,4)>
? subfieldgen(x^5-x-1,[[2,3,4,5,1],[1,5,4,3,2]])
%2 = x^12-6*x^11-21*x^10+160*x^9-172*x^8-338*x^7+653*x^6-38*x^5-210*x^4-264*x^3+84*x^2+151*x+39

3) the trivial S5 in S6 (we get back the original field, of course)
? subfieldgen(x^6-x-1,[[2,3,4,5,1,6],[2,1,3,4,5,6]])
%3 = x^6-x-1

? \p4000
realprecision = 4007 significant digits (4000 digits displayed)
4) The nontrivial S5 in S6 <(1,2,3,4,6), (1,2)(3,4)(5,6)>
? subfieldgen(x^6-x-1,[[2,3,4,6,5,1],[2,1,4,3,6,5]])
%4 = x^6-x^5-10*x^4+246*x^3-872*x^2+1099*x-468

5) The nontrivial A5 in S6 <(1,2,3,4,6), (1,4)(5,6)>
? subfieldgen(x^6-x-1,[[2,3,4,6,5,1],[4,2,3,1,6,5]])
%5 = x^12-60*x^10+1230*x^8-9740*x^6+22425*x^4-23381*x^2+6400

Cheers,
Bill.
mkgroup(P)=
{
my(L,n);
P=apply(x->Vecsmall(x),P);
L=List([P[1]^0]);
until(#L==n,
n=#L;
for(i=1,#P,
for(j=1,#L,
listput(L,P[i]*L[j])));
listsort(L,1));
L;
}
subfieldgen(P,S)=
{
S=mkgroup(S);
my(R,V=polroots(P),k=0,d=(#V)!/#S);
until(poldegree(R)==d && polisirreducible(R),
k++;
R=algdep(prod(i=1,#S,sum(j=1,k,j*V[S[i][j]])),d);
if (abs(pollead(R))!=1,error("subfieldgen: unsufficient precision"));
);
polredbest(R);
}

/* Examples
\p1000
\\ C5=<(1,2,3,4,5)> in S_5:
subfieldgen(x^5-x-1,[[2,3,4,5,1]])
\\ D5=<(1,2,3,4,5),(2,5)(3,4)> in S5
subfieldgen(x^5-x-1,[[2,3,4,5,1],[1,5,4,3,2]])
\\ the trivial S5 in S6 (we get back the original field, of course)
subfieldgen(x^6-x-1,[[2,3,4,5,1,6],[2,1,3,4,5,6]])
\p4000
\\ The nontrivial S5 in S6 <(1,2,3,4,6), (1,2)(3,4)(5,6)>
subfieldgen(x^6-x-1,[[2,3,4,6,5,1],[2,1,4,3,6,5]])
\\ The nontrivial A5 in S6 <(1,2,3,4,6), (1,4)(5,6)>
subfieldgen(x^6-x-1,[[2,3,4,6,5,1],[4,2,3,1,6,5]])
*/