Permutations
Permutations are implemented as a structure with two
components: the first component codes the particular form, i.e.
whether we have the socalled list notation or the
wellknown
cyclenotation. The second part contains the data,
it is a VECTORobject of INTEGERobject, the content
depends on the kind of information. At the moment there are two
kinds: VECTOR, which means the listnotation, and ZYKEL,
the cyclenotation. Further implementations are concerned
with elements of wreath products of the form S_{2} wr S_{n}, the
socalled hyperoctahedral groups (cf. the subsection on
barred permutations).
In both cases the numbering starts with 1, and not with
0. The type VECTOR means, that we store the images of
1 to n as a list, so at the ith position we have the
image of i+1, and if the type is ZYKEL, we store the permutation
as a product of cycles, the cycles are written in a form,
that the smallest entry comes first, and we store the cycle with
the biggest first entry first. So the two following
permutations are equal, the left hand side is the listnotation,
and the right hand side is the cyclenotation:
[2,3,6,10,5,7,4,9,8,1]=(8,9)(5)(1,2,3,6,7,4,10).
Internally both are a VECTORobjects of INTEGERobjects. So the
ZYKELtype would be the INTEGER VECTOR
[8,9,5,1,2,3,6,7,4,10]
The type VECTOR is the default type of PERMUTATION objects.
Here is a table of the standard routines and macros which we shall
describe lower down to some detail:
NAME  MACRO  DESCRIPTION 
c_p_k  C_P_K  change_perm_kind 
c_p_s  C_P_S  change_perm_self 
s_p_k  S_P_K  select_perm_kind 
s_p_i  S_P_I  select_perm_ith_element 
s_p_ii  S_P_II  select_perm_ith_element_as_INT 
s_p_l  S_P_L  select_perm_length 
s_p_li  S_P_LI  select_perm_length_as_INT 
s_p_s  S_P_S  select_perm_self 
b_ks_p  
m_ks_p  
m_il_p 

Now we give more detailed descriptions of these routines.
harald.fripertinger@kfunigraz.ac.at,
last changed: November 19, 2001