58 { std::memset(d,~0,
sizeof(d)); }
122 std::memset(d_data,0,
sizeof(d_data));
139 return std::memcmp(d_data,w.
d_data,
sizeof(d_data)) < 0;
147 return std::memcmp(d_data,w.
d_data,
sizeof(d_data))==0;
155 return std::memcmp(d_data,w.
d_data,
sizeof(d_data))!=0;
201 std::memset(d_data,UndefValue,
sizeof(d_data));
208 std::memcpy(d_data,r.
d_data,
sizeof(d_data));
212 std::memcpy(d_data,r.
d_data,
sizeof(d_data));
return *
this;
308 unsigned long maxlength()
const {
return d_length.back(); }
326 {
return d_shift[x][s]; }
332 return d_shift.size();
460 {
return d_transducer[j].wordPiece(w[j]); }
478 {
return genIn(d_in[i]); }
493 for (
size_t i=ww.size(); i-->0; )
499 {
WeylElt result=w; mult(result,s);
return result; }
501 {
WeylElt result=w; leftMult(result,s);
return result; }
503 {
WeylElt result=w; mult(result,v);
return result; }
505 {
WeylElt result=w; mult(result,ww);
return result; }
507 {
WeylElt result=w; leftMult(result,ww);
return result; }
530 return multIn(w,d_in[s]);
536 return hasDescent(s,w) ? -1 : 1;
546 { leftMult(w,s); mult(w,s); }
565 return w==generator(s);
571 { assert(s<rank());
return Chevalley[s]; }
581 size_t rank()
const {
return d_rank; }
589 unsigned long toUlong(
const WeylElt& w)
const;
592 WeylElt toWeylElt(
unsigned long)
const;
601 { w=translation(w,i); }
604 void act(
const RootDatum& rd,
const WeylElt& w,
RootNbr& alpha)
const;
625 { act(rd,w,v);
return v; }
627 void inverse_act(
const RootDatum& rd,
const WeylElt& w,
Weight& v)
const;
634 { inverse_act(rd,w,v);
return v; }
667 : W(g.W), d_twist(g.d_twist) {}
689 {
return W.
prod(w,ww); }
691 {
return W.
prod(ww,w); }
708 std::vector<ext_gen> twist_orbits ()
const;
709 Twist dual_twist()
const;
720 return d+W.
mult(w,d_twist[s]);
725 for (
size_t i=ww.size(); i-->0; )
726 d+=twistedConjugate(tw,ww[i]);
732 for (
size_t i=0; i<ww.size(); ++i )
733 d+=twistedConjugate(tw,ww[i]);
738 { twistedConjugate(tw,s);
return tw; }
771 involution_matrix(
const RootSystem& rs,
788 size_t hashCode(
size_t modulus)
const;
static const size_t RANK_MAX
Definition: constants.h:57
WeylElt prod(const WeylElt &w, const WeylWord &ww) const
Definition: weyl.h:504
const WeylGroup & weylGroup() const
Definition: weyl.h:674
Represents a Weyl group for the purpose of manipulating its elements.
Definition: weyl.h:430
Generator dual_twisted(Generator s) const
Definition: weyl.h:701
int inverseTwistedConjugate(TwistedInvolution &tw, const WeylWord &ww) const
Definition: weyl.h:729
WeylElt prod(const WeylWord &ww, const WeylElt &w) const
Definition: weyl.h:506
TI_Entry()
Definition: weyl.h:784
std::vector< ShiftRow > d_shift
Right multiplication by $s_j$ gives transition |i -> d_shift[i][j]|.
Definition: weyl.h:264
void invert(WeylElt &w) const
set |w=w^(-1)|
Definition: weyl.h:552
WeylInterface d_out
Definition: weyl.h:441
WeylElt prod(const WeylElt &w, const WeylElt &v) const
Definition: weyl.h:502
TwistedInvolution twistedConjugated(TwistedInvolution tw, Generator s) const
Definition: weyl.h:737
void mult(WeylElt &w, const WeylWord &ww) const
Definition: weyl.h:679
bool hasDescent(Generator s, const WeylElt &w) const
Definition: weyl.h:693
Twist make_twist(const RootDatum &rd, const WeightInvolution &d)
Returns the twist defined by |d| relative to |rd|.
Definition: weyl.cpp:1215
void leftMult(WeylElt &w, const WeylWord &ww) const
Definition: weyl.h:682
WeylWord word(const WeylElt &w) const
Definition: weyl.cpp:494
WeylElt d_longest
Definition: weyl.h:435
Twist Chevalley
Definition: weyl.h:437
int leftMult(WeylElt &w, Generator s) const
Definition: weyl.h:490
std::vector< WeylElt > WeylEltList
Definition: Atlas.h:234
WeylElt()
Constructs the identity element of W.
Definition: weyl.h:121
Element of a Weyl group.
Definition: weyl.h:88
bool operator!=(const Twist &y) const
Definition: weyl.h:62
Twist()
Definition: weyl.h:57
~RowBase()
Definition: weyl.h:204
Generator Chevalley_dual(Generator s) const
Definition: weyl.h:570
unsigned long size() const
Number of cosets W_{r-1}\W_r.
Definition: weyl.h:331
const Twist & twist() const
Definition: weyl.h:705
std::vector< Transducer > d_transducer
Definition: weyl.h:439
const WeylWord & wordPiece(const WeylElt &w, Generator j) const
Definition: weyl.h:459
unsigned long maxlength() const
Maximal length of minimal coset representatives.
Definition: weyl.h:308
int length
Definition: common.c:103
RowBase()
Definition: weyl.h:200
size_t rank() const
Definition: weyl.h:581
const Twist d_twist
Definition: weyl.h:662
size_t rank() const
Definition: weyl.h:675
TI_Entry(const TwistedInvolution &tw)
Definition: weyl.h:783
Weight image_by_inverse(const RootDatum &rd, const WeylElt &w, Weight v) const
Nondestructive version of |inverse_act| method.
Definition: weyl.h:633
WeylElt prod(const WeylElt &w, Generator s) const
Definition: weyl.h:685
std::vector< signed char > InvolutionWord
Definition: Atlas.h:236
void twist(WeylElt &w) const
Definition: weyl.h:706
Generator d[constants::RANK_MAX]
Definition: weyl.h:55
RowBase ShiftRow
Definition: weyl.h:35
const size::Size & order() const
the order of the Weyl group
Definition: weyl.h:579
int mult(WeylElt &w, Generator s) const
Definition: weyl.h:481
RowBase OutRow
Definition: weyl.h:37
std::vector< unsigned long > d_length
Lengths of the minimal coset representatives $x_i$.
Definition: weyl.h:277
unsigned char d_data[constants::RANK_MAX]
Definition: weyl.h:195
Right multiplication action of simple reflections on a Weyl group modulo (to the left) a maximal para...
Definition: weyl.h:257
Transducer()
Definition: weyl.h:287
WeylElt::EltPiece shift(WeylElt::EltPiece x, Generator s) const
Right coset x' defined by x' = xs.
Definition: weyl.h:325
int length_change(WeylElt w, Generator s) const
Definition: weyl.h:528
EltPiece d_data[constants::RANK_MAX]
Represents factorization of Weyl group element w as a product of shortest length coset representative...
Definition: weyl.h:112
WeylWord word(const WeylElt &w) const
Definition: weyl.h:683
const WeylWord & wordPiece(WeylElt::EltPiece x) const
Reduced decomposition in W (or W_r) of minimal coset representative x.
Definition: weyl.h:339
int length_change(Generator s, const WeylElt &w) const
Definition: weyl.h:534
RowBase(const RowBase &r)
Definition: weyl.h:207
WeylElt prod(Generator s, const WeylElt &w) const
Definition: weyl.h:686
WeylElt prod(const WeylWord &ww, const WeylElt &w) const
Definition: weyl.h:690
const unsigned long UndefOrder
Definition: weyl.h:45
bool hasDescent(Generator, const WeylElt &) const
Tells whether sw < w.
Definition: weyl.cpp:417
int twistedConjugate(TwistedInvolution &tw, const WeylWord &ww) const
Definition: weyl.h:722
Generator & operator[](size_t i)
Definition: weyl.h:59
~Transducer()
Definition: weyl.h:291
Generator min_neighbor(Generator s) const
first generator $<s$ not commuting with |s|, or |s| if none exist
Definition: weyl.h:465
std::vector< WeylWord > d_piece
Reduced expressions of the minimal coset representatives.
Definition: weyl.h:282
int twistedConjugate(TwistedInvolution &tw, Generator s) const
Definition: weyl.h:716
WeylElt & contents()
Definition: weyl.h:182
int leftMult(WeylElt &w, Generator s) const
Definition: weyl.h:681
void translate(WeylElt &w, const WeylInterface &i) const
Definition: weyl.h:600
bool hasDescent(const WeylElt &w, Generator s) const
Definition: weyl.h:695
static const unsigned char ucharMax
Definition: constants.h:39
A mapping between one interpretation of Generators and another.
Definition: weyl.h:53
int_Matrix d_coxeterMatrix
Definition: weyl.h:436
size::Size d_order
Definition: weyl.h:433
WeylInterface d_in
Definition: weyl.h:440
WeylElt prod(const WeylElt &w, const WeylElt &v) const
Definition: weyl.h:687
Generator out(WeylElt::EltPiece x, Generator s) const
Simple reflection t (strictly preceding s) so that xs = tx, if any.
Definition: weyl.h:316
std::vector< TwistedInvolution > TwistedInvolutionList
Definition: Atlas.h:235
WeylElt prod(Generator s, const WeylElt &w) const
Definition: weyl.h:500
WeylElt prod(const WeylElt &w, const WeylWord &ww) const
Definition: weyl.h:688
void leftMult(WeylElt &w, const WeylWord &ww) const
Definition: weyl.h:491
unsigned long length(WeylElt::EltPiece x) const
Length of minimal coset representative x.
Definition: weyl.h:299
Generator twisted(Generator s) const
Definition: weyl.h:698
const WeylGroup & W
Definition: weyl.h:661
std::vector< Generator > d_min_star
Definition: weyl.h:442
unsigned int g(A &x)
Definition: lists.cpp:38
Represents one row of a transducer table for a Weyl group.
Definition: weyl.h:191
WeylElt prod(const WeylElt &w, Generator s) const
Definition: weyl.h:498
void mult(WeylElt &w, const WeylElt &v) const
Definition: weyl.h:678
WeylElt generator(Generator i) const
Definition: weyl.h:477
Weight image_by(const RootDatum &rd, const WeylElt &w, Weight v) const
Nondestructive version of |act| method.
Definition: weyl.h:624
unsigned short RootNbr
Definition: Atlas.h:216
WeylElt opposite(const WeylElt &w) const
Definition: weyl.h:574
unsigned char EltPiece
Represents a minimal length coset representative for one of the parabolic subquotients W_{i-1}\W_i...
Definition: weyl.h:98
size_t d_rank
Definition: weyl.h:432
unsigned char Generator
Definition: Atlas.h:226
std::vector< RootNbr > RootNbrList
Definition: Atlas.h:217
WeylElt translation(const WeylElt &w, const WeylInterface &f) const
Applies to |w| the generator permutation in |I|, which should be an automorphism of the Dynkin diagra...
Definition: weyl.cpp:580
unsigned long d_maxlength
Definition: weyl.h:434
WeylElt twisted(const WeylElt &w) const
Definition: weyl.h:699
std::vector< OutRow > d_out
If |d_shift[i][j]==i| then $s_j$ transduces in state $i$ to $s_k$ with $k=d_out[i][j]$ (otherwise |d_...
Definition: weyl.h:272
unsigned long maxlength() const
Definition: weyl.h:576
std::vector< TI_Entry > Pooltype
Definition: weyl.h:787
TwistedWeylGroup(const TwistedWeylGroup &g)
Definition: weyl.h:666
void conjugate(WeylElt &w, Generator s) const
Conjugates |w| by the generator |s|: |w=sws|.
Definition: weyl.h:545
Stores a positive integer as product of prime powers, using the first PRIMES_MAX primes.
Definition: Atlas.h:127
bool operator==(const Twist &y) const
Definition: weyl.h:68
WeylElt element(const WeylWord &ww) const
Definition: weyl.h:584
const WeylElt & w() const
Definition: weyl.h:181
RowBase & operator=(const RowBase &r)
Definition: weyl.h:211
bool commutes(Generator s, Generator t) const
Definition: weyl.h:561
int mult(WeylElt &w, Generator s) const
Definition: weyl.h:677
Vertex v
Definition: graph.cpp:116
const WeylElt & longest() const
Definition: weyl.h:568
const unsigned char UndefValue
Definition: weyl.h:44
const WeylElt Identity
Definition: weyl.h:186