Factorization over an Algebraic Extension

advertisement
Factorization over an Algebraic Extension
We start by defining an indeterminate over Q and the polynomial that defines the extension.
We also form the extension, get the root of the polynomial, and define an indeterminate over
the extension (which we call y to distinguish it).
gap> x:=X(Rationals,"x");;f:=x^3+x+1;;
gap> e:=AlgebraicExtension(Rationals,f);
<field in characteristic 0>
gap> theta:=RootOfDefiningPolynomial(e);
(a)
gap> y:=X(e,"y");
y
Next we form the polynomial that we want to factor. We also form a second polynomial
over Q in which we replace θ by an indeterminate.
gap> g:=y^3+(theta^2+theta+1)*y^2+(theta^2-1)*y-theta;
y^3+(1+a+a^2)*y^2+(-1+a^2)*y+(-1*a)
gap> z:=X(Rationals,"z");;
gap> gvar:=x^3+(z^2+z+1)*x^2+(z^2-1)*x-z;
x^2*z^2+x^3+x^2*z+x*z^2+x^2-x-z
The norm turns out to be squarefree, so we calculate its factors
gap> norm:=Resultant(Value(f,z),gvar,z);
x^9+x^8-x^7+2*x^6+3*x^5-x^4+2*x^3+2*x^2-x+1
gap> Gcd(norm,Derivative(norm));
1
gap> fac:=Factors(norm);
[ x^3+x^2+1, x^6-x^4+2*x^3+x^2-x+1 ]
We now transfer the factors into polynomials over the extension, by substituting y for x.
The Gcds with g give the factorization:
gap> facext:=List(fac,i->Value(i,y));
[ y^3+y^2+!1, y^6-y^4+!2*y^3+y^2-y+!1 ]
gap> List(facext,i->Gcd(g,i));
[ y+(1+a^2), y^2+(a)*y+(a^2) ]
The factors thus are x + (θ2 + 1) and (x2 + θx + θ2 ).
Download