class REP_STACK
****
1996/10LINUX version

Kouji Kodama 1989/8 kernel of computing the group S(Jn).


Flattened version is here



Public


Readable Attributes
attr Jn1:CARD;
**** Jn+1
attr Jn2:CARD;
**** Jn+2
attr Jn:CARD;
**** index of permutation
attr

Writable Attributes
attr

Features
CMul(w:ARRAY{INT})
**** +1
CnvCyclicForm
**** +1: presents a permutation as product of disjoint cycles.in:gen.out:st1:Yang.st0 =top:cyclic form. Cut off st0[] with length of st1[],then each segment is cycle, and it is the product of cycles.

works.st2:g permutationst3:Orbit.st4:start point of orbit.st5:length of orbit.
Conjugate( P,Q :INT)
**** +1 Fetch Q P Q~
Eq1:BOOL
**** -1 check if unit
Eq:BOOL
**** -2 if st[pt]=st[pt-1]
Fetch(i:INT)
**** +1
Gen:BOOL
**** 0/-2 Heap's algorithm.
GenConj:BOOL
**** 0/-5 st0::=st[pt]; st1::=st[pt-1]; st2::=st[pt-2];
GenConjDispose
**** -5. dispose area for GenGonj
GenY:BOOL
**** 0/-6
GenYang:BOOL
**** true: +0, false: -2
InitConj
**** +4 Assume thet a Yang-diagram is on the stack.
InitGen
**** +2
InitGenY(Ynum:CARD)
****
__+6
InitYang
**** +2
Inv
**** 0
Mul
**** -1 fetch(a); fetch(b); Mul implies a b
OrbitC(gn:CARD)
****
__-gn+1
make orbit of gn-elements on stack top
OrbitS
**** +1 mark up orbits for stack top
Sort
**** 0 sort stack top
Store(i:INT)
**** -1
Unit
**** +1
WriteStackLog
**** -1
Yang
**** +1 Yang diagram(list of length of orbits) format: [ #orbit, length of orbits(sorted)]
create(jn:CARD):SAME
get_str(preType:CARD):STR
**** -1
get_str:STR
**** -1
inspect(p:CARD):STR
**** 0/0
inspect:STR
**** 0/0


Private

CjN(pi,qi:CARD)
**** +1 q~ p q. pi,qi>=0
CjP(pi,qi:CARD)
**** +1 q p q~. pi,qi>=0
CnvG
**** 0 set st0 from st1 and st2
GenConjCanExg:BOOL
GenConjExg
GenConjGen:BOOL
GenConjRot(on,os,oe:CARD):BOOL
attr Jn:CARD;
**** index of permutation
attr Jn1:CARD;
**** Jn+1
attr Jn2:CARD;
**** Jn+2
get_element:ARRAY{CARD}

The Sather Home Page