Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 91213ddcfbe7f54821d42c2d9e091326 > files > 378

gap-system-packages-4.4.12-5mdv2010.0.i586.rpm


\Chapter{An example application}

In this section we outline two example computations with the functions
of the previous chapter. The first example uses number fields defined 
by matrices and the second example considers number fields defined by
a polynomial.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Number fields defined by matrices}

\beginexample
gap> m1 := [ [ 1, 0, 0, -7 ], 
             [ 7, 1, 0, -7 ], 
             [ 0, 7, 1, -7 ],
             [ 0, 0, 7, -6 ] ];;

gap> m2 := [ [ 0, 0, -13, 14 ], 
             [ -1, 0, -13, 1 ], 
             [ 13, -1, -13, 1 ], 
             [ 0, 13, -14, 1 ] ];;

gap> F := FieldByMatricesNC( [m1, m2] );
<rational matrix field of unknown degree>

gap> DegreeOverPrimeField(F);
4
gap> PrimitiveElement(F);
[ [ 1, 0, 0, -7 ], [ 7, 1, 0, -7 ], [ 0, 7, 1, -7 ], [ 0, 0, 7, -6 ] ]

gap> Basis(F);
Basis( <field in characteristic 0>, 
[ [ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 0, 0, 1 ] ], 
  [ [ 0, 1, 0, 0 ], [ -1, 1, 1, 0 ], [ -1, 0, 1, 1 ], [ -1, 0, 0, 1 ] ], 
  [ [ 0, 0, 1, 0 ], [ -1, 0, 1, 1 ], [ -1, -1, 1, 1 ], [ 0, -1, 0, 1 ] ], 
  [ [ 0, 0, 0, 1 ], [ -1, 0, 0, 1 ], [ 0, -1, 0, 1 ], [ 0, 0, -1, 1 ] ] ] )

gap> MaximalOrderBasis(F);
Basis( <field in characteristic 0>, 
[ [ [ 1, 0, 0, 0 ], [ 0, 1, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 0, 0, 1 ] ], 
  [ [ 1, 0, 0, -1 ], [ 1, 1, 0, -1 ], [ 0, 1, 1, -1 ], [ 0, 0, 1, 0 ] ], 
  [ [ 1, 0, -1, 0 ], [ 1, 1, -1, -1 ], [ 1, 1, 0, -1 ], [ 0, 1, 0, 0 ] ], 
  [ [ 1, -1, 0, 0 ], [ 1, 0, -1, 0 ], [ 1, 0, 0, -1 ], [ 1, 0, 0, 0 ] ] ] )

gap> U := UnitGroup(F);
<matrix group with 2 generators>

gap> u := GeneratorsOfGroup( U );;

gap> nat := IsomorphismPcpGroup(U);
[ [ [ 0, 1, -1, 0 ], [ 0, 1, 0, -1 ], [ 0, 1, 0, 0 ], [ -1, 1, 0, 0 ] ], 
  [ [ 1, 0, -1, 1 ], [ 0, 1, -1, 0 ], [ 1, 0, 0, 0 ], [ 0, 1, -1, 1 ] ] ] -> 
[ g1, g2 ]

gap> H := Image(nat);
Pcp-group with orders [ 10, 0 ]
gap> ImageElm( nat, u[1]*u[2] );
g1*g2
gap> PreImagesRepresentative(nat, GeneratorsOfGroup(H)[1] );
[ [ 0, 1, -1, 0 ], [ 0, 1, 0, -1 ], [ 0, 1, 0, 0 ], [ -1, 1, 0, 0 ] ]
\endexample

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Number fields defined by a polynomial}

\beginexample
gap> x:=Indeterminate(Rationals);
x_1
gap> g:= x^4-4*x^3-28*x^2+64*x+16;
x_1^4-4*x_1^3-28*x_1^2+64*x_1+16

gap> F := FieldByPolynomialNC(g);
<algebraic extension over the Rationals of degree 4>
gap> PrimitiveElement(F);
(a)
gap> MaximalOrderBasis(F);
Basis( <algebraic extension over the Rationals of degree 4>,
[ <<1>>, (1/2*a), (1/4*a^2), (5/7+1/14*a+1/14*a^2+1/56*a^3) ] )

gap> U := UnitGroup(F);
[ !-1, (-3/7+6/7*a+3/28*a^2-1/28*a^3),
  (13/7+25/14*a+1/28*a^2-3/56*a^3), (36/7-9/7*a-2/7*a^2+3/56*a^3) ]
<group with 4 generators>

gap> natU := IsomorphismPcpGroup(U);
[ !-1, (-3/7+6/7*a+3/28*a^2-1/28*a^3),
  (13/7+25/14*a+1/28*a^2-3/56*a^3), (36/7-9/7*a-2/7*a^2+3/56*a^3)
 ] -> [ g1, g2, g3, g4 ]

gap> elms := List( [1..10], x-> Random(F) );
[ (4-1/2*a-1*a^2+3/2*a^3), (4/5-2/3*a+4/3*a^3), (1+a+2*a^2-1*a^3),
  (3/4+3*a+3*a^2), (-1-1/5*a^3), (-1/4*a-5/3*a^2), (1-1*a+1/2*a^2),
  (4-3/2*a+1/2*a^2), (-2/5+a-3/2*a^2), (-1*a+a^2+2*a^3) ]

gap>  PcpPresentationOfMultiplicativeSubgroup( F, elms );
Pcp-group with orders [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]

gap>isom := IsomorphismPcpGroup( F, elms );
[ (4-1/2*a-1*a^2+3/2*a^3), (4/5-2/3*a+4/3*a^3),
  (1+a+2*a^2-1*a^3), (3/4+3*a+3*a^2), (-1-1/5*a^3),
  (-1/4*a-5/3*a^2), (1-1*a+1/2*a^2), (4-3/2*a+1/2*a^2),
  (-2/5+a-3/2*a^2), (-1*a+a^2+2*a^3) ]
[ (4-1/2*a-1*a^2+3/2*a^3), (4/5-2/3*a+4/3*a^3), (1+a+2*a^2-1*a^3),
  (3/4+3*a+3*a^2), (-1-1/5*a^3), (-1/4*a-5/3*a^2), (1-1*a+1/2*a^2),
  (4-3/2*a+1/2*a^2), (-2/5+a-3/2*a^2), (-1*a+a^2+2*a^3) ] ->
[ g1, g2, g3, g4, g5, g6, g7, g8, g9, g10 ]

gap> y := RandomGroupElement( elms );
(-475709724976707031371325/71806328788189775767952976
-379584641261299592239825/13055696143307231957809632*a
-462249188570593771377595/287225315152759103071811904*a^2+
2639763613873579813685/2901265809623829323957696*a^3)

gap> ImageElm( isom, y );
g1^-1*g3^-2*g6^2*g8^-1*g9^-1
gap> z := last;
g1^-1*g3^-2*g6^2*g8^-1*g9^-1

gap> PreImagesRepresentative( isom, z );
(-475709724976707031371325/71806328788189775767952976
-379584641261299592239825/13055696143307231957809632*a
-462249188570593771377595/287225315152759103071811904*a^2+
2639763613873579813685/2901265809623829323957696*a^3)

gap> FactorsPolynomialAlgExt( F, g );
[ x_1+((-1*a)), x_1+((-2+a)), x_1+((-40/7+31/7*a+3/7*a^2-1/7*a^3)),
  x_1+((26/7-31/7*a-3/7*a^2+1/7*a^3)) ]

\endexample