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:INT; |
---|
attr p:ARRAY{INT}; |
---|
attr jn:INT; |
---|
attr p:ARRAY{INT}; |
---|
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 |
---|
orbit_is_lt(o1,o2:ARRAY{INT}):BOOL |
---|
**** | sort function for orbits. |