Splitting field in math software.

Can anyone help me to find a method for calculating the splitting field for a polynomial over a function field? I think this feature is not currently supported..

• FYI, the magma tag refers to a magma, which is a set and binary operation pair. Since your question doesn't appear to be about magmas, I've replaced the magma tag with a math-software tag. – Theo Bendit Aug 2 at 0:07
• I doubt that such a general method exists, and henceforth I doubt that a calculator to find such splitting fields exists either. Part of the reason Galois theory exists is that splitting fields are pretty non-trivial. – Don Thousand Aug 2 at 1:07

You can find the splitting field with the Isprime and PrimaryDecomposition function

     P<x,y,z>  := PolynomialRing(Rationals(),3);
I := ideal<P| x^2+y^3+y, z^3+z*(x^3+y)+1>;
IsPrime(I);  // true
R := quo<P|I>; x:= R.1; y := R.2; z := R.3; Q<w> := PolynomialRing(R,1);
f := w^3+w*(x^3+y)+1; g:= f div (w-z);  g

P<x,y,z,w>  := PolynomialRing(Rationals(),4);
I := ideal<P|x^2+y^3+y, z^3+z*(x^3+y)+1,w^2 + z*w + y^9*z + 3*y^7*z + 3*y^5*z + y^3*z + y^2*z + 2*y*z^3 + 2*y + z^5 +  2*z^2>;
IsPrime(I); // true

R := quo<P|I>; x:= R.1; y := R.2; z := R.3; w := R.4; Q<u> :=
PolynomialRing(R,1);
f := u^2 + z*u + y^9*z + 3*y^7*z + 3*y^5*z + y^3*z + y^2*z + 2*y*z^3 + 2*y + z^5 +
2*z^2; f div (u-w)         //  = u + z + w


thus $$T^3+T(x^3+y)+1 = (T-z)(T-w)(T-(u+z+w)) \\\in \Bbb{Q}[x,y,z,w]/J [T]$$ where $$J=(x^2+y^3+y , \qquad \qquad \qquad \qquad \qquad \qquad \\ \qquad \qquad z^3+z(x^3+y)+1, \qquad \qquad \qquad\\ \qquad \qquad w^2 + z w + y^9 z + 3 y^7 z + 3 y^5 z + y^3 z + y^2 z + 2 y z^3 + 2 y + z^5 + 2 z^2)$$

Thank's Everyone, wrote a the function myself...

split := function(f)
f_org := f;
while true  do
E := FunctionField(f);
R := PolynomialRing(E);
f := Evaluate(f_org, R.1);

factor := Factorization(f);

if #factor eq Degree(f) then
return E;
end if;

f := factor[#factor][1];

end while;
end function;

as_base := function(K, L)
while K ne BaseField(L) do
L := UnderlyingField(L);
end while;

return L;
end function;

K<t> := FunctionField(GF(2));
R<x> := PolynomialRing(K);
f := x^3 - x - t;
L := as_base(K, split(f));