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]. |
$HASH | $IS_EQ | $STR | $IS_LT{_} |
attr jn:CARD; |
---|
attr p:ARRAY{CARD}; |
---|
attr jn:CARD; |
---|
attr p:ARRAY{CARD}; |
---|
Yang_diagram:ARRAY{CARD} |
---|
**** | Yang diagram(list of length of orbits) format: [ #orbit, length of orbits(sorted), fill 0 upto jn+1] |
aget(i:CARD):CARD |
---|
aset(i:CARD, x:CARD) |
---|
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{CARD}):CARD |
---|
**** | check if format is correct 0 for bad format. positive for otherwise |
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(perm:ARRAY{CARD},base:CARD):SAME |
---|
**** | perm: permutation of base .. size+base-1 |
create(n:CARD):SAME |
---|
**** | trivial permutation. |
create_from_yang(yang:ARRAY{CARD}):SAME |
---|
**** | standard permutation for the yang diagram. |
div(o:SAME):SAME |
---|
**** | self * o~ |
hash:CARD |
---|
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_lt(o:SAME):BOOL |
---|
**** | c.f. compare |
is_one:BOOL |
---|
is_regular:BOOL |
---|
**** | Orbits have same length. |
mark_orbit(out mark:ARRAY{CARD}, out length:ARRAY{CARD}) |
---|
**** | 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:CARD):SAME |
---|
orbits:ARRAY{ARRAY{CARD}} |
---|
pow(n:INT):SAME |
---|
sgn:INT |
---|
**** | 1/-1 : parity of premutation p[1..jn] |
str(lib : LIBCHARS) : STR |
---|
str:STR |
---|
str_orbit:STR |
---|
swap(i,j:CARD) |
---|
**** | (i,j) * self |
swap(i,j:CARD):SAME |
---|
**** | (i,j) * self |
times(o:SAME):SAME |
---|
alloc(n:CARD):SAME |
---|
**** | allocate |
orbit_is_lt(o1,o2:ARRAY{CARD}):BOOL |
---|
**** | sort function for orbits. |