File: chap67.txt

package info (click to toggle)
gap 4.15.1-1
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 110,212 kB
  • sloc: ansic: 97,261; xml: 48,343; cpp: 13,946; sh: 4,900; perl: 1,650; javascript: 255; makefile: 252; ruby: 9
file content (159 lines) | stat: -rw-r--r-- 8,525 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
  
  67 Algebraic extensions of fields
  
  If  we  adjoin a root α of an irreducible polynomial f ∈ K[x] to the field K
  we  get  an  algebraic extension K(α), which is again a field. We call K the
  base field of K(α).
  
  By  Kronecker's  construction,  we  may  identify  K(α) with the factor ring
  K[x]/(f),  an  identification  that  also provides a method for computing in
  these extension fields.
  
  It  is  important  to  note  that different extensions of the same field are
  entirely  different  (and  its  elements lie in different families), even if
  mathematically one could be embedded in the other one.
  
  Currently GAP only allows extension fields of fields K, when K itself is not
  an extension field.
  
  
  67.1 Creation of Algebraic Extensions
  
  67.1-1 AlgebraicExtension
  
  AlgebraicExtension( K, f[, nam] )  operation
  AlgebraicExtensionNC( K, f[, nam] )  operation
  
  constructs  an  extension  L  of  the field K by one root of the irreducible
  polynomial   f,   using   Kronecker's  construction.  L  is  a  field  whose
  LeftActingDomain   (57.1-11)   value   is   K.   The  polynomial  f  is  the
  DefiningPolynomial    (58.2-7)    value    of    L    and    the   attribute
  RootOfDefiningPolynomial  (58.2-8)  of  L holds a root of f in L. By default
  this  root is printed as a, this string can be overwritten with the optional
  argument nam.
  
  The  first  version  of  the  command  checks  that  the  polynomial f is an
  irreducible polynomial over K. This check is skipped with the NC variant.
  
    Example  
    gap> x:=Indeterminate(Rationals,"x");;
    gap> p:=x^4+3*x^2+1;;
    gap> e:=AlgebraicExtension(Rationals,p);
    <algebraic extension over the Rationals of degree 4>
    gap> IsField(e);
    true
    gap> a:=RootOfDefiningPolynomial(e);
    a
    gap> l := AlgebraicExtensionNC(Rationals, x^24+3*x^2+1, "alpha");;
    gap> RootOfDefiningPolynomial(l)^50;
    9*alpha^6+6*alpha^4+alpha^2
  
  
  67.1-2 IsAlgebraicExtension
  
  IsAlgebraicExtension( obj )  Category
  
  is the category of algebraic extensions of fields.
  
    Example  
    gap> IsAlgebraicExtension(e);
    true
    gap> IsAlgebraicExtension(Rationals);
    false
  
  
  
  67.2 Elements in Algebraic Extensions
  
  According   to  Kronecker's  construction,  the  elements  of  an  algebraic
  extension  are  considered  to  be polynomials in the primitive element. The
  elements  of  the  base field are represented as polynomials of degree zero.
  GAP  therefore displays elements of an algebraic extension as polynomials in
  an  indeterminate  a,  which  is  a  root  of the defining polynomial of the
  extension.   Polynomials  of  degree  zero  are  displayed  with  a  leading
  exclamation  mark  to  indicate that they are different from elements of the
  base field.
  
  The usual field operations are applicable to algebraic elements.
  
    Example  
    gap> a^3/(a^2+a+1);
    -1/2*a^3+1/2*a^2-1/2*a
    gap> a*(1/a);
    !1
  
  
  The   external  representation  of  algebraic  extension  elements  are  the
  polynomial   coefficients   in  the  primitive  element  a,  the  operations
  ExtRepOfObj (79.8-1) and ObjByExtRep (79.8-1) can be used for conversion.
  
    Example  
    gap> ExtRepOfObj(One(a));
    [ 1, 0, 0, 0 ]
    gap> ExtRepOfObj(a^3+2*a-9);
    [ -9, 2, 0, 1 ]
    gap> ObjByExtRep(FamilyObj(a),[3,19,-27,433]);
    433*a^3-27*a^2+19*a+3
  
  
  GAP  does not embed the base field in its algebraic extensions and therefore
  lists  which contain elements of the base field and of the extension are not
  homogeneous  and  thus  cannot be used as polynomial coefficients or to form
  matrices.  The  remedy  is  to  multiply  the  list(s) with the value of the
  attribute One (31.10-2) of the extension which will embed all entries in the
  extension.
  
    Example  
    gap> m:=[[1,a],[0,1]];
    [ [ 1, a ], [ 0, 1 ] ]
    gap> IsMatrix(m);
    false
    gap> m:=m*One(e);
    [ [ !1, a ], [ !0, !1 ] ]
    gap> IsMatrix(m);
    true
    gap> m^2;
    [ [ !1, 2*a ], [ !0, !1 ] ]
  
  
  67.2-1 IsAlgebraicElement
  
  IsAlgebraicElement( obj )  Category
  
  is the category for elements of an algebraic extension.
  
  
  67.3 Finding Subfields
  
  67.3-1 IdealDecompositionsOfPolynomial
  
  IdealDecompositionsOfPolynomial( pol )  function
  
  Let  f  be  a  univariate,  rational, irreducible, polynomial. A pair g,h of
  polynomials   of   degree  strictly  smaller  than  that  of  f,  such  that
  f(x)|g(h(x))  is  called  an  ideal  decomposition.  In the context of field
  extensions,  if  α is a root of f in a suitable extension and Q the field of
  rational  numbers.  Such decompositions correspond to (proper) subfields Q <
  Q(β)  <  Q(α),  where  g  is  the  minimal  polynomial  of  β. This function
  determines  such  decompositions  up to equality of the subfields Q(β), thus
  determining  subfields  of a given algebraic extension. It returns a list of
  pairs  [g,h]  (and  an  empty  list if no such decomposition exists). If the
  option  onlyone  is  given  it  returns  at most one such decomposition (and
  performs faster).
  
    Example  
    gap> x:=X(Rationals,"x");;pol:=x^8-24*x^6+144*x^4-288*x^2+144;;
    gap> l:=IdealDecompositionsOfPolynomial(pol);
    [ [ x^2+72*x+144, x^6-20*x^4+60*x^2-36 ],
      [ x^2-48*x+144, x^6-21*x^4+84*x^2-48 ],
      [ x^2+288*x+17280, x^6-24*x^4+132*x^2-288 ],
      [ x^4-24*x^3+144*x^2-288*x+144, x^2 ] ]
    gap> List(l,x->Value(x[1],x[2])/pol);
    [ x^4-16*x^2-8, x^4-18*x^2+33, x^4-24*x^2+120, 1 ]
    gap> IdealDecompositionsOfPolynomial(pol:onlyone);
    [ [ x^2+72*x+144, x^6-20*x^4+60*x^2-36 ] ]
  
  
  In  this  example  the given polynomial is regular with Galois group Q_8, as
  expected we get four proper subfields.