+
+A group is a set G together with an associative operation * satisfying
+the axioms of existence of a unit element and an inverse of every
+element of the group. The Axiom category Group
+represents this setting. Many data structures in Axiom are groups and
+therefore there is a large variety of examples as fields and polynomials,
+although the main interest there is not a group structure.
+
+
+To work with and in groups in a concrete manner some way of representing
+groups has to be chosen. A group can be given as a list of generators and
+as a set of relations. If there are no relations, then we have a free group,
+realized in the domain FreeMonoid which
+won't be discussed here. We consider permutation groups, where a group is
+realized as a subgroup of the symmetric group of a set, i.e., the group of
+all bijections of a set, the operation being the composition of maps. Indeed,
+every groupo can be realized this way, although this may not be practical.
+
+
+Furthermore group elements can be given as invertible matrices. The group
+operation is reflected by matrix multiplication. More precise in
+representation theory group homomorphisms from a group to general linear
+groups are constructed. Some algorithms are implemented in Axiom.
+<>
+@
+
+\subsection{alggrouptheoryrepa6.xhtml}
+<>=
+<>
+
+
+
+<>
+
Representations of A6
+
+In what follows you'll see how to use Axiom to get all the irreducible
+representations of the alternating group A6 over the field with two
+elements (GF 2). First, we generate A6 by a three-cycle: x=(1,2,3) and a
+5-cycle: y=(2,3,4,5,6). Next we have Axiom calculate the permutation
+representation over the integers and over GF 2:
+
+
+
+
+
+
+
+
+
+
+Now we apply Parker's 'Meat-Axe' and split it:
+
+
+
+
+
+
+We have found the trivial module as a quotient module and a
+5-dimensional sub-module. Try to split again:
+
+
+
+
+
+
+and we find a 4-dimensional sub-module and the trivial one again. Now we
+can test if this representation is absolutely irreducible.
+
+
+
+
+
+
+and we see that this 4-dimensional representation is absolutely irreducible.
+So, we have found a second irreducible representation. Now, we construct a
+representation by reducing an irreducible one of the symmetric group S_6
+over the integers mod 2. We take the one labelled by the partition
+[2,2,1,1] and restrict it to A6:
+
+
+
+
+
+
+
+
+
+
+This gave both a five and a four dimensional representation. Now we take the
+4-dimensional one and we shall see that it is absolutely irreducible:
+
+
+
+
+
+
+The two 4-dimensional representations are not equivalent:
+
+
+
+
+
+
+So we have found a third irreducible representation. Now we construct a new
+representation using the tensor product and try to split it:
+
+
+
+
+
+
+The representation is irreducible, but it may be not absolutely irreducible.
+
+
+
+
+
+
+So let's try the same procedure over the field with 4 elements:
+
+
+
+
+
+
+Now we find two 8-dimensional representations, dA6d8a and dA6d8b. Both
+are absolutely irreducible.
+
+
+
+
+
+
+
+
+
+
+and they are not equivalent.
+
+
+
+
+
+
+So we have found five absolutely irreducible representations of A6 in
+characteristic 2. General theory now tells us that there are no more
+irreducible ones. Here, for future reference are all the absolutely
+irreducible 2-module representations of A6.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+And here again is the irreducible, but not absolutely irreducible
+representations of A6 over GF 2.
+
+
+
+
+
+
+<>
+@
+
+\subsection{alggrouptheoryreptheory.xhtml}
+<>=
+<>
+
+
+<>
+Representation theory for finite groups studies finite groups by embedding
+them in a general linear group over a field or an integral domain. Hence,
+we are representing each element of the group by an invertible matrix.
+Two marix representations of a given group are equivalent, if, by changing
+the basis of the underlying space, you can go from one to the other. When
+you change bases, you transform the matrices that are the images of elements
+by conjugating them by an invertible matrix.
+
+
+If we can find a subspace which is fixed under the image of the group, then
+there exists a 'base change' after which all the representing matrices are
+in upper triangular block form. The block matrices on the main diagonal give
+a new representation of the group of lower degree. Such a representation is
+said to be 'reducible'.
<>
@
@@ -3671,7 +3943,369 @@ abstract algebra
<>
- algnumbertheory not implemented
+
Number Theory
+
+Here are some sample computations using Axiom's algebraic number facilities.
+
+
Galois Groups
+ Computation of Galois groups using factorizations over number fields
+
+
+As a sample use of Axiom's algebraic number facilities, we compute the
+Galois group of the polynomial p(x)=x**5-5*x+12
+
+
+
+
+
+
+We would like to construct a polynomial f(x) such that the splitting field
+of p(x) is generated by one root of f(x). First we construct a polynomial
+r=r(x) such that one root of r(x) generates the filed generatedy by two
+roots of the polynomial p(x). As it will turn out, the field generate by
+two roots of p(x) is, in fact, the splitting field of p(x).
+
+From the proof of the primitive element theorem we know that if a and b
+are algebraic numbers, then the field Q(a,b) is equal to Q(a+k*b) for an
+appropriately chosen integer k. In our case, we construct the minimal
+polynomial of a[i]-a[j], where a[i] and a[j] are two roots of p(x). We
+construct this polynomial using resultant.
+The main result we need is that if f(x) is a polynomial with roots a[1]...a[m]
+and g(x) is a polynomial with roots b[1]...b[n], then the polynomial
+h(x)=resultant(f(y),g(x-y),y) is a polynomial of degree m*n with roots
+a[i]+b[j], 1 <= i <= m, 1 <= j <= n.
+
+For f(x) we use the polynomial p(x). For g(x) we use the polynomial -p(-x).
+Thus, the polynomial we first construct is resultant(p(y),-p(y-x),y).
+
+
+
+
+
+
+The roots of q(x) are a[i]-a[j], 1 <= i,j <= 5. Of course, there are
+five pairs (i,j) with i=j, so 0 is a 5-fold root of q(x). Let's get rid of
+this factor.
+
+
+
+
+
+
+Factor the polynomial q1.
+
+
+
+
+
+
+We see that q1 has two irreducible factors, each of degree 10. (The fact
+that the polynomial q1 has two factors of degree 10 is enough to show that
+the Galois group of p(x) is the diheral group of order 10. (ref:
+McKay, Soicher, Computing Galois Groups over the Rationals, Journal of
+Number Theory 20, 273-281 (1983). We do not assume the results of this
+paper and we continue with the computation.) Note that the type of
+factoredQ is
+
+Factored Polynomial Integer.
+This is a special data type for
+recording factorizations of polynomials with integer coefficients (see
+Factored). We can access the individual
+factors using the operation nthFactor.
+
+
+
+
+
+
+Consider the polynomial r=r(x). This is the minimal polynomial of the
+difference of two roots of p(x). Thus, the splitting field of p(x)
+contains a subfield of degree 10. We show that this subfield is the
+splitting field of p(x) by showing that p(x) factors completely over this
+field. First we create a symbolic root of the polynomial r(x). (We
+replaced x by b in the polynomial r so that our symbolic root would
+be printed as b.)
+
+
+
+
+
+
+We next tell Axiom to view p(x) as a univariate polynomial in x with
+algebraic number coefficients. This is accomplished with this type
+declaration:
+
+
+
+
+
+
+Factor p(x) over the field Q(beta). (This computation will take some time).
+
+
+
+
+
+
+When factoring over number fields, it is important to specify the field
+over which the polynomial is to be factored, as polynomials have different
+factorizations over different fields. When you use the operation
+factor, the field over which the polynomial
+is factored is the field generated by
+
+
the algebraic numbers that appear in the coefficients of the polynomial
+
+
the algebraic numbers that appear in a list passed as an optional
+ second argument of the operation
+
+
+In our case, the coefficients of p are all rational numbers and only beta
+appears in the list, so the field is simply Q(beta). It was necessary to
+give the list [beta] as a second argument of the operations because
+otherwise the polynomial would have to be factored over the field generated
+by its coefficients, namely the rational numbers.
+
+
+
+
+
+
+We have shown that the splitting field of p(x) has degree 10. Since the
+symmetric group of degree 5 has only one transitive subgroup of order 10,
+we know that the Galois group of p(x) must be this group, the dihedral
+group of order 10. Rather than stop here, we explicitly compute the action
+of the Galois group on the roots of p(x).
+
+First we assign the roots of p(x) as the values of five variables. We
+can obtain an individual root by negating the constant coefficient of one
+of the factors of p(x).
+
+
+
+
+
+
+
+
+
+
+
+
+We can obtain a list of all of the roots in this way.
+
+
+
+
+
+
+The expression -coefficient(nthFactor(algFactors,i),0) is the ith root of p(x)
+and the elements of roots are the ith roots of p(x) as i ranges from 1 to 5.
+Assign the roots as the values of the variables a1..a5.
+
+
+
+
+
+
+Next we express the roots of r(x) as polynomials in beta. We could obtain
+these roots by calling the operation
+factor. factor(r,[beta]) factors r(x) over
+Q(beta). However, this is a length computation and we can obtain the roots
+of r(x) as differences of the roots a1,...,a5 of p(x). Only ten of these
+differences are roots of r(x) and the other ten are roots of the other
+irreducible factor of q1. We can determine if a given value is a root
+of r(x) by evaluating r(x) at that particular value. (Of course, the order
+in which factors are returned by the operation
+factor is unimportant and may change with
+different implementations of the operation. Therefore, we cannot predict
+in advance which differences are roots of r(x) and which are not.) Let's
+look at four examples (two are roots of r(x) and two are not).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Take one of the differences that was a root of r(x) and assign it to the
+variable bb. For example, if eval(r,x,a1-a4) returned 0, you would enter this.
+
+
+
+
+
+
+Of course, if the difference is equal to the root beta, you should choose
+another root of r(x).
+
+Automorphisms of the splitting field are given by mapping a generator of
+the field, namely beta, to other roots of its minimal polynomial. Let's
+see what happens when beta is mapped to bb. We compute the images of the
+roots a1,...,a5 under this automorphism.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Of course, the values aa1,...,aa5 are simply a permutation of the values
+a1,...,a5. Let's find the value of aa1 (execute as many of the following
+five commands as necessary).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Proceeding in this fashion, you can find the values of aa2..aa5.
+You have represented the automorphism beta -> bb as a permutation of the
+roots a1,...,a5. If you wish, you can repeat this computation for all the
+roots of r(x) and represent the Galois group of p(x) as a subgroup of the
+symmetric group on five letters.
+
+Here are two other problems that you may attack in a similar fashion:
+
+
Show that the Galois group of p(x)=x**4+2*x**3-2*x**2-2*x+1 is the
+ dihedral group of order eight. (The splitting field of this polynomial
+ is the Hilbert class field of the quadratic field Q(sqrt(145)).)
+
+
Show that the Galois group of p(x)=x**6+108 has order 6 and is
+ isomorphic to the symmetric group on three letters. (The splitting
+ field of this polynomial is the spliting field of x**3-2.)
+
+
<>
@
@@ -6106,7 +6740,7 @@ Reset digits to its default value.
-Numbers of type Float are represented as a record
+Numbers of type Float are represented as a record
of two integers, namely, the mantissa and the exponent where the base
of the exponent is binary. That is, the floating point number of the
binary. That is, the floating point number (m,e) represents the number
@@ -10285,6 +10919,15 @@ dboptruncate not implemented
<>
@
+\subsection{dbopwrite.xhtml}
+<>=
+<>
+
+
+<>
+dbopwrite not implemented
+<>
+@
\subsection{dbopzeroof.xhtml}
<>=
<>
@@ -10463,7 +11106,7 @@ matrix is said to be "ill-conditioned".
Now repeat the computation at a higher precision using
-Float
+Float
>=
<>
+
<>
- graphviewports not implemented
+
Stand-alone Viewport
+
+To get a viewport on a page, you first need to create on in Axiom and
+write it out to a file that can be called up. For example, we draw a
+saddle function and assign the result to the variable v.
+
+
+
+
+
+
+Now that we've created the viewport, we want to write the data out to
+a file. To do this, we use the write command
+which takes as arguments the viewport to write out, the title of the file
+to be written to, and an optiona argument telling the write command what
+type (or types) of data you want to write (in addition to the ones that
+Axiom writes). The optional argument could be a string, like "pixmap", or
+a list of strings, like ["postscript", "pixmap"]. We need a "bitmap" data
+type to include a graph in a page so in this case, we write the viewport
+and tell it to also write a "pixmap" file:
+
+
+
+
+
+
+Currently supported file formats are "pixmap", "bitmap", "postscript"
+and "image".
+
+Axiom automatically adds ".view" at the end of the viewport data file
+to specify the file type. The ".view" is actually a directory and
+contains a bitmap file, usually called image.bm.Z, which is a compressed
+bitmap. Firefox can display bitmap files, as shown here. Clicking on the
+image should start a "live graphics copy" so you can manipulate the image.
+
+
+
+
+
+
<>
@
@@ -36638,7 +37328,7 @@ Conversion is the process of changing an object of one type into an
object of another type. The syntax for conversion is object::newType.
By default, 3 has the type
-PositiveInteger
+PositiveInteger
-The OneDimensionalArray is used
+The OneDimensionalArray is used
for storing data in a one-dimensional indexed data structure. Such an array
is a homogeneous data structure in that all the entries of the array must
belong to the same Axiom domain. Each array has a fixed length specified
by the user and arrays are not extensible. The indexing of
one-dimensional arrays is one-based. This means that the "first" element of
an array is given the index 1. See also
-Vector and
-FlexibleArray. To create a
+Vector and
+FlexibleArray. To create a
one-dimensional array, apply the operation
oneDimensionalArray to a list.
@@ -37874,9 +38564,9 @@ one-dimensional array, apply the operation
Axiom provides many operations for manipulating arbitrary precision integers.
In this section we will show some of those that come from
-Integer itself plus some that are implemented
+Integer itself plus some that are implemented
in other packages. More examples of integers are in the following sections:
Numbers.
IntegerNumberTheoryFunctions,
@@ -40715,7 +41405,7 @@ A number of additional operations may be used to compute numerical
values. These are special polynomial functions that can be evaluated
for values in any commutative ring R, and in particular for values in
any floating-point type. The following operations are provided by the
-package
+package
OrthogonalPolynomialFunctions:
chebyshevT:
@@ -42865,7 +43555,7 @@ X transpose is just a row and X is just a column.
Output Functions
A number of operations exist for specifying how numbers of type
-Float are to be displayed. By default,
+Float are to be displayed. By default,
spaces are inserted every ten digits in the output for readability.
(Not that you cannot include spaces in the input form of a floating
point number, though you can use underscores.)