do(p)=galoisidentify(galoisinit(p));

do(algdep(I,3))
do(galoissubcyclo(bnrinit(bnfinit(y),[1232,[1]],1),[4,0,0,0;0,2,0,1;0,0,2,1;0,0,0,1]))
do(x^20-40*x^18+605*x^16-4600*x^14+19500*x^12-48250*x^10+70425*x^8-59500*x^6+27625*x^4-6250*x^2+500)
do(x^24-12*x^23+6*x^22+440*x^21-1659*x^20-2352*x^19+24274*x^18-34812*x^17-66078*x^16+249212*x^15-192066*x^14-234528*x^13+515149*x^12-234528*x^11-192066*x^10+249212*x^9-66078*x^8-34812*x^7+24274*x^6-2352*x^5-1659*x^4+440*x^3+6*x^2-12*x+1)
do(x^4+272*x^3+40256*x^2+1740800*x+25397248)
do(x^4+5264*x^3+8034856*x^2+4205424384*x+504485485632)
do(x^4+884*x^3-1972*x^2-884*x+1)
do(x^4-42*x^2+144)
do(x^12-30*x^8-370*x^6+1665*x^4+23166*x^2+81)
do(x^24+3*x^22+22*x^20+31*x^18+138*x^16+85*x^14+297*x^12+149*x^10+249*x^8+238*x^6+98*x^4+16*x^2+1)
do(x^54+4288*x^45+4739337*x^36+88723254*x^27+799530047*x^18-256778413*x^9+40353607)
do(x^54-3762*x^52+6515505*x^50-6911246832*x^48+5039176931676*x^46-2686817670557400*x^44+1087963170065343636*x^42-342933852097598081616*x^40+85549691240003522127726*x^38-17077123231759966515087980*x^36+2746482620444718167893994910*x^34-357137314570021313085512898384*x^32+37572202145621696209178550611604*x^30-3191423993701636005506286262264824*x^28+217847326568033953619436917061987732*x^26-11861321463900503282422713802261870896*x^24+509777643921195165950639871535287639897*x^22-17055767879920589218196924743211626177266*x^20+436388466866294213576027352329957260889977*x^18-8349444825290714596926947944336750514846016*x^16+116184424651196907257566920202449108391711560*x^14-1136293058944245287715303626629567362322332192*x^12+7487695030927212135931358829137467901174408592*x^10-31501276144455609227993784616018089442301260032*x^8+78778033600362485611603755865500353002845187584*x^6-106406869975806738331854667483688298979911757824*x^4+68731119007852853614250618123508690506961555456*x^2-15696850241826982459503429282145309404169764864)
do(x^64-3645070*x^56+3769245010705*x^48+120173739648338450*x^40+2124098086173949323364*x^32+16674620185061962554229010*x^24+87774696936415565369888312017*x^16+56323712629998864272734706*x^8+78032457926322172553281)
do(x^8-4*x^7-126*x^6+392*x^5+4853*x^4-10364*x^3-58244*x^2+63492*x+197761)
do(y^4+1)

p=x^14-271*x^13+14191*x^12-320438*x^11+3790080*x^10-25112800*x^9+92495160*x^8-167147800*x^7+50530009*x^6+301971239*x^5-450938136*x^4+211398894*x^3-16216756*x^2-8116135*x+1041461; do(p)

do(x^48+688253440*x^36+64889579202*x^24+688253440*x^12+1);

\\\\\\\\\\\

nfgaloisconj(x^3-x-1)
nfgaloisconj(x^24+2814)
nfgaloisconj(x^4+1)


nf=nfinit(polcyclo(7)); s = nfgaloisconj(nf)[2]; pr = idealprimedec(nf,11)[1];
nfgaloisapply(nf,s,idealhnf(nf,pr))
nfgaloisapply(nf,s,pr)
nfgaloisapply(nf,s,x^2+x)
nfgaloisapply(nf,s,1/2)
v=[1,1/2,Mod(x,nf.pol),x,vectorv(6),[;],[1,2;x,3]];
for (i=1,#v, print(nfgaloisapply(nf,s,[1,v[i]])))

galoistest(P)=
{
  my(G,F,L);
  G=galoisinit(P);
  F=galoissubfields(G,2);
  for (i=1,#F, my(L=F[i]);
    if (subst(L[1],x,L[2])!=0,
       error("galoissubfields1"));
    if (factorback(L[3]*Mod(1,subst(L[1],x,y)))!=P,
       error("galoissubfields2")));
}
galoistest(x^4 + 431452248691495692750746750*x^3+447244936830156353775324765*x^2+5580140636706480467906000*x - 238676773812533681600);

G=galoisinit(x);
galoisexport(G);
galoisexport(G,1);
G=galoisinit(x^12-30*x^8-370*x^6+1665*x^4+23166*x^2+81);
galoispermtopol(G,G.gen)
galoisexport(G)
galoisexport(G, 1)
G=galoisinit(x^12-24*x^10-10*x^9+216*x^8+180*x^7-844*x^6-1080*x^5+1056*x^4+2200*x^3+720*x^2-240*x-80);
L=galoissubgroups(G)
apply(H->galoisisnormal(G,H),L)
apply(H->galoisisabelian(H),L)
apply(H->galoisisabelian(H,1),L)
apply(H->galoisisabelian(H,2),L)

vector(#G.group, i, galoisfixedfield(G,G.group[i],1))
galoisfixedfield(G,G.group[2])
galoisfixedfield(G,G.group[2],2,y)
galoissubcyclo(17,2)

G=galoisinit(polcyclo(20))
galoissubfields(G)
