File: nc.doc

package info (click to toggle)
symmetrica 2.0+ds-6
 `123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342` ``````COMMENT: NEW CHARACTER This is the datastructure to implement arbitrary group characters. For this datastructure we have a label which contains information on the group, this is called group label. (gl for short) The second part of the data structure is the information for the character, this is a VECTOR object whose i-th entry is the value of the charcter on the i-th class of the group. The same datastructure is used for the decomposition of a arbitray character into irreducibls, then the i-th entry gives the multiplicity of the i-th irreducible character. Group labels ------------ NAME: m_gl_sym SYNOPSIS: INT m_gl_sym(OP degree, kl) DESCRIPTION: you input the degree of a symmetric group, this should be a INTEGER object, the output is the object, which represents the group label of the symmetric group of the given degree. NAME: m_gl_alt SYNOPSIS: INT m_gl_alt(OP degree, kl) DESCRIPTION: you input the degree of a alternating group, this should be a INTEGER object, the output is the object, which represents the group label of the alternating group of the given degree. NAME: m_gl_cyclic SYNOPSIS: INT m_gl_cyclic(OP degree, kl) DESCRIPTION: you input the degree of a cyclic group, this should be a INTEGER object, the output is the object, which represents the group label of the cyclic group of the given degree. NAME: m_gl_hyp SYNOPSIS: INT m_gl_hyp(OP degree, kl) DESCRIPTION: you input the degree of a hyperoctaeder group, this should be a INTEGER object, the output is the object, which represents the group label of the hyperoctaeder group of the given degree. This is a special case of the routine m_gl_symkranz NAME: m_gl_symkranz SYNOPSIS: INT m_gl_symkranz(OP a,b, kl) DESCRIPTION: you input the degree of two symmetric groups, these should be a INTEGER object, the output is the object, which represents the group label of the wreath product s_a wr s_b of the two symmetric groups of the given degree a and b. COMMENT: If we have a group label there are many routines which use the group label as input NAME: m_gl_go SYNOPSIS: INT m_gl_go(OP gl, order) DESCRIPTION: you input a group label, and the output is the orderof the corresponding group. EXAMPLE: computes the order of the alternating group .... scan(INTEGER,a); m_gl_alt(a,b); m_gl_go(b,c); println(c); .... COMMENT: It is also possible to run through the group: NAME: m_gl_first SYNOPSIS: INT m_gl_first(OP a,b) DESCRIPTION: computes the first element in the corresponding group The first element is in most cases the identity. COMMENT: using this first element you can compute the next one: NAME: m_gl_next SYNOPSIS: INT m_gl_next(OP a,b,c) DESCRIPTION: computes the next element in the corresponding group a ist the group label, b is a element, and c becomes the next one. If b is already the last one the return value is FALSE, else it is TRUE. b and c may be the same object. EXAMPLE: computes the number of elements in a alternating group, using the above routines: #include "def.h" #include "macro.h" main() { OP a,b,c,d; anfang(); a=callocobject(); b=callocobject(); c=callocobject(); d=callocobject(); scan(INTEGER,a); m_gl_alt(a,b); m_gl_first(b,c); println(c); m_i_i(1L,d); while( m_gl_next(b,c,c) ) inc(d); println(d); println(c); freeall(a); freeall(b); freeall(c); freeall(d); ende(); } COMMENT: Table of irreducible characters ------------------------------- NAME: m_gl_chartafel SYNOPSIS: INT m_gl_chartafel(OP gl,t) DESCRIPTION: you enter an object gl, which you got using a routine to construct a group label (see above), the output is the table of irreducible characters of the group, represented by the group label. EXAMPLE: #include "def.h" #include "macro.h" main() { OP a,b,c,d; anfang(); a=callocobject(); b=callocobject(); c=callocobject(); d=callocobject(); scan(INTEGER,a); m_gl_sym(a,b); m_gl_chartafel(b,c); println(c); m_gl_alt(a,b); m_gl_chartafel(b,c); println(c); scan(INTEGER,d); m_gl_symkranz(a,d,b); m_gl_chartafel(b,c); println(c); freeall(a); freeall(b); freeall(c); freeall(d); ende(); } COMMENT: Class labels ------------ If you have computed the character table, you also need information about the labelings of the classes, to know what is the charactervalue for what class. NAME: m_gl_cl SYNOPSIS: INT m_gl_cl(OP gl,cl) DESCRIPTION: you input a group label gl, and the output is a VECTOR object of the length "number of classes", and the entries are objects which allows a labeling of classes, e.g PARTITION objects in the case of the symmetric group.' EXAMPLE: #include "def.h" #include "macro.h" main() { OP a,b,c,d; anfang(); a=callocobject(); b=callocobject(); c=callocobject(); d=callocobject(); scan(INTEGER,a); m_gl_sym(a,b); m_gl_cl(b,c); println(c); m_gl_alt(a,b); m_gl_cl(b,c); println(c); m_gl_hyp(a,b); m_gl_cl(b,c); println(c); scan(INTEGER,d); m_gl_symkranz(a,d,b); m_gl_cl(b,c); println(c); freeall(a); freeall(b); freeall(c); freeall(d); ende(); } COMMENT: Class reps ---------- simliar to the above routine, we comput now representing elements for the classes and not a labeling NAME: m_gl_cr SYNOPSIS: INT m_gl_cr(OP gl,cr) DESCRIPTION: you input a group label gl, and the output is a VECTOR object of the length "number of classes", and the entries are objects which are representing elements of the classes, in our examples up to now always permutations. The sequence of the classes is the same as in the routine m_gl_cl. COMMENT: Class order ----------- NAME: m_gl_co SYNOPSIS: INT m_gl_co(OP gl,co) DESCRIPTION: you input the group label gl, and the output is a VECTOR object of the length "number of classes", and the entries give the order of the classes. The sequence of the classes is the same as in the routine m_gl_cl. COMMENT: Irreducible Character labels ---------------------------- If you have computed the character table, you also need information about the labelings of the classes, to know what is the charactervalue for what class. NAME: m_gl_il SYNOPSIS: INT m_gl_il(OP gl,il) DESCRIPTION: you input a group label gl, and the output is a VECTOR object of the length "number of classes", and the entries are objects which allows a labeling of the irreducible characters, e.g PARTITION objects in the case of the symmetric group. COMMENT: Irreducible Characters ---------------------- If you have a valid group label you can get a irreducible character of the given group. NAME: m_gl_nc SYNOPSIS: INT m_gl_nc(OP gl,il,nc) DESCRIPTION: you input the group label gl to specify the group, then an object il which may be an INTEGER object, to say that you want the i-th character, and the output will be in nc. If the object il is not an INTEGER object it may be an object which labels characters in the entered group, e.g. partitions for the symmetric group. You get these objects with a previous call of m_gl_il. You will get an error for example if the INTEGER object label is to big , this means you entered a number which is bigger then the number of classes. EXAMPLE: computes all irreducible characters of A_n ..... scan(INTEGER,a); m_gl_alt(a,b); m_gl_il(b,c); println(c); for (i=0L;i