class PERM < $IS_LT{PERM},$STR,$HASH
****
permutation group S(jn) format: p[0]=0 and p[jn+1]=0. [1..jn]: permutation as a map p[i].


Ancestors
$HASH $IS_EQ $STR $IS_LT{_}



Public


Readable Attributes
attr jn:INT;
attr p:ARRAY{INT};

Writable Attributes
attr jn:INT;
attr p:ARRAY{INT};

Features
Yang_diagram:ARRAY{INT}
**** Yang diagram(list of length of orbits) format: [ #orbit, length of orbits(sorted), fill 0 upto jn+1]
aget(i:INT):INT
alloc(n:INT):SAME
**** allocate
aset(i:INT, x:INT)
braid:BRAID
**** permutation to braid word of standard form. i.e. i<j, i-th string is cross over with j-th string.
check_yang(yang:ARRAY{INT}):INT
compare(o:SAME):INT
**** <=> : rank--lexical order.
conj(o:SAME):SAME
**** o * self * o~
conj_inv(o:SAME):SAME
**** o~ * self * o
copy:SAME
create(n:INT):SAME
**** trivial permutation.
create_from_yang(yang:ARRAY{INT}):SAME
**** standard permutation for the yang diagram.
div(o:SAME):SAME
**** self * o~
hash:INT
****
inv:SAME
**** self~. inverse.
inv_conj(o:SAME):SAME
**** o * self~ * o~ = (o*self*o~)~
inv_conj_inv(o:SAME):SAME
**** o~ * self~ * o
inv_times(o:SAME):SAME
**** self~ * o
is_eq(o:SAME):BOOL
is_eq(arg: $OB): BOOL .. Included as is_eq
**** Overloaded version of the is_eq routine that works with an argument of any type. If the type of the 'arg' is not the same as they type of 'self' then return false. Otherwise, deletegate to the 'real' is_eq(SAME):BOOL routine
is_lt(o:SAME):BOOL
**** c.f. compare
is_one:BOOL
mark_orbit(out mark:ARRAY{INT}, out length:ARRAY{INT})
**** mark up orbits. format of mark [0]:= #of orbits, [i]:= p[i] is element of [i]-th orbit, [jn+1]:=0. format of length [0]:= #of orbits, [i]:= length of i-th orbit.
one(n:INT):SAME
orbits:ARRAY{ARRAY{INT}}
parity0(perm:ARRAY{INT}):INT
**** parity of premutation [0..n-1]
parity:INT
pow(n:INT):SAME
str:STR
str_orbit:STR
swap(i,j:INT)
**** (i,j) * self
swap(i,j:INT):SAME
**** (i,j) * self
times(o:SAME):SAME


Private

orbit_is_lt(o1,o2:ARRAY{INT}):BOOL
**** sort function for orbits.

The Sather Home Page