/**** Computation of {\it Splitting Tables}*/ /*** Introduction This file corresponds to an implementation in \textsc{Magma} of the function for the computation of the {\it Splitting Tables} defined in {\it A New Tool For Computing Galois Groups And Galois Ideals}[\textsc{S.~Orange, G.~Renault, A.~Valibouze}]. Authors : S. Orange (LMAH, Le Havre University) and G.~Renault (LIP6, Paris 6 University). Source of this file : \href{./TableRupt.dmc}{Documented Magma Code file}. */ /*** Implementation */ /** SplittingTable @param d the degree of the transitive groups we want to study @return a function which gives all the informations for the splitting tables degree $d$. This function takes an integer $i$ as input. Its output is defined as follows: if $i = -1$ the function returns the splitting tables of degree $d$ represented by two sequences, if $i = 0$ then the function returns the number of lines in the splitting table and if $i> 0$ the function returns the line number $i$ in the splitting table of degree $d$. (see the example below). */ /***************************************************************************/ function SplittingTable(d); Sortie1:=[]; Sortie2:=[]; Sortie1[1]:=[[0,0],[0,0]]; Sortie2[1]:=[0]; for i:=1 to NumberOfTransitiveGroups(d) do Gtest:=TransitiveGroup(d,i); OrbsStab:=Orbits(Stabilizer(Gtest,1)); TypeGroup:=[]; for o in OrbsStab do OrbIm:=OrbitImage(Stabilizer(Gtest,1),o); NumbGroup,DegGroup:=TransitiveGroupIdentification(OrbIm); GroupId:=[DegGroup,NumbGroup]; TypeGroup[#TypeGroup+1]:=GroupId; end for; TypeGroup:=Sort(TypeGroup); Indtest:=Index(Sortie1,TypeGroup); if Indtest eq 0 then Sortie1[#Sortie1+1]:=TypeGroup; Sortie2[#Sortie2+1]:=[i]; else Append(~Sortie2[Indtest],i); end if; end for; Sortie1:=Sortie1[2..#Sortie1]; Sortie2:=Sortie2[2..#Sortie2]; Sortie:= function(ligne) case ligne : when -1 : return Sortie1,Sortie2; when 0 : return #Sortie1; else return Sortie1[ligne],Sortie2[ligne]; end case; end function; return Sortie; end function; /***************************************************************************/ /*** Examples In \textsc{Magma} the function \texttt{SplittingTable} can be used in the following manner: */ /** Computation of the Splitting Table of degree $12$ Here we want to study the splitting table of degree $12$. \begin{verbatim} > f12:=SplittingTable(12); > f12(0); 124 > f12(100); [ [ 1, 1 ], [ 3, 2 ], [ 8, 42 ] ] [ 251, 254, 276 ] > f12(119); [ [ 1, 1 ], [ 1, 1 ], [ 10, 39 ] ] [ 293 ] \end{verbatim} In this example one can see that the splitting table of degree $12$ has $124$ lines. The line number $100$ gives the following informations: a polynomial with Galois group in $\{12T_{251}, 12T_{254}, 12T_{276}\}$ has 3 irreducible factors over its stem field which have Galois group conjugate to $1T_1$, $3T_2$ and $8T_{42}$ respectively. The line number $119$ gives the following informations: a polynomial with Galois group conjugates to $12T_{293}$ has 3 irreducible factors over its stem field which have Galois group equal to $1T_1$, $1T_1$ and $10T_{39}$ respectively. */ /** Application to constructive inverse Galois problem. With the informations given by the line $119$, one can construct a polynomial with coefficients in a number field with Galois $10T_{39}$. \begin{verbatim} > load galpols; Loading "/usr/local/magma/libs/galpols/galpols" > f:=PolynomialWithGaloisGroup(12,293); > N:=NumberField(f); > PRN:=PolynomialRing(N); > Factorization(PRN!f); [ , , ] \end{verbatim} The third polynomial given by \textsc{Magma} after the factorisation has Galois group equals to $10T_{39}$. */