> < ^ Date: Thu, 10 Jun 1999 12:34:56 +0100 (BST)
> < ^ From: Alexander Hulpke <hulpke@math.colostate.edu >
> < ^ Subject: Re: algebras over cyclotomics

Dear GAP-Forum,

I have commutative rational algebras that are supposed to be semisimple
over some cyclotomic field. How can I find this structure? Extending
coefficients to "Cyclotomics" and using "CentralIdempotentsOfAlgebra" gives
a crash, apparently because GAP cannot factor polynomials over cyclotomics.

The algorithm to compute idempotents crucially needs to factorize a polynomial. (The problem is equivalent to a problem of polynomial factorization.)

Unfortunately at the moment GAP 4 does not contain code to factorize
polynomials over algebraic number fields.
For finite degree extensions this is not a fundamental problem: We had an
algorithm for this in GAP 3, but so far I did not find time to convert it to
GAP 4.

(If you need to solve this problem we could provide you with code that will
allow you to feed in'' a polynomial factorization obtained by another
program.)

In principle this should be sufficient for factorization over the
cyclotomics as well, though I don't see how to find the smallest subfield
that contains all the cyclotomic elements needed to factor a given
polynomial.

He continued:
> Is there some way to find where the implementation of a function is in the
> library? For instance material related to structure constant tables for
> algebras occurs in at least three different files. Reading the code can be
> very helpful, but I can't always find it.

I fear there is no general solution to this, but probably the following
remarks are of help:

There is a function ApplicableMethod' that will return the function
used as a method for an operation. It is not yet documented in 4b5, but I
append the documentation as it will be in the next release.

gap> a:=Algebra(Rationals,[[[1,0],[-1,1]]]);
<algebra over Rationals, with 1 generators>
gap> meth:=ApplicableMethod(CentralIdempotentsOfAlgebra,[a],1);
#I Searching Method for CentralIdempotentsOfSemiring with 1 arguments:
#I Total: 3 entries
#I Method
2: CentralIdempotentsOfSemiring: for an associative algebra'', value: 36
function( A ) ... end
(Now meth' is a function you can Print'.)

To find the occurrence of functions and methods in the library, I tend to
use grep'. To find a function, I search for the function name in the gd'
files (as it is declared only once, only one file will show), it is very
likely the function will occur in the corresponding gi' file.
To find a method I search for Method(' (this catches InstallMethod' and
InstallOtherMethod' and the installation string (ApplicableMethod' will
print it in the higher print levels) or the operation name.

(It would be nice to have better browsing tools, but I fear at the moment
this is beyond our capabilities.)

Finally, allow me to plug my talk at our Workshop in Linz about the library
which gives a little bit further information. Slides can be found at:
http://www-gap.dcs.st-and.ac.uk/~gap/Info/wlinz.html

I hope this is of some help,

Alexander Hulpke

% the manual section on ApplicableMethod':

\>ApplicableMethod( <opr>, <args>[, <printlevel>] ) F
\>ApplicableMethod( <opr>, <args>, <printlevel>, <nr> ) F
\>ApplicableMethod( <opr>, <args>, <printlevel>, "all" ) F

In the first form, ApplicableMethod' returns the method of highest rank
that is applicable for the operation <opr> with the arguments in the
list <args>.
The default <printlevel> is 0'.
If no method is applicable then fail' is returned.

In the second form, if <nr> is a positive integer then
ApplicableMethod' returns the <nr>-th applicable method for the
operation <opr> with the arguments in the list <args>, where the methods
are ordered according to descending rank. If less than <nr> methods are
applicable then fail' is returned.

If the fourth argument is the string "all"' then ApplicableMethod'
returns a list of all applicable methods for <opr> with arguments
<args>, ordered according to descending rank.

Depending on the integer value <printlevel>, additional information is
printed. Admissible values and their meaning are as follows.

\beginlist
\item{0}
no information,

\item{1}

\item{2}
also information about the not applicable methods of higher rank,

\item{3}
also for each not applicable method the first reason why it is not
applicable,

\item{4}
also for each not applicable method all reasons why it is not
applicable.

\item{6}
also the function body of the selected method(s)
\endlist

When a method returned by ApplicableMethod' is called then it returns
either the desired result or the string TRY_NEXT_METHOD', which
corresponds to a call to TryNextMethod' in the method and means that
the method selection would call the next applicable method.

*Note:* The kernel provides special treatment for the infix operations
\\+', \\-', \\*', \\/', \\^', \\mod' and \\in'. For some kernel
objects (notably cyclotomic numbers, finite field elements and vectors
thereof) it calls kernel methods circumventing the method selection
mechanism. Therefore for these operations ApplicableMethod' may return
a method which is not the kernel method actually used.

% end
`

> < [top]