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
.. Included as is_eq
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